Home & News

Discussion Board

Conceptual Overview

CVS & Project Page




[ leiavoia.net ]
v0.2 "Switchboard"

v0.3 "Zombie"
[due ~September 2004]


Top-Level AI: "The General"

"The General" as we call him, is the top-level artificial intelligence in AXIS. He is responsible for overseeing and directing the entire axis as a whole. He assigns missions to pods, devises strategies against you the player and other computer opponants, decides how to respond to crisis, manages resources, and is an all-around cool guy. These are the general guidelines for what responsibilites the General has and what functions he can perform.

Personality: To Each Its Own

Upon generation time, each AI axis is given a General with a personality. This is what dictates the basic play style of the General. Personality has a variety of features measured on sliders with opposing extremes. Here is a proposed list of things that can be set at the games start (not necessarily by the player. It is yet to be determined if they are randomly generated or if the player can tweak them manually for a fine-tuned game, or both).


Probably has the most effect in the game. Effects range from the kind of shapes drawn from the reserve, the missions assigned to pods and the proportions of them, the tactics used in combat, and much more. Obviously, the overall effect is you either get a defensive player, an offensive one, or something in between the two extremes.


Effects mostly the stats a shape will have when created. When created, the stats are somewhat random, but will "lean" to one side or the other, some shapes more opaque, others focusing on Acuity. Not only does it effect the small adjustment in each shape's stats, it effects what kind of shapes get drawn from the mysterious pool of ether from which they come.


This is your basic enemy intelligence slider. The more you crank it up, the harder an opponant you'll be playing. Besides a harder game, the General within the Stupid end of the spectrum will tend to get more "big dumb brute" shapes while smarter Generals will find themselves equiped with smarter, though less powerfull shapes.


Consistent Generals will get more consistent shapes (in stats, not the kinds). Shapes will have higher Consistency stats and more shapes featuring dominant Consistency (like Cubes) will show up more frequently. It may also effect how long term a campaign General will hold against an opponant and how often it changes pod missions or what length it leaves the mission TimeOut at. It may effect the influence of enemy presence in pathfinding. Consistent axes will assign more pods with lesser Avoidence, while Erratic will assign pods higher avoidence, thus taking the long way around when given the choice. Erratic really throws a fork in consistent AI behavior by adding a very large amount of randomness in the equations throughout the game. Consistent axes are easier to exploit.


For some Generals, it is important to know thy enemy. They believe this is the key to victory. Other generals know that in most strategy games, it doesn't matter how good your units are, it's how many of them you have :-) Therefore, "Knowledge" emphasized Generals will create and field more scouts, have longer memory queues, and tend to end up with smarter shapes (complimenting the Intelligence Slider) as well as more stealthed shapes/pods. "Power" Generals will throw caution to the wind, will send attack forces without scouting the enemy adaquetly and also end up with stronger but less intelligent shapes. These generals are an easy target if you hit them from the side unexpectedly, but will clobber you in a head-on collison. Stealthed pods obviously work well against them.


This has some harder to explain implications. First of all, you will notice that all the above sliders effect what kind of shapes you draw and what kind of stats they have. "Concentrate" acts like a multiplier of the difference: the ends of the spectrums move further apart. For instance, if the ratios of shapes an axis was drawing looked like this based on the influence of all above sliders (over simplified example):

Cube: 65%
Sphere: 35%

With a Concentrating General, it would increase the difference in the ratio:

Cube: 80%
Sphere: 20%

While a Spreading General would end up with something much more evenly smoothed out like this:

Cube: 54%
Sphere: 46%

Another thing it will effect is the concentration of forces on the map (tight groups or catch-all arrays?) and the willingness of the General to fight a multi-front war. Spread General will be happy to send equal numbers of forces against the other axes, while Concentrate would persuade the General to focus on one particular opponant while leaving some weak points in the defense against the others.

Threat Indexing: Keeping Up With The Jones'

Every player, be it human or CPU, needs to know who they are up against. The General is no exception. A threat index is simply a ranking of opponants in the order of their perceived threat levels. Each level of AI has threat indexing. Here is how it works on the General level:

Note: When coding and writing up specs for the AI, it is usually made in an "asking myself questions" manner, which you will see often throught the AI specs.

Who Are My Neighbors?

Start by finding which other axes are the closest to my own via the pathfinding algorithm, ignoring all nullable obstacles (those that can be passed through under certain condition). Take the distance in walked squares (NOT the "Straight Shot" calculation abs(x1-x2) + abs(y1-y2)). Now apply a curve reducing formula to reduce the effect on the score from a big map vs. a small one, such as (off the top of my head):

squares_walked * ( (map_height * map_width) / 10000)

In this example, 10000 is with product of the sides of a "standard" 100x100 tile map. This of course can be adjusted depending on what we feel "Standard" really is. If in the example, we were playing on a 70x80 map, is would modify the squaeres_walked by *0.56, thus reducing the overall score that "closeness" of neighbors has to contribute to the overall threat level of that axis.

Now this is the first score factored into the Threat Index.

Who Is the Strongest?

Since you can't know every stat of every shape of every enemy pod, you'll have to guess based on what we do know. From my point of view, i can see enemy pods if they are in range, and if they are in closer range, i can see how many shapes are in the pods. What kind of shapes and with what stats i do not know. Therefore, i need to calculate who is visibly superior with something like this:

Get the sum total of all shapes in all enemy pods per axis. If the number is [?] (that is: within visable range, but not close enough to tell how many shapes are in the pods) assign the pod a defualt value (4 will work for now. that's half of the theoretical max at this point without any building or playtesting).

Then throw some kind of fudge against it to guess how many we think there might be "out there" beyond our detection. This may include map size and a constant like the previous formula with a turns_played thrown in for fun to get a rough idea. Compare the visual strength to the best guess of the invisible unknown and come up with a final score for the axis we are examining. Add this value to the previous score obtained through the last test.

Who Is Out To Get Me?

Obviously, if we know there are a lot of bad guys from the enemy axis, we need to watch out, but not if they are clear on the other side of the map. We need to detect "clear and present dangers" in our homebase area as well. Simply grab the number of known shapes in known pods (using the previous method) that fall within a certain square radius of the homebase. The radius may be modded by certain "paranoia" factors in the General's personality (pending feature - may be replaced by Consistent/Erratic pull). Add this value to the threat index.

When all is said and done, we now have a basic way to determine who the biggest threat is. At that point, General can decide what to do with them, whether to attack them or defend against them.

Memory Queues & Stat Tracking

[ to be added ]

Communication Mailboxes

[ to be added ]