Last week I set myself a couple of big tasks:
- The full live/die/repeat game loop
- Health increase and restoration powerups
- Particle effects
- Title screen
- Switches and closed doors
- Basic area transitions
Here's how it went:
The full live/die/repeat game loop
Not complete, but about 80% of the way there. The player now takes damage and will die once they reach 0 health. The user interface also updates when they are hurt. All that's left is to add some form of save and respawn system.
Health increase and restoration powerups
Both are working. The player can collect small hearts to restore health and giant hearts to increase their maximum health.
Particle effects
Animated sprite particles and basic pixel particles are implemented, but not as completely as I'd like. Ideally particle emitters will be able to:
- Spawn a list of random particles (e.g. large and small chunks of rock)
- Specify custom particle behaviour - especially particles that rise (for smoke) or that change colour as they rise (for fire)
- Generate particles over time, rather than all at the start
The rendering and update code is all working, so hopefully I can add these bits of polish in before the end of the month.
Title screen
The title screen is all working and can launch the main game. There are also some placeholders for loading save games and viewing the list of credits.
Switches and closed doors
The sprites for the switches are really, really ugly, but the code is there. This took the most time out of everything I worked on.
Originally I was using a trigger & action system, but it quickly got bogged down once more complex things got involved. There's a huge gap in complexity between a switch that makes a door vanish and one that makes the door move.
In the end I replaced the trigger system with a full script system. Entities can listen for events and respond to them.
Basic area transitions
This was the only thing on the list I made no progress on.
I didn't get everything finished that I wanted to, but I did manage to cross some other big things off my list:
- Entity collision – This took an absolute age to get working properly. Platform with just tiles was a fairly simple job, but once moving platforms entered the mix it got complicated.
- Scripting – I hit a dead end with my first approach because I wanted to keep things simple. Turns out they were a bit too simple to actually do the job.
- Enemies that hurt the player – Some enemies have spikes on top that damage the player. It's a small feature that adds some spice to the standard gameplay.
- Accidental springs – This one was a fun accident. I updated to be able to
set their
bounce
value when jumped on. A decimal place in the wrong spot made a very bouncy object.
Overall it was a productive week. There are now 6 days left in the month to get something playable up and running. A lot of pieces need polishing up, but at this point there are enough features to form a game out of.
Here's a bonus animated screenshot. Click to play.
Until next week!
Visit the Mini Shinobi hub page for a more detailed view of the project's progress.