This August, I completed a submission for my first game jam. It was intended as an exercise in fully finishing a game, and learning from the experience… With the goal of applying that wisdom toward the bigger, more ambitious game I wanted to create. (More on that in my dev blog introduction post!)
The specific game jam I ended up participating in was Ludum Dare #42, which ran from August 10th to August 13th with the theme “Running out of Space.” For anyone unfamiliar with it, Ludum Dare is an online game jam that gets held three times a year. There’s a theme chosen in a voting process, and participants need to make an entire game based on that theme, from scratch, in a single weekend. Sounds like fun right?
I’d actually been tempted to participate in the previous Ludum Dare in April (and the one before that last December), but it always came down to the issue of time. I didn’t think I could find that much time in a weekend… And even if I could, shouldn’t I be putting it toward some kind of “real” progress on my “real” game?
Plans & Preparation
Long story short, I managed to put those misgivings aside and try participating anyway. But there were three key factors that really influenced the decision:
- A shift in my perspective on the value of making smaller games, and getting feedback on them. I was especially interested in testing out some puzzle and progression mechanics, and trying my hand at balancing a game in general.
- Justifying it as a skill-building exercise in practicing some ReactJS, which I’d been recently getting into for work related reasons. I pretty much decided ahead of time that this would be the technology I’d use for my submission (for better or for worse – more on that later).
- A supportive spouse who offered to take the kids out grocery shopping and stuff so I could have more time during the weekend to try and make a thing.
In the few days before the final theme was revealed, I thought a lot about which of the 16 theme finalists I liked best, and possible directions to go in for some of the themes. The final selected theme of “Running out of Space” was actually my 5th favorite of the bunch!
From the beginning, I knew I wanted to try for something 2D and puzzle based. And for the “running out of space” theme, I had the idea of some kind of evil forest spreading over a fantasy world… A supernatural thing, taking over the land, filling up every last bit of space and consuming everything in its path.
The idea was that you would play as a wizard, and you would have six different magical elements (Fire, Water, Earth, Life, Light, and Darkness) at your disposal. These elements would come into play in multiple ways:
- Spells you can use, where each one would cast a different kind of element-based magic against one tree from the spreading forest.
- Orbs you collect each time you use a spell of that element, and which could be used to “upgrade” the spells to make them more powerful.
- The evil trees would each have an element themselves, which would dictate their strengths and weaknesses against the different spells.
The objective would be to use your spells to defeat the evil trees. If you clear the entire grid-based map, you win and advance to the next level. If the trees spread and fill up all the available space, you lose. And the levels would grow larger, with the trees spreading more aggressively, as you progress through the game.
If that all sounds a little too complicated or over-ambitious for a single developer to make in a single weekend… Yeah. In retrospect I’d definitely say it was. But that was the idea I went with.
The Development Process
How I imagined it would go:
- Friday: Planning, set up the project
- Saturday: Implement all the mechanics
- Sunday: Polish everything, test thoroughly, and submit it
As for how it actually panned out? Well…
Day 1 (Friday)
The theme was revealed at 5:00 pm on Friday, but I didn’t get started until after the kids went to bed (so it ended up being more like 8:30). But I did get the whole project set up, and by the time I went to bed on Friday night, I had a very rudimentary gameplay grid going:
So far so good, right?!
Day 2 (Saturday)
On Saturday, we did our usual morning routine: get in a workout at the gym with the fun supervised play area for the kids, followed by a restaurant lunch. And afterward, I ended up going over to help another relative move some stuff. It was evening again before I had an opportunity to continue working on the game jam.
I spent part of the evening implementing a “game save” system… Which I was thinking would be important for a game with spell-upgrading progression mechanics, but in hindsight probably wasn’t the best use of time for a game this tiny. Then I added the beginnings of the functionality for the forest to spread across the tiles.
Here’s a screenshot (taken the following morning) showing the state the game was in at the end of day two:
As you might guess, by now I was finally starting to realize that the planned feature list might’ve been a little too much, at least for the time I had and the pace I was going at.
Day 3 (Sunday)
But Sunday had the opportunity to make a lot more progress, since that was the day the aforementioned supportive husband took the kids out to get groceries and run errands and such. So I got a glorious chunk of uninterrupted coding time, and kept going with it.
Of course, by this point I was working from a revised version of the plan:
- Friday: Project setup
- Saturday: Implement some of the planned mechanics
- Sunday: Scramble to finish the most minimal version of the thing
And for what it’s worth, I did manage to add almost all of the features from the original list. The spell system ended up getting simplified from what I originally had in mind, which involved varying power levels. And the elemental strength and weakness system got simplified as well – rather than having a system where some spells would be “super effective” or “not very effective”, I ended up just making it so that the trees would be immune to spells of their own element.
So the mechanics were there, and minimal as they were, they worked. The biggest problem at this point? It was after 10:00 pm on Sunday, I needed to go to work the next morning, and my submission was a barely-functional mess. Here’s how it looked on Sunday night, still with placeholder graphics:
But I was determined to submit it, and in at least a slightly more finished-looking state, so I went to hastily make some “real” graphics in Inkscape. I skipped doing anything fancy for the magical orbs, and instead just made a wizard, an evil tree (with six differently-colored variations), and icons for the spell buttons to reflect their attack patterns based on which upgrades you’d gotten.
The End Result
After swapping out the placeholder visuals for the “real” ones, here’s how the final version of the game looked and played:
Given even a little more time, I would have liked to add some animated effects for both when the wizard is casting spells, and when teleporting to a new location. But this is where it ended up.
And it was after midnight by that point, so I put together a super simple thumbnail, wrote up a description for the game page (along with the least imaginative title ever), and submitted it.
Phew. I had no illusions that I’d made a spectacular game by any stretch of the imagination, but I was really glad to have finished a thing. And since it was ridiculously late by that point, I called it a night.
Over the course of the next two weeks, the game received 34 ratings and 23 comments from other participants in the game jam. It’s interesting how the Ludum Dare website is set up: you need to rate other people’s games in order for anyone else to find and rate your game, so I played and rated a bunch of games as part of the process. (This part was really fun!)
As far as the comments that other people left on mine, there did seem to be a few recurring themes that came up. For analysis purposes, I went through and tried to tally them up based on the general area of feedback. A lot of the comments touched on multiple areas (so the counts may not be perfectly precise) but here’s a rough summary of the most common feedback points and how often they came up:
- General compliments (16 times). I think this is to be expected since the whole vibe of the Ludum Dare event is very positive and encouraging, with everyone making an effort to provide the most constructive and tactful feedback they can – so I’m inclined to view the more vague compliments of it being nice / cool / interesting / etc. as par for the course. The non-meaty parts of the feedback sandwich, if you will. (Although, a few people did specifically mention liking the graphics which I found surprising.)
- Potential to expand on further (5 times). There were several comments suggesting that the concept could have potential if it were to be polished up further, and a few even specifically mentioned it could make a good mobile game. (This was nice to hear since mobile game development is where I’ve been heading with my “real” game dev projects.)
- Choice of technology (3 times). A few of the comments referred to the way this was developed using ReactJS rather than a more traditional game engine. While rating other games I did notice that many of the other browser-based games were built using Unity or something similar, so I guess mine might’ve stood out a little in that regard.
- Fitting for the theme (2 times). I thought it fit pretty well, so it was nice to see that that came through to others well enough.
Room for Improvement
- Confusion on how the mechanics worked (7 times). There were several comments specifically wondering how to beat the red trees… Which seems like an indication that they weren’t able to figure out how to switch spells from the default. There were also a few relating to not understanding how the trees spread (in reality, it was just completely random whether a tile adjacent to a tree would get a tree in the next round). In both cases, an in-game tutorial combined with better UI and animations probably would have helped a lot.
- The grindy nature of the progression system (5 times). This one was interesting. Some people seemed ambivalent or slightly critical of this… While others seemed to enjoy grinding (or “farming” or “power leveling”) to collect enough orbs to power up their spells. There might be some balancing issues to improve on here, as far as how many orbs it takes for an upgrade.
- Bugs (1 time). One person mentioned getting stuck and having to refresh the page, after which it worked. None of the other comments mentioned running into any bugs, though, so I guess that’s a good sign.
- Accessibility issues (1 time). One person mentioned having difficulty with the puzzle due to being colorblind… Which makes sense, since I had only changed the color (and nothing else) when hastily making the different tree variations for each element. I’ve heard a lot about the importance of this in game design, but it’s the first time I’ve run into it firsthand, and it’s definitely something I’ll have to keep in mind for future games.
In addition to the general types of feedback listed above, there were a few more specific suggestions for additional features that I thought were interesting:
- A counter showing the current number of trees. This would provide an easy way of telling how well you’re doing and how many new trees were being added on each turn.
- Unique upgrades for each spell. In the submitted version of the game, all of the spell upgrades worked the same way… A single tile damaged for level 1, a cross-shaped section of tiles for level 2, and a 3x3 grid of tiles for level 3. This suggested making them different by element. So for example, the light element upgrade might damage 5 tiles in a row.
- More predictability for where trees would spawn. Giving the player some way to anticipate where the trees were about to spread so they could block it off. This probably would’ve also helped with the confusion over that aspect of the game mechanics.
At the end of the two week period, the final results were released. Out of 2,013 games submitted to the jam, here was how mine did:
So pretty average, middle-of-the-road scores for all of the categories. Which may seem disappointing, but for what it was, I’m pretty happy with this result. The scores seem fair – maybe even generous. And the relative distribution (such as Theme getting comparatively higher rankings than some of the other scores) seem to suggest that the idea was better than the execution.
Overall, I think it provides some potentially useful data points. And now I have a baseline to try to improve upon for next time.
So what have I learned from all this? All in all, I think it was a decent first attempt, and valuable experience on a whole. But there are some things that I think went pretty well, and others that I would do differently next time:
What went really well?
- Actually finishing and submitting a game within the deadline. This was a huge one for me. Even if the game itself was super basic, making something that other people could actually play felt like a huge step forward in this whole game dev hobby thing I’ve been doing.
- Participating in the Twitter hashtags. I browsed and posted to the #LDJAM hashtag throughout the weekend, and really enjoyed it. Twitter can be a little hit or miss sometimes, as far as spam and whatnot… But this seemed to have a really high ratio of regular human people just enjoying the same hobby I did.
- Playing and rating other games. To be completely honest, after finishing the jam, and knowing that my submission fell short of my initial expectations… I was almost tempted to just slink away and pretend it never happened. But I’m really glad I followed through and checked out other people’s games. In addition to being super fun, it helped me realize that maybe I was being too hard on myself… there’s only so much a single person can do in a single weekend.
What went sort of okay?
- Time management. Although I made reasonably good use of what time I had… There were a few places where I probably could’ve put it to better use. I mentioned the save system earlier, which probably didn’t justify the time put into it. There were a couple other times when I’d get a perfectionist itch to just keep tweaking some minor thing, long past the point where I should’ve moved on to something else. So that’s something to watch out for in future jams.
- Game balance. Related to the above point, I wasn’t able to devote hardly any time to testing or tweaking the game balance. At the time of submission, I wasn’t sure if it would be too easy or too hard or impossible or what. I know at least a few people (including the supportive husband) were able to beat all eight levels… But to the extent that it was “balanced” at all, it was purely by accident. Definitely something to work on for next time.
- The graphics and visuals. Though clearly a bit rushed, I feel like the overall style turned out pretty cohesive. I don’t completely hate the look of it, at least. But it would’ve been nice to be able to put a bit more time and effort into this part.
What went kind of badly?
- Scope planning. This was a pretty abysmal failure. The game I wanted to make just wasn’t a very reasonable scope of a two-day jam… But it also had the problem of having lots of pieces that went together in a “package deal” kind of way. Next time around, I would aim for a design with a much simpler core, and then try to build up from that toward more ambitious stretch goals… But knowing the simpler version could stand on its own as a fallback plan.
- Choosing a (non) game engine. Using ReactJS made managing the game’s UI state a breeze, and iterations were lightning fast – the time between changing code and testing it was almost instantaneous. But I don’t think it lends itself as well to making a really polished-looking game quickly (assuming sounds and animations and all the bells and whistles) compared to a more traditional engine. For next time, I think I’d try something else.
- Not taking a vacation day. It would’ve been nice to have had all of Monday at my disposal… Either to continue working and polishing my submission, or to sleep in after submitting it. If and when I participate in another Ludum Dare (or other single-weekend game jam), I fully intend to pre-arrange a vacation day from work.
- The game title. Didn’t put any thought into this at all. For next time, I should be thinking about this throughout the jam… Instead of going “oh yeah, I guess it needs a title” and slapping something on at the last minute.
But the biggest lesson learned from all this? I’d been reading so much about how important it is to actually finish a game… People encouraging each other to do a game jam, or make clones of 80’s arcade games… And I mostly just shrugged it off, and went back to making tiny bits of a much larger RPG game that (realistically) was probably at least another year from being close to finished. But I think I finally get it now.
Creating a full game from start to finish… With win conditions, and lose conditions, and the ability to “save” progress, and prioritizing what’s needed to make it playable, and then having people actually try playing it… It’s a whole different mindset than I’d been working in so far. And now that I’ve had a taste, I really want to keep going with it.
So as for what’s next? Heavily influenced by this game jam experience, I’ve decided to make my next goal to fully finish and release a small casual puzzle game for iOS.
The idea would be to make something small and fun… But also to learn the ropes of beta testing, and submitting to the app store, and improving upon it based on data and feedback. Plus testing out the waters when it comes to stuff like marketing, and monetizing (in a way that doesn’t suck).
It’ll still use SpriteKit, building on some of the code I’d been writing for my larger project. And it’ll intentionally be built in a modular way, so as to potentially re-use any common components across both games.
I’m a few weeks into it now, and so far it seems to be going pretty well! In my next blog post, I’ll go into more detail about the direction I’m going with it and a closer look at the progress so far. In the meantime, there are a few super early progress screenshots available on my Twitter.
Stay tuned for the next blog post – And if you made it this far, thanks for reading!