Joined: Fri May 01, 2009 5:24 am
(If you know TBf<>, then you know what most of this is about, so I've put the first few chapters in the spoiler)
5. Terrain types
The Battle for <> games are turn-based battle simulations between several players, inspired by the Erfworld comic.
The running of the game is supervised by a Game Master (GM).
The victory condition is left upon the GM to decide. Suggested ones are: capture a given city, capture a given city then hold it for some time etc.
It's the GM's duty to provide a map to simulate the battle on. All features of the map are under GM control.
The map is divided into hexagonal regions of equal size (hexes). The hexes may be of different terrains (see the chapter); each hex is of one terrain only.
Players will move units under their control on the map, and engage the units of other players/the GM/map-critters in battle (or, defend against being attacked) in pursuit of their objective.
A hex may contain units from several players, cities/forts/portals, items, neutral critters, traps and other enchantments etc.
Fog of war refers to how the map is being known by the players. The next rules pertaining to fog of war are under GM tuning for various scenarios:
Fog-of-war: all players know what terrain each hex of the map is.
Fog-of-war: all players know all the starting points of all other players.
Fog-of-war: at the start of a turn, a player knows what is in a hex (beyond just the terrain) only if they, or someone allied with them, has at least a unit in that hex. Some of the possible hex contents (like enchantments/traps, or units with certain abilities) may remain hidden even in this case.
Fog-of-war: each turn, a player may get more information about hex contents by using units with the Scout ability, or similar map revealing abilities. Units moving thorugh a hex will also reveal that hex's contents. Some of the possible hex contents (like enchantments/traps, or units with certain abilities) may remain hidden even in this case.
Fog-of-war: from the previous two rules, it results that if a player scouts a hex, but leaves no unit there, that hex will have (to them) unknown content on the next turn.
2. Factions, alliances, sides.
Each player has a faction: this is a fictional nation that decided to get involved in the battle.
Each faction may define a number of units (usually 5, but it's left up to the GM to set this number). See the chapter on unit creation for details.
Players will be grouped in sides, which are alliances of several players. Alliances are fixed from the beginning (unless the GM decrees otherwise).
Members of an alliance take turns together, and share all information, units and resources. The only exception is that joining players do not share the resources they have left over after buying units until the next turn.
Each faction gets a resource allocation when they join the game (referred to as pop points), from which to build a starting army. The starting army must contain at least one unit with the Commander special.
New players may join at any time during the game, not just before turn 1 starts, provided the GM allows this. To join, a player must name their nation, decide on which side of the game to join, design a set of units, and buy a starting army with their initial resource allocation.
A player that has joined the game may choose to not spend all their initial pop points on a starting army. Their unused pop points become available also to all their allies, but only on the next turn after joining.
At the beginning of each turn, an alliance gets some pop-points to spend on reinforcements. How many pop points to give is up to the GM. How these are spent is up to the players, with one limit: units can be bought only before the alliance has taken any other actions in that turn.
Unused pop points from one turn are stored for the next.
Players may leave the game at any time by simply not playing; the units they brought into the game will stay however.
The GM may have their own faction in the game; a possible setup is to have several players allied and fighting the GM's side.
It's up to the GM to provide balance between sides as new players join, or indeed, allow some sides to be handicapped. The GM may decree that new players may only join as long as each side in the game gets the same number of new players, for example, or increase the pop point allocation for another side.
Each side will designate a unit they own, that has the Commander special, with the Chief Warlord status, at the start of the game. A new Chief Warlord will be declared immediately after the former was croaked (killed), captured or in other ways incapacitated, as long as a Commander unit is available. A new Chief Warlord may be declared also when the former is still acting Chief Warlord for the alliance, but the change only takes effect on the next turn.
Each side in the battle takes one turn per day; or, a day is the time period in which each side gets exactly one turn.
Turn order is fixed, except for acts of GM or possible extensions (this effect is considered powerful, so if you extend the system this way, be careful!).
A turn has 3 phases: recruit/build, scout, combat.
During recruit/build, a side receives a new allocation of pop-points, and from these together with whatever pop points it had stored from previous turns, it recruits new units or (extension pending:) fabricates new items. A side cannot recruit/fabricate units/items worth more than the pop points it has available.
A side may only recruit/build if it has a spawn point under control.
The GM will designate what hexes are spawn points. Usually, these are the starting hexes of the various sides.
During scout, a side uses its units that have the Scout (and related) specials/items to gain information about the hexes of the map.
A side will know whether a hex was scouted/looked into by another side only if it has units in that hex.
A hex that has been scouted by a side, or through whatever means (including magical items, GM fiat, Fog-of-War rules adjustments etc) is known to that side beyond mere terrain, is referred to as a known hex (for that side).
During combat, a side will move its units around the map and/or use whatever abilities/items it has that cannot be used during scout or recruit/build. See the next chapter on unit movement and combat for details.
The side decides when to go from one phase of a turn to the next, and when to declare that their turn ends.
At the start of a new turn, all of a unit's side are completely healed, and any expendable stats they may have (like move, (to be extended) "juice" etc) are refilled to maximum values.
4. Unit movement and combat
Units may be grouped in stacks, which move and fight together.
For ease of definition, a lone unit is also a stack.
Unless (very strong, be careful with this!) magic is involved, a unit may only move from a hex to one of its neighbours.
Units expend move as they move from one hex to another. How much move is expended depends on the units' move type and the terrain of the entered hex.
A unit may not enter another hex if it does not have enough move remaining. Enough move means at least the move cost of entering that hex.
A stack is only as fast as its slowest unit.
A unit ("the mount") may carry other units ("the riders"). This is treated as a Special Ability ("Cargo") that all units possess. A unit may carry units that, together, have at most a certain fraction of the mount unit's Hits (see the chapter on Unit Design). A unit X may carry a unit Y that carries another unit Z, but only if Y and Z together don't have more Hits than that frcation of X's Hits.
A unit that is a rider on a mount does not expend move; after all, it's staying put on the mount!
Units with the "Flier" move type may only stack with other units of the "Flier" type. The only allowed exception is when a Flier serves as a mount for another unit.
A stack of "Flier" move type units is a Flying stack.
All units in a Flying stack (including any non-Flier riders) count as Fliers when calculating terrain defense bonuses for combat. In a non-Flying stack however, each unit uses its own Move Type to determine its Defense and terrain Defense Bonus.
Mounting/dismounting is a free action: it can be done as often as needed in a turn.
Stack formation is a free action: as long as units are in the same hex, and can stack together either directly or by mounting, then they can be rearranged in stacks at any time.
Stack implies an ordering of units. This is left to the owner side to decide, with one restriction. The riders of a unit are always immediately after their mount in the stack order.
A unit/stack of units will only receive orders from the players if: it contains a Commander unit, OR it had orders left over from previous turns, OR it receives new orders from another unit/stack of units (the relay).
Therefore, a unit/stack of units may be ordered to bring orders to another unit/stack of units. In fact, a unit/stack of units may be ordered to deliver instructions to as many units/stacks as the players wish.
Unless special abilities are involved, a unit/stack of units from one side that enters a known hex with units/stacks from other sides must choose to attack one of those units/stacks; this is called wilful attack and results in combat.
A unit may only wilfully attack once per turn. That unit may then be put in another stack, but that stack may not wilfully attack that turn.
If a stack contains a Commander, and enters a known hex containing units from sides that are not openly hostile, it may choose to not attack. If the known hex contains hostile units/stacks however, it must choose a hostile stack to engage.
If a side has wilfully attacked a stack, it may only attack it again after it attacked also the other stacks in that hex that do not belong to it. An exception is the case of attacking a hostile stack in a hex that also contains stacks from not openly hostile sides- as long as a side does not attack any of these not openly hostile stacks, they can be ignored that turn. If however, a side does attack a not openly hostile stack, then it must afterwards, for that turn, treat other stacks from that side as openly hostile.
Some specials may affect the order in which units/stacks are chosen for wilful attacks. A stack that fights using the Ranged special for example must be attacked before one that does not.
Unless special abilities are involved, if a unit/stack moves through an unknown hex and that hex contains hostile stacks, or stacks from not openly hostile sides that do not contain commanders, it is ambushed. If the unknown hex only contains units from neutral sides, it's up to those sides to decide who, if any, should engage the stack in an ambush. Should the stack survive the ensuing battle, it may move on (and indeed, be ambushed again in another hex). A stack may only be ambushed at most once in a hex.
Ambush resolution: if a stack moves through a hex containing only it and units from one other side, it's up to that side to decide who (if any) will do the ambush. However, if more sides are in that hex, and several of them are candidates to ambush the moving stack, then the GM will decide which one of them gets to do so- and that side must comply and engage in an ambush.
A stack may move after having performed a wilful attack, provided that its slowest/most-move-depleted surviving unit has enough move left and the destination is not known to contain stacks that must be attacked.
If a stack has enough move to both enter and leave a hex, it may choose to perform a Hit-and-Run attack on a stack inside that hex. A Hit-and-Run attack deals 75% damage of the damage that stack would normally do, but the Hit-and-Run stack will only receive (at most) 25% of the damage from the retaliation.
(To be extended) A stack that performs a Hit-and-Run does not gain XPs for that battle.
Combat is always a battle between two (and only two) stacks. One, the stack of the side whose turn it is at the moment of combat, is called the Attacker. The other stack is the Defender.
Unless specials are involved, the Attacker and Defender stacks do damage to each other simultaneously.
A stack that fights using the Ranged special will do damage before a stack that doesn't use any ranging specials (like Range, Shockamancy). After the Ranged stack dealt damage, the survivors from the other stack retaliate. An exception is a Hit-and-Run attack performed by a Ranged-fighting stack against one that does not use ranging specials in that fight, in which case the Ranged stack will flee before receiving any damage.
A stack that contains units with certain specials may choose to employ them before the combat sketched above. For example, if a stack has units with Shockamancy, it may choose to use this ability before engaging in the actual combat, to soften up the enemy. Even a Defender from a Hit-and-Run has this option: if the Defender has Shockamancy, it may try to use this ability against an Attacker that does a Hit-and-Run.
The Attacker never receives terrain defense bonuses.
If the Defender ambushes the Attacker, they deal double damage.
If the Defender has not croaked the Attacker stack, then they "get tired"; if they need to Defend again that turn, they will deal half damage, then half of that on yet another fight that turn etc. However, if the Defender manages to croak one of the Attacker stacks, they get a morale boost and their damage capability is restored.
This is the formula for damage dealt by Attacker:
Att_Stack_Bonus*(Sum of Attack of the units in Attacker)*(1 + (Highest Level Commander in Attacker)/10)*(Average Attacker Level)*(1/8)*(8 - Average Defense of the Defender)*Att_Random_Nr
and this for the Defender:
Def_Stack_Bonus*(Sum of Attack of the units in Defender)*(1 + (Highest Level Commander in Defender)/10)*(Average Defender Level)*(1/8)*(8 - Average Defense of the Attacker)*Def_Random_Nr*Ambush_Bonus*Fatigue
Att_Stack_Bonus, Def_Stack_Bonus is the bonus of the Attacker, and respectively Defender, stacks: numbers dependent on the number of units in those stacks. A stack of 1 unit has bonus 1, a stack with 2 units has 1.1 and so on until a stack of 8 units has 1.7. The stack bonus does not increase after this. (To be extended: it decreases in fact).
Highest Level Commander: the level of the most experienced commander in the stack. If the Chief Warlord of the side is anywhere inside the hex where the battle takes place, the Highest Level of the commander is replaced by Highest Level + 1.
Average Level: to be extended. Presently, ignore this and keep at 1.
Average Defense of Attacker: simply the average of the Defense stat of the units in the Attacker stack. Here Defense stat refers to the units' Defense, both natural and possibly enhanced by magic/abilities/items. Has an upper cap of 7.
Average Defense of Defender: the average of the Defense stat of the units in the Defender stack (natural Defense and whatever other magic/ability/item-based enhancements), plus whatever defense bonus the stack gets from the terrain. Has an upper cap of 7.
Ambush_Bonus: usually 1. It's only 2 when the Defender is performing an ambush.
Att_Random_Nr, Def_Random_Nr: a random number, one for each stack, with this generator: (2d6+8)/10 (therefore, somewhere between 50% and 100%).
The GM rolls the random numbers.
After damage is calculated, it is dealt to the receiving stack in the following manner: usually, the first unit in the stack receives damage, then if it croaks the remaining damage is delivered to the second unit and so on. So for example, normally a mount would receive damage, then its riders, then whoever else is in the stack.
An exception to the rule above are as following: a stack that contains a commander may choose to swap the opponents' stack order in that they can deal damage to the riders of a mount first. Effectively, it's as if the riders are first and mount second in the opposing stack.
Another exception, also for stacks that have at least a commander, is targeted attack: a stack may choose to deliver damage first to some unit in the middle or back of the opposing stack. This is referred to as targeted damage.
Damage that is targeted to a unit is halved in value. This means that a unit that has 6 Hits needs 12 points of targeted damage to croak. If the targeted unit is a Commander or (to be extended) Caster, then that is halved again: a Commander unit with 6 Hits will need 24 points of targeted damage to croak.
If a unit is a non-flying rider, and their mount, a flier, is croaked, then (after, possibly, receving combat damage) the rider unit falls to the ground. They have 20% chance to croak, 60% chance to receive falling damage (some proportion of their remaining Hits, but just not enough to croak them) and 10% chance to survive unscathed.
A stack that has survived a battle, and inflicted more damage than the opposition, has each of its remaining units improved by 1 experience point.
A unit levels up when it has gathered a number of experience points equal to its current level + 1. When it levels, the experience points vanish, and others must be gathered again.
Presently defined, there are the following terrain types: plains, light forest, heavy forest, swamp, hill, mountain, water, road, lava.
The "reference map" is a hypothetical "typical map", which contains 30% plains, 20% light forest, 9% heavy forest, 5% swamp, 10% hill, 10% mountain, 10% water, 5% road, 1% lava.
The actual map does not need to obey the terrain proportions above; those are merely a guide for putting a cost on Move_Types.
Each terrain type has a certain move cost and defense bonus for the various unit Move types.6. Unit design, part one: basic definitions
A unit has four basic stats: Attack, Defense, Hits and Move. Apart from these, a unit may have one or more specials. A unit's stats and specials determine its cost in pop points.
Hits: a basic measure of how hardy a unit is. At least 1, but (for now) left without any upper cap.
Attack: a measure of how much firepower a unit has. Can never be below 0. A unit's natural Attack is limited to twice its Hits (FOR CROAKWORLD: 4 times its Hits), but its Attack stat may then be raised by Specials.
Defense: a measure of how skillful a unit is at avoiding damage, or alternatively a measure of a unit's armour. Can never be below 0. A unit's natural Defense is limited to 4, but this stat may be raised by Specials. Defense will never be more than 7 however.
Move: a compound stat, Move is: (Move Number, Move Type). Move Number can never be below 0.5, and never above 5; it's an indication of how fast a unit can move. Move Type is one of the following: Walker, Flier, Hoverer.
Walker: expends 1 Move for Plains, Roads, and Light Forest. Expends 2 Move for Heavy Forest, Hill and Swamp. Cannot enter Mountain, Lava or Water. An observation: Walkers may travel one extra road hex per day, than would be expected based on their (remaining) move. That is, once during a turn a player may declare that a Walker unit uses this ability to go through a Road hex without expending Move. An exception to the exception is when the Walker has 0.5 Move. This means that it's a Garisson unit, and cannot enter even Road hexes.
Hover: expends 1 Move for any terrain type except Lava, which it cannot enter at all, and Mountain, for which it needs 2.
Flier: expends 1 Move for any terrain type except Mountain, for which it needs 2.
Walker: receives +1 Defense bonus from Heavy Forests and Hill, -1 Defense bonus from Roads. May also receive Defense bonuses from Forts, Cities or such buildings.
Hover: receives +1 Defense bonus from Heavy Forests, Hill, Mountain. May also receive bonuses from Forts, Cities or such buildings.
Flier: receives +1 Defense bonus from Mountain. Does not receive Defense bonuses from other terrains, or indeed most other buildings.
So far, these Special abilities have been defined: Cargo, Scout, Commander, Ranged, Shockamancy.
Cargo: all units are assumed to have this. Cargo(X) means the unit is capable to carry riders that together have at most X Hits. X can be at least 0, and at most the number of Hits of the unit.
Scout: the unit is capable to gather information during the scout turn phase. A unit with Scout may inspect a number of hexes that is at most its Move Number. Terrain move costs are unimportant, as long as the unit may actually enter that hex. So for example, a Walking Scout with 5 move may inspect 5 hexes of almost all terrain types, but it cannot inspect Mountains, Water or Lava. A Scout may only inspect a contiguous sequence of hexes, starting with a hex neighbouring that in which it is located.
Commander: the unit allows certain stack behaviours and provides various bonues. Unless the GM allows otherwise, they are assumed humanoid, and must have Hits somewhere in the range of 5 to 10.
Ranged: the unit uses ranged weapons, and may strike before units that don't. All units in a stack must be Ranged to allow that stack to use ranged attacks. Exceptions to these requirements: a non-ranged Commander may fight with units that are Ranged, and allow those units to still use the Ranged special; a non-ranged mount with Ranged riders will allow them to use the Ranged special, or reversely, non-ranged riders on a Ranged mount will allow it to use its Ranged attack. However, in those cases, the Commander (or, respectively, mount, or riders) will not do damage, so will not enter in the calculation for Attack sum or Stack Bonus. They will however enter in the calculation for Average Defense.
Shockamancy: once per day, a unit with this special may "Shock" units by dealing Shockamancy damage. Shockamancy damage is at most equal to the unit's Attack (the actual number is left for the owner player/alliance to decide), does not receive any Fatigue, Commander, Stack, Ambush or Level-based bonuses, does not receive a random factor, is not affected by opponent Defense. This special may be used just before engaging in combat by either Attacker or Defender (or indeed, both). A unit is totally Shocked when it received Shockamancy damage equal to its own number of Hits; shocked units do not fight (do not enter in the Attack sum, Stack bonus, Average Level; if a Commander is Shocked, they do not provide bonuses or leadership to the stack). Shocked units will receive regular damage however, and still enter the calculation for Average Defense. Shocked units (assuming they survive) recover immediately after battle. Shockamancy damage is dealt similarly to regular damage: it can be targeted (but it's halved, or even quartered in this case), but otherwise is dealt in stack order.7. Unit design, part two: costs
The unit cost formula is of the following form:
Round up(SF(Hits)*Hits*(Move*Move_Type_Cost + 8/(8 - Defense) + Attack/Max_Attack(Hits)) + Cargo(Carried_Hits) + Special)
Size_Factor Mobility term Endurance term Firepower term Cargo term Special term
In the formula, Defense, Attack, Move refer to the values as they are after specials have been used. For example, a unit may have an attack higher than the natural maximum attack because of some special. Use this higher value in the Firepower term.
Max_Attack(Hits) is simply
2*Hits (FOR CROAKWORLD: 4*Hits)
1 for Walker, 1.52 for Hover and 1.3 for Flier
The Cargo term is
1 for Croakworld
2^(Hits/5) for Goldworld(+5) (see spoiler below for a table of values)
Hits for Oddworld(x2)
SF vs. Hits (until 50; but can be extended as high as you like):
And a graph of SF for Goldworld(+5) and Oddworld(x2)
Therefore, the cost formula is:
Hits*(Move*Move_Type_Cost + 8/(8-Defense) + Attack/(4*Hits)) + Carried_Hits*Move*Move_Type_Cost + Specials
SF(Hits)*Hits*(Move*Move_Type_Cost + 8/(8-Defense) + Attack/(2*Hits)) + SF(Carried_Hits)*Carried_Hits*Move*Move_Type_Cost + Specials
Hits*Hits*(Move*Move_Type_Cost + 8/(8-Defense) + Attack/(2*Hits)) + Carried_Hits*Carried_Hits*Move*Move_Type_Cost + Specials
SF(1) is 1 in all worlds.
Scout cost is
7*SF(1) = 7 in all world.
Commander cost is
5*SF(1) + Round up(SF(Hits)*(1/20)*(Attack + 1)) = 5 + Round up(SF(Hits)*(Attack + 1)/20)
(FOR CROAKWORLD, Commander cost is: 5 + Round up(Attack/40)) (yes, round up commander cost, add the other costs, then round up again).
Ranged cost is
2*Attack*SF(1) = 2*Attack in all worlds.
Shockamancy cost is
Attack*SF(1)*(4 + 2*Max_Attack(1)) = Attack*8 (FOR CROAKWORLD: Attack*12)
The whole point of this is lost if you keep it a secret.
Joined: Fri May 01, 2009 5:24 am
Now, a little mathsplaining.
The idea behind all Worlds here is to impose a certain kind of Rock-Paper-Scissors relation on basic units (units without any specials, not even Cargo). Said Rock-Paper-Scissor relation being:
"Large Unit < Small Unit(s)"
"Raider < Large Unit"
"Small Unit(s) < Raider",
where all of the above are melee units of Move 1, max natural Defense, max natural Attack, except the Raider, which is of Move 2.
Turns out that the last two relations are easy enough to impose, but it's the first that is a killer. Because units heal after a day since their last turn, this means that we need to impose a very tough condition: the cost, in small units, to guarantee that a large unit is killed must be no larger than the cost of that large unit.
For ease of calculation, I set the MaxAtt as q*Hits,
the cost of a Move-1, MaxDef, MaxAtt unit of X hitpoints is X*C(X),
and k is Kroaker's constant: (8/(8-MaxNaturalDefense))*(1/MinRandomFactor)*(1/q).
Then I have this condition to impose on the ruleset:
C(H + L) >= k*C(H)
Which is a recurrence relation that results in an exponential of base k.
Exponentials are evil, and will rapidly explode unless tamed somehow. I used three approaches, and each generated a different world:
- for CroakWorld, the idea was to get k <= 1. Then the exponential is either falling down (and we can cost large units as we please) or a constant (same thing, for our purposes). To do this, I set q = 4, so that with MaxNaturalDefense =4 and MinRandomFactor 50%, results in k = 1.
- for GoldWorld(+L), the idea was to impose
C(H+L) >= k*C(H)
with L some >0 constant (I used 5 above). This results in:
C(X) = k^((X - 1)/(5))*C(1), with C(1) = (1 + 8(8-4) + 1) = 4
and the exponential, while still there, is tempered somewhat. Even units of 40 Hits have sorta-reasonable scale factors.
- for OddWorld(xR), the idea was to impose
C(H*R) >= k*C(H)
with R some >1 constant. This results in an ugly, odd looking formula:
C(X) = k^(ln(X)/ln(R))*C(1), with C(1) = 4 as above
But wait, by the magic of the ln function, if we set R=k something wonderful happens:
k^(ln(X)/ln(R)) = X
In particular, for MaxNaturalDefense 4 and MinRandomFactor 50%, Kroaker's constant k= 2. So OddWorld(x2) is rather nice looking.
For completeness, "Raider < Large Unit" and "Small Unit(s) < Raider" result in conditions:
(let ar be the ratio of damage dealt by Hit and Run Attacker, while ad be the same for a Defender; obviously, 0 <= ad < ar < 1):
ar*C(H+L) < k*C(H) + k*SF(H) (Large > Raider)
ad < (k - ad)*4 (Raider > Small)
And that's that.
Now for the specials, Cargo was costed like this: it's as if the riders have higher move than they actually do, so the Cargo term is equal to this extra Mobility term of the carried units.
Scout is more complicated- it's balanced against the cost of "surprise". The idea is that you need 15 scouts to scout all hexes that are at most five hexes away from a given position (that you want to keep safe). However, an enemy may have units just outside this area and use them to ferry stuff in it that your scouts don't tell you about. The cost of surprise then is the cost of the units necessary for the enemy to deliver 15Hits of units to that central hex from outside of the 5-hex-distance area. It turns out that to achieve this, the enemy needs 15 Move 1, Attack 0, Defense 0, Hits 1, Cargo 1 units (Basic Transporters, or T(1)) and 15 Move 5, Attack 0, Defense 0, Hits 1, Cargo 0 units (Basic Runners, or R(1)). So 15*Scout special is 15*T(1)+15*R(1) which turns out to result in a cost of the scout special of 7*SF(1).
Commander does two things: allows a stack to receive orders and provides a bonus to attack. The first effect I took equivalent to the cost of a runner R(1), the second I took as that commander somehow having 10% extra firepower. This second effect is seriously undervalued in a powerful stack, but still since only one commander matters per stack, there won't be a rush for all units to become commanders.
Ranged is balanced against the cost of melee units (with Hits 1, Move 1, MaxNatAttack, 4 Defense) that it can kill.
Shockamancy is similarly balanced, but against the cost of Ranged units (with Hits 1, Move 1, MaxNatAttack, 4 Defense) that it can disable.
for Move_Type_Cost, do the following: if a unit cannot enter a terrain type, set the move cost for that terrain very very high (1000 or more; should be INFINITE, but already 1000s will do for our purposes). Then, compute two sums:
SUM over all terrain types(Odds of terrain type i / Cost of move to terrain type i)
SUM over all terrain types(Odds of terrain type i * Defense bonus on terrain type i)
And add these two numbers. For Walker, given the current terrain odds on the "typical map", these numbers are 0.67 and 0.14, adding up to 0.81. We decree that Walker Move_Type_Cost is 1. Then, for another Move type where the two SUMS add up to X, the Move_Type_Cost is X/0.81.
The whole point of this is lost if you keep it a secret.