For February I'm rebuilding "Splodey Boats", a game I wrote for Ludum Dare
in 2014. Mini Shinobi was a lot of hard work so I wanted something a little
lighter for February. Splodey Boats seemed like a good choice for a couple of
reasons:
It's a small and complete experience
It's a good candidate to get more practice with using entity/component
systems
It has a lot of particle effects which I haven't built into my framework
yet.
It won't take 70 hours to complete
Building a completely new game is far more exciting, but revisiting an old one
is good practice too.
Mini Shinobi is my first entry for #1GAM 2017. It's a platform game with
collectible abilities and some very simple combat.
The aim is to explore the world and find the missing 4 artifacts (Earth, Wind,
Fire and Water). Once these are recovered the door to the final level will open
and the boss can be challenged (spoiler alert: the final boss isn't anything
special).
Overall I'm pretty happy with how things turned out. I didn't get to add all the
features I wanted, but there's a full game and I learnt some very valuable
lessons. I'll be publishing an in-depth post-mortem later in the week.
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.
The majority of week one was spent coming up with ideas and building some of the
backend for Mini Shinobi. This week I was able to focus more on designing and
creating gameplay features.
Features added this week:
Moving enemies
Jumping on enemies to damage them
Animated tiles
Parallax scrolling
Double-jumping
Terrible sound effects
Transparent water that slows the player down
Here are some animated screenshots showing the features added this week (click to play):
This week I'd like to finish:
The full live/die/repeat game loop
Health increase and restoration powerups
Particle effects
Title screen
Switches and closed doors
Basic area transitions
It's going to be a challenge to get everything done before the deadline, but I'm
happy with how the game is progressing.
It's been a full week since I started working on my first #1GAM entry of the
year. So far things have gone quite well, although there's still a long way to
go.
January's game is called "Mini Shinobi". It's a platform game with a mix of
exploration, combat and puzzles.
So far the following features are working:
Fully scrolling tilemap that follows the player
Walking, running and jumping (with animation)
Some basic collision detection
Entity/component system
Probably the biggest feature is the entity system. There aren't many entities in
the game at the moment, but it's possible to add more without recompiling
anything which is a huge time saver. Expect there to be a few follow-up articles
on how it works and why I built it.
Screenshots are more exciting than technical details though, so here's how
things currently look:
One thing that has been a huge help is using art from OpenGameArt.org. I'm not
much of an artist, so it's allowed me to spend time building the game rather
than worrying over pixels.
There are more detailed notes and statistics on the Mini Shinobi hub page. It's
updated regularly and is the best place to see how development is
progressing. I'll probably end up writing about how that page is generated at
some point too.