Ludum Dare 23
About icefox (twitter: @icefoxen)
A geologist gone game programmer! Or hoping to, anyway. How often does that happen???
Albeit somewhat at the last minute. Wasn’t sure until now whether I would be doing this at all, but here I am.
Code: Unity3D / C#
Graphics: Gimp, Inkscape and Wings3D
Sound: Audacity and bfxr
Music: I sort of wish I had any idea of how to compose…
All in all, a rousing success!
Well… there’s some graphical bugs. And… some non-graphical bugs. And it implements about 60% of what we wanted. And each member of our team spent at least a full day either short of sleep, reading silly things on the internet, coding things that will never be used, or otherwise being unproductive. So taking all that into account, a rousing success! How to summarize my thoughts?
Pro’s: I, at least, find the basic gameplay quite fun (and it is basic). The art is beautiful in a neon sort of way (I loved the black-velvet-painting level from Psychonauts, too). And incomplete and buggy as it is, it actually works.
Con’s: Now that I look at the finished product, it looks like we were HIGH AS KITES when designing this. Not the case! We had no drugs, only sushi! Also, it’s begging for a soundtrack but we have no composer, and it turns out our original plan to crib Creative Commons music is against the rules. And, while working, it is incomplete and buggy. It’s kind of easy to get lost in all the shiny abstract art and lose track of what’s going on.
Theme: I personally found the theme somewhat uninspiring, but I actually quite like what we came up with. I couldn’t think of anything really interesting to do with Evolution. We came up with a few ideas and tended to like the ones that involved the environment responding to your actions, so we went with the simplest scheme we had for that.
Tools: This was my first non-trivial project working with Unity3D, and while it has some weird bits and issues, it is all in all a great force multiplier. Much better than working with pure SDL and OpenGL, or even Love2D. Making it play nice with our source control system was a little hairy; we need to work on making that better. C# is clunky but still probably the best more-or-less-system-level programming language there is (Go might be nicer, but is immature yet and has some bits I don’t like). Alas this also means that we can’t make a real Linux release (though it might work okay under Wine), at least until Unity version 4 comes out and includes Linux support… *drool*
Teamwork: This was actually fairly challenging, as it was our first time seriously all working together on a small project. I was unfortunately unable to participate in the last day due to having to teach a petrology lab, but David manfully shouldered the burden of two and pulled through admirably. Doing a Jam actually might be harder than doing the normal LD competition. More time means more time to burn out, and working with others means that you have to rely on other people more and coordinate with others. With one person and 48 hours you just come up with something and then bum-rush your way through it as hard as you can. With two programmers we had to figure out how we could each work on separate parts in a reasonable fashion, then put them together once we had something; I mostly did engine and AI code, while David mostly did UI and graphics code. Paul doing art worked well once we all got a handle on what was possible and what was not and sort of got on the same page in terms of style. When not doing art Paul did high-level game design which was actually very useful; I didn’t need to stop coding and think about game design decisions very much because I could just look at the design doc. (Though sometimes it held me back because I’d ask Paul for a design decision and he’d say “I dunno man, whatever you think is good”, so you still have to be able to be flexible.)
So, once again, a rousing success. We will definitely be cleaning up this game and turning it into something more complete, once we have recovered.
A couple of us have participated in previous Ludum Dare’s, but this is our first time doing it as a group (for the Jam, naturally!). We, as Nice Mullet Productions, are in!
Cast of characters:
EatThePath: Code, art
Talhydras: Mondo art-fu,crazy ideas.
Code: Unity3D, monodevelop, C#
Art: Wings3D and Photoshop
Anything else: whatever we find lying around
…and I even made a game! Which even works, last time I checked at least. Not bad for someone who came down with the flu about three hours into it, hm? You may find the game here: http://www.ludumdare.com/compo/ludum-dare-23/?action=preview&uid=7186 . I also made some screencast videos in the comment at the bottom, so check those out too.
Of course the code is fugly, which actually started becoming a significant barrier towards the end. And of course there’s a ton of things I wanted to do that I didn’t get a chance to. I had plans for enemies to invade your planet, break the connections holding your planets together, maybe a boss-type enemy, some sort of win condition…
Honestly though? I think works okay the way it is: simple and arcade-y. And in a playable state; don’t forget that. I never felt I wouldn’t complete it in time, but it came much closer than I really expected! Mainly due to keeling over due to disease on Saturday evening; that probably lost me five hours or more.
The main thing I skimped on is graphics rendering really… I never imposed any real draw order rules, and as a result the game sort of looks like ass. I wanted to do much better effects in terms of particles and such as well, plus nicer effects for capturing planets and such. You were originally supposed to plant a seed that would grow out into a vine that snagged the other planet; the blue line was originally a placeholder. A placeholder that ended up in the main game… oh well. There’s a couple bugs left in the geometry in general, too. Alas.
Lessons learned? Software rendering, and python in general, is STILL slow. I STILL hate geometry (though I’m not too bad at it by now). Programming while you have a fever is STILL a bad idea. Mixing coordinate systems is ALSO a bad idea, at least if you do it poorly! And one can make surprisingly cute sprite-art as long as your resolution is 64×64 or smaller. Maybe next time I’ll try Unity or something, or at LEAST use numpy for vector maths; I bet that’d help a lot in terms of performance.
Maybe I should learn to compose music at least a little? This game is really begging for some kitchy MIDI tunes.
If I were to continue this, which I may or may not… the thing needs a good hard refactoring, followed by some profiling and optimization. You don’t REALLY need to run the physics and AI for the bits of the universe you can’t see. After that would come graphics and bug fixes, with better particles and real animations, and maybe those vines I was talking about. (I mourn the loss of those vines; I think it would have been really neat conceptually and visually.) A few more enemy types… a commando with a rocket launcher who could jump, and maybe a gun-bot sort of like the Skysmashers from Iji. Power-ups. Other planets with engines you could hijack and drive around. Enemies that tried to come and invade your planet and destroy your engine. Defense cannons on heavily-defended planets. The list goes on…
But for now… time for a milk shake!
Albeit a bit at the last minute, it seems. This will be my first Ludum Dare and I have a couple ideas for what KIND of game I want to make, but how exactly it turns out will depend on the theme. Fortunately, the basis is pretty flexible.
And, after posting far too late at night, it seems I left out key elements of protocol: tools!
- Language/platform: Python using pygame
- Editor/IDE: emacs
- Audio: sfxr, maybe with audacity to record/tweak things as well
- Art: gimp or paint.net
- Platforms supported: Linux and Windows
I might be doing a screen cap or something… or might not. Depends on how much time I have to prepare. (Not enough!)