Sunday, August 17, 2014

4hr Game Jam #1 - 4hr Pong


I had a spare four hours on the weekend so I thought I'd follow through with a plan I had last post. I decide to do a quick little jam to get better at making games in shorter time frames. I didn't want to embarrass myself straight up so I decided to start with something easy.

I figured I may as well start where video games start. I also realised that despite it being the general starting point for everyone learning to make games, I'd never actually made a Pong clone. That all changes now... Play it here.

I'm going to do a post-mortem for it as well but I don't think I need to go into detail as much as the longer jams. Plus this jam wasn't so much about the game as the process of making it. I'll just break it up into good and bad points:

Good:

- I actually managed to finish the coding for a base game of Pong in about 1.5 hours. The break down for the rest was kind of all over the place, but it doesn't really matter. In all, I managed to get more than I planned to do done in the 4 hours, so it's a good start.
- The new thing I learnt this game was how to use fonts properly. Where before I was just making sprites for all the labels, all the text here was done on the fly with strings. It's good but at the same time it's harder to set up composition. I'll need to learn to use these better if I want to do more string related stuff/localistion in the future. Right now, I'm happy to stick with sprites.

Bad:

- There's a weird bug where player 1 can sometimes send the ball out through the top wall. I didn't have enough time to fix it but it happens occasionally. I thought I had enough checks in there that this couldn't happen, so I have no idea why it does. I didn't have time to investigate any further.
- The new feature I thought I'd add (the smash attack thing) didn't really make it harder for the opponent to react. I ended up making it expand the paddle significantly to make it also like a last second save if necessary, but it's still not as good as it should be. It should either let the player pick a corner to aim for, or send the ball to the opposite side than the opponents paddle is on (in addition to the speed up).
- The sound effects are pretty bare bones. I really need to start building up a sound effect catalogue so I don't need to mess around in bfxr ever time I need something.
- I decided to livestream this jam. It went ok, but there were a lot of little kinks that I need to iron out if I'm going to do it again (My headset kept turning itself off, I need a better timer setup, it's hard to talk to yourself about what you're doing for 4 hours).

I'm pretty happy with how this little experiment went. I don't always have a weekend that will allow me to do it, but whenever I can I'll try and do one for the foreseeable future. I think also I'm just going to stick with the timeline of game creation for themes, but if anyone has any suggestions I'll take them on board (as long as it's not a DinoRiders RTS). Next time: Some kind of Space War clone.

Monday, August 4, 2014

Adelaide Game Jam #1 - Post Mortem


So once again I've kind of gone ahead and done a game jam without doing a blog post about it first (or a blog post about anything for that matter). I did live tweet it though, if that even counts.

This time it was for the Adelaide Game Jam being hosted by Jamalaide, which is a 48 (but more like 36) hour jam that's done mostly locally. Previously, I'd also done Ludum Dare with them and produced the abysmal Agents and Assassins, so my main goal was to just do a better job this time. There was also a lot better turnout this time around, almost ten times as many people and roughly 12 games to show for it. All in all it was a pretty fun, if not stressful, weekend.

The theme for this jam was "Reaction". After some internal debate I decided to go down the chemical reaction path. The idea was to make a Bubble Bobble style platform game in which you'd have to stop monsters with chemicals that you could also combine in a reaction to create stronger chemicals to stop bigger monsters. These monsters would then explode, killing other monsters nearby in a chain reaction. I also had really lofty plans of submitting this game for the local multiplayer jam that's currently underway at Gamejolt, so there was also plans to have a second player, and therefore a need to combine shots to get the final colour chemical to kill certain monsters. Suffice to say, a lot of these ideas didn't get implemented into the final game, even though a lot of the mechanics are still built around that initial goal.

If you'd like to check out the final product, it's online here (although, the sound may be a little loud so be careful).

The Good

I guess the best part about What Has Science Even Done For Us Lately? is how much I was able to do in that tiny time-frame. I was a lot more prepared compared to Ludum Dare, so I had a better idea of just how long I had to spend on certain things. The animations are crappy, but they're still there for all of the seven monsters and one player character and with the exception one aspect, most of the mechanics work almost as intended. Content wise, I'd like to think there is more here than the other games in the jam.

Further more, there was still plenty of scope for more levels. I kind of feel I only got out roughly a tutorial, but I would've needed a few more hours there really. The levels I did complete seemed decent enough though. Watching people play seemed like they were a little harder than I had anticipated while making them (even now I can breeze through each screen in a couple of seconds with no deaths), so I dunno, maybe I'm just too good at games. One positive out of the levels that I did get through was the sense of powerless > powerful. Navigating the level without anything to deal with monsters proved challenging, but after picking up the chemical players can then go back through the hard bits destroying all the monsters that previously gave them trouble. That seemed to get the best reaction out of players.

I had also realized that all my previous games featured male main characters (except for Ascii Birds, which is genderless I guess), so I wanted to make a determined effort to make the main character female. Mission accomplished I guess, even though there's not really any characterization about her and her game isn't very good. Luckily there will be more games in the future to improve on.

The Bad

A game made in 48 hours is only rarely going to be amazing, so I don't want to be as harsh on myself as I was with Agents and Assassins. The truth is that I learnt a lot from that experience, and I've learnt a little more from this one. As long as I keep learning more, that's whats really important.

So firstly: While last time I learnt that I really need to drop scopes as much as possible to get stuff done in the time limit, I only partly followed that this time. Realistically, there is a whole lot more I could've cut down here that I kind of ignored because despite the fact it was a jam, I really wanted to make something look like it was a complete thing. That's fine for longer jams, but it's kind of not what these short term things are about. I need to learn that it's OK to not try and be a perfectionist when it comes to these kinds of jams and leave stuff looking abstract if it means more time to make it feel more fun.

Secondly: The most practical issue with the game is the collision detection. Much like last game jam, I got stuck early on trying to code something a lot more complicated than it needed to be. This time I only lost about 3 hours to it compared to the most of a day I lost previously. Despite making two games so far that are kind of like platformers, I hadn't actually made a proper platformer before. Rather than look at how that should actually be done in GameMaker, I just went ahead using whatever I already knew to approximate something that worked. It ended up causing even more problems, so in the end I super simplified it to something that kind of worked enough.

The real problem came the following day when I started adding all the enemies in. Turning on precise collision detection so that you could better jump/dodge enemies meant that you'd interact with the platforms in weird and inconsistent ways. I was already out of time, So I had to decide between a game that felt off or a game that was nearly unplayable at some points. If I had an extra couple of hours, I might have been able to fix it entirely, but at the time I was clueless as to what I could do about it.

I think next time, if I'm doing something that's unlike something I've done before, I might spend 20-30 mins reading an online tutorial before jumping straight into it.

Lastly: The game is pretty boring. There's not really a lot to it, and there's nothing really amazing that happens during it. The levels feel really straight forward and aside from the platforming there's not a lot to the puzzle aspect. Sure, it's technically a game, but it plays it really safe and doesn't do anything that every other platformer before it has done, and that's what really makes it worse. Jam games should always be breaking a boundary of some kind. They should be about stripping back the conventions surrounding games and get the player directly to the new and interesting part. Previously I'd identified that you need to engage the player within 30 seconds of the game starting. Having directly watch people playing my game this time I feel its more like you need to provide them with a "Wow" moment with in half of that. A few minutes into this one and they're still in a tutorial essentially.

The Ugly

Live tweeting this has made breaking this down a little easier:
30 mins - Concept and Design Document
4.5 hrs - Platforming (Running, Jumping, Landing, etc)
30 mins - Shooting
1.5 hours - Colour System (Pick ups, UI, Globs, etc)
3 hours - First tier enemies (Collisions and AI)
1 hour - Win/Loss states/Level setup
4 hours - Player, Enemy, Pickups and Level pixel art
2 hours - Player animation
3.5 hours - Enemy animation
1 hour - UI art
1.5 hours - Background pixel art
30 mins - Glob pixel art
1 hour - Sound Effects
2 hours - Level creation
1 hour - Code tweaks
1.5 hours - Eating
1 hour - Travelling
1 hour - Breaks
5 hours - Sleeping

Roughly:
2.5 hours - Design
11 hours - Code
12.5 hours - Art
1 hour - Sound
8.5 - Misc

Considering there's a lot of overlap between design and coding/arting, that's a pretty balanced breakdown. However, as I was getting at in the previous section, I think for a short time frame jam like this I need to spend much more time on design/code than art. I'm also wondering if maybe I should be trying to have a planning stage at the start now that I'm getting a little better at gauging development time? It seems like it could cost more time than its worth but it might be a good practice to get into.

A Fistful of Dollars

The things I've learnt this time are more applicable to jam games, but they're important to note nonetheless:
- Strip the scope down as much as possible. I learnt this last time and didn't follow through with it. I was trying to make a game that:
       - Could be played single or multiplayer
       - Had seven different enemy types
       - Relied on having multiple levels
       - Needed a tutorial that could be set across multiple levels
That's just way too many things for 48 hours. At the start I should've decided either single or multiplayer and then specifically built the mechanics around that. Rather than have all the enemies be vastly different, I could've just had one sprite that got recoloured and moved differently. As far as the platforming aspect went, it really wouldn't have deviated from the finished game much.
- Make sure there's some kind of "Wow" moment that happens early and can keep happening. It doesn't have to be something big and visually impressive. It can be something funny, or something dumb but surprising, as long as it gets a positive reaction from the player. The best games I played at this jam where the games where just dumb stuff happened all the time.
- Worry less about making something perfect. A short but fun experience is better than a long, thought-provoking one for these kind of jams. It might also be better to try and have something you can technically finish in half/two-thirds the amount of time, and then spend the rest of the time polishing the fun aspect as much as possible.

For a Few Dollars More

As much as I want to make my own Bubble Bobble, I don't think I'll be continuing from this game. I do need to know how to do basic genres in GameMaker though, so sometime soon I'm going to have to work on that.

The other thing is, I'm a competitive asshole. I really want to win these jams, but I need to get better at doing things super quick. However, I can't keep doing jam games because I also need to keep working on something I can sell as well. After watching the Art of Screenshake vid, I had searched for other videos regarding rapid development in GameMaker. I came across Cactus' (who made Hotline Miami) talk on 4 hour game development. It wasn't really a helpful talk, but the concept is interesting.

On the tram ride of shame home, I was thinking maybe I could do a little personal 4 hour jam every weekend/second weekend. I was trying to think of how it would be fair to theme it, and had thought maybe
I could just get a random page from wikipedia and use that as the theme... But then I thought that wont really expose me to more of Gamemaker, so maybe I should pick a random function/aspect and make a game featuring that instead. What if its a better idea to randomly pick a game genre and make a tiny version of that though?