Developing
Categories
Tethys' AI Director
2010-02-22
Written by Riggsninja. Riggsninja's forum profile can be viewed here. Artificial Intelligence related journal entry. Journal has 1 comments.

I've always adored top-down 2D shooters. I was never particularly good at them. When I was a kid I don't think I ever got past the first level or two before I'd get bored and go play Mario or something, but I liked them anyways. Then Ikaruga came along and re-ignited my interest. Ever since then I've really wanted to make my own 2d shooter.

One thing that stood out to me about Ikaruga was that the enemies always spawned in the same place and did same things. Now, I understand why they did this. It's meant to be a very precise game for one, especially with the way they did the combo system. Also, the obvious alternative to doing things the same all the time is to introduce randomness, which I've never really liked either. Randomness essentially means unfairness, it means things can happen to work out great even if the player isn't doing particularly well, and things can go shitty even if the player is doing really well. These things can be mitigated in various way, but in games like shooters, where small mistakes or misfortunes can lead to death, it doesn't seem to me to be a favorable way of doing things.

It seemed to me there had to be a middle road, or even better, someway to get the best of worlds. So, my attempt at such a solution was to introduce an AI engine. By using AI to control how the ships are spawned it means that the way the ships spawn can change based on the AIs changed but it's not random it is based on tangible factors.

I'm not gonna go into the gory details here, but I'll give you a quick run down of some the basic ideas behind how I did this. Essentially, it goes something like this: there is a controlling AI which decides which ships can be spawned, who I am gonna call Bob from now on because that will make the following (somewhat) less awkward. Each ship is given a predetermined priority, and cost. So the best ships in the game are given a very good priority but a high cost. Bob is also told which ships it is and isn't allowed to spawn. So at the start of game it is only allowed to spawn the dumbest ships. Bob is then allocated points as the game progresses and it makes decisions on what to spawn based on the ships' priorities and how many points it has to spend vs. the costs of the ships. The priority and and in some cases cost of ships changes as the game is played based on a variety of factors, including which ships are hitting the player, and how fast the ships are dying.

Another major consideration for the game was difficulty. Initially when I was making the game I took the traditional approach of using one hit kills. I thought it about and though, and although I wanted to make a traditional shooter, I realized times have changed and this is the internet so I added health. Later I somewhat reluctantly decided to allow infinite continues for similar reasons.

Although I still think these decisions we're the right way to go, they did leave a bit a of bad taste in mouth, so to satisfy myself I made sure to put in an "old skool" mode with one hit kills and one continue. Since the game was balanced based on having health and infinite continues old skool mode is unfeasibly difficult for most people, but that's part of the charm, I think.

The development screenshots I've included are from way back in the dark ages of this project when the game had no graphics.

Jackson
2010-03-05
Haha those screenshots look funny. I hope the final game won't look the same.
Submit a comment
Name
Enter answer to
Comment