Almonaster is a turn-based multi-player war game that runs on the World Wide Web using form submissions as user input. No downloads, JScript, Java or ActiveX controls are required. If you are reading this page and your browser can post forms, then you can play.
Almonaster was inspired by a long line of strategy games, particularly T&E Software's Daiva series, which were programmed for the MSX2 computer. If you have an MSX2 emulator, you can run the 1986 game Daiva story V, which was way ahead of its time.
The design of Almonaster was also heavily influenced by the popular online game Stellar Crisis, and the look and feel of Almonaster has been designed to be familiar and usable by those who are familiar with Stellar Crisis 2.8x. Stellar Crisis resources that may be useful for a better understanding of Almonaster culture and gameplay include:
No source code from Stellar Crisis or from any other program was used create Almonaster. The graphical elements common to both games are either in the public domain or permission was obtained from the authors to make use of them. Many of the fundamental elements of Almonaster can be found in classic war games such as Risk or Stellar Conquest. Others, such as the ship types and attributes, are attributable to Sylvan Clebsch's Stellar Crisis. It is not the intention of the authors of Almonaster to portray these ideas as their own.
Almonaster is free software, released under the GNU Public License. In addition to the privileges and restrictions imposed by the GPL, there are two additional clauses that apply to the use of Almonaster and any derivative works:
If a server is found to be violating these principles, please notify the current maintainer of the matter.
The following are responsible for the existence of Almonaster:
Almonaster is a game of strategy played on a galactic scale, in which multiple empires vie for the control of a set of planetary systems.
The objective of an Almonaster game is to develop a small planetary civilization into a galactic empire, overcoming enemy aliens and creating powerful coalitions with friendly races. There is no artificial intelligence built into Almonaster (yet): every empire that one might encounter belongs to another player logged in somewhere on the Internet. An Almonaster game ends when there are no more enemies left in the galaxy: either one empire remains, or those who remain are all in a state of alliance. Empires are eliminated by destroying their home world with a ship or fleet of ships.
However, Almonaster is more than a simple war game. It allows the establishment of diplomatic relationships with other empires, ranging from all-out war to resource-sharing alliances. Different players have different means of achieving the goal of supreme domination of the universe: some prefer to establish multiple liaisons and use teamwork to defeat their opponents, while others opt for more individualistic approaches. There are game types that allow and encourage alliances and others that force empires to survive on their own. The primary virtue of Almonaster gameplay is that there is a great diversity of roles, strategies and options to explore, so no two games are ever alike.
An Almonaster game is assigned a predetermined amount of time that serves as an interval between turns or "updates." When an update is executed by the server, the orders entered by a player on behalf of his empire are processed. These orders include such actions as building or moving ships, executing special actions such as colonizing a planet, nuking a planet, terraforming a planet or changing diplomatic status with another empire.
Almonaster games take place on a map of planets, which can be thought of in computer science terms as a connected graph. Each planet is a node in the graph and each link between planets a connection between one node and another. Links between planets indicate paths along which ships can travel. A ship can stand by, move from one planet to another or perform one special action per update. There are several different types of ships, each of which can perform a different type of special action. For example, science ships can explore along previously uncovered links; colony ships can colonize unclaimed planets; minefields are immobile ships that explode, taking all ships with them; etc. All mobile ships can nuke, which is the action that returns colonized planets to unclaimed status, as well as reducing their resource levels. All Almonaster ship types are discussed in section 3.1.3.
Each empire begins with the ownership of one planet, which is called a "homeworld". The links off the home world will usually be unexplored at the beginning of the game, so the first action of an empire in any game will be to construct science ships and begin exploring the galaxy. When ships from different empires meet for the first time, combat will occur and the empires will be inserted into each other's "diplomacy" screens, allowing them to establish different diplomatic levels: war, truce, trade or alliance.
Ship combat resolution in Almonaster is rather complex. A simple formulation is as follows: ships fight until the greater force has eliminated the lesser force. (Note that there are some advanced scenarios where this might not be the case, but the vast majority of combat situations are resolved with only a single side surviving.) Ships belonging to empires at truce or better with one another will fight as a unit against a common foe. There is no random element in ship combat resolution, with the exception of the order in which ships are considered for destruction. A more detailed discussion of ship combat can be found in section 4.1 and section 4.1.1.
The economic aspect of Almonaster is also important. Each planet possesses three different resource parameters: agriculture, fuel and minerals. The first allows population to increase on a planet and exploit the other two, which allow empires to build and repair ships. Agriculture is pooled among all planets colonized by an empire, so planets with great agricultural resources but small amounts of minerals or fuel are still very valuable. Ships can only be built on planets that have reached a high population level, so it is important to colonize planets with agriculture early in a game in allow to grow the populations of planets located near the front where battles will occur and ships will be needed.
A further aspect of the game is technological development. An empire develops a certain technological level based upon the amount of resources (fuel and minerals) that it has and the amount that it does not consume each update in the building and maintenance of ships. At certain fixed intervals (when the technology level reaches certain values) an empire gains the capacity to build stronger ships, which can give it decisive advantages in combat with other empires.
An Almonaster game ends when one empire or coalition of allied empires obliterates every other empire. An empire is obliterated when its home world is nuked by an opponent, in which case all of its colonized planets become unclaimed.
Successful Almonaster play requires players to balance the following considerations:
The experienced Almonaster player will learn to balance these aspects and develop a healthy economy through exploration and colonization while maintaining a high technological level, preventing enemy probes from exploring his territory and establishing relationships of alliance with other empires of similar potency.
The first thing that has to be done in order to play on an Almonaster server is to create a new empire with a password. Once this is done a player can begin to use the resources on the server: he can edit his profile, search for other empires, chat with fellow players, join games currently in progress or start new games.
This is the first screen that players see when they connect to an Almonaster server. This screen allows players who have already created empires to access the server by simply typing in a valid empire's name and password. New empires can be created by typing in an otherwise unused empire name and a password to be used with it, and selecting the Create Empire button. If the empire name is not already in use on the server, then the player will be directed to the New Empire screen.
Empire names are case insensitive and all initial and trailing spaces will be stripped by the server when it canonicalizes the name. Therefore, the names "PlanetCrusher" and " pLaNeTcRuShEr " correspond to the same empire. In addition, names and passwords containing characters from outside the range between ASCII character 35 (#) and ASCII character 126 (~) will be rejected. Unicode characters are not supported.
After an empire has successfully logged in, the Active Game List will appear.
This screen is reached when a new empire is created. It requires the player who is creating the new empire to verify (retype) the password that he or she entered in the Login screen. No other information is requested at this screen.
An option available to experienced players who wish to start off a new empire with the same privileges as their old empire is the ability to cause newly created empires to inherit a previous empire's Almonaster score and privileges. This can be accomplished by typing in the name and password of the "parent" empire into the forms at the bottom of the screen. The parent empire will be deleted during this process. Therefore, it must not be in any games at the time, or else the new empire will not be able to inherit from it.
After an empire has been successfully created, the server's Terms of Service will appears. Once they have been read and accepted, the Active Game List will appear. Rejecting the Terms of Service will result in the destruction of the new empire.
The Active Game List provides a list of the games that the logged-in empire is currently playing. Clicking on the "Login" button for a game will lead to the information screen for the selected game.
The Open Game List provides a list of games that are currently being played on the server and that the logged-in empire has permission to view. Clicking on the "Enter" button for a game will allow the empire to join the selected game.
The System Game List provides a list of the game classes that are currently available on the server and that the logged-in empire has permission to view. Clicking on the "Start Game" button for a gameclass will allow the player to start a new game. The advanced checkbox exists to provide the player with detailed options concerning the nature of the game to be created, and should be left unchecked by the novice player.
The System Game List also allows empires with privilege levels equal or superior to a certain privilege (usually 'Apprentice') to create their own custom games. More information about custom games and privileges is available in section 2.23.
To the Almonaster beginner, the fields that describe game class characteristics may be somewhat confusing:
| Name | Update period | Empires | Planets | Tech | Dip | Resources | Initial techs | Possible techs | Options | |
| Beginner Blitz | 3 min, 30 sec | 2 to 10 empires | 4 to 6 planets per empire | 1.000 initial 3.500 delta 1 tech dev |
War Truce Alliance (2) Surrender (2 empires) |
33-66 Ag 33-66 Min 33-66 Fuel 100 HWAg 100 HWMin 100 HWFuel |
Attack, Science, Colony | All | VisibleDip 50 BuildPop 1000.000 MaxAgRatio SuicidalDooms FriendlyDooms |
PrivateMsg DipExposed 2 IdleUpdates ComplexRuins (10 updates) |
These fields are explained in the following table:
| Name | The name of the gameclass. Usually gives some hint about the nature of the game. For example, "Daily Galaxy" implies a game with many planets and long intervals between turns. "Blitz Battle," on the other hand, is probably a fast paced game with a small map. |
| Update period | The length of time each update lasts. Most games are either short terms or blitzes (with updates lasting about 3 minutes) or long terms or dailies (with updates lasting 24 hours or more). If the game has a first update delay, then that time will be displayed in this field. |
| Empires | The number of empires allowed to participate in the game. This parameter has a maximum and minimum value: when the minimum is reached, the game begins and a section of the map is created for each empire. When the maximum is reached, no more empires can join and the game closes. Gameclasses created by experienced empires can be set to allow an unlimited number of empires. |
| Planets | The number of planets per empire that the map contains.
Common values range
anywhere between 1 and 40. Unless the "Fully Colonized" option is
selected, empires do not begin each game owning this
number of planets. This number merely tells the map generator how
many planets to create and approximately how spaced out the home worlds
should be from each other. If this number is variable, then a random value
will be chosen from the displayed range for each individual game when the
map is generated. The map can be generated either when the minimum number of empires is reached (the default setting) or when the first update occurs. The difference between the two possibilities is that the latter allows a period betwen the start of the game and the creation of the map where empires can join an already-started game without their planet allocation being performed upon an existing map. |
| Tech | This field contains three values: (1) the initial technology level that each
empire begins with; (2) the maximum technology increase that an empire can
experience in one update; (3) the number of available technologies each
empire begins with. The technology level is explained in section 3.1.2. |
| Dip | The diplomacy levels that are available in this
game. A diplomacy level can be followed by a value in parenthesis that
indicates a limit on the number of empires with which that level can be
established. This can be
a a static fixed maximum or a dynamic "fair" limit,
enforced as (N - 2) / 2 empires, where N is the greatest
number of empires that were ever simultaneously in the game. Diplomacy
levels are explained in section 3.5.1. If alliances are allowed by the game class and they are marked as unbreakable, then empires at alliance cannot drop down to any other diplomatic level. If alliance limits are set to count for the entire game, then any alliance that ceases to exist (due to an annihilation, or an empire dropping down to a lower level) will count for the entire game and will limit the ability of the affected empires to establish new alliances. Empires who were previously allied can ally with each other again with no additional counts added. If surrenders are available, they may either be available always, only when two players remain, or as classic SC-style surrenders (explained in section 3.12). |
| Resources | How many resources does the average planet receive? Resources (minerals, fuel and agriculture) are explained in section 3.1. If this number is variable, then a random value will be chosen from the displayed range for each individual game. |
| Initial techs | The ship types that are available to all empires at the beginning of the game. The different ship types are explained in section 3.1.3. |
| Possible techs | The ship types that can be developed by all empires during the course of the game. Note that all initial techs must be developable. |
The "Options" field contains the following values. Scratched
values are inactive and non-scratched values are active.
| VisibleBuilds | If this option is active, ships being built by one empire can be seen by other empires that have explored the planet on which the ships are located. Otherwise, the ships will only be visible after an update has occurred. |
| VisibleDip | If this option is active, diplomatic offers are only visible after an update has transpired. Otherwise, they are visible immediately. |
| BuildPop | The population a planet requires to be able to build ships. |
| MaxShips | The maximum number of ships an empire can own simultaneously. If this option is not active, there is no limit. |
| MaxAgRatio | The maximum possible agriculture ratio an empire can have. Ratios are explained in section 3.1. This value is important because of the pop trick. |
| FriendlyGates | If this option is active, stargates and jumpgates can transport allied ships and fleets. Otherwise, they can only transport the owner's ships and fleets. |
| FriendlyScis | If this option is active, science ships cannot nuke planets. Otherwise, they can nuke just like any other mobile ship. |
| SuicidalDooms | If this option is active, doomsdays can annihilate planets belonging to their owner (except a homeworld). Otherwise, they cannot. |
| FriendlyDooms | If this option is active, doomsdays can annihilate planets belonging to allied empires (except a homeworld). Otherwise, they cannot. |
| PermanentDooms | If this option is active, the quarantine period during which a planet can not be colonized after being annihilated by a doomsday lasts until the end of the game (as in classic Stellar Crisis). Otherwise, it will last a gameclass-specific number of updates. |
| Weekend | If this option is active, the game will continue to update on weekends. Otherwise, it will not update on weekends: if an update is scheduled for a weekend time, it will be postponed until the following Monday. |
| PrivateMsg | If this option is active, private messages can be sent between empires. Otherwise, only broadcast messages can be sent. (Private messages are only seen by the specific recipients, while broadcasts are delivered to every empire.) |
| DipExposed | If this option is active, all empires in the game will have met each other when the game begins; i.e., each empire will be automatically listed in every other empire's Diplomacy screen. Otherwise, empires only appear on this screen when their ships have met each other or reached each other's planets. |
| MapExposed | If this option is active, all planets on the map are visible to all empires when the game begins. If this option is active, the map will be fully available to all empires at the beginning of play. Otherwise, each empire will begin with only its initially colonized planets visible on its map. |
| MapShared | If this option is active, empires with a given diplomatic level can share their maps: when an empire explores a previously unexplored planet, the empire's partners will see it appear automatically on their maps as well. Otherwise, each empire will need to explore each planet for itself. |
| FullCol | If this option is active, empires begin the game with their allocated planets already colonized. Otherwise, only their homeworld will be initially colonized. If the MapShared option is not enabled but FullCol is, then each empire will begin the game having explored its own planets but no others. |
| Disconnected | If this option is active, each empire's allocated planets will begin the game disconnected from the rest of the map. This option requires engineer technology to be developable. |
| Independence | If this option is active, when an empire is nuked, its territories remain alive and populated as independent planets that cannot simply be re-colonized by other empires. Similarly, the empire's ships either remain independent (hostile to all other empires) or revert to belonging to the owner of the planet at which they were located. |
| Subjective | If this option is active, then the economy and military totals displayed in the diplomacy screen for each empire represent the portion of the empire's resources that can be seen by the each player in his or her map. Otherwise, they will represent the empire's true totals. |
| IdleUpdates | The number of updates an empire can be absent from the game
before it becomes idle. Idle empires are automatically ready for each
update. They also automatically request draw and pause. Idle
empires cease to be idle not when they log in again, but when the next
update occurs. When all empires are idle in a game, and then one or more empires return, that empire will not be able to pause, draw or prematurely end the update via end turn until the next update occurs. This is because these empires are internally considered to be idle until the next update. This prevents games in which all empires are idle from prematurely pausing or drawing when they should ordinarily have ended in a ruin. |
| Ruins | Games with simple ruins enabled will behave just like
classic Stellar Crisis: if an empire has been idle for a gameclass-specific
number of updates, then it will fall into ruin and be removed from the game.
The maximum number of updates this value can be set to is 25. Games with complex ruins enabled function as follows: if all empires or all empires except one are idle for a gameclass-specific number of updates, then the idle empires will fall into ruin, but only if more than two empires were in the game at some point during its lifetime. Empires in games with no ruins enabled will never ruin unless all empires in the game are idle, in which case all empires will ruin. In all cases where all empires are idle, the usual update times will be respected even though all empires are ready for an update. Such a game will not end until the empires actually fall into ruin. |
If the game has a limit on the number of possible concurrent active games, that information will be displayed on the System Game List or the Personal Game Classes list.
Fields displayed only in the Open Game List that refer to a particular game are explained in the following table:
| Missed updates | The number of updates already transpired inside the game. |
| Next update | The amount of time remaining until the next update. |
| Bridier | Indicates if the game counts for the Bridier scoring system, what the restrictions are and what the potential rank reward would be for winning of losing the game. |
| Score | The set of restrictions imposed by the game's creator on the scores of empires allowed to enter the game. |
| Security | The behavior of the game with respect to empires with the same IP addresses or Session Ids as other empires already in the game. Warn will allow entry, but will broadcast a message to all empires should such an event occur. Block will prevent the duplicate empire from entering the game. |
Almonaster allows administrators to create game classes (game types) designed with custom parameters. Among these parameters are some that greatly affect game play:
When a game begins and the game's map is generated, resources (amounts of minerals, fuel and agriculture units) are assigned to each planet. These numbers are obtained in the following manner:
The Profile Viewer is designed to allow players to search for other empires and view their profile information. Novice empires can only search for other empires by name, but those with privilege levels greater than novice can choose a more advanced search form that allows searching for empires by many characteristics
If multiple empires are found in a search, a choice is offered as to which profile to display. Profiles look like this, with most of the fields being rather self-explanatory:
[Icon] We
| Empire Key: | 267 | Wins: | 16 | |
| Privilege Level: | Adept | Nukes: | 21 | |
| Broadcast: | Yes | Nuked: | 1 | |
| Creation Time: | 23:39:50 Sat, 04 Dec 1999 | Draws: | 2 | |
| Real Name: | John Smith | Ruins: | 0 | |
| Age: | 26 | Almonaster Score: | 86.500 | |
| Gender: | Male | Significance: | 26 | |
| Location: | New York | Classic Score: | 36.000 | |
| Email Address: | notreally@mailinator.com | Bridier Rank: | 590 | |
| Instant Messenger: | MSN: notreally@mailinator.com | Bridier Index: | 330 (60 days left) | |
| Webpage: | http://almonaster.sourceforge.net/ | Max Econ: | 291 | |
| Last Login: | 15:32:47 Sun, 01 Sep 2002 | Max Mil: | 143 | |
| Login Count: | 1961 | Unread Messages: | 1 | |
| Browser: | Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) | Games: | 3 | |
| Hashed IP Address: | 67.9.48.125 | Tournaments: | 2 |
Private system messages can be sent from the Profile Viewer to any empire whose profile is being displayed. System messages (as distinguished from game messages) are those displayed outside of games in the system interface.
An empire's personal game classes can be accessed from the Profile Viewer. Personal game classes are discussed in section 2.23. Nuke histories can also be accessed from this screen.
The Profile Editor allows players to customize their empires' profiles. Actions that can be performed from this screen include the following:
Empire Information:
System User Interface:
Game User Interface:
Gameplay:
Default ship names:
The empire's statistics can be blanked. This includes Wins, Nukes, Nuked, Draws, Max Econ, Max Mil, the various scores, and Privilege Level.
The empire can be deleted. Empires can only delete themselves if they are no longer in any games. Otherwise, they will be marked for deletion: their personal information will be deleted and they will not be able to join new games. When they leave their last game they will be automatically deleted by the system. Such empires can be undeleted from the Profile Editor and restored to their normal state.An empire association is a two way relationship that is established between two empires. These associations provide a mechanism for quickly switching between different empires belonging to the same player. New empire associations can be established through the Profile Editor by entering the name and password of another empire. When this is done, each of the two empires involved in the association will be able to log in as the other empire without entering a password, even if the empires' passwords change. Associations may be deleted by either empire involved in the association. There is no limit on the number of empires that may be associated with one another.
Associations are used by navigating to the current empire's profile and selecting the desired empire from the dropdown list. This list will only appear when the empire forms an association with another.
The Top Lists screen allows players to view lists of empires ranked using various scoring systems.
For novices to understand the contents of this screen, it should be explained that an empire can only defeat another empire by obliterating the latter's homeworld. This is accomplished by using one or more uncontested ships to nuke the homeworld in question. An empire obtains a nuke when it obliterates another empire. The obliterated empire in turn obtains a nuked. If an empire ends a game as a member of the winning coalition it obtains a win. A draw is obtained when all remaining empires agree to cease all hostilities and end the game without a winner. If an empire is idle for enough updates, it will fall into ruin and be removed from the game if the gameclass allows ruins to occur.
Classic Score is defined as the following simple formula:
Wins + 0.25 * Draws + 0.5 * (Nukes - Nuked) - Ruins
This scoring system is a relic of Stellar Crisis gameplay and is primarily a measure of games played. It is more significant to old-timers than to beginning players.
Almonaster Score is far more complicated than Classic Score, and is used to restrict game access. It is intended to be a more accurate measure of player quality than the Classic Score, which measures mostly quantity.
The core notion of Almonaster Score is the concept of a Base Unit (BU). The BU is the amount of points that is given to an empire that nukes another empire of equal quality and with an equal number of allies and trade partners. It is also the amount that is subtracted from an empire nuked by another of equal quality and with an equal number of allies and trade partners.
The quality of an empire, of course, is measured in Almonaster points, so the Almonaster Score can be thought of as a recursively defined ladder system. If the interacting empires are not equivalent in quality, then the quotient of their scores is used to multiple the BU. E.g., if empire A with 10 points nukes empire B with 20, A will gain BU * (20 / 10) points and B will lose BU * (20 / 10) points.
However, a good quality empire can easily be nuked by a low quality opponent, if that opponent has allies to support it and outnumber the better empire. The Almonaster Score takes this problem into account with the notion of an alliance ratio (AR), which is the number of allies and trade partners the nuked empire has divided by the number of allies and trade partners the nuking empire has. The alliance ratio is capped by the system's minimum alliance ratio and maximum alliance ratio.
Furthermore, a good quality empire with many games on a server and a high score can be nuked by an empire with no record (and thus, a low score) whose owner is actually quite good. To solve this problem, the Almonaster score uses two separate significance ratios: the Nuker's Significance Ratio (RSR) and the Nuked Significance Ratio (DSR), which are separately capped by system defined minimum and maximum values.
Other important constants that are used:
The latter two are introduced to reduce the results of score disparities to reasonable levels.
To summarize, one one would express the Almonaster Score in C in the following manner:
void GetAlmonasterScoreChanges
(
float fNukerScore,
// Empire's current score
float fNukedScore,
int iNukerSignificance, // Nukes + nuked
int iNukedSignificance,
int iNumNukerAllies, //
Number of allies and trade partners empire has
int iNumNukedAllies,
float* pfNukerIncrease, // Final increase
in nuker's score
float* pfNukedDecrease // Final
decrease in nuked empire's score
) {
float fIncreaseFactor, fDecreaseFactor, fAllianceRatio, fNukerSignificanceRatio, fNukedSignificanceRatio;// Prevent division by zero
iNumNukedAllies += 2;
iNumNukerAllies += 2;
iNukerSignificance += 2;
iNukedSignificance += 2;
// Calculate initial increase / decrease factors
fIncreaseFactor = fNukedScore / fNukerScore;
fDecreaseFactor = fIncreaseFactor;
// Normalize increase factor
if (fIncreaseFactor > ALMONASTER_MAX_INCREASE_FACTOR) {
fIncreaseFactor = ALMONASTER_MAX_INCREASE_FACTOR;
}
// Normalize decrease factor
if (fDecreaseFactor > ALMONASTER_MAX_DECREASE_FACTOR) {
fDecreaseFactor = ALMONASTER_MAX_DECREASE_FACTOR;
}
// Calculate alliance ratio
fAllianceRatio = (float) iNumNukedAllies / iNumNukerAllies;
if (fAllianceRatio > ALMONASTER_MAX_ALLIANCE_RATIO) {
fAllianceRatio = ALMONASTER_MAX_ALLIANCE_RATIO;
}
else if (fAllianceRatio < ALMONASTER_MIN_ALLIANCE_RATIO) {
fAllianceRatio = ALMONASTER_MIN_ALLIANCE_RATIO;
}
// Calculate significance ratios
fNukerSignificanceRatio = (float) iNukerSignificance / iNukedSignificance;
fNukedSignificanceRatio = fNukerSignificanceRatio;
if (fNukerSignificanceRatio > ALMONASTER_MAX_NUKER_SIGNIFICANCE_RATIO) {
fNukerSignificanceRatio = ALMONASTER_MAX_NUKER_SIGNIFICANCE_RATIO;
}
else if (fNukerSignificanceRatio < ALMONASTER_MIN_NUKER_SIGNIFICANCE_RATIO) {
fNukerSignificanceRatio = ALMONASTER_MIN_NUKER_SIGNIFICANCE_RATIO;
}
if (fNukedSignificanceRatio > ALMONASTER_MAX_NUKED_SIGNIFICANCE_RATIO) {
fNukedSignificanceRatio = ALMONASTER_MAX_NUKED_SIGNIFICANCE_RATIO;
}
else if (fNukedSignificanceRatio < ALMONASTER_MIN_NUKED_SIGNIFICANCE_RATIO) {
fNukedSignificanceRatio = ALMONASTER_MIN_NUKED_SIGNIFICANCE_RATIO;
}
// Calculate nuker empire's increase
*pfNukerIncrease = ALMONASTER_BASE_UNIT * fIncreaseFactor * fAllianceRatio * fNukerSignificanceRatio;
// Calculate nuked empire's decrease
*pfNukedDecrease = ALMONASTER_BASE_UNIT * fDecreaseFactor * fAllianceRatio * fNukedSignificanceRatio;
// Make sure decrease doesn't drop nuked empire below min score
if (fNukedScore - *pfNukedDecrease < ALMONASTER_MIN_SCORE) {
*pfNukedDecrease = fNukedScore - ALMONASTER_MIN_SCORE;
}
}
A ruin affects an empire's Almonaster score as if the ruined empire had been nuked by the empire in the game whose nuke would have cost the ruined empire the most, had the latter nuked the former with no alliance considerations.
The Bridier scoring system was designed for chess and adapted for Stellar Crisis 3.x by Jerome Zago. It attempts to perform the same type of evaluation of an empire's quality that the Almonaster Score does, but only for selected one-on-one (grudge) games. More information about the Bridier scoring system can be found on Jerome's website.
If a server is down for longer than a week, the timestamps that record their last Bridier activity, which are used to calculate Bridier Index decay, will be updated accordingly.
The chatroom is a simple implementation of an IRC-like message board designed for those who wish to find a quick opponent for a game or are unable to access real IRC channels. The chatroom keeps a certain number of messages stored in memory and has an upper limit on the number of empires who can share the room simultaneously. Empires who enter the chat room and do not post a message for a certain period of time will time out.
Needless to say, the basic rules of civility that govern all Internet communications also apply to the Almonaster chatroom.
The exit button will take players who press it back to the Login screen and allow them to use different empires or create new ones.
The Spectator Games screen lists all active games that have been created with settings that enable them to be viewed by spectators. From this page, players can view the full maps of these games, as well as some information about the empires playing the games. In order for a game to be displayed on this page, it must:
The Personal Tournaments screen appears to empires who have attained the level of Adept. This screen allows empires to create and administer their own tournaments. Tournaments are explained in detail in section 4.6.
The Server News screen displays a news page edited by the server's administrators. The content will vary depending on the server. Users of a particular server are advised to check the Server News page once in a while to inform themselves of important occurrences concerning the server and the game. When the server news page is updated, empires that log in or autologin afterwards will receive notifications that the server news has been updated.
The Server Information screen provides information about system and game variables that are specific to the server or the version of Almonaster. It also provides data concerning the state of the server process and the traffic the web server has serviced since it last started up. This information is required reading for players new to Almonaster or to a particular server.
The Documentation screen displays this very document, which should be synchronized with the version of Almonaster running on the server.
The Contributions screen explains how the player can contribute resources to the server's administrators. Generally, gifts of money, hardware or time are much appreciated buy those who provide a free service such as Almonaster at their own expense.
The Credits screen attempts to give credit where credit is due, by mentioning the people responsible for the important work that led to the existence of Almonaster and Stellar Crisis. This page is of course a work in progress, just like the games themselves.
The TOS (Terms of Service) screen provides a description of the contract between the server administrators and the users. It attempts to regulate player behavior by establishing for them a set of rights and responsibilities. All players must accept the TOS in order to play on a server. The TOS text distributed with Almonaster is generic, but can me modified and adapted to suit the needs of a given server and its administrators. A player who is new to a server should read its TOS to verify that its terms are reasonable and acceptable.
There are five levels of privilege that an empire can be assigned in Almonaster:
Administrators can also join any game, regardless of score limitations and have the right to delete other empires' personal game classes.
The empire named 'root' is the default administrative empire created during new server setup. This empire is considered special by the server: it cannot be deleted, downgraded from administrative status, prevented from broadcasting, have its password changed, have its scores changed or blanked, or have its personal game classes deleted, even by another administrator.
The empire named 'guest' is the default guest empire created during new server setup. It exists to allow applications such as the game availability page which poll SC and Almonaster servers for active games. This empire is considered special by the server: it cannot be deleted, upgraded from Guest status, allowed to broadcast, change its own password, have its scores changed or blanked, create or enter games, create personal game classes.
It is recommended that players understand the meaning of the different game class options available to them before creating their own custom games or game classes.
The option exists on Almonaster servers to configure an empire for autologon. This option can be both activated and deactivated in the Profile Editor. Only one empire per user per web browser can be set to autologon at a time.
When autologon is enabled, the player's web browser will provide the server with the identity of the desired empire and its hashed password in the form of a cookie. The player will be directly presented with the Active Game List, directly bypassing the login screen. A failure in the autologon process will cause autologon to be turned off, and the player be presented with the standard login screen.
When a game is created from the System Game List with the Advanced checkbox selected, a menu will appear with options that the player can use to configure the new game:
| Updates before game closes | The number of updates that will occur before the game closes. If the game fills up before this numbe of updates, the game will close. While a game is still open, other empires can still join and the game cannot end. |
| First update delay | An additional period of time that is added to the first update of the game. This option is usually used to allow additional time for empires to join a game before it closes. |
| Message sent to empires entering the game | A message from the game's creator that is sent to each empire that joins the game. |
| Empire names exposed | The names of the empires in the game can either be hidden or exposed in the game list. This option also determines if empire names will be broadcasted to the other participants when they enter the game. |
| Game available to spectators | Only available for games with exposed maps and diplomacy, this option determines if a game will be visible from the Spectator Games screen. |
| Password protection | Entrance into the game can be restricted to players who know the password selected by the creator. |
| Empire filtering by scores | Entrance into the game can be restricted to those empires whose scores fall within the ranges selected by the creator. Restrictions defined here do not apply to administrators, to the owner of the game class, or to the creator of the game. |
| Empire filtering by IP address and Session Id | Entrance into the game can be restricted to empires whose
IP addresses and Session Ids are not duplicates of other empires already
in the game. The creator of a game can choose to allow all empires access to the
game, to deny access to the game to empires with duplicate IP addresses or
Session Ids, or simply to warn the other empires in the game that an
empire with a duplicate IP address or Session Id has entered the game. Needless to say, because of the disconnected nature of the HTTP protocol, it is not possible to prevent multiple empires belonging to the same player from joining a game, but these options can make it somewhat more difficult for players to cheat in this manner without being detected. The Options screen also allows players to search their current games for empires with duplicate IP addresses or Session Ids. Restrictions defined here do not apply to administrators, to the owner of the game class, or to the creator of the game. |
| Block idle empires | Entrance into the game can be restricted to empires that
are not idle in another game on the server. When this option is selected,
empires that are currently idle in at least one game will not be able to see
the game in their Open Game List and will be
prevented from joining. An empire is idle in a game if it has not
logged into that game for a gameclass-specific number of updates. Empires with the same IP address and Session Id as the blocked empire can also be blocked from entering the game. The server will compare both the current values for these fields to all entering empires, as well as the values at which these fields were set when the game was created. This option is very powerful and should be used with some caution. Any restrictions defined here do not apply to administrators, to the owner of the game class, or to the creator of the game. |
| Block specific empires | This option allows the creator of a game to identify specific empires who will not be allowed to enter the game. Empires with the same IP address or Session Id can also be blocked. Restrictions defined here do not apply to administrators, to the owner of the game class, or to the creator of the game. |
The Info screen looks something like this:
Game Information
| Updates: | 13 | Last update: | 11 sec ago | Next update: | 32 hrs, 13 min |
| You are not ready for an update | The game is closed | 1 of 2 empires is ready for an update |
Empire Totals
| Minerals: | 96 | 12% in use | Tech Level: | 13.765 (BR 3) | Economic Level: | 2 |
| Fuel: | 96 | 25% in use | Tech Increase: | 1.016 of 1.250 | Military Level: | 0 |
| Agriculture: | 95 | 101% in use | ||||
| Population: | 96 | 100% of target | Next Tech Level: | 14.780 (BR 3) | Planets: | 1 |
| Target Population: | 96 | 101% of agriculture | Next Tech Increase: | 1.013 of 1.250 | Ships: | 2 |
Ratios and Usage
| Maintenance Ratio: | 8.000 | Fuel Ratio: | 4.000 | Agriculture ratio: | 0.990 |
| Next Maintenance Ratio: | 7.917 | Next Fuel Ratio: | 3.958 | Next Agriculture Ratio: | 1.000 |
| Total Maintenance Cost: | 12 | Total Fuel Use: | 24 | Total Build Cost: | 0 |
Game Settings
| Maximum Agriculture Ratio: | 1000.000 | Ship Limit: | None | Population Needed to Build Ships: | 50 |
The next update time is calculated in the following manner:
If an empire is "ready for an update", then the empire has finished making its moves for the current update and has clicked on the End Turn button, signaling its readiness to move on to the next turn or update. When all empires have Ended Turn, an update will occur, regardless of the time remaining in the current update period. This ensures that games move along quickly and time is not wasted waiting for the game's update timer to run down. If an empire is ready for an update but wishes to make changes, it has the option of clicking on the Unend Turn button, which sets the empire back to an unready state.
The next maintenance, next fuel use and next agriculture ratios are defined as the system's best guess at the values of these ratios after the next update. These values take into account deterministic factors such as max population settings, colony construction, visible upcoming trade settings, colonies set to colonize or minefields set to detonate. They do not consider non-deterministic events such as ship combat, most special actions such as terraforming, invasion or planet colonization.
The reason special actions are not considered is because it is not possible to predict if the ship in question will successfully act. There are two reasons why it might fail:
The first can easily be discarded if there are no other ships on the planet. The second, however, depends on ship combat outcomes, which use random input (namely, the order in which ships are destroyed). One would think that the system could notice those cases where ship combat is simply not possible, and adjust the next ratio accordingly, but that would provide the colonizing empire with an information leak: the knowledge that there are no cloakers on the planet he's about to colonize, and no enemy ships located at adjacent but unexplored planets. Consequently, special actions are ignored when computing next ratios.
The next ratios are primarily useful as references when overbuilding or pop tricking.
The technological level of an empires is a floating point number that begins each game set at an initial level (usually at least 1.0). As the updates progress, each empire's level increases depending on the amount of resources (minerals and fuel) that it is using and the maximum tech increase allowed by the gameclass. This formula can be expressed as follows:
Tech Increase = (1 - Resources used / Total Resources) * Maximum Tech
Increase for the gameclassThis allows empires that use few resources in building or maintaining existing ships to develop high technological levels. On the other hand, over-ambitious empires that build too many ships are penalized as time passes, because their technological levels will be inferior to those of their opponents and this disadvantage may not be outweighed by the economic benefits the additional ships might have brought.
Technological development is useful for two different reasons:
The important notion to grasp is that effective technology levels increase by cut-off points. The floor of the square root of an empire's technological level (the battle rank, or BR) is the relevant number in determining both ship capacity and the availability of new ship types. When this number increases (as it does when the technological level reaches 4.0, 9.0, 16.0, 25.0, 36.0, etc.), the BR of the empires will increase (to 2, 3, 4, 5 and 6, respectively). As a consequence of the BR increase, an additional ship type can be developed and more powerful ships can be built.
If an empire builds enough ships, it will over-spend on ship maintenance and will actually see a negative technological development. This can cause the empire to slip back to a lower BR. If this occurs, the empire will not lose the new ship type that it can develop, but its ships will be built with the lower BR and will be less effective in combat situations.
The rationale for using a geometric system rather than a linear one is simple: the intention was to make it increasingly difficult to reach the next BR level. There are two ways to explain why this is desirable:
The effectiveness of a ship in combat is actually the square of its current-BR. So a BR6 ship will fight with 36 combat "points." The most important consequence of this is that ships with higher BR's are much more effective in combat that ships with lower BR's, and this difference in effectiveness increases as the respective BR's are higher. The "realistic" rationale here is that once the massive R&D efforts described in explanation (1) are made, the result is actually quite worth the expenditure.
One might think that this squaring of the current-BR simply eliminates the square-root formula for calculating BR, and therefore contradicts explanation (2) above. This is not the case: ships built by an empire with technological level 48.0 are no more powerful than those built by an empire with technological level 36.0. Therefore, technological inequalities between different empires are not so much balanced out as dampened through the use of the geometric BR scale.
There are sixteen different ship types in Almonaster. All ship types have the same offensive and defensive capabilities at the same BR, but many have special abilities that differentiate them from the others:
| Attack | Has no special abilities, but is cheap to produce and is therefore useful for creating large mobile fleets. |
| Science | Can traverse unexplored links and increase the visible map area available to the empire. |
| Colony | Can colonize unclaimed planets and settle already
colonized planets. Building a colony induces a server-defined population
cost at the planet where a colony is built. This cost is deferred until
the next update and is subtracted from the planets population after the agriculture ratio
has been applied. As in classic Stellar Crisis, in Almonaster a colony will always be destroyed when depositing population on a planet. Regardless of the maximum population at a planet, the maximum capacity of the colony will always be deposited. |
| Stargate | Can teleport ships and fleets to other planets colonized by its owner in a single update. Stargates are immobile, in that they cannot be moved from the planet upon which they were built. Stargates lose a server-defined amount of BR every time they are used. They can also suffer from range limitations. If a planet's ownership changed during the update in which it was being gated to, the gate action will still succeed. |
| Cloaker | Can become invisible and move around without being detected by friends or enemies. Cloakers cannot nuke a planet or participate in ship combat unless they are uncloaked. |
| Satellite | Does not consume fuel and is cheap to build. Satellites are used mainly for creating large defensive fleets (satellite walls). Like stargates, satellites are immobile. |
| Terraformer | Can increase the agriculture level of a planet to the greater of the planet's fuel and mineral units. The amount that is increased is equivalent to the terraformer's BR multiplied by a server defined amount. Unlike classic Stellar Crisis, in Almonaster multiple terraformers can act upon the same planet during the same update. Terraforming a planet will typically destroy a terraformer, although terraformers can survive with reduced BR if the planet's resource increase is below the capacity of the terraformer. |
| Troopship | Can invade planets owned by other empires and independent planets. Invasions are successful if the troopship's BR multiplied by a server-defined number is greater than the total population of the planet. A failed invasion destroys the ship and removes a server-defined number of population units on the planet (usually a multiple of the troopship's BR). Troopships can survive a successful invasion with reduced BR if the planet's population is below the capacity of the troopship. |
| Doomsday | Can annihilate a planet, reducing its agriculture level to zero and placing it in a quarantined state for a number of updates equivalent to the doomsday's BR multiplied by a server-defined value. A doomsday can act upon un-colonized planets, independent planets, the empire's own planets (with the exception of its homeworld) or planets belonging to warring empires. Some restrictions on doomsday use may apply from server-defined or gameclass-defined settings. |
| Minefield | When destroyed, it detonates and destroys every other ship on the planet, unless a minesweeper belonging to any empire is present at the planet after the ship battle ends. Minefields can also be detonated intentionally by their owners. If a minefield is detonated and a minesweeper is present, the minefield will be destroyed with no ill effects to other ships. Minefields are immobile ships. |
| Minesweeper | Nullifies the effects of exploding minefields. Minesweepers are present in any serious offensive fleet. Minesweepers act passively and do not require special orders to operate. |
| Engineer | Can open and close links between planets, at a server-defined cost to its BR. |
| Carrier | Behaves like an advanced attack ship that can absorb large amounts of damage inflicted by opponents during fleet battles. Carriers are expensive to build. |
| Builder | Can create new planets from empty space. The resource levels of the new planets depend on the BR of the builder. Creating a planet will destroy a builder. |
| Morpher | Can change its configuration from one ship type to another, choosing from among all the technologies developed by the empire. Each metamorphosis induces a server-defined cost to the BR of the morpher. Morphers change shape early in the update, before ship combat occurs. |
| Jumpgate | Behaves similarly to a stargate, but can teleport ships and fleets to any planet, not just to those colonized by the owner. Jumpgates cannot send ships and fleets to planets under quarantine after being annihilated by a doomsday. Jumpgates lose a server-defined amount of BR every time they are used. They can also suffer from range limitations. |
The following table displays the costs of building and keeping ships alive. The build and maintenance costs count against the empire's minerals, while the fuel cost counts (logically) against the empire's fuel. All costs will detract from technology development. If a ship loses MaxBR through special actions or other mechanisms, it will cost its owner the same amount of resources as the same ship type built at the new MaxBR level.
| Ship | Build Cost | Maintenance Cost | Fuel Cost |
|---|---|---|---|
| Attack | (BR + 4 ) ^ 2 | BR * 2 | BR * 4 |
| Science | ((BR + 4 ) ^ 2) + 25 | BR * 2 + 4 | BR * 4 + 8 |
| Colony | ((BR + 4 ) ^ 2) + 25 | BR * 2 + 4 | BR * 4 + 8 |
| Stargate | ((BR + 4 ) ^ 2) + 100 | BR * 2 + 16 | BR * 4 + 32 |
| Cloaker | ((BR + 4 ) ^ 2) + 25 | BR * 2 + 4 | BR * 4 + 8 |
| Satellite | ((BR + 4 ) ^ 2) - 10 | BR * 2 - 2 (*) | 0 |
| Terraformer | ((BR + 4 ) ^ 2) + 25 | BR * 2 + 4 | BR * 4 + 8 |
| Troopship | ((BR + 4 ) ^ 2) + 25 | BR * 2 + 4 | BR * 4 + 8 |
| Doomsday | ((BR + 4 ) ^ 2) + 10 | BR * 2 + 2 | BR * 4 + 4 |
| Minefield | ((BR + 4 ) ^ 2) + 10 | BR * 2 + 2 | 0 |
| Minesweeper | ((BR + 4 ) ^ 2) + 25 | BR * 2 + 4 | BR * 4 + 8 |
| Engineer | ((BR + 4 ) ^ 2) + 100 | BR * 2 + 16 | BR * 4 + 32 |
| Carrier | ((BR + 4 ) ^ 2) + 75 | BR * 2 + 12 | BR * 4 + 24 |
| Builder | ((BR + 4 ) ^ 2) + 50 | BR * 2 + 8 | BR * 4 + 16 |
| Morpher | ((BR + 4 ) ^ 2) + 35 | BR * 2 + 6 | BR * 4 + 12 |
| Jumpgate | ((BR + 4 ) ^ 2) + 150 | BR * 2 + 24 | BR * 4 + 48 |
| (*) If this value falls below 2, it becomes 2 | |||
(Note: the costs listed here are generally the same as for classic Stellar Crisis. However, doomsdays in Almonaster are cheaper than their SC counterparts.)
The options screen allows players to choose various options for the current game:
| Placement of command buttons | The command buttons can be repeated at the bottom of the screen if the player wishes it. This is useful for large screens in which a lot of scrolling is needed to go from the bottom back to the top to issue the next command. |
| Server time display | The server's current time can be displayed on each screen under the command buttons. |
| End Turn button displacement | The End Turn button can be placed with the other command buttons or off to the right under the Exit button. |
| Refresh upon update countdown | The screen can automatically refresh itself when the update timer counts down to zero. This option requires a JavaScript-enabled browser. |
| Visual update countdown | A form field can be displayed on each screen, with a graphical countdown timer indicating exactly how much time remains in the current update. This option requires a JavaScript-enabled browser. |
| Map coloring by diplomatic status | The Map screen can be rendered with colored text in planet representations, corresponding to the diplomatic status of the empire with owner of the planet: good color for allies, bad color for foes, standard text color for truces, trades, independent and un-colonized planets. |
| Ship coloring by diplomatic status | Per-planet ship counts on the Map screen can be colored according to the lowest respective diplomacy level with the viewing empire of all empires who have ships at the planet. If that level is war, then the color will be bad. If the level is alliance then it will be good. Otherwise, it will be the standard text color chosen by the empire. |
| Ship highlighting on map screen | Per-planet ship totals on the Map screen can be displayed with a larger font and in boldface, if the total is greater than zero. |
| Sensitive maps | The Map screen can display alt-tag based tool-tips displaying the ships present at a given planet. This can save time switching from the map screen to up-close views of individual planets. Currently, this option only works well with Internet Explorer and Lynx. |
| Partial maps | The Map screen can display a menu at the top allowing the player to choose the center of the map that should be displayed, as well as its X and Y radius. This allows players in games with very large maps to reduce the size of the map screen. This can be useful for users with slow connections, older computers, low resolution displays, buggy browsers or WebTV. |
| Mini-maps | The map screen can be viewed as a reduced-size map with small planets and no links or statistical text. This is another way to deal with rendering large maps. |
| Display ship menus in planet views | Ship menus can be displayed in the Planets or up-close Map screens. |
| Display build menus in planet views | Build menus can be displayed in the Planets or up-close Map screens. |
| Display local maps in up-close map views | Up-close views on the Map screen can contain a small local (3x3) map centered around the specific selected planet. This map is interactive and can be clicked on to obtain up-close views of the surrounding planets. This option provides a means of easily viewing the up-close properties of adjacent planets. |
| Display ratios line | A line at the top of the screen describing the empire's current ratios can be displayed on every screen, on selected screens, or not at all. |
| Default builder planet | Different planets can be selected as the default builder planet on the Build screen. Options include the empire's homeworld, the last planet used to build ships or a specific planet owned by the empire. |
| Default message target | A default target selection can be chosen for messages sent via the Diplomacy screen. The options include none, broadcast, all at war, all at truce, all at trade, all at alliance and last target used. Some of these options may not be available if they do not apply to the gameclass. |
| Game messages saved | Stored game messages can be viewed. |
| Maximum saved game messages | The number of game messages to save can be selected. Messages are saved in FIFO order (first-in, first-out). |
| Ignore broadcasts | All messages sent as broadcasts can be ignored. Important information can be lost when this option is selected, but it can help preserve sanity when a particularly annoying empire is broadcasting distracting messages. |
| Search for empires with duplicate IP addresses | Empires with duplicate IP addresses can be detected. See section 2.5.4 for more details. |
| Search for empires with duplicate Session Ids | Empires with duplicate Session Ids can be detected. See section 2.5.4 for more details. |
| Request pause | Empires can
request that the game be paused for a period of time. If all empires agree
to pause the game, then its update countdown will stop until at least one of
the empires in the game is no longer requesting pause. A paused game can also be updated if all
empires choose to end turn. A game can only be paused after it has started. When a game is paused, the number of seconds elapsed from the last update is recorded, and the update timer will display the time that would remain until the next update if the game were to be unpaused. This value will increase over the weekend if the game has no weekends updates. When the game is unpaused, the last update time is set to the current time minus the elapsed update time. The timer is restarted and the next update will occur at the displayed time. When an empire becomes idle, it will automatically request a pause. This allows games with idle empires to be paused. However, if all empires in the game are idle, the game will not pause itself even if all empires are requesting pause. This prevents games with all empires idle from remaining alive on the server forever in a paused state. |
| Request draw | Empires can
request that the game be resolved as a draw. If all empires agree to this,
then the game will end. Only those games for which draw is enabled will have
this option. When an empire becomes idle, it will automatically request a draw if there is still at least one empire in the game who is not idle. This allows games with idle empires to be drawn, while preventing games with all empires idle from drawing out when a ruin is appropriate. |
| Keep game notes here | A scratch pad can be used to keep game notes of importance: diplomatic situations or coordinates of interest. |
| Resign from the game | Empires can
resign from a game, which causes them to unilaterally leave the game. A message of
resignation will be broadcasted to the other empires in the game. The
resigned empire's ships will be immediately dismantled, but its planets will
remain as they are until the empire falls into ruin or is nuked. The
resigned empire will also automatically request a pause and be automatically
ready for updates. Only
an administrator can revoke an empire resignation, so this option should be
used with caution. Players can activate the confirmations option in the Profile
Editor if they want to be prompted before the resignation takes effect.
Resigned empires are displayed in the Diplomacy and
empire information
screens as |
| Surrender from the game | Empires can surrender from a game, which causes them to be unilaterally nuked from the game. This option will appear in games that have enabled classic SC-style surrenders, or in games where only two empires remain. |
The map screen allows players to view the planets that their science ships have explored in a two-dimensional graphical form: The representation of a planet should be interpreted in the following manner:
|
-- | ||||||||||
Each planet also has a pair of X-Y coordinates that uniquely identify it in the galaxy. The X coordinates increase towards the East, while the Y coordinates increase towards the North, just like standard Cartesian coordinates.
If mini-maps have been enabled in the Options screen, they will display a smaller version of the map without planetary statistics, links or ship information. When maps are very large, setting the default map display to mini-maps can improve load times and visibility.
Clicking on a planet will lead to an up-close screen where the planet's characteristics are displayed in more detail. For example, this is a planet owned by the empire viewing it:
This is a planet owned by another empire: