What I did
This sprint turned out pretty well, with all but one item completed. First off was the outstanding issue from last sprint, where I was trying to give all characters a health level and take them out of the game when this runs out. When their health reaches zero, the character collapses and can no longer be selected to play, or targeted when aiming. I also fixed a small bug when starting the game where the initially selected character couldn’t take any actions.
I tied up the user interface a bit, and now any buttons which you can’t select are hidden from view when they’re not available. The interface as a whole needs a much neater design, but I’m not going to spend too much time on that until I’ve got a general design and theme finalised so that I can make something that compliments it. I also stopped button presses from being treated as movements when the two areas overlapped. It was occasionally causing problems but mostly it was just annoying.
I’ve changed the team’s appearances so that now they look different (Team A are generic soldiers, while Team B are generic SWAT members). They’re still very much placeholder models, but at least they look a bit better than they did. I also stopped them from remaining tilted when leaving aim mode. They now go back to their forward-facing position when you switch back to movement mode, or take a shot. Finally on teams, I’ve got the camera to flip 180° when you switch between teams. Later when I’ve made the team members turn correctly I’ll position the camera behind them properly, but this will do for now as I was forever rotating my view around when switching teams.
I’ve improved the movement code a bit too. A bug in how I’d set up the movement lines meant it wasn’t showing you moving up ladders correctly after clicking a hot spot. It now maps out correctly. I also tidied up some of the code which was causing the game to get confused about which level a person was on, allowing them to walk out over thin air. I’m not convinced that I’ve closed this off completely, but I haven’t figured out a way to reliably trigger this since. The movement circle now shows the correct distance a character can move during their movement phase… usually. To get this to display correctly I have to multiply the remaining movement by 3. But every so often I’ll be testing the game later and find that it falls short, and I now have to multiply it by 3.33. Then later again I’ll have to change it back to 3. This doesn’t seem to be related to how much movement is left, and when it works it works consistently throughout the game. I need to do some more investigation into this, but I’m drawing a blank.
And finally, I spent some time tidying up the demo level I was using, adding some extra buildings, some blocking walls and a number of different textures. They’re still very much placeholders, but it helps give me an idea of what types of textures to use. So far I’m favouring the metal ones which you can see in the screenshots below, but I’m curious what everyone else thinks.
And finally, I’ve released an initial tech demo. It’s not really much of a game currently, and it’s missing a lot of features before it could be considered one, but it gives a general idea of the feel I’m going for. If you’re interested you can find it here, just unzip and run. I haven’t put in an exit button yet, so the only way to exist the game if you’re in full-screen mode is to ALT+F4. When you’ve taken out the last target the game just sits there and waits for you to quit. Not ideal, but it is an early tech demo after all. The controls are the Left mouse button to perform actions, Right mouse button to undo a movement waypoint, the WASD keys to move the camera, and Q and E keys to rotate the view.
What I didn’t do
I wanted to make the Camera move up/down levels automatically as your plan your path across different levels. Unfortunately I’ve realised that the way I’ve written the movement system doesn’t allow this, and carries a lot of other restrictions to boot. This will need refactoring to make it fit in with how I’ve structured the rest of the project, but it’s not a high priority. I’ll note it down and work it into a future sprint.
What I will do next
For the next sprint I’d like to improve the look and feel of the game some more. I’d like add in health bars for each character so you can see how close to death they are. I’m used to being able to see this in the code at the same time as running through a demo, and it wasn’t until I was testing the tech demo that I’d put nothing in place for this. A game over screen would be nice too, as currently the game just sits there after you’ve taken out the last target. Some sort of indicator that you’ve won would be nice. I need a quit button too, ALT+F4 isn’t a good way to leave, and this is also something I didn’t realise was missing while developing.
I’m not happy with the way the shooting works, it really needs some sort of cover mechanics. I won’t go into the depth I’d originally planned just yet, mainly because I don’t have any girders, but I’ll figure out how much of the target you can see, and use that. Some sort of indicator next to the targeting reticle. I also want to add a delay into moving to the next character after you take the shot, and add in a basic animation showing you hitting or missing your target. As always, it’ll be a simple placeholder for now and I can substitute in proper firing animations later on.
Movement wise I want to tidy it up slightly by turning the character to face the direction they’re moving, and leaving them facing the target they’ve just fired at (so long as they’re not tilting into the scenery). I’d also like to replace the movement circle with something which more closely resembles a circle than the large polygon that’s there now.
Depending on how well I do with these items I might end up adding a few more items, but this will do for now. As always you can see the state of my current sprint by looking at my Trello board.