Lecture for beginners
Built-in lectures of this game are very detailed, so you can learn types of basic movements by analyzing and improving sample answers for lectures. I think a big problem that face beginners is that it is difficult to start creating new OKE from the very beginning, because it is hard to think “How to start?” or “How to organize the whole OKE?” in front of a completely blank CPU.
After you get used to this game, you may feel that rather than fine logics, those “overall flow” are interesting and full of originality of each players. So, this way of organization of software I will explain below is NOT absolute basis BUT just one example.
Please remember that this lesson is just for encouraging people a little who are eager to create their own OKE, but are finding some difficulties doing so.
Build your favorite Hardware (body, weapons and options). Whatever you like is OK. Let’s postpone trivial adjustment.
After you paint your OKE and make your own emblem, you will be motivated much by those decorations.
Speaking of CPU, choose one that has the biggest storage capacity. EMP is scary? Also postpone that kind of adverse effect of big CPU.
- My Hardware is ready. Then, how about Software?
First of all, think about “What does your OKE decide” and the order of it. For example,
1.Assess current state of the OKE
2.Examine whether it is able to attack or not
3.Assess current location
4.Scan for attack from the opponents
5.Search for the opponents
For example, you can place chips in this way and make these chips the backbone of your program.
[Status Assessment: durability lower than 50%]
[Status Assessment: heat capacity higher than 90%]
[Lock-On: polar coordinates, 800m, nearest]
[Assess Target Loc.: polar coordinates, 90°, 200~0m ahead]
[Assess Battle Area: polar coordinates, 360°, 30~0m ahead]
[Scan for Projectiles: polar coordinates, 360°, 100~0m ahead, more than 1 high-speed flying objects exists]
[Assess Target Loc.: polar coordinates, 30°, 800~0m ahead]
Postpone thinking about the destination of each branches, place all the necessary chips of conditional branch at once.
You may want to determine other various things actually, but the method does not change.
Because moving or editing chips after assemble is easy, making a backbone first by connecting steadily conditional branch chips along the flow, is easy way.
This is an example of a backbone of the program. I have extracted from the program for commentary from now. You may feel unexpectedly short if you look at the overall view of the upper right.
Seen in this light, all the parts that look complicated are destination of the "branches", you will find that the backbone is very simple.
Well, many parts have been omitted in the example above, so adding fine parts here, let's touch to the destination of the branches.
- 1. Assess current state of the OKE
First, I brought this to the beginning. The reason is, it is most frequently referred to.
“Return” at the end of the program has always connected to “Start”. Even through any complex branch route, always it goes through just after "Start". It is recommended to put what you want to check most frequently.
Subroutine? Let's postpone thinking about it for the time being.
Well, in the first place, the purpose of assessing current state is that because you want to activate various options primarily. Representative examples are Self-Repair System and Self-Cooling System.
1. Assess current state of the OKE
HP has decreased? Yes → Activate option 1 → Proceed to assessment of the amount of heat.
Amount of heat is too high? Yes → Activate option 2 → To the next decision (whether attackable)
By connecting the chips in this way, it would be a good idea to activate options automatically.
It is not so much as noted, but you should make it proceed to the next flow even when it is not able to activate options.
If somewhere in the HP assessment is No, proceed to assessment of the amount of heat. Go to the next if somewhere in the assessment of the amount of heat is No.
During option is activated, duration is displayed, and never activate same number option twice. You need to equip the same option to another number if you want to increase the effect in duplicate using of the same option.
In order to shoot on a single screen as much as possible, in the following reference images, chips are connected unreasonably while stretching in the transverse direction.
Also they are not complete from the viewpoint of function. When you actually create, let's incorporate the necessary function while connecting as you like.
- 2. Examine whether it is able to attack or not
Purpose is to attack of course, but actually, there are many things you need to check before. For example, if the opponent is in close range much capable of fighting, give priority to firing away if the body is swift; perform melee fighting if the body is slow-footed, etc., action selection also changes.
Anyway, without the distance assessment here, let's try from the normal shooting.
2 Examine whether it is able to attack or not
Lock-On: polar coordinates, 360 ° 800m, nearest. Start Reticle of the weapon you want to use.
Amount of heat of the body is below a constant value? No→ To the next decision (standing position)
Some obstruction exists in the line of fire to the target? Yes → To the next decision.
Target exists within front 200m (range of weapon)? No→ To the next decision.
Is there one or more ammos? No→ Try next weapon, switch to fighting, etc.
Attack by weapon you have started → To the next decision.
Depending on weapons, shooting mode and shooting instruction, shooting position and range are required to adjust.
Because the example above is only an example, let’s devise the need and order of each decision to suit your OKEs.
In the reference image above, check in order from weapon 1, in one-shot shooting state it will head to the next decision if it is possible to shoot it.
If the ammos are depleted, repeat after switching to the next weapon. Exit from the bottom left when there are no ammo of all weapons (= Fighting is selected). In addition, chips are connected unreasonably in order to fit on a screen, functions are also not enough. For example, actually it is better to switch weapon depending on situations for effective attack.
By this attack decision, OKE performs the act of "attack" actually. Here I supplement a brief description about execution mode for each operation (Pass / Stop processing) of OKEs.
When you execute Move after instructed the pass mode shooting, it is possible to move while shooting.
The reverse is also true, when you execute Shoot after instructed the pass mode movement, it is possible to fire while moving.That is, when you connect decisions of avoidance and location after the shooting, both of them also work well.
As taught in the lecture, melee fighting behavior would cancel move operations, but if you can also utilize it, interesting program might be possible to construct.
[Summary of the points]
Execution of shooting and moving are in pass mode basically.
Utilize stop mode only in special circumstances when you want to perform just move, just shoot, and the like.
Or, execute "last action" of behavior that you want to combine in stop mode.
Execution of melee fighting is in stop mode basically.
With time adjustment using Halt chip,execute in pass mode only when you want to break fighting motion and perform moving, shooting, other fighting motion or the like.
- 3. Assess current location
The purpose is mainly, to Control of maneuver in the field end.
If this is not previous process of the control of avoidance, it will continue hitting the wall by the avoidance maneuver.
There is also a little more complicated technique called wall switch, to reverse the direction of avoidance maneuver when it approaches the wall.
Tentatively assume avoidance direction as random; let's try a simple avoidance of area end here.
3. Assess current location
Outside of area exists within a radius of 30m? NO → To the next decision
Outside of area exists in the right direction 30 °, within 30m? YES → Jump left (in the case of hover, etc., perform left Quick Movement) → RETURN
Outside of area exists in the left direction, 30 °, within 30m? YES → Jump right→ RETURN
Outside of area exists in the backward direction, 30 °, within 30m? YES → Jump forward→ RETURN
Rotate (pass) → jump backward → RETURN
Now it is possible to combat while avoiding acting in the area end.
If it has became a state of shooting by attack decision, Jump in here will be "jump + shooting". The same is true in the avoidance decision after this.
- 4. Scan for attack from the opponents
The purpose is mainly, avoiding opponent bullets. First, attacks are divided into fighting and shooting, in addition, types of projectiles to be shot are many.
But roughly, they can be divided into three categories: normal, guided, placed. Let’s try avoiding normal projectiles here.
Basically, move in a vertical direction to the line of fire as much as possible. That’s all.
Using this opportunity, let’s avoid friends in front of.
4 Scan for attack from the opponents
The polar coordinate system within 100m radius,high speed projectile exists?
↓YES NO→ Friend exists in front of? ↓YES NO→ To the next decision
The orthogonal coordinate system, centered on the body, high-speed projectile exists in width 50m lengths 200m range?
↓NO YES→ Jump to the left or right with a probability of 50% → To the next decision
Jump to the forward or backward with a probability of 50% (in the case of hover, etc., perform Quick Movement) → To the next decision
Determination by the orthogonal coordinate is capable of quick decision and space saving by one chip.
However, since the detection range may be generated in the transverse direction of the body, it is better to perform decision in front and back in polar coordinate system if you're optimizing the accuracy.
Chips in this image are also connected unreasonably.
Only in this, it performs a decent avoidance maneuver for normal shooting from all directions.
It is possible to instruct maneuver in oblique directions, so even better avoidance maneuver can be created easily.
If you want to add responses to the other categories of projectiles, for example, there is a way to branch as follows.
Missile is present within a certain distance? YES → Missile countermeasure
High speed projectile is present within a certain distance? YES → For example, as described above, Normal shooting measures
Projectile of all kinds is present within a certain distance? YES →Placed weapon countermeasure
To the next decision
It should be noted that, the adjustment of reaction distance according to the moving speed of the body and bullet speed of opponents’ weapons, is required.
Also in order to accelerate the reaction even a little, it would be good to enter the loop processing temporarily, or connect to RETURN immediately after avoiding to go around processes quickly.
- 5. Search for the opponents
The purpose is mainly tracking the target. There are two methods to explore the opponents, using information obtained by Lock-On and Scan for OKE in the specified range.
For now, let's try using the target information here.
5 Search for the opponents
Target is present within forward 30°, 800m?
YES → Halt Rotate → Obstacle is present in front of? NO: Move forward YES: Move right → RETURN
Target is present within right direction 180°, 800m? YES → Rotate right → RETURN
Rotate left → RETURN
When you execute Rotate infinitely in pass mode here, you have to execute Halt Rotate in somewhere.
By executing Lock-On, it become possible to adjust direction of the body automatically, and various decisions by “Assess Target” chips become available.
You can lock on an OKE in radar range only. Normally, radar range with a radius 500m is wide enough.
However, when Jamming Fog has been sprayed, the radar range becomes narrower and lock on in long distance will be impossible. As this occurs, all of the decisions by Assess Target chips become unusable.
Incidentally, when Jamming Fog is the highest density, radar range is radius 50m. It will continue to recover little by little over time.
In order to cope with this situation, you have to create logics assuming situations that lock-on is not possible. In the example above, Rotate is instructed on the assumption that lock-on is always possible. To improve behavior, it's a good idea to add a branch if there is no target, for example, execute Move, lay mines, or activate Rader Enhancement.
Target is present within the right direction 180°, 800m? YES → Rotate right → RETURN
Target is present within the left direction 180°, 800m? YES → Rotate left → RETURN
Routines when lock-on is not possible
(It is also good idea to determine using Action Assessment chip)
In addition, as previously mentioned, there is also a way to use "Scan for OKE" to explore the opponents without using target information.
Even though you use "Scan for OKE", it detects only OKEs in radar range if you have specified attribute of troops "enemy" or "friend".
But in the case the attribute of troops is "unspecified " or "unknown", the discovery of the OKEs outside of radar range is possible.
“Unspecified” also functions in radar range. It will branch to YES if there are any OKEs. "Unknown" will always branch to NO in radar range.
The determination by "body type" also works outside of radar range. That is, the appearance of OKEs would be seen.
[Summary of the points]
Basically, you should utilize decisions based on target information.
There are many useful things in the target information obtained by Lock-On and “Assess Target” chips. Lock-on is also essential to tactics using Counters.
In the radar unusable situations, let's take advantage of “Scan for OKE”.
In the case that the attribute of troops is "unknown", the discovery of the OKEs outside of radar range is possible. You can identify the OKEs in some extent by "body type".
1. Let's decide the general "flow".
2. Along the "flow", let's make a backbone by connecting conditional branches.
3. Let's make up action from each branch.
4. Let's test.
5. More quickly? More powerful? More reliably? More beautiful? Anything is good. Let's aim at a program that you envision.