Birds of Borg – Post Mortem

Posted by
December 15th, 2015 9:44 pm

I visited the Ludum Dare site quite a number of times in the last years, and I learned most from various Post Mortems I read; now, after my first own Ludum Dare experience I will share my thoughts, and hope you will find some helpful thoughts.

Birds of Borg in a nutshell:

It was a fun ride, for a first entry to Ludum Dare I would say everything went extremely smooth, I even slept for 6 hours straight and had time to meet some friends. Way more that I thought would be possible.
First I thought going directly for Compo is way over my league, but on the other hand I wouldn’t have had the time on Monday to finish the job reasonably anyway.

Birds of Borg, landing page

What went well?

  • Way more than anticipated
  • I love JavaScript more and more, the more code I write (did mostly C, C++, Java, Perl before).
  • phaser is pretty awesome now. Docs are good, examples well done.
  • I like SFXR for quickly creating sound effects without too much experience with synthesizers.
  • Game Design can be time consuming, but I realized in time that I had to stop working on it and spend more time on code and media.
  • I DID finish, I HAVE a running game, and it ALMOST is actually really fun!
  • The multiplayer code is actually working extremely well. If you find any other players to play with, that is…

What went wrong?

  • Not much, really…
  • Except for there was too little time to do everything I wanted
  • No time for background music (tools, see below).
  • No time to change (and playtest) game design to incorporate the ‘growing’ theme.
  • The artificial intelligence is still not … really intelligent.

What best practises would I suppose (and did TOTALLY not adhere to myself)?

  • Try to get life out of the way, sleep enough beforehand, don’t get ill.
  • Never, ever start without knowing your tools, your libraries, your development environment.
  • As a coder, never underestimate the time it takes to create media.
  • Don’t underestimate the time for final deploying.
  • Never, ever underestimate the time it takes to debug multiplayer network code.
  • Have a good game design ready before starting to code.
  • Be satisfied. You will NEVER be satisfied with what you created. It could have been SO MUCH better.

Birds of Borg, Gameplay

The theme was announced at 3am in Germany. I was sound asleep, because I only had 4 hours of sleep the day before (try to get life out of the way…), and I was getting a cold. At around 5am I read the theme, slept a bit over it, and at 7am I had an Idea and even the title for my game.
At first, I started with a trivial HTTP server written in node/express (basically as a warmup), noticed that my editor didn’t work like I wanted it to, and needed half an hour to correct this. The first game related stuff was choosing a font for the Borg theme; it’s not really reasonable to start this way, but I needed a distraction from my issues with the text editor. A (very) short landing page was created, and I included a trivial phaser example.
I hadn’t worked with phaser myself before, so it was learning on the go (never, ever start without knowing your tools…). It went pretty smooth, though, I added first sprites, got some placeholder graphics, and worked on the obstacle field. At about 10am I had a reasonably distributed field.
I started to learn phaser physics, got some more issues with my text editor (the linter), added multiple player sprites (at the beginning this should be temporary, but it turned out to stick to the end), and added collisions. Those collisions turned out to be tricky, as I didn’t want the blocks to move, and the players should really stop at the blocks and slide partially at the edges; in effect, I changed the collision scheme several times on both days. The birds also had to flock, so I let them accelerate if they were a bit behind the center of gravity of the flock. A first version was ready at about 12pm, but I worked 2 more hours on the collision scheme. For a break I read what others were doing and posting.
Next was a (trivial) artificial intelligence for additional sprites. I had it running short before 3pm. After lunch I added the life counters; a bit tricky, because they shouldn’t be rotated like the player sprites. At 5pm that was done. Then came the time counter, and the game logic. I also had to read quite some docs in order to get rendering order right (READY/SET/GO should be in front) and scaling right – in case you changed the window size. At 6:30 that was done and I was off for diner. Didn’t actually get home before half past 10 😉
After some cleanup, getting the number of enemies from the URL and having the possibility to display an error message, getting the font used in the game itself turned out to be tricky (docs are a bit wrong here).
At about 12am I had a working game, I finally created the real landing page with the borg theme. I created the background image from scratch in gimp using inspirations from openclipart; as I’m not used too much to gimp, it took me over half an hour to do so…
At 3am I created the first post about my current state, then worked on the AJAX code to display server statistics (like active players). Including socket.io for the game data was the next step. At half past 4 I finally went to bed.

At 11am the next day I started including network code in the game. First for waiting for other players, joining game rooms and waiting for the start of the game. I had to rework the sprite code quite a bit, because there was no room for remote controlled sprites. Getting that right took until lunch at 3pm. Afterwards I had to create the other players, create functions for sending and receiving sprite data (position,angle,health,etc.). That worked at about 5:30pm.
I changed a number of things at this point, scaling code was completely removed, now using standard phaser calls for that, collision code was changed again, etc. I also did some playtesting and fixed the network code – it was still very rough then. I noticed that I forgot to synchronize the background blocks position, that lead to all sorts of strangeness…
At 8pm I started to optimize the network code, rounding floating point data, only sending changed data, reducing name lengths. That was working fine at 9:30. At 10:30 I started working on the graphics (the birds and their animation). It took a while until animation really worked, the phaser calls had been changed from what I read in some examples. After midnight I created the sound samples with SFXR, and incorporated them in the game. At about 12:30 I started to work on a *real* artificial intelligence, which took until 2am, where I actually just stopped myself from continuing on that … semi-intelligent thingy.
Then it was cleaning up, zipping, deploying on my server, creating screenshots and the game entry on the Ludum Dare site, and it was 2:58am. Well, I didn’t touch the extra hour, but it was close. 😛

After voting was open I played a few games for calming down, and went straight to bed :-)

Hope you enjoyed the read; I guess you get a feeling how much time you can actually waste on network code… I hope you will be able to find playing partners, because that always seems to be the major issue. And playing against real world enemies is *definitely* way harder and more rewarding than against the AI…

There is a timelapse video for those who like to read less and get flashed more 😉

Thanks for all your games, and – ah – in case you didn’t do that yet – please

Matthias Hopf AKA emmes AKA mshopf

Tags: , , , , , , ,


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]