Join us on Twitter and IRC (#ludumdare on Afternet.org) for the Theme Announcement!
Thanks everyone for coming out! For the next 3 weeks, we’ll be Playing and Rating the games you created. Be sure to Play and Rate games if you want a score at the end (we recommend 25 games). And with the holidays coming up, we encourage you to do it sooner than later. We’ll be back in the new year with the results, and the date for Ludum Dare 35.
I just updated the server part of Birds of Borg – it now shows more prominently, whether there is a chance of having a multiplayer game with a real opponent. I hope more players will have the chance of trying the internet multiplayer variant, because it’s way more fascinating to play against human enemies!
The game itself didn’t change at all, so I consider this to be within the compo rules.
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.
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.
What went well?
Way more than anticipated
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.
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
Finally, find my (silent) development timelapse of my Compo entry Birds of Borg – it took a while, because I had to clean up the mess that happened from 3 Xserver crashes during the development :-X
“Birds of Borg” is a single- and multiplayer action game done as a HTML5 Web game with phaser and node.js/express/socket.io.
The breaks in the video have been shortened to 3 seconds video time, regardless of their real length. In case you wonder how long I actually slept, there’s a clock in the lower right corner…
A Post Mortem analysis of the development process will be published later. Probably tomorrow.
Have fun, and try to watch in slomo if the rapid screen changes make you sick 😉
I actually managed to finish and submit my game Birds of Borg 2 minutes BEFORE the deadline!
I think I went a bit over the top by creating a networked multiplayer game, even with (simple) match making. Game mechanics could have been more sophisticated, and originally I wanted to support the growing theme as well (growing a flock of birds), but that would have needed quite a few more hours. I hope you like the StarTrek related theme 😉
There will be a timelapse video, but first I have to clean it up a little – my Xserver crashed 3 times during development.
I’m really happy with the result nevertheless, given that it has been my first Ludum Dare, and that I personally never did anything with phaser before.
And NOW I’m exited to play all those games YOU guys have created =-D
I discovered so-called “incremental games” like CandyBox recently and was amazed by the amount of intrigue and interest such a simple mechanic could inspire. I wanted to explore the stripped-down style of those incremental games while tackling a simulation game. I wanted to answer the question – what does it take to make a text-heavy point-and-click simulation-style game fun? I think the answer I found was – more than I have here. I realized that half-way through but at that point it was too late to turn back.
Candy Box game
Simulation games always make me think of Sid Meier’s description of games as “a series of interesting choices” – interesting being the key word. Every choice should matter. As I was trying to balance the game, I found that if I gave players too much money to start with, their choice of buying a cage or table wasn’t high-stakes enough to matter. Seems obvious in retrospect, of course, but this simple fact really sank in for me during the making of this game. A player’s choices must matter. And any choices that don’t matter should be removed.
I kept referring back to Oregon Trail, the 1990 PC game about trying to survive on the trail. I spent hours of my childhood totally immersed in Oregon Trail, and it was just a series of text choices and simple animation clips. The difference, though, is that it told a compelling story – you and your friends or family try to complete an arduous journey across a dangerous, rugged country, with many of your crew dying along the way. I think it was the built-in drama of such a story that kept us all hooked and clicking despite its simple graphics and gameplay.
I also re-learned how much the “little” things like sound effects and subtle animations bring a game to life. At this moment, MonsterLab is more like a playing a spreadsheet than playing a “real” game.
So, what would I do differently in MonsterLab 2? First, don’t release it with bugs. 😉Second, add sound and animations. Third, tune the existing mechanic – make all choices matter, and figure out how to balance the cost and timing of everything. And fourth, focus more on the storytelling and increase the volume of content available (different types of monsters, different experiments to run) and maybe a new mechanic where you have to actually chase or hunt the monster instead of just purchasing it. If only the weekend could have lasted forever, I might have ended up with a decent game. There’s always the next Ludum Dare, though.
My 2nd Ludum Dare done, and first time entering the compo (Good Luck me!)
I decided to take the Virtual Pet genre, and strip it to its basics. This ended up reminding me of spinning multiple plates, and making sure none of them fall. Then I added a weird “win” state, because feature-creep I guess?
My only problem in development this time came at the end (figures…). When testing it in the editor, and even playing on the Web, or on Android, it runs fine. In Standalone .exe version however, the buttons don’t work properly. The area to click on is to the left of the buttons, in some cases more than others.
Nevertheless, I’ve uploaded every version (and hopefully have done the source code correctly). I’ll try to fix the Standalone version ASAP, but for now, I sleep.
I want to talk freely for who wants to read some stuff about the last Ludum Dare jam (spoiler: it was amazing).
Who was our target audience?
The Ludum Dare Jam is based on a theme voted the days before by the people. After the submission of your game, you should vote for other games made from other devs around the globe to get more visibility for your entry. The target audience for the game are actually developers! There is no any restriction of age to participate, so we had to rely on personal estimations. The feeling we had lurking on past editions was about 20–30 years old people, mostly male and of course all devs. That means that, for example, if you make a clone of Candy Crush Saga they will simply eat you publicly and threaten to burn your house. Just joking, of course (I would do the same, anyway :P). The topic of the 32nd edition was “An Unconventional Weapon”. The first goal was, then, find some great message or some great mechanic for them. Regarding session times, you will not have too much time to review each game: as I said, for each game you review you will gain more visibility. With more “coolness” factor you will receive more precious feedback and more votes. The second goal was that the game should have been fast to play and to understand in a 2 minutes session.
Who are we?
In our case, in Sentendo (a new game development reality we are trying to build here in Barcelona) we are three professionals. Each one of us has many responsibilities at the time, anyway we use to define some role (and responsibility) for internal organization: me the producer, Kostas the programmer and Jordi the artist. We all are game designers, the role is shared between the whole team since we all are good in this field (that means that each one of us sincerely thinks that the other 2 are great game designers, and for us that’s enough). For the Ludum Dare, Jordi was not with us due to a job he has with a client, so we were in two without any artist. The third decision was the roles definition: me as asset finder and adapter and Kostas as programmer. He quickly discovered phaser.io to develop the game in HTML5. This technology is great for a challenges like that, to improve the session time in our game. You don’t have to install anything to play it, just click and play.
Since there were no much time we opted to make something really neat and polished, something which people could enjoy easily and with a simple mechanic to implement. Again, you have only 72 hours to submit your game, and of course you cannot work straight all that time. We needed something with a simple and direct message, since we didn’t find a great mechanic to explore for the topic. The game was based on a book called “Confessions of an Economic Hitman”. One of the arguments of this book is about the high level strategy of some corporate: they buy off their competitors just to close their companies assuring more market share for them. We decided to create a clicker game with a skill factor: click on your competitors to “fire” them with your cash bullets, and click on the coins they throw at you. The market share is represented from a Growth Factor that you and your competitors will have. The score will be the Budget you can amass during your play session. Players will see little people come out from the crushed companies, but they are small compared with the buildings. Another metaphor about the human role in the real context of inspiration.
What went bad
We wanted to make something simple, with a little deep on mechanics, but at the end we also made something difficult to balance on the fly. So the game is basically getting harder and harder and you will lose somehow. You can last more or less in the game, but you will lose. The competitors shot at you with their money to try and that will influence your growth factor. The attacks will be always more frequent and soon will become simply impossible to catch every coin coming at you. You will lose, you can try to achieve a better score, but you will lose sooner or later. That is a mistake for a skill-based game, in my opinion. The first change I would like to make to the game (and maybe I will do it) is to change the pacing to achieve the perfect balance between challenge and chance. You should last potentially forever if you are good.
What went good
First of all, that was tremendously funny. I worked with a real lightness in my head and spirit. The pressure is high and the time is few, but if you know what’s the real goal, the experience is only positive. And that is to have fun, simple as that. Prove that you can make a game, even with the few resources you have. You can make a game with pen and paper if you want. No matter that we didn’t have an artist, I opened my old graphic software on my old PC and start to search for a style to give to the game. That was awesome. Plus, I discovered great qualities in my colleague, Kostas. He has a great taste for animations, for example. Even if you design a game, if you paint some awesome sprite, there is some flavour that only a programmer can put. That is really an important spot for our future together.
Hyper Soccer is now playable in the Browser, go try it now. It’s a frantic little local-multiplayer game with gamepad support, you can even play with as many players as you have gamepads. So grab some gamepads and some friends and get playing. (Although gamepads may not work in the Web-Version, and you probably need to download the Desktop-Version.)
It has a lot of match customization options: you can choose the unit types available, the AI Difficulty and the amount of units per team. Although, not all values may be reasonable…
Promise me to never do that.
Two teams with various unit’s consisting of four unit types, each with their own special ability, try to get the ball to their side of the field, to win a round of hyper soccer!
I do however recommend a “only-grappling-hook” match.
Libgdx doesn’t like Iframes
I had to jump through a few hoops, to get the HTML5-Build of my LibGDX game to run flawlessly on itch.io, because it gets embedded in an iframe. If you are having similar problems you may want to read the stuff below.
Many hated the theme, rating about it being only a technical limitation. But that’s kind of the point of a theme. And I think this one is not more or less limiting than “10 seconds” or “minimalism” for instance. It’s just that it really said (maybe more than the other theme) “Do whatever the heck you want, but maybe on one screen (please ?)”.
Anyway, this flexible theme gave me the perfect occasion to make a top-down shooter, which I never had the chance to do before. Plus, I had the idea pretty quickly and was able to stick to it, so that’s at least nice for that.
This is the first game for which I use model animations and fake shadows. It was actually fun to tweak the animations and the general look even if it’s still very much programmer’s art.
Overall, I think the game looks pretty nice to me. But yes I more and more really want to team up with an actual artist !