381 lines
20 KiB
Groff
381 lines
20 KiB
Groff
|
|
[===========================================================================]
|
|
[ ]
|
|
[ Ogre Strategy and Notes ]
|
|
[ Part Three ]
|
|
[ ]
|
|
[===========================================================================]
|
|
[Ogre Artificial Intelligence]
|
|
[===========================================================================]
|
|
|
|
The first step in designing the Ogre's Artifical Intelligence (OAI), was
|
|
to determine just what an Ogre should do. This required much research into
|
|
how "experts" played the game, in addition to many hours of game play to test
|
|
various OAI concepts. The single most difficult aspect of designing the OAI
|
|
was the fact that Ogre is a game based on probabilities. Every time the Ogre
|
|
fires at a defender there is a chance of hitting, disabling, or missing.
|
|
Assessing all of these chances for every possible combination of targets the
|
|
Ogre may have, for every possible move the Ogre can make, evolved into a
|
|
monumental task.
|
|
The Ogre's ultimate goal is to destroy the Command Post (CP) and get
|
|
away. Its highest priority is to destroy the CP. Its secondary priority is
|
|
to get away. On its way to the C
|
|
P, the Ogre will be trying to destroy as many
|
|
defenders, while sustaining as little damage to itself, as it can. This means
|
|
the Ogre must not blindly dog a path straight to the CP, or the defense would
|
|
merely set up a gauntlet that would destroy the Ogre before it could reach the
|
|
CP.
|
|
The Ogre employs two intelligence techniques: strategic and tactical.
|
|
Ogre Strategy involves long-range targetting of howitzers and the CP and
|
|
avoiding terrain traps created with the editor. Ogre Tactics involve
|
|
short-range maneuvers while enroute to its next long-range target.
|
|
At any given time, there is a limited number of hexes the Ogre can't
|
|
legally move to. Some of these hexes are more advantageous to the Ogre than
|
|
others. The Ogre's tactical intelligence determines which hex has the highest
|
|
value.
|
|
|
|
The factors involved in determining the value of a hex are:
|
|
|
|
1) The distance of the hex from the current long range target (i.e.
|
|
Howitzer or CP.)
|
|
2) The value of the defenders the Ogre can attack from that hex.
|
|
3) The amount of damage the Ogre may suffer in that hex.
|
|
|
|
The steps in determining the Ogre's best move look something like this:
|
|
|
|
1) Find a legal path to a target hex.
|
|
2) Determine the value of the defenders the Ogre can attack from the
|
|
target hex (henceforth referred to as "AttackVal").
|
|
3) Determine the amount of damage the Ogre may suffer in the target
|
|
hex (henceforth referred to as "DamageVal").
|
|
4) Determine the value of the target hex using its distance from the
|
|
current long-range target, and the hex's AttackVal and DamageVal.
|
|
|
|
These steps are performed for every hex the Ogre can reach from any given
|
|
position. The Ogre then moves to the hex with the highest value.
|
|
Each defender is assigned a relative value by which the Ogre assesses
|
|
their worth. For each hex the Ogre can reach, every defender that can be
|
|
fired upon from the target is assigned a percent chance of being hit (%HIT).
|
|
As the Ogre rams, overruns, or hits the various targets, those targets %HIT
|
|
will be increasing (usually). As soon as the Ogre has completed its simulated
|
|
attack from the target hex, each piece will have its relative value modified
|
|
by the Ogre's percent chance to hit it. The summation of the piece's modified
|
|
relative values will be the target hex's AttackVal.
|
|
The same %HIT will be used to modify each piece's ability to damage the
|
|
Ogre from any given target hex and the summation of these values will be the
|
|
target hex's DamageVal.
|
|
The remainder of this section explains the techniques that are used in
|
|
determining stragegic targetting and in performing the four steps outlined
|
|
above for computing the next best hex.
|
|
|
|
Strategic Long-Range Intelligence
|
|
=================================
|
|
|
|
Due to the long-range striking power of howitzers, it is necessary for
|
|
the Ogre to be able to plan an overall strategy concerning howitzers. If it
|
|
weren't for the howitzers, the Ogre co
|
|
uld play a good game without looking
|
|
more than 1 move ahead (except for being drawn towards the CP). Sometimes it
|
|
is best to make the CP the only long-range target and disregard any howitzers.
|
|
Other times it is necessary to target certain howitzers, or a sequence of
|
|
howitzers, before heading for the CP.
|
|
There are two main considerations when planning Ogre strategy strictly
|
|
around the howitzers and the CP. 1) getting to the CP in the least number of
|
|
turns, and 2) suffering the fewest number of howitzer hits in the process.
|
|
The strategies the Ogre will consider will vary in value based on the
|
|
defenders howitzer setup. One approach will be to target the CP alone.
|
|
Another will be to target each howitzer, prior to the CP, in varying orders.
|
|
The prime strategy will be the one that gets the Ogre to the CP in the fewest
|
|
number of turns with the least number of hits.
|
|
The final long-range goal the Ogre will consider is leaving the map.
|
|
This is a goal the Ogre will never consider unless the CP has been destroyed.
|
|
Once the CP has been destroyed, the Ogre will try to leave the map as quickly
|
|
as it can.
|
|
|
|
Tactical Short-Range Intelligence
|
|
=================================
|
|
|
|
A finite number of PATHS are available to the Ogre and a complete list of
|
|
these paths was compiled. The list consisted of 58 paths for any one of the
|
|
six facings from a source hex.
|
|
|
|
Selecting a Path
|
|
================
|
|
|
|
+-----------------------------+ In the path representation, the
|
|
| | letter "S" denotes the Source hex (or
|
|
| | starting hex), and the letter "T"
|
|
| Diagram #1 Here | denotes the Target hex (or destination
|
|
| | hex). The arrows show direction of
|
|
| (See Ogre Strategy | movement. The numbers label each move.
|
|
| Diagram Pic) | The shaded circles represnent craters.
|
|
| | The example below illustrates using two
|
|
| | movements to go a distance of two
|
|
+-----------------------------+ hexes.
|
|
|
|
The Ogre will start looking at paths that have a distance of 1 and work
|
|
up to paths that have a distance equal to its current movement value.
|
|
|
|
+-----------------------------+ Certain paths are designated as RAM
|
|
| | paths (Rpath). An Rpath is a path that
|
|
| | does not use the direct route to the
|
|
| | target hex. The purpose of an Rpath is
|
|
| Diagram #2 Here. | to attempt to ram a defender (or to
|
|
| | overrun infantry) while enroute to the
|
|
| (See Ogre Strategy | target hex. Illustrated is an Rpath
|
|
| Diagram Pic) | that is almost identical to the above
|
|
| | path. Both paths have the same source
|
|
| | and target hexes. The difference is
|
|
| | that upon arriving at the target hex
|
|
| | the Ogre expends a third move to
|
|
| | potentially ram a defender a second
|
|
+-----------------------------+ time.
|
|
|
|
If no ram, or overrun, has occurred upon reaching the end of an Rpath,
|
|
then no attempt is made to evaluate the target hex for its AttackVal and
|
|
DamageVal, since the target hex will already have been evaluated by a
|
|
previous, more direct path.
|
|
Actual game play allows a 50% chance of destroying a mobile armor unit
|
|
with a single ram. For simulation purposes, however, if an active mobile
|
|
armor unit is rammed, it will be marked as disabled and assigned a 75 %HIT.
|
|
If a disabled, or immobile, unit is rammed it will be assigned a 100 %HIT. If
|
|
an INF 1 is overrun it will be assigned a 100 %HIT. If an INF 2 or INF 3 is
|
|
overrun it will be reduced to an INF 1 or INF 2, respectively, and AttackVal
|
|
will be increased by the value of an INF 1.
|
|
Ramming an armor unit costs the Ogre 1 tread unit. It was therefore
|
|
necessary to assign a value to the Ogre's treads so that the DamageVal could
|
|
be increased whenever the Ogre decides to ram. Decreasing this tread damage
|
|
constant causes the Ogre to ram more frequently.
|
|
If, after all legal paths have been simulated and the Ogre is actually
|
|
moving along the selected path, a single ram destroys an active, mobile armor
|
|
unit anywhere before the end of that path, then the Ogre will re-evaluate a
|
|
new path using the remainder of its movement value. This is necessary due to
|
|
the fact that, in actuality, the Ogre has a 50% chance of destroying a mobile,
|
|
active armor unit with one ram only, whereas the simulation logic always
|
|
counts a single ram as a disable with a 75 %HIT.
|
|
The Ogre must have at least 3 treads to ram a heavy tank and 2 treads to
|
|
ram all other armor units, except the CP (so it won't immobilize itself).
|
|
|
|
Evaluating a Hex's Attack Value
|
|
===============================
|
|
|
|
The "attack value" of a position to the Ogre is represented by AttackVal.
|
|
Each defender will have a relative value assigned to it, referred to as
|
|
AttackVal (defender). These relative values look something like this:
|
|
|
|
1) CP :255 5) Heavy Tank :100
|
|
2) Howitzer :200 6) Infantry 3 :60
|
|
3) GEV :100 7) Infantry 2 :40
|
|
4) Missile Tank :100 8) Infantry 1 :20
|
|
|
|
AttackVal will be based upon the cumulative AttackVal(defender) for each
|
|
defender the Ogre can bring weapons against. The Ogre will deploy its weapons
|
|
against all possible defenders and assess the potential value of those
|
|
defenders. The weapons are deployed in this order:
|
|
|
|
1) Antipersonnel (AP)
|
|
2) Secondary Batteries (SB)
|
|
3) Main Batteries (MB)
|
|
4) Missiles (MSL)
|
|
|
|
|
|
If there are no defenders at exactly 3 hexes away from the Ogre's
|
|
targetted hex then MB's will be processed before SB's. This is because there
|
|
is no point in holding the MBs for a target out of reach of the SBs if there
|
|
aren't any.
|
|
Each time the AttackVal of a hex is determined, every defender will be
|
|
initially assigned a 0% chance of being hit (%HIT) by the Ogre. As the Ogre
|
|
simulates a hit against a target, the target's %HIT will be increased. As
|
|
soon as the Ogre has completed its simulated attack for all weapons, each
|
|
piece will have its %HIT multiplied by its relative value. The summation of
|
|
the piece's modified relative values will be the target hex's AttackVal.
|
|
In Determining a target's %HIT for any given weapon, the ratio of the
|
|
Ogre weapon's attack strength to the target's defense strength is used. The
|
|
%HIT values for both enabled and disabled targets for each of the various odds
|
|
are as follows:
|
|
|
|
Percent Chance To Percent Chance To
|
|
Odds Hit Enabled Pieces Hit Disabled Pieces
|
|
-------------------------------------------------------------------
|
|
|
|
less than 1-2 0% 0%
|
|
1-2 25% 33%
|
|
1-1 50% 67%
|
|
2-1 67% 83%
|
|
3-1 83% 100%
|
|
4-1 92% 100%
|
|
better than 4-1 100% 100%
|
|
|
|
Infantry 1 targets are counted as disabled pieces.
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
1) Antipersonnel
|
|
================
|
|
|
|
Since the Ogre only gets one attempt with antipersonnel (AP) against
|
|
infantry, it must deploy its AP with optimum efficiency. The algorithm
|
|
outlined below assumes optimum deployment consists of hitting as many pieces
|
|
as possible, it, therefore, deploys starting with the lowest odds (1-2) and
|
|
works its way up.
|
|
|
|
The Algorithm goes as follows:
|
|
|
|
* Sort the infantry within 1 hex of the Ogre in descending order
|
|
of defense points (D).
|
|
* Go 1-2 starting at the bottom of the list and working up.
|
|
* Go 1-1 starting at top and working down.
|
|
* Go 2-1 starting at top and working down, skipping 1s (D=1).
|
|
* Go 3-1 starting at top and working down, skipping 1s.
|
|
* Go 4-1 starting at top and working down, skipping 1s.
|
|
* Go 2-1 starting at top and working down, including 1s.
|
|
* Go 3-1 starting at top and working down, including 1s.
|
|
* Go 4-1 starting at top and working down, including 1s.
|
|
* Put remaining AP on lowest infantry.
|
|
|
|
The diagram below depicts the Ogre surrounded by 5 infantry units that
|
|
have a combined defense value (D) of 9. The following example uses the above
|
|
algorithm to determine the AP values represented in the diagram.
|
|
|
|
+-------------------------------+ 1) Sort them in descending order:
|
|
| | D = 3 2 2 1 1
|
|
| |
|
|
| | 2) Deploy at 1-2 from bottom to top:
|
|
| | D = 3 2 2 1 1
|
|
| Diagram # 3 Here | ---------------------------------
|
|
| | A = 1 1 1 1 1
|
|
| (See Ogre Strategy | 1
|
|
| Diagram Picture) | It defaults to 1-1 against D=1
|
|
| | since you can't get a 1-2.
|
|
| |
|
|
| | 3) Deploy at 1-1 from top to bottom:
|
|
| | D = 3 2 2 1 1
|
|
| | ---------------------------------
|
|
| | A = 1 1 1 1 1
|
|
| | 1
|
|
+-------------------------------+ 1 1
|
|
|
|
The last AP was deployed against the first "2" in the list, so the loop
|
|
is exited.
|
|
|
|
The AP deployment now equals the values you see in the diagram above.
|
|
|
|
Once the AP are deployed, they will be used in a simulated attack against
|
|
the selected targets. The ratio of AP to DP will be used to determine the
|
|
%HIT used in modifying the AttackVal(defender) and the defender's damage
|
|
potential next turn. If, for example, the Ogre deploys 2 AP against an
|
|
infantry 3, then the ratio will give 1-2 odds which renders a 25% chance to
|
|
hit the infantry.
|
|
|
|
2) Secondary Batteries
|
|
======================
|
|
|
|
First, all targets within range (2 hexes) of SBs are listed. Then the
|
|
cumulative %HIT for those targets is computed. Deploy 1 SB against the
|
|
defender with the most valuable target with the lowest comulative %HIT. If
|
|
there is a tie for the most valuable target, then the defender that is closer
|
|
to the Ogre's current long-range target has priority. Using the ratio of the
|
|
attack strength of the SB and the target's defense strength, determine the
|
|
cumulative %HIT. Use the new %HIT to re-compute the target's value. Repeat
|
|
the SB deployment until all SBs are used or until all targets have a 100 %HIT.
|
|
|
|
3) Main Batteries
|
|
=================
|
|
|
|
This is done the same way as the SBs.
|
|
|
|
4) Missiles
|
|
===========
|
|
|
|
Missiles will be deployed similarly to the main and secondary batteries
|
|
but with a few modifications. It is desirable that missiles be reserved as
|
|
long as possible for use against howitzers or the CP. The missiles will,
|
|
however, be deployed if it appears they may be destroyed.
|
|
Once all weapons have been deployed, the targetted pieces will have heir
|
|
relative values modified by their %HIT and the total of there values will be
|
|
assigned to AttackVal.
|
|
|
|
Evaluating a Hex's Damage Value
|
|
===============================
|
|
|
|
All of the defenders that can strike against the Ogre for a particular
|
|
move contribute to a hex's DamageVal.
|
|
It was necessary to establish a mea
|
|
ningful relationship between AttackVal
|
|
and DamageVal. The first step in doing this was to determine what the Ogre
|
|
would consider an even trade of damage inflicted for damage received. A
|
|
constant was arrived at that is multiplied by the total attack points of the
|
|
defenders that can reach the Ogre in the target hex.
|
|
The formula to determine DamageVal for a particular hex looks something
|
|
like this:
|
|
|
|
DamageVal=(Defender Attack Points) x Damage Constant
|
|
|
|
Modifying the Damage Constant makes the Ogre play more aggressively or
|
|
more cautiously.
|
|
All defenders are checked to see if they can strike the Ogre on their
|
|
turn (taking into account the defender's attack range, movement value and
|
|
terrain). The attack strength of each defender is modified by their %HIT
|
|
computed by the attack evaluation logic.
|
|
|
|
[===========================================================================]
|
|
[Evaluating the Draw of a Long-Range Target]
|
|
[===========================================================================]
|
|
|
|
TargetVal is the variable that causes the Ogre to move towards the curent
|
|
long-range target (i.e. a howitzer or the CP). There are three situations
|
|
when considering the Ogre's movement relative to its current target:
|
|
|
|
1) decreasing its distance (a positive effect)
|
|
2) not changing its distance (a negative effect)
|
|
3) increasing its distance (a strong negative effect)
|
|
|
|
When moving towards its current target, the best the Ogre can do is
|
|
decrease the distance by the amount of its movement value. Anything less than
|
|
this is suboptimal when considering movemen only. If the Ogre can increase
|
|
its advantage by not moving as close to its target as it can in order to
|
|
destroy a defender(s), then it should do so.
|
|
The technique for determining TargetVal is to divide a constant by the
|
|
Ogre's maximum movement value and multiply the result by the number of hexes
|
|
that the Ogre moves towards its current target (a positive value) or away from
|
|
its current target (a negative value).
|
|
|
|
Several factors may modify the attraction of a target. Some of the
|
|
factors are:
|
|
|
|
* Often it is desirable to move away from the current target in order to
|
|
destroy a relatively defenseless defender(s). Thus, a path that shows a high
|
|
attack value with little or no damage value is weighed positively, whether it
|
|
is far away fom the current long-range target or not.
|
|
|
|
* If the Ogre is in a howitzer umbrella, then the Ogre will have a greater
|
|
tendency to move towards its current long-range target, thus keeping the
|
|
howitzer from getting too many shots at it.
|
|
|
|
* If the current long-range target shows at least 50% chance of being
|
|
destroyed (which is also a sure disable), then the Ogre will be pulled to the
|
|
next long-range target. This will keep the Ogre from getting closer to the
|
|
current target than it has to in order to destroy it.
|
|
|
|
* In order to keep the Ogre from "wimping out" (i.e., running scared), a path
|
|
that moves away from the current long-range target that shows zero
|
|
AttackValue, is weighted negatively.
|
|
|
|
Once all of the factors for a hex have been evaluated, they can be
|
|
combined to arrive at the overall value for that hex.
|
|
|
|
The formula for determining the value of a hex is:
|
|
|
|
HexVal = AttackVal - DamageVal + TargetVal
|
|
|
|
The Ogre performs these computations for every legal move it can make
|
|
from its current location, then selects the hex that has the greatest value.
|
|
|
|
[===========================================================================]
|
|
|
|
[End of Ogre Strategy Notes]
|
|
Courtesy of L.S.D. Remember-you always have a friend in Texas!
|
|
Strategy Notes typed by Sector Seventeen.
|
|
|
|
|