Roof Runners

About the game


"Six players compete in an exhilarating tag game where dogs are chasing cats. Each round are up to 3 minutes long. If all cats are catched by the dogs before the round is over, dogs win. If any of the cats are free when the round ends, the cats win. Cats can free their imprisoned comrades by pressing a button, which frees all cats currently captured". 

This was a school project I did in my first year on the school Playgroundsquad in Falun. We were a group of 12. We had 3 programmers, 3 designers and 6 artists.

As you may have read above, in this game you have 6 players were 3 are cats and 3 are dogs and the game's goal is that the dogs catch all the cats into prison or that the timer runs out, that's how the cats win.


What did I do?


I made the collision system for the game that uses "wall" & "floor" meshes to check collision with other shapes positioned on the player like sphere's. It have multiple behaviours when colliding with the wall, floor or roof. When you are colliding with the roof you will stop "jumping" and fall to the ground, when you are colliding with the floor you will get snapped to the floor if you are not in the air and when you are colliding with the wall the player will be pushed back from the wall by taking the radius from the sphere and moving the player in the normal direction from the plane with the radius distance.

I also made the in-game Particle System from the ground up. My particle system is a place in the world where it will pop out item's called particles that are visible to the player and always rotate to the looking player's camera. The system have many different variables that you can change in the game level file and settings file (For use by our designers and artists). Some of them are colour over time that you can control with a texture having the beginning colour on the left side and the end colour on the right side of the texture. You can control the size over time, speed over time, what sprite sheet/texture you want for the particles in that particle system. If you wanna animate the particles and a lot more. The particles are updated with its lifetime, size with more on the CPU side and is animated and rendered with a GPU shader that I made for this.

We had the problem that we would have 6 players that used an Xbox controller each and that we could not use the X Input API by Microsoft because of the fact that X Input only supported 4 controllers at the same time while we needed six. On that note we decided that we would use the more low-level API called Direct Input that is also made by Microsoft. So I got the assignment to implement a system with Direct Input that could support 6 players and so I did. At its core it will look for plugged in controllers in a background process. If found it will change some settings for the controller and add it to a list that we could get on the foreground game processes. The controller have a device that has the current device state. We could later get that state and check for the current input on a key or axis.

I made some simple mechanics like the prison where we would have our set of two teams where the catchers/dogs could catch the cats and they would go to the prison. The cats that were in prison is there until one on the same team(cats) would go on the release button. The release button is simple where it check if a cat is inside an collision box (AABB) and then it would get all the cats that are currently in prison and place them in a random position of five pre given positions in the world and technically remove the cats from prison with its states and such. 

We had a jumping mechanic for the player that is more complicated than you would think. Our designers wanted a jump that would first jump at the same speed until a set threshold is reach. I would then curve smoothly until a falling state is reached where it would fall with a set value we called gravity. The player would stop falling/jumping when the player collides with a roof or floor.   

I Also made some of the UI elements like the start menu and lobby and all the system's necessary to make it work.

The start menu you can start the game, open a tutorial screen that describe's what the game have for goal, what you need to do to win and all the controls with information about the jump pads and power up we have in the game. We have a credit screen where all the names of the wonderful people that did this game and a quit game button that's quits the game.

In the lobby, the screen will split up to 6 parts representing the players. Here you can change some settings for you only like the sensitivity on the X axis and you can enable our own camera assistance. When everyone is ready you will click on X on the controller as said on the UI.

I was the lead programmer for this project. I planned out our nine weeks on the programmer side and I communicated with our lead designer and lead artist about how we could go forth with our problems and challenges. I checked daily on our other programmers to see if everything went smooth. I would help if needed.


Adrian Rondahl, Lerängsvägen 2, 79570 Vikarbyn, adrian.rondahl@live.se, +46 700727717
Skapad med Webnode
Skapa din hemsida gratis! Denna hemsidan är skapad via Webnode. Skapa din egna gratis hemsida idag! Kom igång