,-------------------------------. _ _ | DISCUSSION OF THE VOID ENGINE | THE _____ (o) __| | `-------------------------------+ \ \ / / _ \| |/ _` | `---------------\ v / (_) | | (_| | \_/ \_eng|i|ne_,_| BASIC CONCEPTS Space is made of points. The important things in space are objects. At each point there is a SINGLE object. Most objects are not at single points; most objects ORBIT other objects. POPULATION Each resource in an object will be created by a bunch of a new resource given by the "breeding rate" fraction of the current amount of the original resource. It will also create a (possibly negative) "growth rate" fraction of the same resource. Similarly the amount of resources will decrease by a "death rate" fraction of the current amount at each tick if the health of the object is less than the "minimum health required" by that resource. | For example, imagine two resources "Human Unskilled" and "Human | Pilot". At each tick, both create an amount of new "Human | Unskilled" resource. The amount of new resource created is the | sum of 1% of the "Human Pilot" resource present and 10% of the | "Human Unskilled" resource present. In addition, 5% of both of | these resources are removed at each tick. | | Alternatively, the "Human Unskilled" level could have 0 "breeding | rate" and 5% "growth rate". If an object has more resources than it's suggested maximum, then health will decrease by the decay rate of the object times the amount that it is over the limit. Health is the same concept as the health bar in StarCraft and other such games. Basically it is a scale of how close to being destroyed an object is. XXX should have per-component health like in Armada II Population is the number of resources with intelligence higher than zero in the object. Items are inoperative if the amount of any of their required resources is less than its minimum or if the controlling resource is zero. An item in "idle" mode will cost the amount that "idle" action costs each tick. If an item has zero intelligent population of the same allegiance as the allegiance of the controlling resource, then its health will reduce by the decay rate of the class during each tick. You can manually move population about by making two items orbit each other and choosing the move resources action on one of them. Objects whose health reaches the _minimum_ health (typically a lot less than zero) are removed from the universe. OWNERSHIP AND CONTROL Whoever owns the resource denoted by the controller field is the owner of the object. If there is no controller resource, then there is no controller. Objects are originally owned by their creator, or nobody if they were not created (e.g. planets). Objects can have their rights reassigned: a player can use the "give" action to make the owner of an object someone else. Similarly, an object can be stolen using the "steal" action: if it has an owner, the owner field can be changed if the object has nobody on it from the owning player and _does_ have someone on it from the stealing player. (OR if it has more people on it from the stealing player than the owning player?) (OR this requires another object to perform the stealing?) An object can only be controlled by the player which owns the resources denoted by the object's "controller" field. If those resources are zero, the player can no longer control that object, and the object has no owner. If an object does not have the flag "remote control", then the sentient resource in question must be on the object itself. Using the "jam" command, a player can take over all the objects controlled by a resource. | For example, player A has three ships, and all of them are | controlled by player A's human resources on planet A. Player B | has a ship which can "jam". So player B goes up to planet A, and | says "jam communications to player A ships and transfer control | to my ship". Player B's ship now controls all three of player A's | ships. XXX how does this work with encryption Using "control", sentient resources within an object can transfer control of that object to themselves (i.e. commandeer it). This is possible only if the player of those resources knows the tech of the object, and if the total IQ of sentient resources from the player wishing to take over control _exceeds_ the total IQ of sentient resources whose allegiance is the same as the controlling resources', otherwise it is not possible to control the object. (Thus, to stop people stealing your ships, don't let them board it; similarly, to claim a planet, board it and start breeding and educating people. Or, kill everyone on the object. Your call.) The player owning the controlling resources can transfer control to any other set of sentient resource on the object. MINING Mining will mine all resources in an object, except if the resource being mined is at or below the starting (minimum) level or if any of the subsystems have any health left, or the miner is full of that resource. Once the most resources have been mined (miner is full or target is empty) then the ship moves to the destination object and the resources are moved into the later. If the destination object is also full, then the miner does nothing during that tick. (OR some system should be done so that you need a mine on a planet to mine a planet?) There are two mining commands, mine requires that the object be landed on, mine-orbit can mine from orbit. Algorithm for mining: if around target and not empty if landed or mine-orbit transfer resources else land else if full if landed take off else move towards target else if around source if landed or mine-orbit mine else land else if landed take off else move towards source The "transfer resources" and "mine" steps are equivalent to the "transporterer" and "transporteree" tasks. Take and Dump only perform the relevant section of the mining action, so are very useful for one-off trade. Stasis is an action that prevents resources within it from having their growth rate take effect. It actually reduces the change by (rate)*(health)/(max health) so broken stasis fields are less effective. (the health figures apply to the statis subsystem) Objects can't be in statis and move at the same time, so typically special statis containers are used and then dropped on cargo objects. The "convert" task is the same as the idle task except that any resources of the same class as the tasks' parameter, are taken from -- and the resulting waste put back into -- the parent instead. XXX something should be said about mining being only possible on parents or siblings of the miner... or something like that. RESEARCH AND TRADE If you research An Object of tech X, you can learn X if you have all the vital prerequisites. How long it takes will be dependent on the health of the object's subsystems (the higher the sum of healths, the better, as a fraction of the total sum of maximum healths of the object), the complexity of the object, which non-vital prereqs are known, and the various flags of the research action (IQ, tools, etc). Otherwise, you can only learn X if you have _all_ the prerequisites. Players can trade resources by mining each others' objects. Players can trade objects by removing all their population from it, giving it, and allowing the other player to put the population in. Players can trade knowledge of technologies by trading objects of the technology in question (some technologies may have specially designed objects to do just this). Normal Research: Select from the list of technologies by vague name for which _all_ prerequisites are known. Object Research: Select an object which is in orbit and researches that tech (see above). Stops if the object is removed from orbit. Resource Research: Researches all the resources stored in the research station. The amount increased per game tick is dependent on: Total intelligence of resources on station Complexity of technology (minimum required intelligence to research??) BUILDING Building an object of a class which is of a technology that is not understood by the player is not possible. Neither is controlling one. Building is an action which immediately creates the object, with resources=0, and at each game tick increases the non-intelligent resources until they are at minimum for the object, then adds the subsystems and increases their health until it is full, and then increases the sentient resources of the object until they are at minimum. The amount increased per game tick is dependent on: Number of required resources available (not enough == do nothing) Complexity (higher == less increased) Tools IQ Upgrading is similar except that instead of the object being created at 0, an existing one is taken, its resources and population are all transferred to the upgrader building, the subsystems are removed, and then its class is changed and the above action occurs. REPAIR Repair is similar to building but starts off with an existing object and then continues the building process. Improves health by an amount decided by the complexity of the class of the target (but NOT the maximum health of the target) up to the maximum health of the target. Only objects that have a health greater than zero can be repaired. Only works if the tech is known by the player. STOPPING AN ACTION If an action is stopped, then the task and the parameter fields are zeroed. (This is not how to achieve pausing -- to do that, simply don't supply the materials.) DEFENDING If an object is being defended by an object at the same point, then if at any tick a non-ally attempts to perform an action on the defended object which is marked as triggering defensive behaviour, the defender will act as if in singular engagement mode with the breaching object, until the object leaves the system. SCAN This is NOT related to the scan fields of the class (see "sight", next). This will find any coordinates with _something_ at them, within a distance of the scanning object decided by the ability parameter. It will also warn of any incoming ships that are within the same distance of the scanning object. SIGHT You can see using the scan* fields. A single step in the hierarchy counts as n steps for the scan fields, where n is the value of the parent's safe orbit field. DEATH RAY This will reduce the amount of a single resource in the target object by an amount based on the fire power of the attacker and the armour of the target. MASS DEATH RAY Same as death ray but all resources with same flags as parameter are affected. WORMHOLE If an item is in wormhole mode, then any items that start "orbiting" it are automatically teleported to the target wormhole, provided that the target is also in wormhole mode. Otherwise, nothing special happens. Any existing objects orbiting it are left alone. ORBITING The word "orbiting" really just means "is around". The "independent" flag of a class decides whether an item can have other items orbit it. If it is "independent" then it can. If it is not independent, then it is probably fixed to the object around which it lives, for example you can't orbit a factory building and it would not be orbiting a planet -- it would be _on_ the planet. That factory building would therefore not be "independent". The "orbiting" flag on objects decides whether or not an object is actually orbitting or if it has landed. An object has enough room for "surface area" square units of things to land on it. It also has a footprint of "footprint" square units that it takes up when landed on something else. You cannot land on something with more mass (because you cannot get into orbit around something with more mass) -- if that situation ever occurs, the orbitting object should swap place with the oribitted object. This is important! Going down the chain from the top most object at the point to the bottom of the tree of objects at a point, the lower objects must always be lighter! CARRYING AND DROPPING Carry is a one-tick action which moves a single sibling of lesser mass into child position. Drop is the equivalent action and turns all the children of the object into its siblings. ATTACKING To attack something, you select a bunch of ships and make them into a fleet, and then select a bunch of other ships and tell the fleet to attack it. To attack a fleet of objects, a fleet of objects from a single player are selected and then the enemy objects are selected. This makes a new entry in the "fights" database which selects the strategy, and then creates a line for each enemy in the attackees database. If you are attacked, your auto defence flags are used to determine your response. Range of weapons is decided from "fire range". See "sight". MOVING You move to your destination in ticks per step along the hierarchy, if it's in the same point ( small). Otherwise, use Pythagoras to find the distance to your destination, and divide it by your velocity, and make that the time you'll be gone. Time is obviously in whole ticks only! Moving to another point moves you to the root object of that point (no moving straight to the moon). The move ability has a parameter which decides what multiple of the basic thrust of that object's class should be used as the base velocity. An object cannot use a move ability that would result in a travel time of less than one tick (rounding, I presume). Thus if a ship has a super-duper hyperspace ability, e.g. a stargate seeding ship, then it would not be able to use it to go across a solar system. If, when an object wants to move, it has another object orbiting it that is of greater mass, then that object is dropped first. ALLIANCES Players can: + Create new alliances + Leave an alliance + Vote for a member of a private alliance to be the leader + Join public alliances + Post to non read-only boards that they are members of The leader of a private board is the one with most votes, or no-one in the case of a tie. The leader of a public board is the one who is marked as author of the original message. Leaders can: + Add players to private alliances + Kick players from private alliances + Delete individual (non-first) messages from alliance board + Rename the alliance + Set an object as the alliances' headquarters + Post to read-only alliances OTHER IDEAS Mines / Artificial Gravity Wells / Black Holes: suck up enemy ships. How? EMP-like technology. How? Multiple targeting. How? NAMES Allan Lords of Kobol Polarion code name anarchy bulbatron. charmandarion code name cold fire dark frontier farscape code name galactica code name galaxion code name galaxia parralax pikattack code name scorpion code name squirtlat the mysterious galaxies of gold John The magic space pixie quest? Xiven Realm Of Fear THE PASSING OF TIME * Slow Tick At regular but infrequent intervals (every hour, day), actions occur. e.g. Planetarion * Fast Tick At regular and frequent intervals (every one to five minutes), actions occur. e.g. Fast Planetarion, Battlegrounds * Real Time (Extremely Fast Tick) At regular and frequent intervals (every millisecond), actions occur. e.g. Armada II * Continuous Tick Ticks occur continuously, how much changes during each tick depends on how much time has elapsed since the previous tick. e.g. Void * Simultaneous Turn Based Players each make a move, then when all players are ready, the game progresses. e.g. Birth of the Federation, civilisation, risk * Simultaneous Turn Based with timeout Players have a limited time to make a move, then when all players are ready or the time has elapsed, the game progresses. e.g. Birth of the Federation (with time limits), civilisation (with time limits) * Sequential Turn Based Each player gets a turn, one at a time. e.g. Snakes and Ladders * Sequential Turn Based with real time aspects Each player gets a turn, one at a time, but waiting players can interact, e.g. by trading. e.g. Monopoly, Star Trek Card Game (has 'interrupt' cards) * Accumulative Turn Based At regular intervals, players get a quota of turns. At any time, a player may spend a turn to make actions occur.