THE GAME OF MAKING GAMES
It all began when I was working on the Artificial Intelligence (AI) of the Non Playable Characters (NPCs) for a military strategy game.
One of the most important and time consuming part of this task, was testing: hunting bugs, finding potential improvements and most of all keeping the game “fun”. And without a good testing environment and a specific set of tools, it can easily become a painful experience.
At first I was simply playing against the computer waiting for bugs to jump at my face and hoping to have this “eurêka” moment dictating me what to change to get a better AI. Not really efficient, as you can imagine.
That’s why I decided to set up a test scene with 2 teams of NPCs fighting against each other. It quickly proved to be a much better way of iterating on the AI system.
Passively watching the game running allowed me to focus on the various problems occurring on screen.
The AI controlled NPCs exposed my system to much more and diverse situations than I could do by myself, revealing much more bugs very early.
Improving the AI design was also easier: I started a game with both teams using the same AI, tweaked the first one until it could beat the second one, and then repeat with the new AI.
But most of all, this iterative process of building AIs was actually fun and rewarding! Sometimes a few tweaks made my little guys completely outsmart the opposing team. Some other times it made them dance around covers and throw grenades at their teammates’ face.
That's how I realized I could make a cool game out of it.
BREAKING THE RULES
Nowadays, AI has tons of different applications. Video games are just one of them and use very specific set of rules.
The design approach is very “player oriented”: what matters is what the player sees and feels. If a NPC is out of screen, it doesn’t necessarily need to run the AI system, saving resources for other parts of the game.
Behaviours don’t have to be realistic, as long as they fit the game design. More often than not, we take shortcuts. Like when an enemy starts reacting to your presence even if it doesn’t have a clear line of sight to your position because distance check was enough.
But the most important rule is once again to keep the game “fun”. Which often means searching for the best compromise between dumb meat bags and omniscient overseers.
Enemies shouldn't be too dumb or the player wouldn’t have any challenge beating them. But they shouldn't be too smart either or it would feel like the game is cheating. They must feel fair, don’t forget they are meant to die anyway.
Same goes for player allies on the battlefield. If they are just following him, attracting enemy fire toward his squad, the player will probably want to shoot them in the kneecap and move on. On the contrary, if they headshot every opponent they “see”, they may steal the show and get the same reaction from the player.
These rules exist for the sake of gameplay but I often asked myself what if we could forget them and just go for the smartest AI possible.
Before I knew it, a game was born in my mind. A game about crafting the best possible AI. This game is called Gladiabots.
Gladiabots is a competitive programming game where you teach badass killing machines how to kill your opponents and fulfil various missions.
A picture is worth a thousand words, right? And a video is made of thousands of pictures. So this should be worth a million words:
The game is currently in free open Alpha and offers solo missions against pre-programmed robots as well as online multiplayer matches against other players AIs.
It’s available on PC, Mac, Linux and Android at GLADIABOTS.com.
And this is just the beginning, there’s a lot of new features coming up:
- Bot classes and customization
- A map editor for solo and online missions
- Periodical challenges and tournaments
- And obviously more content: new game modes, new entities, new AI components, etc
If you want to take part in the game development or simply give your feedback, please join the growing players community at gladiabots.com/community.
(reblog from Madewith.unity.com)