GGJ 2018: Pocorob

My friends and I decided to participate to the Global Game Jam 2018 as a team… only problem was we were three designers. I wanted to test my programming skills, so I pushed for making the game in Unity instead of Construct and although it may not show…it paid off. This game is, in many ways, a train wreck, but it was one of the most formative and fun experiences in my career so far.

The theme for the jam was “transmission” and the game is basically a platformer where the controls are delayed.
You can check the game out here.

What I learned

Now, this was an awesome experience and i think I learned a lot here, apart from all the regular stuff people learn the first time they take part to a game jam I feel I learned some different things.
As I said our team was made up of three students of game design and no one else. So for the first time I was in charge of the programming in a team. Up to this moment all I ever did was personal projects and tutorials and reading books, I didn’t know the first thing of working in a team as a programmer.
I learned that you can’t do stuff at your own pace, you need to plan your code and your time as to fit the needs of other people. One thing I also learned is to structure the code in a team project. If one thing, I definitely understand better the struggle of being a game programmer.

Reinventing the wheel

The idea for the game came to my mind complete with the code to make it work.
Now, I felt that my idea for the code was awesome, and it definitely worked, in the end. Unfortunately, a few weeks later, I discovered coroutines…and I facepalmed hard.
Anyway this was the “brilliant” idea.
Basically I used 2 lists of integers, one for the vertical axis and one for the horizontal one:

  • On the start of the game a number of 0es is added in each list based on how long the delay has to be.
  • On every frame it checks if any input was given for each axis and puts a 0 or a 1 at the end of the corresponding list
  • After this step it reads the first item on the list, and stores it in a variable, one for each axis, and then it uses the variable as a multiplier for the force of the movement.
  • Then it removes the first item of the list.