Guns tank thoughts

Back link: Guns

Concepts
A tank is made of four layers:
 * Layer 0 (ground): legs/wheels/treads/hover skirts
 * These are the parts that contact the ground.
 * These determine your speed and handling, including handling over rough terrain.
 * Too much effort, not enough fun. It's not worth giving this to the player, they will more often than not dislike it (or, at best, tolerate it).
 * Layer 1 (hull): hover/wheeled/treaded hull
 * This is your primary armor -- it will almost always be able to handle more hits than any other component.
 * Can be built to a modular design (some parts designed so they can break off if needed), but must be supported either by an adjacent hull module or by wheels/whatever "under" it (in layer 0).
 * No layer 0 means this can be conceptually simpler.
 * Type of hull determines propulsion method, and reserves some sections from layer 2 (see below) and possibly layer 3 for the propulsion devices (e.g. hover hull demands a fan to blow air into the hover skirt, with air intake above it).
 * Layer 2 (internal equipment): pilot's seat, generator(s), coolant pump(s), ammo storage, turrets
 * Conceptually, this layer is actually inside the previous layer (i.e. in the tank).
 * Equipment may take damage bled through the hull, especially equipment close to the outer edges of hull. Hull weight and damage determines bleed-through amount (undamaged hover-hull will bleed through about as much as heavily damaged treaded hull).
 * Special note: turrets are actually placed on layer 3, but demand space in layer 2 for the rotation gearing. Fixed guns (also on layer 3) only demand a small space for the ammo feed (and that only if they use ammo).
 * Layer 3 (external equipment): radiators, guns (on turrets or fixed), pole-mounted cameras, extra armor plating, spikes (for ramming), propellers, rocket/jet engines
 * Conceptually on top/on the side of the hull, likely to take damage from a well-aimed hit before the hull does.
 * Difficult to hit and hardened to compensate for the above.
 * Fixed guns always point forward, but may have some natural side-to-side translation capability (e.g. artillery cannon have this to simplify their use, as they normally fire long distances and precise aiming for the full tank is difficult)

Building a tank
Start with layer 1, drawing one or more hulls. All hulls after the first one must be connected (will be pulled together by the build-a-tank if necessary).

Switching to layer 0 allows you to place/draw wheels, treads, or whatever else will be holding the hull off the ground.
 * Size of the hull determines its mass, which determines how many wheels/treads/whatever (or how big a plenum chamber) are required to support it . Mass will also be added by modules in/on the hull, though most components have negligible weight.
 * We may want to force the hull containing the pilot's seat to be supported by four wheels/two treads/four legs/a large plenum chamber, to prevent the unicycle tank. We may equally well not care about this.
 * Hulls can also be supported by adjacent supported hulls, in which case they add their weight to those hulls, for purposes of support calculation.
 * Hover-hulls are special: they require an internal (layer 2) module (impeller) which will push air into the plenum chamber to allow the vehicle to lift. One or more impellers must be provided for each section of hover-hull, except if the section is smaller than the impeller, in which case it becomes purely connective. One impeller per non-connective hull section will be automatically created by the build-a-tank, and may be moved around but not deleted.
 * Somehow achieving the removal of the impeller from a non-connective hover-hull section will result in an invalid tank, to be rejected by servers.
 * Hover-hulls also require one or more external (layer 3) modules (propellers or jet engines, or combinations thereof) to provide motive power for the tank. Without these, the tank will just hover in place without responding to the movement keys (possibly blown around by the wind, if there is any).
 * In operation, hover-hulls will attempt to compensate for unwanted movement by automatically firing relevant thrusters. For this reason, a good hover-hull build will generally have four thrusters, one per valid direction. The side and forward thrusters may be extremely weak (and thus, small), which will give odd but manageable steering behaviour.
 * Speaking of steering, hover-hulls are assumed to be able to turn innately -- there is no reason to provide extra "steering" thrusters. This is a useful simplification (rule of fun).
 * Speaking of rule of fun, thrusters will probably be automatically placed but (re)movable, to simplify construction of hover-hulls.

Layer 2 must contain three things: the pilot's seat, a generator, and a coolant pump. Pilot's seat determines the last fallback hull (if a tank breaks into two hulls, the one with the pilot's seat is the one you remain in control of). The generator powers all the systems that require power, e.g. wheels, propellers, turrets, railguns, lasers, the coolant pump, etc.. The coolant pump moves heat from warm components to cool ones (e.g. from the warm wheel engines that have been running for a while to the cool radiators on top of the hull).
 * Ammo storage is optional (some guns don't use ammo, e.g. lasers), but a tank with no ammo storage using weapons that require ammo will simply not fire. Size of the ammo storage determines the number of shots available. A tank that cannot fire is not out of the game, but may find it difficult to destroy its enemies.
 * The build-a-tank will warn about this condition, but permit it.
 * More/more efficient generators will obviously provide more power. Batteries and capacitors can store power for when it's needed (and are smaller than a full generator).
 * More/more efficient coolant pumps with naturally move heat faster. All components that have heat (the pilot's seat, for instance, doesn't) also have a natural self-cooling rate.
 * Overheated components will cease functioning until their heat has been moved away.

Finally, layer 3 is the obvious "most important" layer, as it contains the eponymous guns. Guns not mounted on turrets will obviously not rotate, but not all guns can be mounted on turrets.
 * Extra armor plates on the side or top of the hull can protect the hull from taking damage. Armor plates on top can also protect components behind them from taking damage from a shot. Extra armor added this way is, of course, quite heavy (heavier than the equivalent-sized same-type hull), so use them sparingly.
 * Hover-hulls cannot support armor plates at all, however they are the fastest possible hull and (with the right design) can dodge sideways.
 * Spikes and jackhammers will allow your tank to do ramming damage without taking damage in return -- but they are also very heavy. Hover-hulls can mount spikes, but they will be particularly fragile spikes.
 * Radiators are fragile but have a high heat capacity and self-cool faster than any other component.
 * Pole-mounted cameras will let you see further in one direction (push back the fog of war), but they're very fragile.
 * Thrusters allow a hover-tank to move. Jet engines will also transmit heat to a tank that's close enough to the exhaust.
 * Rocket engines (not to be confused with the thrusters above) have two use-cases:
 * Speed: a hover-tank or wheeled tank can activate rocket engines to quickly move in a given direction (hover-tanks can go any direction on rockets, wheeled can only go forward/backward).
 * Flamethrower: a rocket engine will transmit a lot of heat to tank components in the exhaust, even if they're mounted on another tank.
 * Rocket engines have a short activation duration (on the order of 5 seconds) and much longer cooldown (on the order of 30-60 seconds).

At any point in construction you can switch to another layer and work on it. Undo/redo can be used to fix mistakes (e.g. "fuck, I just deleted my main hull") until the tank is saved and closed.

The build-a-tank will point out critical issues with your build (e.g. "you have no generator!"), as well as non-critical useful knowledge (e.g. "you have ammo storage for 2 reloads of the 155mm cannon") in a list that can be accessed in a sub-window. It will not allow a tank with critical issues to be used in a game (but try to keep the list of critical issues small: if someone wants a hover-tank that doesn't move, let the other players laugh at him as they pound him to dust -- or cry if they get themselves killed).

The game can display overlays for, e.g., center of mass, coolant efficiency, power generation efficiency, to help the player determine whether a tank is viable.

In-game display
In the main battle area, draw only the externally-visible components, i.e. layers 1 and 3 (hull and external equipment). Provide a status window configurable to show:
 * a condensed view of all the layers together (gets really busy on a large tank);
 * a split view of layer 3 (external) and layers 1 and 2 (condensed similarly to the above);
 * a split view of layer 2 (internal) and layers 1 and 3 (condensed); or
 * a split view of each of the three layers on its own.

Many pieces of information need to be visible in the status window:
 * is the component not receiving enough power to function?
 * is it overheating?
 * is it reloading? If so, how long until it's done?
 * is it damaged/heavily damaged/was it destroyed recently?

Cost/points system
Simplest method: each component has a point value, giving us a total value of a tank. Servers can restrict allowed tanks to certain value budgets, e.g. "must be between 1500 and 2000 points", to hopefully encourage battles to be (reasonably) even. Servers can also run as free-for-all, of course. Point value will be checked by the server, of course.

Servers can record per-player statistics like: number of points won (damaged/destroyed enemy tank components), number of points brought in (point value of each tank selected for playing with), number of points lost (damaged/destroyed own tank components), etc.. These can be published as a stats.txt, .html, or whatever, and create a long-term ranking of players on that server.