Spankers and Spankees,
I’m back from vacation. Unfortunately, my computer decided to have problems right when I got back, and I’ve only just gotten it repaired, so I wasn’t able to get anything Potion Wars related done on Tuesday and Wednesday, like I’d hoped. On the bright side, the shop where I took my computer to get repaired had an old Macbook Pro for salve for dirt cheap, so I picked that up, and we now have native OS X executables (technically it’s a shell script. OS X “apps” are horrible and should die in a fire. Slowly and with great agony.)
I’ve uploaded the latest version (2.11) to the Download tab. This is a VERY VERY VERY important update. It doesn’t add any new content, but what it does is fix a very subtle mistake in how the game saves. Originally, when I saved whichever “conversation” a character currently has, I saved the conversation based on the conversation’s number, rather than it’s name. Furthermore, my translation script assigns numbers to nodes in order from the beginning of the transcript to the end. What this means is that if I add any new conversation nodes to the middle of the transcript (such as say text for enchanting equipment with enchantment gems at the smithy), then the node numbers will get screwed up, and old saves will give characters the wrong conversations.
This version fixes that. This version will correctly load your save files, and then save them using node names rather than node numbers.
Therefore, it is VERY IMPORTANT that you:
1. Download version 2.11
2. Load your saved games in version 2.11.
3. Save the game.
If you don’t, then your save file WILL NOT WORK for future versions of the game. I repeat, save files from before version 2.11 will be incompatible with versions 2.12+. Unless you want to lose your progress you MUST download this version and save you game using it.
I’m really sorry about the inconvenience.
Spankers and Spankees,
First, I’ll be spending next week visiting family, so I won’t be on until the last week of May (a little over a week from now).
Second, I spent a few hours last night playing Dark Eye: Blackguards. Haven’t played it much, so I don’t have much of an opinion about it, though it looks like it has potential. There are a few things I don’t like (the heavy emphasis on randomness in combat, especially the high failure rate of spells), but there are also some things I do like (the combat grid is well done, the combat itself is fun despite the heavy random element, and the story has me intrigued, though I’m 99.99999% certain it’s going to fall into the painfully cliche “My old friends are members of an Evil Cult Planning to Unleash the Supreme Evil/Take Over the World/Steal Grandma’s Pacemaker” plot). Actually, that last one sounds like it’d be kind of fun…
One thing that I really really like is the stat gain system: after each fight, your characters gain experience (groundbreaking!). This experience goes into a pool of points that you can then use to level up your skills. So far at least, after every fight I’ve gained enough experience to level up at least one skill, and often more than one. I like this because it gives a sense of gradual improvement. After every fight my characters are slightly better than they were before. I like that. And when I like something, I start thinking about how I could build a similar mechanic…
So here are my thoughts. Currently, every action gives you 3 stat points. Where those points are allocated depends on the action performed. For example, attacking allocates 2 stat points to Dexterity, and 1 stat point to Strength. Every time enemies attack, you gain one stat point, depending on where you got attacked. While I like how organic this approach is, there are a few problems. For one thing, your defense also relies heavily on these stats. Therefore, in order to keep yourself from being one-shotted by a physical attack, your squishy mage will have to waste turns smacking baddies with his staff while your enemies laugh. Similarly, with physical attackers (assuming those attackers even know any spells. If they don’t know any spells, they can only gain those stat points by being zapped by spells). Second, if you decide during the game that you need to pivot (i.e. focus more on magic and less on physical attacks, or vice versa), then you need to waste precious rounds doing something your character sucks at. This will almost certainly be frustrating, especially if I can balance the combats well enough that they’re close. So this is actually a very rigid approach to character improvement, and that’s not good. I don’t like rigid character development, because it punishes experimentation.
So, the first thought is that all stat points go into a pool, which the player is then free to spend to improve stats, health, mana, and learn spells. This makes character development much more flexible. Are you getting roasted by spellcasters? Spend some points on Talent. Getting one-shotted? Dump a bunch of points into health. This also has a benefit when characters join your party: Rather than giving them pre-allocated stats which may or may not work with your build for for the rest of the party, I can just have the character start with a pool of stat points that you are free to use however you wish. I could do a similar thing at the beginning of the game, allowing you some control over the starting stats of your character, which spells they know, etc.
Now, here’s the next thought, and the one that gets me really excited: You need to spend a certain number of points in order to improve a stat, and the number of points you need to spend increases as the stat gets higher. So far so standard. However, let’s throw in a little bit of randomness. Just a touch. Imagine if you have a percent chance of gaining the bonus from the next higher stat, depending on how close you are to increasing your stat. So suppose you have 10 Dexterity, it takes 100 points to get 11 Dexterity, and you’ve already spent 90. So you’re 90% of the way there. Imagine if in battle, you have a 90% chance of attacking with 6 Dexterity rather than 5. So maybe there’s a 90% chance that instead of doing say 10 + .4 * 10 = 14 damage (against an enemy with 3 Dexterity), you do 12 + .5 * 12 + 1 = 19 damage. Meanwhile, if you’ve only spent 50 points on Dexterity, you “only” have a 50% chance of gaining this bonus.
Second, suppose that you don’t gain a fixed number of points every time you attack. Instead, the number of points you get depends on how effective your action is. The less effective your action, the more points you get. So imagine you have 5 Dexterity (so 10 warfare), and your enemy has 5 Dexterity (so 10 warfare). Then, you’ll do 10 damage. Meanwhile, if you have 10 Dexterity (so 20 warfare), and your enemy has 5 Dexterity, you’ll do 20 + .5 * 20 + 15 = 45 damage. So you’ll get significantly fewer action points than if you only have 5 Dexterity. Now obviously, you need to have some caps, so that a tank with 5 Talent doesn’t get 5000 action points for casting Firebolt on an enemy with 95 Talent. Similarly, a character with 95 Talent zapping an enemy with 5 Talent should get at least some action points. The points you’d get would probably be something like max(MIN_POINTS, MAX_POINTS – effectiveness), where “effectiveness” could be something like the damage you do, or the number of turns you start grappling, or the number of turns an enemy is inflicted with a status spell.
These two things provide a whole lot of opportunities for different play styles. Do you spend your action points now, and make the upcoming battles easier, or do you hold off to get as many points as possible but make the upcoming battles much harder? Or do you do something in between? How in between? Only spend enough points to get 10% of the way to the next point? 50%? 90%?
Furthermore, a jack of all trades character has an interesting new twist vs. a specialized character. First, you can have partially developed stats, and still gain some benefit from them. The points put into a partially developed stat start working for you from the beginning. This can make it less painful to spread points around. Also, Jacks tend to have lower stats across the board, but not so low that they can’t be effective in battle. Therefore, regardless of their actions in battle, you can expect them to gain more points, which can again ease the large point burden. I like this. I like this a lot. Specialized characters are valuable because they are very effective in battle against specific classes of enemies, but at the cost of perhaps a small dint in action points. Jacks meanwhile aren’t as effective against any one enemy, but can hold their own against anyone, and tend to gain more action points.
What do you spend points on? Well, you can spend points on any of the stats (Dexterity, Strength ,Willpower, Talent, Alertness). You can also spend points on health and mana (one point corresponds to one point of either), and you can spend points to learn spells.
This again, opens up a huge range of character building options, especially since mana, Talent, Willpower, and spell learning are all decoupled. For example, maybe you want a character who is mostly an armslength fighter, but perhaps has a few of the simpler buff spells, to provide some support. Then you don’t bother putting points into learning new spells, but instead pump Talent, and Dexterity. Maybe you want to build a Grapple-tank, someone who can grapple a spellcaster and shut them down, but you don’t care about necessarily learning spells. Then you can pump Dexterity and Talent (with perhaps some Willpower). Maybe you want a character who knows a wide variety of spells. Then you pump Talent, Willpower, and spells, with some points also thrown into mana. Maybe you want a character whose spells aren’t particularly effective, but he/she can cast a lot of them. Then you pump spells and mana. Similarly, maybe you want a wall, a character whose job is to defend the squishier characters, but not much else. Then maybe you pump their health to absurd levels.
Of course, the tricky part is to balance them all. 😉
Another tricky point is that if I’m not careful it could be very easy to exploit. Just cast one Firebolt at 5 Talent against an enemy with 95 Talent to get the MAX_POINTS, then spend the rest of the combat attacking and pump the points into your Dexterity. Perhaps a character doesn’t gain any points if the stat difference is too large, or takes severe penalties to the number of stat points they get? I don’t know, I’ll have to think about it.
Any thoughts? I might spend the next week thinking about it, and potential formulas for generating points, how fast point costs increase, etc. If I do implement this (I may not, this is still very much in the brainstorming phase), it won’t be until after I’ve overhauled the GUI. Allocating points will require significant (and non-trivial) extensions of the GUI, so I don’t want to do anything with that until I’ve built a GUI that can actually be extended with non-trivial things.
Fixed a bug in the logging code that resulted in infinite recursion. See previous post for details on changes in 2.09.
Spankers and Spankees,
I’ve released a new update to Potion Wars (get it at the Downloads page).
1. The game now writes to errors.log all actions performed in combat, and the associated state. This should make it a lot easier for me to track down corner bugs that only arise when actions A B C D E E E E A F are performed in combat. So please, when you see a crash or other bug in combat please tell me about the bug and SEND ME THE ERRORS.LOG file. Furthermore, please, as soon as you see the error, kill the game and send me the error.log. That way, the last action in the log will be the action at the point the error happened. If the bug crashes the game, just send me the errors.log (along with a description of the error). Note that the errors.log file gets wiped every time you restart the program, HOWEVER the game also automatically saves the errors.log file from the previous 5 play sessions (named errors_1.log, errors_2.log, …errors_5.log). So if you see a crash, but accidentally restart the game before you send me the log, just send me the log file that corresponds to that playthrough.
2. I’ve added a scene with Airell (the pompous mage) written by Bonemouth and edited by me. You should see this scene if you pissed off Airell in episode 1, and he threatened you with a spanking. He’ll show up in the Adventurer’s Guild, just talk to him to start the scene.
3. Fixed a bug in one of Maria’s conversation nodes in episode 1, that would have caused a crash as soon as someone tried to access that quip. It was the node at the end of episode 1 that only triggered if the player managed to stay out of trouble with the guards (i.e. didn’t get into a fight with Maria, and didn’t lie to the guards). Apparently not a particular popular path among people who file bug reports, since I only saw it after I fixed a bug in my unit tests that meant my tests weren’t invoking the conversation nodes in episode 1.
4. Skyblaster the Sardine has joined the team as a beta tester, and support writer. He’ll be working primarily on in-combat spanking scenes for now. I’ve added his name to the in-game Acknowledgments page. Flash the Flamingo has also joined, he’ll be working as a Beta Tester, and number cruncher (basically he’ll help me analyze my growth and damage formulas, and make sure they scale like I want them to). I forgot to add Flash to the in-game page, and I’m too lazy to back and add it, but he’ll be there in the next release!
5. Implemented some code that should make it easier for me to maintain consistent state when transitioning scenes. Basically, any time a scene begins, I clear out all adjacent rooms, and remove all NPCs from their respective rooms, and then manually reinstate those rooms, and NPCs that actually show up in the scene (I do have some helper functions for rooms, and characters, like Avaricum Square or the girl at the Tailors, that don’t change between scenes). This will make a little bit more work for me, but it should make errors more obvious (a character who should be there is missing!), and gives me much better control over the configuration of each scene. So it’ll end up saving me time in the long run.
6. Characters now gain 2 points in Strength for every round they stay grappled. Otherwise, grappling would go up too slow for characters who initialize and actually want to stay grappled (i.e. the characters who should have high grapples!)
7. Characters gain 120% mana each time they gain talent, rather than 150%.
8. Removed ambushes. They were rare, buggy, and in my opinion don’t really contribute anything.
9. Miscellaneous bug fixes. Added some infrastructure for incorporating LaTeX written dungeon scenes into the game.
10. Removed Deidre from the Adventurer’s Guild. Originally she was going to provide the job on behalf of someone else. I decided I didn’t want that, so I’ve introduced a small retcon.
Also, although you can’t reach the dungeon in episode 2 yet, I have added it to the code. Here’s a screenshot of the corner you start in:
It’s not the prettiest thing ever, but that’s another side-effect of the rigidity of my current GUI code. Hopefully when I overhaul the GUI after episode 2, I’ll be able to rewrite the map code so that it looks nicer, and we don’t necessarily after to show the entire map at once (clearly 20 x 20 is about as large as we can without inducing eye strain). But who knows. I sure don’t. Honestly, I’m surprised it works as well as it does.
I haven’t implemented any of the events yet, but we’re getting there.
Also, don’t forget I released a new episode of Etrian Odyssey yesterday. Get it at the Etrian Odyssey tab.
Spankers and Spankees,
I’ve uploaded the next episode in the Etrian Odyssey Let’s Spank. It can be found under the Etrian Odyssey tab. Honestly, I’m not particularly happy with this one. I’m still having trouble figuring out Naomi. I’ve made some progress I think, but she still doesn’t flow as naturally for me as the others do. Of course, it could also just be the end of semester burn out that’s talking. I don’t know. Anyway, hope you enjoy it.
As far as Potion Wars is concerned, well I have a scene with Airell that Bonemouth wrote that I’m currently sitting on. I’ve also implemented the first level of this episode’s dungeon (though I haven’t written any events for it yet). I’ll try to finish editing Airell’s scene tomorrow, and get it posted (too tired to deal with it now), and I’ll upload a screenshot of a partial exploration of the first level of the dungeon.
Also, don’t forget that in my previous post I offered several alternatives to two Etrian Odyssey stories a month. Take a look and let me know what you think. If I don’t hear anything, I’ll just stick to the current two EO episodes a month.