Project Duration: 3 months (2015)
Team: Jasper Stutterheim, me
Game Engine: Unreal Engine 4
Platform: PC
Theme: Agents
Main Feature(s): Asymetrical Co-op, Dynamic AI
My Part: Game System Design, Programming (UE Blueprints, AI-Behaviour Tree)
Lionel & Bors is an arcade-style co-op game, that can be played by two players, with only one controller. The players take control of Lionel and Bors, who try to keep the order in a town swarming with rogue knights. The two heroes are fundamentally different from each other and depend on teamwork to succeed. Lionel is small and fast but can't take on more than a single enemy at once. Bors on the other hand is big and strong enough to take out multiple foes, but he is to slow to chase them down. The players can only survive if Lionel baits or stuns the rogue knights and Bors is ready to finish them off. But don't wait too long because the rogue knights will roam the town and band together on occasion, potentially resulting in gangs that are big enough to even be a threat to the sturdy Bors!
Since we were only two people working on this project, communication was really easy during development. My partner Jasper did the visual part and I did the functional part of the game, but we were able to exchange ideas, give each other feedback and make all import decisions together without much issue. One of our main challenges in the beginning was to pick a realistic project-scale considering team-size, available time and the fact that we had to integrate an ai-agent into the game (something I had not done before).
At first we wanted to have one player control two characters at the same time, which was a really fun mechanic to play around with. But we soon realized that the game was getting harder very quickly, as we added more mechanics to the prototype. Because of this we decided to make it also playable by two people on the same controller, which turned out to be challenging enough and more entertaining to most people. So from there on we focused on the team play aspect of the game and made the two characters really depend on each other for success.
In the meantime we agreed on a medieval setting and the toy-like visual style that Japer had worked out during the first few weeks. While he was working on character models and level parts, I started to further develop the ai-agent, which at this point was only patrolling, attacking or fleeing.
We wanted the ai-characters to behave like gangs that roam a town and cause trouble. But instead of just being together from the beginning, we wanted gangs to form dynamically during play. This means that every ai-enemy is spawned individually at the start of the game. They will then begin to roam around and either fight or form a "gang" with other ai-characters, when they encounter them. This happens all around the map and several gangs start to form. Each gang has a leader, holding the gang together. If the leader falls, the rest of the gang separates. The gangs will also fight each other or in some cases merge, which can result in large ai-mobs, if the player team isn't prioritising their targets right.
As I added more variables to the behavior of the ai-agent, I realized that the complexity was getting overwhelming quickly and that I had to cut out some of the things I had planned, to make the deadline. Looking back on it, I could have simplified many interactions between the ai-agents, since players tended to pay more attention to the positions, than the actions of the ai-characters in the level. A less dynamic ai-behavior probably wouldn't have mattered much to most players.
All things considered, the project was an engaging and pleasant experience for me. Even though we couldn't implement everything we wanted, the result turned out to be enjoyable and, even more importantly, I had fun and learned a lot in the process. Especially the ai part was very interesting, although it proved to be a tough challenge and I made some mistakes along the way. But that's just part of the learning process.