Home
Documents
CCL

SECTION 2 - MOVING THE CYBERTANK

Mobilizing your cybertank is a rather simple task, but one of extreme importance. With superb tactical maneuvering, your cybertank can sneak-up on the enemy without the enemy ever knowing what hit it. By the same token, bad judgment in movement can mean a quick termination of your cybertank. Many factors must be weighed when designing a path of movement: movement consumes fuel, a cybertank’s treads must be functional, and obstacles must be avoided. With all this to consider, a cybertank must still be aware of its prime objective -- survival.

2.1 TREAD DAMAGE AND REPAIR

COMMAND STRUCTURE

1 cyc If [Tank] Treads [are] Functional Then [Branch To : Do] “Label”
1 cyc If [Tank] Treads [are] Not Functional Then [Branch To : Do] “Label”
60 cyc Repair Treads

SYSTEM VARIABLES AFFECTED

  • TreadDamage

EXAMPLE USAGE

CheckTread
   If Tank Treads Are Functional Then Branch To
      CT_Exit
   Repair Treads

CT_Exit
   Resume
Cybertanks use treads for MOVING and turning. When treads are destroyed, cybertanks cannot move. Repair kits, if purchased, can be used at any time to repair damaged treads. Refer to Section 5.1 for detailed information on cybertank repair.

2.2 MOVING

COMMAND STRUCTURE

40 cyc Move [Tank] Forward “#”
40 cyc Move [Tank] Backward “#”

SYSTEM VARIABLES AFFECTED

  • TankX
  • TankY

EXAMPLE USAGE

MoveClear
   Detect Obstruction at Tank Direction
   If Movement is Not Obstructed Then Branch To MC_Move
   Fire Weapon at Obstruction
   Branch To MoveClear

MC_Move
   Move Tank Forward 1
   Resume
Cybertanks can move forward (the direction they are facing) or backward (opposite the direction they are facing). You must specify the number of hectometers your cybertank is to move. Movement can range from 0 (useless) to 62 (dangerous).
Once instructed to move, your cybertank will not stop until it either reaches its destination or runs into an obstruction. If an obstruction is encountered, your cybertank incurs damage and stops. The amount of damage is determined by the object hit: buildings cause more damage than trees. Some objects (e.g. trees, bushes, houses, and headquarters) can eventually be destroyed if you continually ram them, while others, such as the battlefield barrier (resembling a brick wall) and reinforced buildings are indestructible. Your cybertank Will eventually destroy itself if it continues to ram indestructible objects.
Moving a cybertank requires fuel. If your cybertank is instructed to move without fuel available, precious time is spent uselessly trying to start the engines.
Movement also requires functional treads. If a movement command is encountered and the treads are inoperable, the cybertank will waste time “spinning its wheels.”

2.3 TURNING

COMMAND STRUCTURE

16 cyc Turn [Tank] Left "#"
16 cyc Turn [Tank] Right “#”
16 cyc Turn [Tank] To “angle”
16 cyc Turn [Tank] To "X " "Y"
16 cyc Turn [Tank] To Face [Enemy] Tank
16 cyc Turn [Tank] To Face Enemy HQ
16 cyc Align Tank [with Scanner]

SYSTEM VARIABLES AFFECTED

  • TankDir

EXAMPLE USAGE

FindOpen
   Detect Obstruction at Tank Direction
   If Movement is Not Obstructed Then Branch To FO_Move
   Turn Tank Right 1
   Branch To FindOpen

FO_Move
   Move Tank Forward 1
   Resume
Cybertanks turn in eighths of a circle (45* increments). When commanding a turn, the number of eighths to turn is specified. The following command will turn the Cybertank one eighth (45*) to the right:
Turn Tank Right 1
The following command turns the cybertank three eighths (135 degrees) to the left:
Turn Tank Left 3
Cybertanks can also turn to specific angles. The angles are illustrated below in Diagram 2.3.

Diagram 2.3 - The eight possible directions

The following command turns the cybertank to face northwest, regardless of the direction it is currently facing:
Turn Tank To 7
There are many instances where you need to have your cybertank move to a known location, but are not sure of the needed direction. Four different commands in the CCL will automatically turn your cybertank in the nearest direction to face a known location
The following command will turn your cybertank in the nearest direction to face coordinates X=20 and Y=14:
Turn Tank To 20 14
Always list the X coordinate first, followed by a space and then the Y coordinate. Do not use a comma to separate the coordinate pair.
Use the following command to turn your cybertank to the closest direction to face an enemy cybertank at its last scanned position:
Turn Tank To Face Enemy Tank
Similarly, the following command will turn your cybertank toward the closest direction to face the enemy headquarters, if found:
Turn Tank to Face Enemy HQ
The following command will turn your cybertank to the direction its scanner is pointing:
Align Tank with Scanner

2.4 DETECTING MOVEMENT OBSTRUCTIONS

COMMAND STRUCTURE

4 cyc Detect [Obstruction] at “#”
4 cyc Detect [Obstruction] at Tank Direction
4 cyc Detect [Obstruction] at Scanner Direction
1 cyc If [Movement is] Obstructed Then [Branch To : DO] “Label”
1 cyc If [Movement is] Not Obstructed Then [Branch To : Do] “Label”
1 cyc

If Obstruction [is] Enemy HQ Then [Branch To : Do] “Label”

1 cyc If Obstruction [is] Ally HQ Then [Branch To : Do] “Label”

SYSTEM VARIABLES AFFECTED

  • ObstacleX
  • ObstacleY
  • ObstacleDist
  • ObstacleType

EXAMPLE USAGE

MoveClear
   Detect Obstruction at Tank Direction
   If Movement is Not Obstructed Then Branch To
      MC_Move
   Fire Weapon At Obstruction
   Branch To MoveClear

MC_Move
   Move Tank Forward 1
   Resume
All cybertanks are equipped with a Movement Obstruction Sensor (MOS). This sensor determines whether an obstruction is in a specified direction. Any objects that can inflict damage to your cybertank in a collision are movement obstructions.
Using the MOS is different than using your scanner to find the closest object. Since scanners cover a large area, you would have to perform a series of complicated calculations to determine whether an object found in a scanner’s area would impede movement. The MOS detects only obstacles between 1 and 3 hectometers from your cybertank’s location in a specified direction.
The above example uses the “Detect Obstruction at Tank Direction” command. Once a “Detect . . .” command has been executed, you should use one of the “If .” commands to determine the results of the detection.
A common technique in the use of the sensor is to destroy an obstacle in your path. This is usually faster than trying to move around it. The above example illustrates this technique. An inherent problem in the example is that some obstacles cannot be destroyed. You could end up repeatedly trying to destroy an indestructible object
This problem is overcome by checking the value of the System Variable ObstacleType to identify the obstacle. If it is indeed indestructible, you can design your Al to move around it. Refer to Appendix 3 for a complete description of object types. It is important to note that a cybertank’s MOS is operational even when the Scanner is destroyed, but is not when your cybertank runs out of fuel.

2.5 DETERMINING CYBERTANK FACING

COMMAND STRUCTURE

1 cyc If Tank [is] Facing [Enemy] Tank Then [Branch To : Do] “Label”
1 cyc If Tank [is] Not Facing [Enemy] Tank Then [Branch To : Do] “Label”
1 cyc If Tank [is] Aligned [with Scanner] Then [Branch To : Do] “Label”
1 cyc If Tank [is] Not Aligned [with Scanned Then [Branch To : Do] “Label”
1 cyc If Tank [is] Facing Enemy HQ Then [Branch To : Do] “Label”
1 cyc If Tank [is] Not Facing Enemy HQ Then [Branch To : Do] “Label”
1 cyc If Tank [is] Facing “X” “Y” Then [Branch To : Do] “Label”
1 cyc If Tank [is] Not Facing "X" “Y” Then [Branch To : Do] “Label”

SYSTEM VARIABLES AFFECTED

  • None

EXAMPLE USAGE

MoveClear
   Detect Obstruction at Scanner Direction
   If Movement is Not Obstructed Then Branch To MC_ChkDir
   Fire Weapon at Obstruction
   Branch To MoveClear

MC_ChkDir
   If Tank is Aligned with Scanner Then Branch To
      MC_Move
   Align Tank with Scanner

MC_Move
   Move Tank Forward 1
   Resume
The relevance of these commands may not be readily apparent, but will become so when considering the impact of cycle counts.
The above example has the cybertank trying to move in the direction the scanner is facing. If you remove the command that checks alignment with its scanner, then the command “Align Tank with Scanner” is executed. This is extremely undesirable since turning a cybertank requires many cycles. It is more efficient to expend one cycle checking the cybertank’s alignment than to waste numerous cycles turning the cybertank.

Toadstool's Home | Contact © 2003 Toadstool's Game Shrines. All Rights Reserved.