I may have some useful tips on getting games in on time without dying for other LD entrants.
First here’s some background to add a bit of context:
This has been my first game compo ever, and my first real foray into the world of game development. As a lifelong gamer, it’s been a total blast! My dream is to be able to make a real living out of making games, and leave the (mostly) mundane world of enterprise testing well behind!
I’ve never had the good fortune to test any game apps in the IT industry, and my roles have never been full blown development – at most, they’re largely restricted to automated testing which only requires beginner-intermediate JS, Java, VB scripting skills. For this reason, I’ve never had the motivation to pick up advanced dev-skills – it just seemed like too much effort. Fortunately, technology has progressed quite a bit lately, and there are options open to less technical geeks like myself.
Although less technical, one useful skill I’ve picked up has been understanding best practice for software development, which I think can apply here. From all the blogs I’ve read, esp. jam ones, the common theme is that people constantly run out of time or submit an incomplete game or mentally burnout.
Funnily enough, the IT industry is not much different! If you have a look around at some metrics, most large scale software dev projects usually end up failing for exactly the same reasons. From experience, this is because of the same old Sh!t* most of the time, i.e.:
- Not having a clear software dev lifecycle (which requires a heavy dose of testing)
- Not defining or being clear about the requirements (or game design) up front and consequently not planning realistic time frames
- Not enough testing
- Constantly changing requirements (or game design) otherwise known as scope creep
As a software tester who ends up at the ass-end of every project, not having the above factors locked down is a real freaking headache. In LD, what this means is that you’ll probably have a half-complete game or you might decide to pull out, which is a real shame.
How I may be able to give back a little to this community is to provide some tips I’ve picked up that I think applies here:
1. Have Clear Stages in Your Game Development Lifecycle
The Grand-Daddy of all software dev processes is called “The Waterfall Model”. Arguably most modern software dev processes are adaptations of this, but the original and simplified version is good enough here.
The stages I’d suggest for an LD game would be:
a. Concept – What’s your game?
b. Design – What’s the gameplay?
c. Development – making/coding the game
d. Testing – play the game, try to break it
e. Bug-fixing (Refinement) – fix the most important problems (some times step d&e blended into one)
f. “Tidy Up” or admin type tasks
Timeframes will vary depending on the game, team technology you’re using , skill, etc.., but it’s a good idea to decide roughly up front how much time each stage will take up.
In my case I had in total about 12 hrs for Saturday and 12 hrs for Sunday available to finish the game, so I divided it up like so:
a. Concept – 1 hr
b. Design – 3 hrs
c. Dev – 8 hrs (End of Day 1)
d. & e.Testing and Bug Fixing – 10 hrs
f. Tidy up tasks (for me this included submitting the game to LD and Kong, writing the instructions, making menus etc) – 2hrs
I didn’t really want to kill myself getting the game out, so I aimed to be finished and in bed by midnight Sunday. Even so I ended up getting to sleep at 1am.
2 Spend Enough Time on Concept and Design
You might be wondering why I decided to put so much time up front on the concept and design. The concept is super important, you’ve got to brain storm millions of ideas until you get the right one. If you just did this in 5 mins, it’s possible you won’t come up with your best idea, if you had more time.
In terms of design, it’s much, much easier to fix game play ideas in your head or on paper, than when it’s actually coded. Pretend to ‘play’ the game in your head – visualize the game, then do it on paper. Interestingly this is arguably one of the critical reasons why most enterprise software projects fail – businesses didn’t think enough up front about what they wanted to build.
3 Do Lots of Testing!
You might think I’m weird for dedicating almost all of Sunday to Testing and Bug Fixing. That’s because once the core game has been done, it’s most likely not being tested and played from Beginning to End.
It’s hard to get perspective on gameplay balancing, bugs in the game, usability, and just overall “fun-ness” of the game without thoroughly playing it a lot. If possible get as many other people as you can possibly can to play the game and give feedback during this time.
Make a list of the bugs (defects) and pick the top ones that you can realistically fix in the testing/refinement phase.
Also, I won’t delve too far into it, but there are many other layers to testing, which are relevant here. My game was web-based, and a lot of the features I used were new for Construct 2 (game engine) so I had to at least do a bit of Cross Browser Compatibility tests, i.e. test it on common browsers (Firefox, chrome, IE8, etc). I found that some stuff didn’t work well on anything other than Chrome or FF. Consequently I had to build in a setting that allowed players to turn off many of the new shader effects built into the game. This feature also helped with old laptops (Performance testing).
Ultimately this meant that I covered the widest audience possible in that short space of time.
4 Development and Managing Scope
Pure development funnily enough, is only part of the picture, but often times, all people and businesses will only focus all of their energy here.
This is the tricky bit – it’s always a developer’s habit to put every dang “bell & whistle” into their software/game and end up making such massive bloatware that is a big useless piece of crap, or could never be finished. This common problem is called “scope creep“. Usually it’s not the developers who are guilty of doing this, it’s normally the business, who want “just one more small thing”. Drives me freaking up the wall!
It takes discpline to say “I’m gonna make this game” and stick to the plan. Things can and will change, but at least it will be far more controlled. This is why it’s critical to design the game with as much detail as you possibly can right up front.
It takes even more discipline to stop developing after the dev phase, I kept thinking to myself: “If only I could add this extra thingy into my game!”, but no I had to stop…
Overall it’s still been a big learning curve for me, and I still missed out on some major bugs (e.g. not having autofire), but I managed to complete a mostly working game in a total of 24 hrs and had an absolute blast doing it! Hopefully some of the above knowledge will help some of you out for the next LD, so you don’t burn out in what should otherwise be one of the most invigorating, fun, creative challenges of all time!
See you at the next LD compo
p.s. if you’re interested you can have a peek at my game: