It’s been a super long time since I’ve made an update for Splatterfield (working title, mind you). I have been spending my time on a ton of awesome games, most recently Civilization 5 and Bioshock Infinite, and also working on a much-needed update to the design of this site. However, in the last week I’ve made a few cool improvements that warranted an update.
On the Move
The first new feature is the ability to move units and blocks around the map. The way that it works is that the unit or block is selected by hitting the “S” key, and then copied to a new location in the grid. Then, the old copy is destroyed and removed from the scene graph.
Okay, it’s not exactly moving per se, but it should work fine for my purposes. At least for the initial prototype of the game.
One thing that I do need to think about is how movement will be paid for in the game. Do units get a single movement action, in which they can move up to a certain distance? Or do they get a certain number of movement points that can be expended in intervals?
I think that I’ll have to examine this a little more when the game gets closer to a playable stage.
The next little feature that I added was to have units that are selected rotate toward the mouse cursor. It ended up being a fairly simple operation.
This is purely cosmetic, but I thought that it would be nice to add a bit of animation to the game world.
Also, spinning the little guys around is probably more fun than the rest of the game… at least at this point in development.
Pew pew pew!
What’s the purpose of all of these dragon-soldiers if they can’t blow anything up? Not much, if you ask me.
So now that the dragons can be moved around the map, the next logical step was to implement a simple projectile system. The system needs to create the projectile and fire it at a particular point, with a bit of inaccuracy for the fun of it, and then destroy whatever it hits. Eventually the collision will need to be a bit more complicated, taking into account the target’s durability and so forth.
Panda3D has a projectile function that I used to accomplish this, though I don’t think that I’m going to keep it. It feels a little awkward to use for these purposes.
Essentially, it works by specifying an origin, a target vector, and then how much the projectile is affected by gravity. In order to get the projectile to hit another block, I’d need to do some math, which may end up being more complicated that it is worth. Unless of course, I take gravity away from the projectile.
Unfortunately, part of my vision for the game involves the weapons being somewhat inaccurate and certain weapons being able to function like mortars: firing over hills and walls in a beautiful parabolic arc. Overall, I think that this will work as a temporary solution for the prototype, but if I were going to build the game out fully it would have to be replaced with some other system.
In any case, the projectile is currently a small ball with a smiley face on it (made huge for the screenshot). My vision for the final game is to have the projectiles behave more like paint, splattering the battlefield (see what I did there?) with a wide range of colors and shapes, and potentially dripping around the map. However, that’s a long ways away.
Up to Speed
So these last few changes have been in the game for a while. However, I also had some time in the last week and made some other improvements. However, that is a post for another day.