Done! My first 3D game ever. I’m tired but happy about it.
Entry is here, for GNU/Linux and Windows.
Arks of Mercy
Be the savior of an endangered nation, as the level of the waters rise ineluctably. Guide your people to the safest mountains, build boats, teleportation towers and mighty shelters before it is too late!
Be sure to read the readme. It might not be very complex, but there are no instructions ingame at all.
EDIT: the readme might not be totally clear, but you can change the whole keymapping (not only for the gamepad) in keymap.lua
Be sure to check the Gameplay video!
Also, no Windows binaries yet, sorry. Will work on it, but I don’t have a Windows computer right here.
Since this is clearly going to be an all nighter, I might as well do the traditional postmortem right away.
What went wrong
- It’s not exactly “code” related, since the code is portable (both the C library, and the Lua “game”), but having issues with the Windows port is annoying. My library is probably very easy to compile on Windows, but crosscompiling is a nightmare. Will try to get access to a Windows machine soon. EDIT: done!
- Having — as usual — no idea whatsoever where to start, I built the game a bit randomly, throwing ideas and seeing what would happen. In the end, the code is so messy that I couldn’t do what would have given the true meaning of the game: having a second player. Be it computer, or networked friend. The game is a kind of single-player training mode. The goal is to score a maximum of points. I’ve never been very fond of these “gradual” winning games. Being able to compete on the same terrain with someone else, and check who saved most, would have been great. Later work maybe?
- First time use of 3D. We’ve been warned, know the technology before using it in a limited time compo… Even if I had gone through the Redbook before, and had the library set-up done, a lot remained to learn or relearn. And a lot of time spend (not lost) on it.
- Stupidly spent a huge amount of time on the terrain generation. Tried and failed at midpoint displacement, fractal watchamacallit and other things. Tried three times to implement Perlin noise before succeeding. I guess being tired didn’t help. Or trying to tweak parameters that I knew would be irrelevant later anyway.
- Considering the game not being truly a “game”, I didn’t do any intro screen or background story, or levels, or campain. For a while I considered it a fancy toy.
- Spent far too much time playing the game. Hey no wait. That’s a good thing. It goes into:
What went (very) well
- Despite the few previous points, I actually enjoy playing the game. I spent a few times playing it through and saying to myself “oah that game is cool”. And that is pretty new. All my previous LD’s and mini LD’s left me with a certain feeling of frustration. And the impression of having made a non-fun game. This one keeps me glued to the screen, gamepad in hand, until the end. And this, for the following reasons:
- 3D coding turned out great. Sure there were a few facepalms, a few unfindable bugs, and a few mathematical challenges. But I am happily surprised to see how far a “first 3D game” can go. Plus, I was afraid of performance, since optimisation is excluded during 48h (octrees? meh… i just draw everything all the time!), and my EeePC is kinda slowish and doesn’t have a gamer’s graphic card. But with a bit of Level of Detail, and basic use of Display Lists, I end up having ~14 FPS, which makes it very playable. People with better machines will enjoy it even better.
- 3D looks turned out nice. With the obvious intent of having minimalistic models, no textures, flad shading, etc, it ends up being slightly retro. It’s been compared, obvious inspiration, to Darwinia (never played), which looks infinitely more fantastic. With the day/night cycle and the zoomable camera, there are some pretty nice landscapes ingame.
- Music. I needed a break from the code at some point and decided to make music, even for a non-game. I’m quite happy with the result, a dark atmospheric track that certainly sets the mood to this doomsday setting. Actually, it is probably for a big part in how compeling I find the game. It keeps you anxious and willing to save those little yellow guys, who keep dying. Oh nooo!
- My small brave library keeps working fine, and get additions every time. This compo was the inaguration of the new input system. It’s not perfect yet, but served its purpose well. I loved playing with the gamepad.
I realise I haven’t listed the tools I used, as it is tradition:
- EeePC 901, mouse, gamepad. A weebit smallish screen for some things (the art department), but otherwise quite ok for coding.
- Lua (mostly), C (a bit in the lib), in the geany text editor. F5 runs the game (or any command you need). Some autocompletion. Doesn’t get in my way. I am not as enthousiastic as usual about Lua, but it’s probably only because of the awful coding practices of the week end. Very ugly.
- LMMS (Linux Multimedia Studio) and the marvelous ZynAddSubFx, included in it. LMMS is not great, but good enough, and mostly makes a good front end to synths, samples players, trackers all in one. On the Eee, there’s not enough raw power to run jack and half a dozen sound apps at the same time
- Wings3D for the models. Curiously I knew very well how to use it, while I never really did that much 3D before. Very easy to use indeed.
I’m both very surprised and very glad of the final thing. Sure it could have been more (2 players vs/coop mode?), but I do enjoy playing it as it is, and that’s a very good sign.
Now I’d really like to hear what others think of it (agree, differ on the yes and noes). It’s one of the first games I’d actually consider finishing later. Cleaning code, adding modes, etc. Who knows.
Thank you reader if you managed so far,
and good voting!