Circuit Knights

Robots Jousting for Fun!

In a post-apocalyptic world where robots have taken over humanity... you and a friend have to joust it out with each other on improvised horses within an improvised replicated-at-best medieval village that's built by robots!

This was my first year major project that took about 3-4 months of development with a team of two designers, three artists and three programmers.

I used best practices and followed SOLID software engineering principles as often as possible. Here were some of my major contributions:

• 3D menu camera: I quickly wrote up a simple smoothed camera script that uses empty Unity game objects as positions of where the camera can transition between. And the name of the game object is what is displayed on screen. This allowed the designed to rapidly set up the 3D menu system. 

• Cutscene: I quickly put together a simple to use but good quality cutscene system and made planned out the animation of the cameras, heavily basing it on the pre-race cutscenes of various commercial racing games, to give it that commercial touch :).

• Controller Input: We used XboxCtrlrInput which is a wrapper around XInput. It was a bit difficult to setup initially but it was relatively straightforward to use after that.

• Game coordinator: This handled the main game logic including cutscenes, countdowns, rounds and transitions to game end screens.

• Vibration and Slow Motion controllers: I made these super simple yet flexible to use. You can specify the intensity of effect as well as the duration. And since they're coroutine based you can simply call the functions and walk away and not have to deal with anything in the update loop.

• Player controls: The player is able to lean left and right, as well as aim the lance and shield. I implemented Unity's inverse kinematics so that the robot's arms would "hold" the shield and lance, as well as look at the other player. And I implemented and configured blend trees so that when the players leaned it would look smooth and correspond to how much input the player has given.

• Scriptable object based systems: I was intrigued about the idea of scriptable objects so I made almost everything based on SOs. My goal was that the designer would easily be able to swap out different player characters, lances and shields and change it's settings on the fly. I also implemented a event system based on scriptable objects too.

• Horse movement: The horses moved automatically to simplify things as the player has enough in his hands already. They sped up after each pass.

This was one of my first major experience in game development where you had to work in a team and essentially the first time I used Unity in any decent capacity so I had to rapidly learn and get up to speed with it ASAP. Thankfully, I now feel pretty comfortable and am confident with the interface and workflow of Unity.

I was somewhat ambitious and too experimental particularly for the scope and duration of the project. There were some aspects that I tried to over-engineer such as scriptable objects and in the end the project almost didn't come through. I've definitely learnt my lesson from this experience and will avoid using such methods until I have a better grasp on it.

I also learnt how to work better in a team. I was able to motivate a few of my team members to push through and get some of the tasks completed.

In the end we managed to get it all together, made our first official game while having a fun time doing so.

Drag and Drop Website Builder