Omega (tank game) manual fragment
(from Part 1)
6.3.2 The Movement Sensor and the Scanner
The cybertank has a built-in movement sensor and scanner. Both devices constitute parts of the Cybertank Scanner System (CSS), but they are independent mechanisms and operate differently.
The movement sensor, referred to as the Movement Obstruction Sensor (MOS), which can be aimed in any of the eight standard directions, detects obstacles which can impede the cybertank's movement. It is limited to a range of three hectometers and covers a one degree area (a straight line) in the direction aimed. It covers a very small area. If more than one obstacle exists along the line, the MOS always detects the one nearest the cybertank.
The scanner can be instructed to find one of three things: 1) an enemy cybertank, 2) the enemy headquarters, or 3) the nearest object. Mounted on a rotating base, the scanner can face any of the eight standard directions. It continues to face that direction until it is instructed to rotate. Scanners are available in 20,35, and 50 hectometer ranges, with sweep angles from 30 to 90 degrees. The scanner cannot "see through" all objects. Some objects block scanner signals.
6.3.3 The Weapon System
Cybertanks can be equipped with various weapons. Each weapon type has its own characteristics. All weapons have a maximum firing range of four (4) hectometers. They can be fired at enemy cybertanks, enemy headquarters, obstructions, at the closest object, or at any specific location within range. For ease of design, they can also be fired in the direction the scanner is facing, or the direction the cybertank is currently facing.
6.4 ELEMENTS OF THE CYBERTANK COMMAND LANGUAGE
As described previously, the Cybertank COmmand Language (CCL) is the language used to develop cybertank AI. Full Custom Design incorporates the various CCL commands individually to create tge cybertank's AI. This subsection reviews and defines some basic elements of the CCL.
Labels re used to designate the beginning of an AI segment (or routine) that can be executed using either the Do or Branch commands. The label provides a way to reference the segment of AI it names. In ALPHA or BETA, the label Start names the entire AI for the cybertank.
Some of the characteristics of Labels follow:
- A label always begins flush with the left margin of the edit window
- A label is always on a line by itself
- A label names the segment of AI that follows (up until the next Label)
- A label is usually referenced at least once by a Branch or Do command
- A label is a maximum of ten characters long
- A label is defined by the designer, and can be almost anything
6.4.2 Reserved Words
The CCLS commands, operators, and system variables are "reserved" for specific purposes and cannot be utilized as User Variables (see Section 6.4.4). See Appendix 1 for a list of reserved Words.
(from Part 2)
2.3.2 CDM CONTROLS
Upon entering the CDM, the cybertank's general specifications are displayed in the Main Display Area (see Diagram 2.3.2). These specifications can be displayed at any time by selecting the Specifications button.
Select any of the other component buttons (Tank Class, Fuel Cells, Drive System, Weapon Type, Scanner, or Special Items) to display a list of specific options for that component. Choose the desired component and the small circular button directly to the left of the item becomes highlighted. With the exception of Special Items, you can select only one option per component. You can select all of the options in Special Items (if you have enough credits).
NOTE: For users of Commodore 64 and Apple //+,c,e terminals only:
Selected items are designated by a small diamond to the left of the item, not a small, circular button
2.3.3 TANK CLASSES
Tank classes have the following attributes: weight, armor, and water resistance. Weight affects movement, and light cybertanks move faster than heavy cybertanks. Strong armor offers better damage protection than light armor. Only amphibious cybertanks can traverse water without damage. The following table itemizes the attributes of each tank class:
2.3.4 FUEL CELLS
Fuel is required for all cybertank functions. The more fuel cells a cybertank carries, the longer it will run. When a cybertank's fuel supply is exhausted, no mechanical functions will operate.
2.3.5 DRIVE SYSTEMS
The drive system controls all mechanical functions. Its weight affects movement and fuel consumption. The heavier the drive, the slower the cybertank and the more fuel it consumes. Drive system speed is rated from one to five, one being slowest, five being fastest.
2.3.6 WEAPON TYPES
Cybertanks can be equipped with only one weapon. Weapons vary in their firing speed, damage capabilities, and areas of damage.
Weapons that use shells are slower than others, since they must reload after every shot. Lasers do not require any reloading time and are the fastest weapons.
Projectile weapons (Piercing, Explosive, and High explosive) inflict medium damage on external instrumentation. armor and
Lasers create havoc internally, but have little effect on external components.
Gauss guns are electrical weapons that inflict heavy damage on external mechanisms (scanner, weapon, etc.), but have little effect on internal systems.
Plasma guns are extremely effective against armor, but do little damage internally.
Nuclear weapons cause very heavy damage to all cybertank systems.
|Weapon||Speed||Damage amount||Damage area||Cost|
|High Explosive Anti-Tank||Slow||Medium||Ext. Armor/Instruments||475|
|Gauss Gun||Average||Heavy||Ext. Instruments/Weapon||900|
|Plasma Gun||Average||Heavy||Ext. Armor||1300|
2.3.7 SPECIAL ITEMS
Special items are optional and not required for authorization. You can equip your cybertank with as many special items as your budget allows. Some special items require accompanying logic in you cybertank's artificial intelligence. Others are automatically activated when placed in your cybertank's chassis. The following provides detailed information on each special item:
Reduces the fuel consumption rate by approximately 50%.
This device can be activated without special AI instructions.
Used to communicate with other cybertanks on your team. In team combat, a cybertank without a Comm-Link is unable to communicate with team members.
This device requires special AI instructions. See Part 3, Section 6 for more information.
Multi-purpose repair kits can repair any damage to a cybertank. There are only four repairs allowed per kit, so use them wisely.
This device requires special AI instructions. See Part 3, Section 5.1 for more information.
A normal scanner only identifies the current location of an enemy cybertank and movement cannot be detected unless you perform multiple scans. You can lock onto an enemy cybertank and track its movement by using the Scanner Lock. By using this item, you scanner will rotate automatically to face the enemy and is unaffected by your cybertank's movement.
You can unlock your scanner at any time. It unlocks automatically if the target cybertank is destroyed or the scanner's view is obstructed. In addition, an enemy cybertank can unlock you scanner by disrupting your signal with a Jammer (described below).
This device requires special AI instructions. See Part 3, Section 3.7 for more information.
Determines whether or not an enemy cybertank has locked onto you with its scanner. Identified the need to jam an enemy signal.
This device requires special AI instructions. See Part 3, Section 3.7 for more information.
Used to jam an opponent's scanner signal once lock-on has been discovered. The Jammer disrupts an enemy's scanner signal and forces it to unlock. A Listener device need not be installed for the Jammer to function.
This device requires special AI instructions. See Part 3, Section 3.8 for more information.
This device launches a remote scanner into the air. A remote scanner links your Cybertank Scanner System (CCS) with the OSICOM I satellite. Once linked, you are relayed the location of the enemy cybertank nearest you.
Remote scanners remain airborne only briefly and are destroyed upon impact with the ground. Each Launcher is equipped with only four remote scanners and should be used wisely.
This device requires special AI instructions. See Part 3, Section 3.9 for more information.
This offers additional protection against enemy cybertanks. Although damage is greatly reduced with the shield up, it is not eliminated.
You can raise and lower the shield at any time, but a raised shield restricts the use of other systems - the scanner range is cut in half, fuel consumption increases, and most importantly, the cybertank is unable to fire its weapon. All systems function normally when the shield is lowered.
This device requires special AI instructions. See Part 3, Section 5.2 for more information.
Increases the processing speed of a cybertank's on-board computer. Logic operations are twice as fast. An Accelerator does not speed up mechanical cybertank operations, such as movement or scanner rotation.
No AI instructions are required for this device.
Part 3: Command Language
This section presents the commands available for designing a cybertank's Artificial Intelligence (AI). The CCL Reference is a must for all inexperienced employees and contains a great deal of useful information for the experienced employee. Each section of the CCL Reference contains examples to clearly demonstrate the use and function of the commands.
Section 1: CYBERTANK COMMAND LANGUAGE
Before moving right into the CCL commands, several basic and fundamental concepts must be covered.
1.1 GENERAL DEFINITIONS
The Cybertank Command Language (CCL) was designed by OSI language engineers to facilitate the creation of cybertank artificial intelligence (AI). The Cybertank Command Language was modeled after the English language for maximum comprehension and utilization.
There is usually more than one command that can be used to perform a given function. The CCL designers created simple commands for common functions normally executed using traditional programming structure. Take, for example, the need to turn your cybertank to face in the direction of a scanned enemy. The traditional command structure requires the use of "System Variables" as follows:
Turn Tank to EnemyX EnemyY
Noting the frequency that cybertank engineers utilized the above command, OSI designers added the following command to the CCL to perform the same function:
Turn Tank To Face Enemy Tank. Obviously, this command is easier to understand.
1.2 CYCLE COUNT
All commands require a period of time to execute. Command execution time is measured in cycles. There are two fundamental types of commands in the CCL: 1) action commands that require physical or mechanical actions by the cybertank, such as turning to face a new direction, and 2) logic commands, that do not have the cybertank perform physical or mechanical actions. Logic commands execute in 1 cycle, while action commands vary in execution time. Rotating the scanner, for example, requires less time that turning the entire cybertank.
Always keep cycle counts in mind when designing your cybertank's AI. For example, a cybertank using 10 cycles in its firing intelligence fires twice as fast as one with 20 cycles. Reducing cycle counts usually improves performance. It should also be noted that the cycle counts given in this handbook are base figures. For examples, the command
ROTATE SCANNER LEFT 1 takes 10 cycles to execute, but the command
ROTATE SCANNER LEFT 4 takes 40 cycles to execute (10 cycles per angle of rotation times 4 angles.)
CCL commands, operators, and System Variables are "reserved" for specific purposes and cannot be incorporated in user-defined variables. See Appendix 1 for a list of Reserved Words.
1.4 STRUCTURE CONVENTIONS
The following conventions are used throughout this section for descriptive purposes:
- For the sake of brevity, all CCL commands refer to cybertanks as tanks.
- [ ]
- Optional words in CCL command are enclosed in square brackets. Commands will execute correctly with or without the bracketed words.
- "User Variable"
- This designates where a User Variable name is to be used.
- "Any Variable"
- This designates where either a User Variable name or a System Variable name is to be used.
- This designates where a User Variable name, a System Variable name, or a numeric digit is to be used.
- This designates where a label name is to be used.
- : (colon)
- This designates an alternative. For example, [Branch To :Do] indicates that either Branch To or Do can be used.
- This designates a command's cycle count. All initial command definitions include their cycle count.
- This designates that an X-coordinate on the map is to be used.
- This designates that an Y-coordinate is to be used on the map.
Labels used to designate the begining of an AI segment can be executed with either the Do (Gosub) or Branch To (Goto) commands. A label may be composed of any alphanumeric character or symbol, with a 10 character maximum length. A label may contain a reserved word. If, during the Authorization process (discussed in Part 2, Section 2.6), you receive an "Out of label memory space" error message, try shortening the length of your labels. For a description of all possible Authorization errors, see Appendix 5.
1.6 SYSTEM VARIABLES
System Variables are used by the CCL for internal operations. They can be used in computations, but cannot be altered. System Variables are very useful, and often necessary, in designing cybertank AI. See Appendix 2 for a list of all of the System Variables.
1.7 USER VARIABLES
A User Variable is defined by the employee. Unlike System Variables, User Variables can be altered, can be composed of any alphanumeric character or symbol, and can be up to 15 characters in length. A User Variable name can contain a reserved word, but cannot consist of a reserved word alone. For example, "Turn" is a reserved word while "MyTurn" is a legal User Variable name.
CCL supports the operators: "+" (addition), "-" (subtraction), "<" (less than), ">" (greater than), "=" (equals), "<=" (less than or equal), ">=" (greater than or equal), and "<>" (not equal). The operators are used as shown below.
|1 cyc "User Variable"||=||"#"|
|1 cyc "User Variable"||=||"Any Variable" + "#"|
|1 cyc "User Variable"||=||"Any Variable" - "#"|
The above commands are called Assignment statements because the left side of the "=" is "assigned" the value of the right side.
|1 cyc If "Any Variable"||=||"#" Then [Branch To : Do] "Label"|
|1 cyc If "Any Variable"||=||"Any Variable" + "#" Then [Branch To : Do] "Label"|
|1 cyc If "Any Variable"||=||"Any Variable" - "#" Then [Branch To : Do] "Label"|
The above commands are called Conditional statements (or IF/THEN statements.) These statements help control the flow of AI by checking various settings or conditions. Note that anywhere the "=" is used in the above Conditional examples, any of the operators ("<", ">", "<=", ">=", "<>") can be substituted.
Now for a few examples:
MyTurn = TankDir + 1
This sets the User Variable "MyTurn" to the System Variable "TankDir" plus one. So, if "TankDir" is currently equal to three, then "MyTurn" would be assigned the value of four.
If Myturn >= 2 Then Branch to Done
This example causes the AI to branch to the label "Done" if and only if the User Variable "MyTurn" is greater than or equal to two. Based upon the first example, "MyTurn" was set to four; therefore, the AI would indeed branch to the label "Done."
If MyTurn = TankDir 0 1 Then Branch to Done
This line causes the AI to branch to the label "Done" if and only if the User Variable "MyTurn" is equal to the System Variable "TankDir" plus one. So, the cybertank logic unit retrieves the value of "TankDir" and adds one to it. It then compares this value to "MyTurn." If they are equal, then the branch is taken.
Note: Adding one to "TankDir" is only for purposes of comparison. The value of "TankDir" does NOT change until an instruction is encountered which directs the cybertank to turn.
Section 2: MOVING THE CYBERTANK
Mobilizing your cybertank is a rather simple task, but one of extreme importance. With superb tactical maneuvering, you cybertank can sneak-up on the enemy without the enemy ever knowing what hit it. By the same token, bad judgement 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 if its prime objective - survival.
2.1 Thread damage and repair
|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
CheckTread If Tank Treads are Function 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.
|40 cyc||Move [Tank] Forward "#"|
|40 cyc||Move [Tank] Backward "#"|
System Variables Affected
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 indestructable. Your cybertank will eventually destroy itself if it continues to ram indestructable 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".
|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
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 eights 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.
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 cubertank in the nearest direction to face coordinates X=20 and Y=14:
Turn Tank To 20 14
Always liste 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 firection to face the enemy headquarters, if found:
Turn Tank to Face Enemy HW
The following command will turn your cybertank to the direction its scanner is pointing:
Align Tank with Scanner