Introduction
Roundabullies is our latest title and is a project that have been under development for a bit of time. It all started out with an idea about creating a 360 degree pong game.
The game have been underway for quite some time. In some of the earlier stages the game was looking more like a regular pong game set in a circular arena as can be seen in the following video:
We spend quite some time on setting it up in Augmented Reality and making sure the world would be aligned cross devices. We used ARKit in order to achieve the augmented reality. As can be seen on the video the framerate is quite low and the game play is not super polished. It does however show some of the progress we made a long the way.
Networking / Netcode
We wanted to create a multiplayer game from the beginning. We started out writing our own netcode to send UDP packages across devices to get the fastest transfer of the data packages. As we didnt want to wait for the handshake from using TCP. In order to keep the size of the sent packages small we utilized the serialization library flatbuffers maintained by google. It works by creating a declaration on how the data is stored and this declaration is then shared across applications. This ensure that the world state of the game can be placed into small packages that are easily transmitted across UDP and allows for a smarter deserialization where the data needed from the package can be deciphered quickly.
AI opponents
As the game has progressed and changed quite drasticaly through our development the AI has been through some iterations itself. To create some unique AI we wanted to test out the framework ML-Agents. This provided us with some fun challenges and we had a blast working with the framework. We used reinforcement learning and the following video shows some of the progress we made with it.
The problem we faced with the AI was that we couldn't get them to play propperly. It was important for us that the AI could play different roles on the field such as a goalie and in the forward position. To limit the scope of using machine learning we ended up backtracking to writing the behaviors our self and are now using those behaviors to switch between the positions. So to conclude there is no machine learning this time around but it was promising and could most definitely be viable for other projects.