I’m going to preface this by saying that work on the user interface is probably my least favorite kind of programming. It’s tedious and boring, and doesn’t feel very productive. But once it’s done, it makes a world of difference. Since the first Possession was whipped together in a week, it didn’t have that much polish, though I think it was pretty good for being made in only 7 days. I’d like Possession 2 to be much more accessible, better-looking, and playable, though, so I’ve been doing some work towards that end.
The sidebars used to just be drawn as a simple square. I whipped up a border to use instead, and also made it adjust based on how much information needs to be shown rather than just taking up the entire side of the screen. It also shows you the special abilities you can use in your current body, and you can now press the number listed to use that ability instead of having to go through the spell screen.
One thing you can see in that picture is something entirely new: A menu that shows up when you right click on an enemy or square. It lists the abilities you can use on the targeted location, which means that the game can now be played entirely with the mouse, if you want. (Actually, that’s not completely true yet, you still have to use the keyboard to go up and down stairs).
Another other thing I’ve been working on is changing the stat system of the game. In Possession 1, every creature had a “Hit Chance” and a “Dodge Chance. But what made things confusing is that the actual hit chance was the “Hit Chance” of the attacker minus the “Dodge Chance” of the defender, so a 50% hit chance could in reality be, say, a 10% hit chance if the attacker had a high dodge score. This also led to silliness like some creatures having a 120% hit chance. I’ve gotten rid of that, and just gone to a basic “hit skill” and “dodge skill” system. Since those numbers aren’t quite as intuitive as hit chances, the game now shows you the chance of hitting (or being hit by) an enemy when you target them.
Here’s what the Monsterpedia, which contains information about the monsters you’re possessed, looks like now. In the first game, it was just kind of a jumble, the creatures were just listed in there based on which ones you possessed first, but now they’re sorted by level, and the list is scrollable. It also tracks your stats with the individual creatures, showing how many times you’re possessed a creature type, how many times you’ve exploded one, as well as how many kills you’re made and turns you’ve played as a creature.
I’d like to get some feedback on all these interface changes, which is hard to do without people actually playing with them. Luckily, it actually looks like the game’s going to be in a stable enough state (though still nowhere near finished, content-wise) to release a playable dev version soon. And by soon I mean “hopefully this week.” So stay tuned for that.
I’m working two jobs right now, and the past few weeks have been pretty busy for me. I have managed to continue working on Possession 2, just not as much as I’d like. Today’s post isn’t really focusing on any one aspect in particular, just highlighting some of the things I’ve been working on.
I’ve made some more AI improvements. Smarter creatures now try to avoid dangerous terrain, such as lava and fires, while dumber creatures will just walk straight through.
There’s also a few areas that are still very much in progress, a nature preserve (full of flammable grass and trees!) and the ruins of a demon city.
Speed is a problem in turn-based games. It’s much easier to just have everyone move once per turn. Anything else just gets complicated, both from a programming and a gameplay standpoint. But given that the differences between bodies are such a big deal in Possession, I really want there to be some creatures that are weak but fast, and some that are strong and slow. Not to mention the possibilities of spells or obstacles that speed/up slow down creatures, and let the player (or their enemies!) run away or escape more quickly.
(I’m going to warn you right now, this post is a bit more in-depth in the development process than other posts have been. If you’re not really interested in game dev it might not be that interesting, but I’m putting it up so hopefully someone facing the same problems might be helped by it).
At first I tried a simple system where certain creatures either got an extra turn or lost a turn every X number of turns, but implementing it got kind of ugly and annoying. I decided to look into what other people had already done. I found this post, detailing a wide variety of time systems used in roguelikes, and decided to go with an energy-based system, which is apparently what Angband uses, which is somewhat appropriate I guess because even though I don’t really like it much now, it was the first roguelike I ever played.
Anyway, the basic way it works is, every creature has a “speed” rating that is added to their “energy” stat every turn. If their energy stat is above 100, they can move, and 100 is subtracted from it. If it’s above 200 they can move twice, above 300 three times, etc. Most creatures just have speed 100, meaning they move once a turn.
|Creature||Speed||Energy, Turn 1||Energy, Turn 2||Energy, Turn 3|
|Bat||150||150 (moves once, reduces to 50)||200 (moves twice, reduces to 0)||150 (moves once, reduces to 50)|
|Zombie||50||50 (doesn’t move)||100 (moves once, reduces to 0)||50 (doesn’t move)|
|Caretaker||100||100 (moves once, reduces to 0)||100 (moves once, reduces to 0)||100 (moves once, reduces to 0)|
Same goes for the player, of course. If they have above 100 energy, they can move, if not, a turn happens without them. If they have above 200 energy, their move is an “extra” move. They still move, as does any creature with more than 100 energy, but nobody’s energy increases that turn.
This system worked pretty well as-is, but it does run into a weird problem. I had bats and ghosts both faster than normal, but the ghost was slightly faster than the bat. It got an extra turn every two turns, and the bat got an extra turn every three. This resulted in, one turn, the ghost would move twice and the bat wouldn’t move, the next turn the bat would move twice and the ghost wouldn’t move. It didn’t make much sense.
So, the get around that, I made it so that if the player is faster than a creature, the creature saves up enough energy to take an extra turn, it doesn’t actually take its extra turn until the player takes their extra turn. That seems to work pretty well so far. Might take some more tweaking as things continue, but we’ll see.