Page last updated: April 21, 2001
The latest development version is Build 619
New in 619 beta 1
Almonaster:
Fixes:
- Fixed a spurious assertion in the update algorithm
- Fixed corrupted first contact (ship to planet) message
- Fixed problem where a stale empire administrator page could involuntarily
change an empire's properties, including its Almonaster Score
- Fixed a bug that was causing empire settings to not be respected on the
info page immediately after re-entry into a game
- Fixed first contact (ship to planet) messages (both messages were going to
the ship owner)
- Built Almonaster with warning level 4, fixed some uninitialized variable
bugs
Changes:
- Changed ship option generation to only offer options that will be
available during the update, based on next BR estimates
- Changed update messages to be "sent" at the same times as the
actual updates. This fixes the erroneous sorting of update messages that can
occur when more than one update is processed at once
- Only a ship's owner will receive a failure notification in the update
message if a ship fails to perform a special action
- Made markups nicer looking in combat part of update messages
New features:
- Moved all relevant gameplay, map generation and ship behavior parameters
from the config file to the database, and added a Game Administrator section
for each
- Added server option to enforce stargate range limits
- Added bad-font markups for all special action failures
- Added option for server time to be displayed on system and pages (thanks,
Soma). Changed repeated buttons to behave in the same way
Database:
- Finally fixed deletion of old backups
Osal:
- Added overload of Time::GetDate that converts a date to a UTCTime.
New in 619 beta 2
Changes:
- Administrators can now view max pop and next pop values for colonized
planets via the GameAdministrator
- Cloaked morphers are no longer able to morph until they uncloak (thanks,
Paul)
- Added compatibility flag enforcing only one terraformer per planet per
update
- Added compatibility flag enforcing doomsdays with infinite quarantines
- Enforced the inability of jumpgates to jump to annihilated planets (oops)
- Builders now generate planets with variable resources, according to the
following formula:
1.5 * (average planet for game) * ((BR - MinBuilderBR + 1) / BR)^2
(thanks, backstabber)
- Added classic SC doomsday gameclass option, to use in gameclasses with
jumpgates
- Fixed display of classic SC-style surrenders in game lists
- Added confirmations for empire obliterations via Empire Administrator
Regressions from 618:
- Fixed inability to change default ship names
- Fixed a spurious assertion when a submission was entered for a game that
didn't exist
- Gameclasses with no techs are displayed properly in game lists and don't
cause assertions
- Reenabled terraforming unfriendly planets when compatibility flag was not
set
Osal:
- Added WaitReaderWriter, SignalReaderWriter, UpgradeReaderWriter and DowngradeReaderWriter
methods to ReadWriteLock class
New in 619 beta 3
Almonaster:
- Added Latest Nukes page
- Created correctly sized new ship buttons
- Fixed the last of the temporary buttons in the dark mood theme
- Fixed off-color Server Status button for theme 0
- Added a few more statistics to the Server Rules page (thanks, Paul)
- Undeveloped technologies are now displayed with the 'bad' font on the Tech
page
- Fixed a bad printf statement in an error path that was causing crashes
Osal:
- Added IsOpen method to MemoryMappedFile class
New in 619 beta 4
Almonaster:
- Corrected "next BR" calculations during ship option preparation.
This fixes those ships whose actions depend on this calculation, such as
jumpgates (thanks, CJ), which were receiving disproportionate numbers of
target planets to jump to (although they were being rejected later on during
the update)
- Changed ships and build screens to discard submissions if they were
formulated before the current update (thanks, CJ)
New in 619 beta 5
Almonaster:
- Corrected a ship combat bug where if the remaining DEST was equal to the
battle points of a given ship (but not greater), that ship wouldn't be
destroyed as the combat intended. The fix was to change a > operator to
>=
- Fixed a terraforming bug introduced in earlier 619 betas
- Changed GetGameClassName to not assert in legitimate failure cases
- Fixed bug in colony cost calculations that was causing assertions during
updates
New in 619 beta 6
Almonaster:
- Fixed Server Status range explanations (divide instead of multiply)
- Initial session ids are now randomly set when a new database is
initialized
- Implemented 'detonate' option option for minefields (thanks, DoctorDoom)
- Added minefield detonation compatibility flag
- Delayed ship sighting report calculations until after special actions were
performed, including gating
- Fixed ship combat with independent carrier ships
Alajar:
- Added IHttpResponse::AddHeader and IHttpResponse::Flush
- Incremented server version to 1.54
New in 619 beta 7
Almonaster:
- Fixed a couple of spurious assertions
- Fixed scenario where jumpgating uncloaked ships to an enemy planet
wouldn't cause first contact to occur
- Fixed potentially database corrupting race condition in ship and fleet
handling code
- Almonaster Significance is now blanked when an empire's statistics are
blanked
- Ruins are now listed in TopList displays
- Added email addresses to TopList displays as links real names
- Changed 'Score' column in Diplomacy lists to 'Created'
- Reworked scoring system and top list architecture to make it easier to add
new scoring systems.
- Added the Bridier scoring system, as adapted for Stellar Crisis by Jerome
Zago (thanks, Jerome)
- Reworked game creation architecture to make it easier to add per-game
features. Created an 'advanced' configuration page available via a System
Game List checkbox (which replaces the 'password' checkbox). Added
admin-configurable default values for games which are created without going
through the advanced configuration page.
- Made the following features per-game instead of per-gameclass:
- Bridier
configuration - i.e., does a given game count towards Bridier scoring or
not
- Number of updates before games close
- First update
delay
- Enter game message, which is now set by the game's
creator, not the gameclass' creator
New in 619 beta 8
Almonaster:
- Fixed an update inconsistency reported by DomusAurea: ships could be
successfully stargated to a planet if it was nuked during an update, but not
if it changed hands through invasion, colonization or annihilation by
doomsday. The fix is to allow gating to a planet if it was owned by the
empire in question at the beginning of the update. For consistency's sake,
jumpgates can now send ships to planets that weren't annihilated at the
beginning of the update (thanks, DomusAurea)
- Fixed the case where a ship in a fleet was set to perform a non-fleet
action and the fleet was then set to disband and dismantle - the problem was
that all ships in the fleet would then be set to dismantle, not just the
ones that were set to follow the fleet's orders (thanks, DomusAurea)
- Fixed a bug where an annihilated planets' agriculture levels weren't
being set to zero if they weren't independent or owned by an empire
- Fixed a bug that was causing assertions when the latest nukes table filled
up and looked for a row to delete.
- Fixed Latest Nukes display when table became unsorted after multiple
insertions and deletions (thanks, light)
- Fixed top list bug that was preventing empires from being demoted when
their scores decreased
- Fixed detection of badly sorted top lists in the top list verification
code
- Fixed a couple of bugs in the top list rebuilding code
New in 619 beta 9
Almonaster
- Fixed Bridier score math to correctly compare nuker rank to nuked rank
when calculating stakes (thanks, Agt)
- Fixed subjective views to display the proper mil values for each empire
instead of zero (thanks, DomusAurea)
- Fixed spurious assertion when empire attempts to join a game that no
longer exists
- Fixed subtle, improbable race condition that could allow an
empire to enter a game before its creator
- Fixed problem where personal games with very long names wouldn't fit in
nuke history tables
- Fixed bug that could cause the wrong carrier BR to be used during battles
- Fixed security hole that could have allowed players to create games with
negative average resources per planet
- Made creating a game slightly faster by removing unnecessary security
checks when the first empire enters the game
- Made "Empire names exposed" a per-game feature instead of per-gameclass
- Moved score restrictions for game entry restrictions from gameclass to advanced game
settings
- Added additional score restrictions for game entry, based on all existing scoring
system values
and wins
- Added spectator games (thanks CJ, Galaxia). Spectator games are
games with exposed maps that can be viewed by all players on the server. The
original design called for looking for the lowest common denominator for all
maps, but that would have constituted an information leak.
- Added Bridier Rank gain and loss information to open game list
- Added penalties for no Bridier activity to Bridier scoring, as per Agt's spec
- Changed gameclass creation form to preserve its settings when the creator
makes a mistake and needs to resubmit the form
- Rearranged game list columns to provide more information and look better
- If the first update of a no-weekend update game falls on a weekend, the
first update delay will no longer be added to the Monday update time
(instead, the weekend time after the time that the update 'should' have
occurred will be subtracted from the first update delay)
- Added DBConv (database converter) options to import necessary templates if
not present and to delete all tables in the destination database
New in 619 beta 10
Alajar:
- Fixed IHttpForm interface to deal better with forms with duplicate input names
- Fixed some problems with stack overflows when handling large user
submissions
Almonaster:
- Implemented advanced game option to block selected empires by name, matching session ids and
matching ip addresses (thanks, New Atlantis and CultureJamming)
- Fixed the new and sophisticated game access check code for empires with special privileges
(administrators, guests, gameclass owners)
- Game empire filtering and score restrictions no longer apply to the game's
creator
- Fixed Spectator Games page display for number of updates
- Spectator Games must now have exposed diplomacy as well as exposed maps
- Added 'View Empire Information' option to Spectator Games
- Changed paused games to allow updates when all empires are ready for
update (thanks, Feste)
- Removed restriction on games allowing alliance or draw but not both
(thanks, CultureJamming, Soma)
- Put a limit of 10 on the number of updates before an empire becomes idle.
This prevents games with no active empires from lasting forever and chewing
up server resources with endless updates in a loop.
- Provided an Empire Administrator option to reset an empire's Session
Id. It turns out that people who do updates for other people run the
risk of becoming 'infected' with their Session Id, and this provides a way
to separate one player's empires from another's.
- Changed map generation to be slightly more tolerant of failures (e.g., out
of memory) and not condemn a game on failure unless absolutely necessary
- Added Reset.gif and Block.gif to all button sets
New in 619 RC1
Almonaster:
- Fleets without ships will now be gated like any other fleet
- Added gameclass option to allow allied ships to be gated
- Added gameclass options to control two new aspects of doomsday behavior:
- Whether doomsdays can annihilate their own planets
- Whether doomsdays can annihilate non-warring empires' planets
- Removed doomsday compatibility flags, which were no longer necessary given
the new game options
- A few minor UI improvements
New in 619 RC2
Almonaster:
- Fixed spurious assertion and weird update messages displayed in certain
gating situations
- Fixed nuke via classic-style surrender not reaching Latest Nukes page
(thanks, CultureJamming)
- Fixed nuke via classic-style surrender not being credited to winning
empire (thanks, CultureJamming)
- Victory sneers are now sent if possible when a classic-style surrender to
one empire occurs (thanks, CultureJamming)
New in 619 RC3
Almonaster:
- Fixed a spurious assertion that could be caused by joining a personal
gameclass that no longer existed
- Fixed a gating bug where an error might be returned erroneously, leading
to the destruction of a game
- Fixed partial map options to appear when needed
- Fixed the setting of the partial map Y radius
- Game Administrator empire information now lists diplomatic status of all
empires with each other
- Added option to reject independent ship gifts (thanks, Denton Troy)
- Code cleanup - replaced many SetEmpire*, GetEmpire* functions with
GetEmpireOption and SetEmpireOption
New in 619 Final
- Added documentation for new 619 features
- Fixed some minor database issues with templates
- Declared RC3 final
- Removed 2.xx versioning scheme
New in 620 beta 1 so far
- Added FileHeap class to Osal: a very useful platform-independent
disk-space management class
- New database:
- Uses just four files for all data, instead of one file per table. File-systems worldwide sigh in relief. Startup and backup performance should
improve quite substantially
- Can perform structural integrity checking at startup
- No longer pre-allocates table
data for performance at the table
level: with FileHeap objects providing storage, this would just waste
space
- No longer allocates a new object when locking a table for
reading or writing
- No longer allocates memory for each table to
track open rows for new data insertion
- Has a single implementation of
all table data access
-
Handles memory allocation failures gracefully
-
Stores all metadata on disk, not in memory
- IWriteTable interface now inherits from IReadTable,
so no need to QueryInterface and keep two interface pointers around when
reading and writing
Todo
- Finish Alajar.html documentation
- Update FAQ about:
Map generation algorithm
Update algorithm, better ship combat description
Exact ship special action descriptions and math
Better Bridier Score description
-
- ===
- 620
- ===
-
- New database:
Transactions
Defragmentation
Test indexing
- Contributions page
- Credits page
- Server Status -> Server Information
- FAQ -> Documentation
-
- GameClass option to enforce limits on ship numbers
- GameClass option that prevents sci ships from nuking (Triforce)
-
- Option to create new fleet for ships on each build
- Option to automatically disband shipless fleets
-
- Don't send a system message to every new player - it commits an
unnecessary row into the database
-
- Ship-planet views -> fleet orders for all ships on planet, create and join
fleet option (Del)
-
- Support for randomized maps with latecomers: create map at first update,
not when game starts (Agt)
- Surrenders with two empires left shouldn't require acceptance (Agt)
- Ruin for Almonaster score = nuked by empire in game who costs you most (Agt)
-
- Merge empire Nuker and Nuked tables
- Find places where GetNextKey loop can replace GetAllKeys
-
- BUG: on a fresh browser session, selecting individual elements and
clicking on Profile Editor gives strange theme selection (hard to repro)
- BUG: sometimes the news textarea doesn't save after a change (hard to
repro)
-
- Make morphers cheaper (CJ)
- Make doomsdays cheaper (CJ)
-
- ===
- 621
- ===
-
- Do Game Histories properly:
Add the following events:
Game creation time
Empire entries, exits, resignations, deletions
Pause events
Each update:
Time
First contacts, diplomacy level
changes
Idle empires
Planet colonizations, invasions,
terraforms, nukes, annihilations, links, etc.
Fleet battle outcomes
Surrenders, obliterations, ruins
Save async buffered strings from each update.
Save map from beginning and end of game
Make logs + map available in big Game History collection, provide collection
trimming in Server
Administrator
Advanced game option to not log a game
Latest games table
Game history table for each empire
-
- ===
- 622+
- ===
-
-
Alajar: provide a way for filecache to deterministically update files at runtime
-
Alajar: allow multiple ports to service one thread pool of tasks
-
Alajar: file cache issues with > 2GB files and memory mappings
-
Alajar: allow removal of admin pagesource
-
-
Scoring groups (teams)
-
Allow empires to create games with custom empire lists (tournaments)
-
'Advice' button for new players
-
Ship / fleet auto-control interface
-
-
Add Independent Planet graphic to themes
-
Better 'community' links on the front page
- Write TOS, find place for it in UI
-
- Make purge interface use search interface
-
- Fair map generator (Agt)
-
- Option for popup notification when someone joins a blitz (zChris)
- Option to refresh page every minute in unstarted games (zChris)
-
- Feature: build option in map / planets pages (dofiki)
- Feature: new window from map screen when clicking on planet (CJ)
- Feature: truce / trade / alliance ship combat penalty option (CJ)
- Feature: JavaScript client code that generates tables from data arrays submitted in
HTML code (Galaxia)
-
- Alajar: multi-hosting, full Http1.1 support
-
- Osal: add more meaningful Osal error codes for the various classes and
namespaces
-
- Create cooler gameclasses for default install, with simpler games for
beginners and descriptions
-
Mechanism for saving and restoring "game state"
-
Make map saving easier?
Future enhancements:
Alajar
- Organize ports to other platforms, especially to Linux
- Create a page source that provides CGI-like functionality
- Implement standard SSI support
- Implement an FTP server
- Implement byte range requests
Almonaster:
- Make all groups of connected database updates fully transactional
Database:
- Implement SmartTransactions
- Implement ODBC interface
- Change indices to use trees, allow duplicate data, range searches