I'm a professional programmer, and have worked on a variety of bits and pieces in the past, including games. It's nice to get a chance to try making a whole one myself, though! :)
I thought I’d write a bit of a post-mortem for my game, Thievery, but in doing so decided on something a bit different. From my git logs for the game, I have a reasonable record of what happened when (and can take a fair guess at the rest), and thought I’d post it to see if it’s of interest. The stats at the end were interesting for me (:
My game is about helping a thief sneak around and steal gold from houses and pickpocket guards, while avoiding capture by the guards and guard dogs. Note that the times listed below include a fair bit of time spent on “art” – it was definitely programmer art, so nothing too impressive, but it still took time (:
Saturday December 15
02:00 Theme announced; I'd decided to sleep through and find out in the morning 08:00 Woke up; started getting ready and brainstorming at the same time 08:30 Started work on Thievery 09:08 Got a basic loop running, with newly-created background and placeholder player sprite 10:15 Added player movement 12:53 Added dagger shooting, after spend ages on sprite rotation 13:18 Finished lunch 14:13 Put guard & thief images in 14:46 Can now shoot guards with daggers, using rectangle collisions 14:57 Limited player movement to the screen dimensions 15:45 Back from 45 mins jogging 16:39 Added basic stats, plus dying animations for characters 16:49 Added damage animation 18:51 Added houses 19:20 Wrote some basic level loading code 19:40 Finished dinner 20:31 Fixed rectangle collisions (for daggers/houses, etc) 20:58 Added circle collisions (for living/moving things) 21:46 Added chests 23:54 Added looting 00:30 Guards now chase the player when seen 00:56 Guards now hit the player when in range 01:10 Now reports player death, and forces restarting 02:13 Added guard patrol routes
Sunday December 16
08:00 Woke up 08:30 Back to work 10:03 Guards now move around obstacles, instead of getting stuck 10:23 Added pausing 11:07 Guards now can't see through houses 12:39 Added basic events system and character chatter 13:40 Back from an hour at the gym 14:00 Finished lunch 15:48 Added more events with chatter, and a win screen 16:48 Added guard vision cones 18:00 Back from meeting friends for 45 minutes 18:20 Guard vision cones now turn red when chasing 19:32 Added better level data 19:50 Guards can now only see forwards 20:00 Finished dinner 21:09 Added intro screen 21:15 Guards can now see at 90 degrees at close range 22:09 Added guard dogs 22:35 Added Pickpocketing 00:07 Added sounds, including triggering from events 00:49 Added music - main and win screen 01:30 Windows build fixes: paths, extra keys 01:49 Added guard alerts 01:58 Submitted Linux version 02:00 Deadline for development (start of submission hour) 02:06 Submitted Windows version
- Programming: 25 hrs 30 min
- Art: 3 hrs 45 min
- Level and other content design: 1 hr 35 min
- Sounds: 45 min
- Music: 30 min
- Breaks, etc: 4 hrs 30 min
- Sleep: 11 hrs 45 min (+2 hours before LD25 started)
- Most fun thing to put in: guard and thief chatter (I couldn’t be too inventive given my tiredness, but it was still satisfying)
- Next thing I would’ve done if I had time: given the player a way to hide from guards to get away
- Thing to do for next time: get better at art (;
- Thing that I wasted the most time on: sprite rotations (got confused about centre-relative vs corner-relative, rotation angles and units, etc)
I had a great time creating this game. I’m glad that many of you have had a play and enjoyed it, and hope you all enjoyed yourselves making your own games as well (: Good luck to all in the voting!
Pretty happy with the way this turned out, in the end:
There’s a load more I could’ve done, but the essence of it is there.
I did enjoy the Thief games back in the day. Top-down ones can be fun too (:
Hope you enjoy having a play!
Well, kind of. Eight hours left – so that’s a full regular work day, right? I’ll get loads of stuff done!…
The good thing is that I think I’ve solved all the most complicated problems that I expected to encounter, so hopefully everything else will go along smoothly. No more screen shots for now, as things probably won’t change all that much before release anyway – but still…
Enjoy the last phase, gang. Try not to hit the caffeine too hard! (:
Sometimes you get those curly bits of logic that seem like they’ll be a massive pain and keep you busy for hours – and sometimes they just start working very quickly!
Again, you can’t see a lot from the screen shot, but the guards now chase the player around the houses without getting stuck on the houses. That may not sound amazing, but it’s certainly very satisfying to get it working (:
It’s 9am in Oxford, and I guess I’ve had maybe 5-6 hours of sleep – but am anxious to get underway. I’ve got plenty of enthusiasm for this idea, and hope I get enough done to do it justice.
There are a lot of great ideas taking shape out there, so nice work all! I look forward to seeing your results (:
My idea is slowly taking shape: it’s something like a 2D sneak-’em-up. You can’t really tell what’s going on from the screen shot, but the idea is that the player is supposed to be stealing the treasure from the houses, ideally without alerting the guards. The guards move around on patrol, and chase the player when they come in range, and the player can throw daggers back at them.
There’s much more to come, but as always, it’s a matter of figuring out what gives the best cost/benefit ratio. At least I’ve got collisions working reasonably well, which is a relief (: There’s a ticking time bomb in the code with switchings of tops and bottoms of rectangles, due to pyglet doing things up the opposite way to what I’m used to, and me writing it the wrong way around and kind of getting the behaviour buried in. Fingers crossed it all just works… hah!
I’m off for a bit of shut-eye. Pleasant dreams, all – hope you dream of fun things and not crash bugs!
Up and at ‘em; it’s just after 8am in England. Hi to anyone else in Oxford! (though last time I checked there weren’t many)
I’m already feeling a little better about things than for LD24: I have an idea, and there’s a fair chance it’ll be pretty fun if it turns out. It’s not super-original, but is a bit of an alternate take on some games I’ve liked in the past.
There seem to be a lot of possibilities with this theme (have to admit, I struggled with “evolution” last time) so hopefully we’ll get a good variety of entries from people with all sorts of ideas (: Nice work by the organisers to give us plenty of interesting themes to choose from.
Good luck to all!
Hope you’re all doing well, and looking forward to LD25 (:
- Language: Python
- Library: Pyglet (hopefully; maybe back to Pygame if things go pear-shaped)
- Graphics: Gimp
- Sound: Bfxr
- Music: Autotracker
Big hugs to Increpare and Greasemonkey as always for Bfxr and Autotracker. I’d like to write my own music for one of these competitions one day, but that’d require more preparation and learning a new app, as well as taking some time away from game coding – so we’ll see.
I’m crossing my fingers I can avoid bugs of the magnitude I had the last couple of times: jerky updates in LD23, and resource load timing weirdness in LD24. Pyglet looks very nice so far, so we’ll see.
The one person I know on here isn’t joining in this time – so, Ludum Dare community, it’s just you and me this time… and let’s have a good one! All the best to all of you, and I hope you have a great weekend (:
I’ve wrapped it up and submitted now. It’s good to have it done – but no doubt without the deadline I would’ve been going for much, much longer. It’s just a basic platformer in the end. Unfortunately there just wasn’t time for anything more – which, most disappointingly, involved pretty much all of the points of difference. (various abilities and power ups: weapons, speed/slow time, movement speed, radiation tolerance, radiation special attacks, changing forms with mutation and evolution levels, particle effects for fanciness – not to mention various forms of variety to the jumping around platforms)
Anyway, it was certainly an educational experience, and enjoyable for the most part (except for the bits I mentioned earlier! (: ), so all’s good. I was kind of line ball as to whether to submit it, but it’s there now as a kind of proof of… well, not really concept, but proof of effort, or something (:
Hope your games all turned out well. I look forward to playing a few of them!
I reckon I’m only about half way to where I would’ve needed to be at this point to get my idea realised, but I thought I’d post the first shot of my game where you can actually do something. It’s not very much, but still – jump! Collect! Jump again! Wooo! (:
This is where I’m up to. It’s the beginnings of a game – but I’ll need to be unbelievably productive from here to get something good done in time. Oh well (: It’s been fun – other than the far too many hours of “Why isn’t WebGL drawing anything? Aargh!” – and there’s still a bit more time left!
Imagine this scene: you’ve been developing your Dare game for about 25 active hours (minus one or two for eating and short breaks, and not including sleep), and with ten hours to go, your game stops working. Not just that, but it fails in an area you haven’t touched… for probably about 15 active hours… wha? The debugger seems to indicate it’s freezing in a WebGL call. WTF? Why? The only code I touched was nowhere near that.
Revert to last known good version; still fails. What?
Try a different browser… try another version further back… try a different folder… try a different OS… no joy. What on Earth? Is this it? Am I defeated?
Fortunately I did figure it out. I was unintentionally depending on a timing issue with textures being loaded, and so certain values being set correctly. Saving one new file to the data directory seemed to have somehow changed the load timings so one critical texture wasn’t loaded in time. That timing bug led to an infinite loop, and a further bug meant a WebGL array creation call that was only supposed to be run once was actually run every time. Who knows why the “step out” function in the debugger just froze inside the array call? Not me…
Ironically, the process this time has been too slow, and I’m unlikely to have anything worth submitting anyway, so this didn’t actually stress me out as much as it might have. Still, there’s another reason to code defensively – so even when you’re in unfamiliar API you’re less likely to shoot yourself in the foot… (:
Now, let’s see whether we can get an actual game going in the last few hours! Good luck to everyone – it’s great to see how much you’re all getting done, and I hope your results turn out well.
It’s been a pretty challenging day. I’ve paid the price for not being familiar enough with my tools, and spent most of the day fixing frustrating bugs with things just not appearing on screen, or appearing in the wrong place, etc. I finally have the sprite rendering working properly now (plus some 3D bits) – and yes, that sounds easy, but unfortunately not when you’re writing it all yourself and have missed some critical details here and there!
It’s looking unlikely that I’ll get far enough into development to get the real theme in there, but hopefully I’ll have some sort of game out of it by the end of play tomorrow. Screen shot in the morning, maybe… though there’s not much to do in the game yet (: Fingers crossed for a more productive Sunday, and we’ll see how we do.
If anyone’s curious, I actually switched back to Kate again from Qt Creator after about ten minutes due to some formatting bugs, so it’s all shiny Kubuntu-styled editing for me just now.
It’s 9:15am here, and I’m underway. Coming up with an idea was harder this time – many ideas I had sounded fun to write, but not that fun to play. The Evolution theme doesn’t fit easily into a lot of genres, either – and cutting out the things that would be just way too much work, I’ve ended up with something simple – some platforming action. It’s a new one for me, though, so let’s see how it turns out.
Feel free to use it if you like.
See you all in the morning – not sure when, but I’ll probably be up for a couple of minutes around 2am BST to check out that theme, and dream of… 1000 kittens?!
Count me in for my second Ludum Dare. I’m going to be using some pretty different technology this time – intentionally, to broaden my horizons (: – and it may not be considered the best choice by everyone, but I’m sure I’ll enjoy it and will hopefully find it worthwhile.
- Environment: KDE 12.04; Kate for editing, and Firefox (with Firebug) and Chrome for testing (I’ll test on Windows too, and hopefully it won’t be too much hassle… <crosses fingers>)
- [Programmer] Art: Gimp again
- Sound: Bfxr
- Music: Probably Autotracker again (thanks, Greasemonkey! I’m probably too perfectionist to write my own music in any reasonably short time anyway)
Best of luck to everyone!
Hey people! Hope you’re all enjoying playing the LD game entries.
Here are a few notes from me about the ups and downs of the making of my game. First, here’s a screen shot of the dev process: (the same one I posted before, but many won’t have seen it)
The game didn’t actually change much from that semi-complete version, as at that stage I hadn’t put the collisions in – and those are pretty important (;
What Went Right:
- Generally the shooty style seemed to work pretty well, and seemed a good choice for something to get done very quickly from scratch with no framework code.
- The asteroid turned out pretty well. The maths to work with it weren’t too bad – mostly just basic trig – and the fading was an interesting addition.
- Art: actually went OK given that I’m very much a programmer (: Maybe I should’ve called the asteroid a “moon”, though, as it does look more like one.
- SFX & music: BFXR and Autotracker-bu are awesome. Thank you again, increpare and GreaseMonkey. Music-wise, I would’ve written my own given time, but had nowhere near enough.
- Stuff that I crammed in using only about three hours in total: the menu, music, sound effects, spaceman rescuing, and level progression. It wasn’t revolutionary, but all together added a lot to the experience, I reckon – particularly given that without spaceman rescuing I would’ve had to rename the game (;
What Went Wrong:
- Frame rate jerkiness. Holy cow. I lost seven hours to fixing that up, as I took ages to figure out which of loads of potential issues was causing it. Trust me when I say you would’ve found it pretty annoying had I not fixed it, but if I’d sorted it straight away, I would’ve got a lot more gameplay in.
- Linux bundling. Pyinstaller is very good, but it didn’t need to put in libasound.so.2, and the oddities with this library (it has a dependency with a hardcoded path that varies between distributions!) meant that most (if not all) Linux users couldn’t run it first go. I should’ve tested this on other machines, but was too tired, and foolishly just crossed my fingers rather than checking. (Note for anyone interested: removing that library fixes the problem)
What I Really Wanted To Add But Didn’t Have Time:
- Zooming out for when the player went off screen, or adding arrows to point back (a lot of people mentioned this when reviewing)
- Multiple asteroids; more enemy types; destroying the asteroids; power ups; etc (had loads of ideas here)
- The control scheme could’ve used a bit of tweaking, but I was reasonably happy with it. Reviews varied – everyone’s preferences are different – but to me it was at least pretty playable.
Check it out here if you get a chance:
Thanks to everyone for the feedback, good and bad – anything constructive is useful.
Cheers all. I’m looking forward to the next one already! (:
I got it done. Of course, there’s nowhere near as much in there as I would’ve liked to put in, but everything always takes longer than expected – that’s the nature of software development, right? (:
The game doesn’t actually look much different to about this time last night, but it actually plays properly now. Also it helps, when calling a game “Space Rescue!”, to actually have something to rescue (: I snuck them in at about 10pm, so two hours before my own cut-off, leaving myself two hours for tidying.
It feels like a major achievement (: Shooting at turrets, dodging bullets, and rescuing spacemen actually turned out to be pretty fun. Hope some of you get a chance to have a look and enjoy it.
Nice work to all who submitted! Now it’s time for sleep (;
(Of course, I now have “The Final Countdown” running through my head, but that title is just a bit too obvious)
It’s getting there… getting there… I’ve got more of some things in than I expected, thanks to the very handy Bfxr and Autotracker-bu. The only thing is that my game is called “Space Rescue”, and there’s currently nothing to rescue… (:
Two hours left until my target finish time. I won’t get in anywhere near as much gameplay as I wanted to, but at least it’s looking fairly playable. Not much new screen shot wise, but hopefully soon.
Incidentally, my microwave died earlier today. Lucky it wasn’t my PC!
Anyway, keep it up everyone, and good luck (:
I guess it was inevitable that I’d get a song like that stuck in my head when restarting today. Heh (:
Anyway, back into it again, after about 6 1/2 hours of sleeping, showering, and such. Here’s an image to give you an idea of what I’m up to:
So nothing revolutionary, and that asteroid doesn’t look very asteroidy yet – but who knows what I’ll be able to coax out of Gimp if I get the time… (:
Can’t remember if I specified it all earlier, but as you can see from the above, I’m on Kubuntu (11.10), and spending most of my time running Kate, Gimp, and terminals, and relying on Pygame to do a lot of the work for me.
After a quite discouraging afternoon and early evening, the late evening and early morning (It’s 3:20am here) went a lot better. It’s actually starting to look a bit like the game I was envisioning! I’ll be crashing out in a minute and catching a short-ish sleep before back into it.
It’s spaceship shootyness for me – flying around asteroids and things. I have a ship flying around and shooting stuff at stationary turrets on an asteroid now, and maybe will post some screen shots in the morning if I get keen.
The main thing is that it’s impressive to see so many different types of games on here! Nice work everyone, and keep it up.