ENTRY

[ESC]
2h1091 words

[History] BomberFUN "Computer Intelligence" explained

At around the year 1999, an old childhood friend of mine called me and asked whether I'd like to be part of a new project. I was a student at that time studying Computer Science in Engineering at the Technical University of Hamburg-Harburg.

Funny side story: At that time, the TUHH founded the Northern Institute of Technology and called it NIT (yeah... right). As students we made a lot fun of this, because the location was in Harburg, which in turn is located in Southern Hamburg. We thought "Southern Hamburg Institure of Technology" would have been more appropriate... don't know why the decision makers were against it, lol.

Anyway. So I asked him what this project was all about and he told me that he decided to found a new company that would develop videogames. More specifically: He already started to work on a DirectX based kinda-clone of the well known Bomberman type of game. He was a huge fan of Atomic Bomberman, that - unfortunately had some issues with gamepad support on Windows 95.

So the story goes like this: My friend reached out to Hudson Soft - the developer of Bomberman - and basically asked for their sourcecode so that he can fix this issue. Strangely enough, they didn't agree. My friend however can be kinda stubborn at times, so he asked them if it was okay for Hudson Soft if he developed an on version of Bomberman and they basically said: Do whatever you like.

So he did. And a couple of months later, I was on board, too.

We built up a team of several people responsible for different parts of the game. While my friend lead the company and implemented the overall game engine that hold everything together, I was responsible for the menu and navigation, the networking layer, the sound engine and also what we called "CI" back then. It stood for "Computer Intelligence" and was basically the algorithm that controlled the computer opponents.

My problem only was that I didn't have ANY clue about how this works. I was working on code for months with no real progress and my friend was already getting nervous about it. I would work for 24 hours straight some times before falling asleep until one day it hit me: This gameplay is not really about random movements. It's all about strategy. So I started thinking about (and also watching other players and even myself) how exactly this game is played.

The result was a flow diagram with a clear picture of the best strategy on how to play BomberFUN: You basically want to win the game, right? So you need to behave in a way that increases your chances to do so. The best strategy to win a game of BomberFUN is actually not to die. So the foremost and best working thing to do is avoid getting killed. So in case there's a bomb threatening you: Get away. Sound too simple, right? So here's another strategy: This game has loads of goodies to collect. Like additional bombs, roller skates that make you faster, etc. But it's not only about collecting these things so that you are better equipped. It's also about other people NOT being able to collect these goodies when you already did so. :)

Here is a scan of a diagram that reflects what would later become the BomberFUN (almost unbeatable) CI:

But I still had a problem. How would I be able to make the computer opponents actually move and howe would I tell that damn thing where to move and what way to take there?

I did some research and luckily found a website about a topic called "Pathfinding" and not much later a demo that used a generic A* Pathfinding algorithm (pronounced: A Star). It turned out to be the most common way of finding a path between two locations using cost calculations.

The moment these two components snapped together, the pathfinding algorithm and the gameplay strategy was the beginning of something that would later on be described as the most annoying computer oponent ever seen in such a game...

You know, at first it seemed kinda hard to even make that dumb thing move at all. But when I finally thought through a gameplay strategy and made it actually work, it turned out to be way too good. Almost unbeatable. What I was missing at that time was this: People get distracted all the time. By soundeffects, by music, by other players screaming at them, name it. The "CI" does not. It just follows its perfect gameplay. For instance: With only one bomb you would have never been able to defeat any CI. Even two would not be enough. With at least three bombs and some tricky stuff like kicking or punching them in the right moment you could fool the CI... out of luck.

So when people started to complain about it, I added a new option to the game that let you decrease the I in CI. ;-) However, did you ever try to make something that works perfect suddenly make mistakes that in turn "make sense"? The CI started to behave in a weird kind of way. For instance it would struggle with decisions in which direction to move - so that the result would be an oponnent with kinda spasms.

However, the game had one feature that I never managed to teach the CI: Hurry Up Time.

Short before the round time is over, a friendly reminder pops up telling you to hurry up. When this happens, one of three things happens: Either barrels or stones appear and roll around the outer part of the level or spikes move up and down that area. So you better stay away from there. However, the CI doesn't "understand" moving obstacles and because it constantly tries to avoid threats its movements get kind of... uncoordinated at the least. :)

So the best strategy to win agains the BomberFUN CI is: Avoid getting killed while you collect as many bombs as you can and then get the CI into trouble in the very last seconds of a round...

So this was Post Mortem about BomberFUNs "Computer Intelligence" (and more) and if you actually read this to this point are would like to read more about BomberFUN, let me know.

Right now - about 25 years later - I am working on its code again to make it compatible with Steam (including Achievements and even more: Online Gameplay using Steam Networking).

0 replies

Join the conversation