Wow! Compo 1st overall! :O

happy.gif

Thanks guys!

I’m fairly surprised! I was coming off two very late nights (working on the Ludum Dare site actually!) and then during the competition I spent a surprisingly large time napping and procrastinating with Splatoon. I guess the game was fun enough for people to like it! And also, I probably got a lucky fraction of votes :stuckouttongue:

Some more specific thanks: - @jasonp, who made a game called microgue. It uses a similar turn-based mechanic where you move onto squares to defeat enemies. You can check out that game on the app store or Google play. - @managore, who made the font I used in the game. And by not entering this time, you left a gap for me to fill :stuckouttongue: - The folks hanging around the IRC who playtested my game during the compo! I... didn't jot down your names so I can't give specific shoutouts :grimacing: but you know who you are :) - All Ludum Darers! Ludum Dare isn’t about winning imo, it’s about learning and improving on your game making skills, and making really cool stuff! Congrats on making something (even if you didn’t finish) :raisedhands: and be sure to check out the other top scoring games!

If you haven't played it, you can play VUEL here!

Here’s a quick tutorial-like explanation of some parts of the game as a thank you back to the Ludum Dare community!

Animation

All the animations are three frames. It’s a simple ‘bounce’ style animation. One ‘rest’ frame, then a squished frame, which is anticipation for the next frame, which is the popping up frame. Then back to the rest frame. Quick way to make animations when you don’t have much time (or skill haha).

anim_explain.gif

Level Generation

The game is played on an infinite 2D grid. The way I programmed this was to have a 2D array that grows when you get near the edge. To stop it from getting huge I split it into pieces of 10x10 tiles. Whenever you get close enough to part of the grid you haven’t seen, it adds a new piece, and if needs be increases the 2D array. This way you can have really big maps, where you only generate stuff as you need to. Otherwise the game would face some serious memory issues.

level.gif

The random level generation is dead simple. Each tile has a 15% chance of being a gap. Then all the squares that aren’t gaps have 5% chance of having an enemy on them, although that percentage chance gets higher the further away you are.

To pick what enemy appears, there’s a few lists that it picks an enemy from. To start off, it’s just simple enemies and batteries, and later on, trickier enemies become more likely. A quick way to balance the probabilities is to repeat things in the list, which makes them more likely compared to the others.

chances.png

AI

The AI for the enemies is really simple. They each have an set of moves they can make (an array of [x, y] pairs). Each enemy looks at all the moves they can make (loops through that array), and then calculates the distance to the player, and picks the move that puts them the closest. There’s no way I was programming a proper pathfinding algorithm in a game jam :stuckouttongue:. The real important thing is that they’re predictable, which is useful for planning your moves ahead. Also, having the array of moves meant it was very easy to add new enemies, and program unlockable movesets just as the compo was ending.

All the code is on Github if you want to check it out :smiley: Or you can just play it too.

See you next LD!


P.S. My twitter is @jezzamonn :wink: