Sunday, March 25, 2018

Game Jams

I've wanted to make a post about game jams for a long time, but never got around to it, but now that I attended and won one last week I figured it was as good a time as any.

So what is a game jam? Basically it's a get together of people who are into making games, and you'll get a theme and have a set amount of time, generally a few days, but sometimes just a few hours.

I've attended a handful of game jams over the last few years, most of them single day affairs put on by GameCraft.it.

Sometimes I've been part of a group, but mostly I've worked on my own. It's always a wonderful creative experience to sit down with a bunch of people and just do what you love the most for hours. There are no excuses and the deadline forces you to get to it. Sure it's sometimes stressful and your resulting game will not always be great, but you'll always learn a lot.

So on March 16th I attended a game jam at St. James College in Cork.

The theme of the game jam was:
"There are two things you need for an adventure, a treasure map and someone dumb enough to go with you."
Which is apparently a quote from "The Young Offenders", which I have not seen. But it seems people in general just took the quote literally and made games about going on an adventure.

I was in the mood to work on my own, so I got started on brain storming ideas.

At first I was all about thinking up a cool map game mechanic and thought about doing first person where you were actually looking down at a map, but I couldn't really think of an interesting way of doing it that was realistic with the time restraints. I then had the idea of simply making the whole game board a treasure map. This fit together with another idea I've had to make a game in 3D, but with simple 2D billboards sticking out of it and being used for characters, with a camera that only pans, my thought has always been that you would be able to put together a nice look in a short time for a game jam like this, so I've wanted to give it a try for a while.

Secondly I was thinking a lot about the companionship part of going on an adventure and on foolhardiness etc. I quite quickly had the idea of having some kind of AI that you needed to proceed through the game. My initial thought was little guys around the map that you had to convince to follow you and then use up to solve different puzzles to progress in the map.

I quickly realised that having various followers and various puzzles would be way too ambitious and decided that you would have a single follower and use him as a weapon against simple enemies.

This was basically as far as my planning went, I probably used around 40 minutes brainstorming this and doodling ideas.

I figured I'd try and set up the world quickly and think a bit more about the game play details in the meantime.

I modelled a very simply map model and made a nice map texture for it. Then I drew a mountain and a tree texture and set it up in unity. This screenshot was taken later when the characters where added as well, but it's a good picture of the map.


The only thing that I'd really like to improve about the look of this (other than the shitty quick textures). Is the transition from the mountains into the map, I would love to figure out some way where they would fade in perfectly.

After I had the map more or less up and running I turned my attention to the player and minion.

The player controller was simply a rigidbody with force being applied to it from axis input, so it could be controlled by a gamepad controller.

Next the minion was made, also a simple rigidbody and this one simply moved towards the player whenever it was further than a couple of units away from it.

I then made a simple throwing mechanic: Pressing the "Fire1" input (A on the Xbox controller I used) would cause the minion's rigidbody to be kinematic and for it to be a child element of the player and located over the player's head. Then pressing "Fire1" again would cause the minion to go back to being non-kinematic and not parented and add force in the direction the player was pointed. Tadaa, you could now throw the minion.

At this point, both the player and the minion were simply made of cubes that made it possible to see what way they were pointed. This worked well, but they of course didn't look very good in the nice 2.5D world I had set up. More on that in a bit.

This had already taken hours to get working, Unity had crashed repeatedly on my crappy laptop and I was figuring out how some of these things should work along the way.

I hurried onto the Enemy.

The enemy ended up being extremely similar to the minion, as soon as the player got within a certain range of it, it would keep running towards the player. The enemy was slower than the player and the minion.

I set up a life variable of 100 for both the player and the enemy and made it so the player lost 30 points if it touched the enemy and the enemy lost 30 points if they got hit by the minion.
I also gave both player and enemy knock-back on taking damage.

This sort of worked, but was very buggy, sometimes many hits would be registered on top of each other etc.

I kept working on this and in the end I used raycasting to solve a couple of issues. I made it so the player shot a ray to check if the minion was in front of it and it would only work to pickup the minion if it was, so you could not simply call the minion back to you from wherever it was and I made it so the minion shot rays downwards to figure out when it was airborne and only did damage to the enemy if it was airborne and only moved towards the player if it was on the ground. This made the game feel much better to play.

At this point I had almost used up all the time of the game jam. And the player, minion and enemy was still just ugly blocks and I had no menu screen or game won screen.

I decided to go for making the look consistent and spent the last hour making some drawings for the player and enemy and in the end using the same drawing as the enemy for the minion as well. Since the player was now in 2D you could not see which was he was pointing in 3D space. As a quick solution I added an arrow what would indicate this, it looked a bit out of place, but no one seemed to think twice about it when playing the game.

So here is the final game in action. I was really happy with how it turned out at this point, but a bit sad that I didn't have time to make a menu and that I never got around to making some kind of "bridge" for going across the tear that was in the beginning of the map. Also life bars over player and enemies would have been a really nice touch.


So the incredible thing was that, dodgy as I felt the game was a lot of people really liked it, especially the art style, so the game ended up winning the game jam.

So here is me looking all confused and happy:


And here are the prizes I won:


If you dare to try this very broken prototype of a game you can get it on itch.io here: https://arnklit.itch.io/strange-company

Game jams a always a lot of fun and I always feel energised and creative after attending one, but winning one was even cooler. 

I've been working a lot on some new projects lately which I hope to share soon and this definitely made me supercharged to work on my games.

No comments:

Post a Comment