Page last updated: June 9, 2004
The latest stable version is Build 620.4
New in 620 Beta 1
Database:
- New database:
- Uses just four files for all data, instead of one
file per table. File-systems worldwide sigh in relief
- Startup
performance for large databases greatly improved
- Backup performance
for large databases greatly improved
- 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
- Stores all table metadata on disk, not in memory,
so it no longer needs to explore and re-index each table
at startup time
- Has a single implementation of
all table data access
-
Handles memory and disk space allocation failures gracefully
-
Provides case sensitive and insensitive string indexing
- IWriteTable
interface now inherits from IReadTable
- Added new API: IDatabase::ReadColumnWhereEqual
- Thanks to the magic of the new database, some strings now have much larger
size limits, including:
- Empire real
names, email addresses, web page URLs, quotes, victory sneers, alternative
graphics paths
- Gameclass
descriptions
- Enter game messages
- Game notepad lengths!
- Reviewed and optimized schema for performance and disk space usage with
the new database
- Empire tables are now faulted in as needed: this includes nuke lists, message
tables and active game lists. This should save a large amount of space in the
database by reducing the amount of space a fresh empire uses
- The game no longer sends a system message to every new player, which used
to commit an
unnecessary row into the database for each empire. Instead, it just posts the
message on the first screen the new empire sees.
Administration:
- Added new administrative view of database statistics in Server Information
- Made builder resource multiplier a server variable (thanks, Hallelujah)
- Removed redundant game description at top of game-specific Game Administrator
page
- Separated settings for number of nukes listed in the Latest Nukes screen
and the number listed in individual empire nuke histories
- SuperClass names are now checked for illegal characters
- After weekend delays are now limited to 12 hours
- When a system alien icon is deleted, empires using it are no longer restored to
the default icon (too much work for little gain; besides, it never happens)
Gameplay:
- Made doomsdays cheaper: they now cost the same as minefields, except they
use +4 fuel (thanks, CJ)
- Made morphers cheaper: they now cost the same as builders (thanks, CJ)
- Placed an upper limit (25) on the number of updates before an empire will
fall into ruin
- Games will no longer fall into ruin immediately if all empires are idle.
Instead, the appropriate update times will be respected, allowing empires to
return to the game. If all empires have been idle for twelve updates, the game
will ruin.
- Changed "colonize and dismantle" option to use the full BR of colony to deposit
population, just like classic SC (thanks, wretch and backstabber)
- When two empires are left in a game, surrenders are now performed from the
Options page and don't require acceptance (thanks, Agt)
- Ruins now affect Almonaster score as if the ruined empire had been nuked by
the empire in game that would have cost most, had the latter nuked the former
with no alliance considerations (thanks, Agt)
- Added gameclass option to create map on the first update,
not when the game starts (thanks, Agt)
- Added gameclass option for unlimited max empires in games (restricted by
server-specific privilege level)
- Added gameclass option to enforce limits on ship numbers, just like in 3.x
- Added gameclass option (FriendlyScis) to disallow science ships from nuking (thanks, Triforce)
- Added support for a new concept: tournaments:
- Tournaments can be created by
administrators as system tournaments, or by adepts as personal tournaments
(just like gameclasses)
- Empires can be invited to join tournaments
-
Teams can be created to aggregate empires
- Specific tournament
gameclasses can be created
- Games can be started with a specific set
of empires or teams. Pre-arranged alliances can be defined for teams
-
The owner of the tournament can administer tournament games with the same
capabilities as an administrator: view maps, broadcast messages, force
updates, pause or kill the game, etc.
User interface:
- Added brief ship type descriptions to the tech screen, with a
ProfileEditor option to turn them off (thanks, Del)
- Distinguished morphers from regular ships with "(Morpher)" appended
to ship type
- A player's notepad will automatically update itself when changed. The
annoying 'update' checkbox has been removed
- Renamed 'UnfriendlyDooms' to 'FriendlyDooms' in the nomenclature section
- Changed the meaning of the confirmations option in the Profile Editor to be a bit
more broad
- Added countdown to Bridier index degradation to profile (thanks,
DoctorDoom)
- Added option to receive a message with Almonaster Score information when a
nuke occurs involving one's own empire(thanks, Soma)
- IP addresses in profiles and diplomacy screens now indicate if they are
hashed or not
- Empires now receive update message notifications when independent ships
colonize planets or are given as gifts
- Improved look and feel of Personal GameClasses screen, to match Personal
Tournaments screen
- Added Latest Games screen
- Added Contributions screen
- Added Credits screen
- Renamed FAQ to Documentation
- Renamed Server Status to Server Information
- Fixed Dark Mood versions of Spectator Games and Latest Nukes buttons
- New buttons: Contributions, Credits, Documentation, Server Information,
Latest Games, Tournament Administrator, Personal Tournaments, CreateNewTournament,
DeleteTournament, AdministerTournament, InviteEmpire, CreateTeam, ViewTournamentInformation, Decline, Accept, AdministerTeam, DeleteTeam, AddEmpire, Update
- Some miscellaneous UI and performance enhancements
Bug fixes only in 620 beta 1
- Fixed "The game has started" message, which was no longer being
sent
- Fixed update count in Game Administrator views
- Cleaned up ship building code, made it fully threadsafe and more fail-proof
- Corrected a few potential buffer overflows with very long strings of
various types
- Fixed some anomalies with first update delays, no weekend updates and
paused games. Simplified update model
- Fixed games that update just after a weekend to respect the after weekend
delay
- Fixed insertions of spaces into messages - replaced spaces with line
breaks instead
- Messages are now displayed as one table, not as multiple tables. This
should make rendering of many messages on one screen faster
- Personal game creation no longer fails when bridier or spectator settings don't
apply - a warning is posted and the game is created
- Personal GameClasses and PersonalTournaments buttons are now displayed if
the empire does not have sufficient privilege to create new gameclasses or
tournaments, but does have active instances
of these features that might require administration
- When an administrator logs in, all games are now checked for updates on a
separate thread. This prevents administrators from being blocked from logging
in by long-running updates
- Server time is now displayed above messages in system pages
Bug Fixes in 619.1 and 620 beta 1
- Fixed two bugs in Alajar that could cause input forms with large amounts
of data to be ignored by the server
- Fixed bug in Alajar that could cause input forms to be parsed
incorrectly if submitted by certain browsers (thanks, Sir Dagonet)
- Changed Alajar to return an error to the client immediately if a parsing
error occurs, instead of fowarding the partial request on to the page sources
- Fixed delayed cleanup of response objects in Alajar - this could lead to
icon uploads failing because icon files were being kept open by unreleased
CachedFile objects
- Fixed enforcement of limits on maximum number of empires in gameclasses
- Fixed names of empires listed by diplomacy status in Game Administrator
views
- Fixed spurious assertion enumerating an empire's personal gameclasses
- Fixed spurious assertion when starting up server with
administrator-paused games
- Fixed Almonaster score assignment to loser on 3.x -style surrender
- Fixed pause settings change in diplomacy screen causing end turn
command to be ignored
- Finally fixed problem where under certain circumstances games with first update delays wouldn't
update (thanks to Agt, DomusAurea, others)
- Finally fixed problem where under certain circumstances empires would be falsely marked as being
idle for an update (thanks, Denton Troy)
- Fixed ServerAdministrator's ability to deny access to the server
- Fixed dismantled ships count in update messages
- Fixed deletion of personal gameclasses when games end
- Fixed deletion and renaming of superclasses from Game Administrator
- When an active game hasn't started yet, the Ready box no longer says "No" (thanks, Soma)
- When an active game hasn't started yet, the Closed box no longer says
"Closed"
- The number of empires that are ready for an update is now displayed in the
Ready box
- Fixed allied empire counts in empire information displays
- Fixed grammar when announcing gated ships in update messages
- Fixed Bridier Score top lists to take index into account when comparing
scores (thanks, Feste)
- Fixed independence scenarios where independent colonies would colonize and
remain alive
- Fixed Osal::LinkedList::PeekFirst when list has more than one element
- Fixed spurious assertion releasing all cached files via admin interface
- Fixed race condition in chatroom code when timing out speakers
New in 620 Beta 2
Alajar:
- Added IHttpRequest::GetReferer method
- Reworked the IHttpResponse interface to be easier to use
- Added the ability to block GETs for files that don't come with specific
referers. For example, this allows administrators to deny requests
for images that aren't from webpages rendered in game pages on a game server
- Incremented Alajar version to 1.58
Administration:
- Report files now log backups and report how long they took
Gameplay:
- Empires can now only surrender after the game has closed
- When surrenders are allowed, unilateral surrenders are now always possible
when only two empires remain
- Moved pause and draw functionality to the Options screen. Draw is no
longer a diplomatic option (thanks, Wretch)
- Colonies now behave like classic SC with respect to depositing population
- now they'll deposit all the population they're capable of and destroy
themselves, regardless of the planet's max
pop
- 'Colonize and dismantle' option was removed
- 'Colonize or settle' option was removed
- 'Colonize or settle and dismantle' option was removed
- 'Settle and dismantle' option was removed
- Added a gameclass option to set the number of initial tech developments available (thanks, Lucky)
User interface:
- Empire Information views now display dead empires as well as active empires
- Added profile sections for private email field, location and instant
messaging id
- Removed real name, email address and url from new empire forms
- Moved login form on login screen to the top right of the screen (thanks, Bird of Prey)
- Added 'cancel' button for Planets and up-close Map views
- Moved 'Hear/Ignore' diplomacy option from below the empire name to the
first row
- When representing gameclass names, tournament names are now marked with
[square brackets]. Empire names are still marked with (parenthesis)
- Empires are now notified when a tournament game involving them starts
- Added max tech development information to Info page
- Added max ag ratio and pop needed to build information to Info screen (thanks, Soma)
- Added option to displace End Turn button to below Exit button (thanks, Soma)
Cleanup:
- Removed all uses of QueryInterface for IReadTable when an IWriteTable was
already available
Bug fixes only in 620 beta 2:
- Removed two cancel buttons from Game Administrator single-game views
- Fixed a spurious assertion when creating a personal game
- Fixed up-close display of planets in spectator games
- Fixed excessive lock acquisition when adding planets to a map
- Fixed autologon to respect the empire's system ui settings on the first
screen displayed after a successful autologon
- Fixed games that end in ruin to list all winners and losers on the Latest
Games page
- Fixed a spurious assertion in the tournament deletion code
- Fixed a spurious assertion when printing an invitation message for a
non-existent tournament
- Fixed a spurious assertion when unending turn
- Fixed surrenders to correctly identify the winning empire when games end
- Fixed potential security holes by disallowing excessively long strings for
various ProfileEditor fields
- Fixed text line break when colonizing the ruins of another empire
- Fixed a heap corruption in the database template enumeration code
- Introduced instrumentation for elusive "wrong number of updated empires"
bug
Bug fixes in 619.2:
- Games with update periods longer than 12 hours will no longer be paused
during a backup (thanks, DomusAurea)
Bug fixes in 619.2 and 620 beta 2:
- Added absolute fleet strength indicator to accompany the fleet health
percentage
- Added update count to "next update in" field
- Fixed fleet strength accounting when ships with high BRs are destroyed or
dismantled
- Fixed information leek in engineer failure update messages (thanks,
Wretch)
- Fixed a spurious assertion writing 64 bit integers to a record under certain
circumstances
- Fixed a spurious assertion caused by verifying a map when it wasn't newly
created
- Fixed inaccurate target population counts when a planet belonging to one
empire is colonized by another (thanks, DomusAurea)
- Fixed sensitive maps in admin and spectator views to display ships being
built with proper security settings
- Empires participating in games with spectator views will no longer see
more about their ships than others can see
- Fixed Alajar to not truncate the daily logs on a server restart
- Fixed 'alliance counts for entire game' option: there was an obscure case
where alliances could be forgotten
- Fixed typo in Server Information concerning the effects of a troopship
invasion on planetary population (thanks, Black Squirrels)
- Fixed info screen to print the correct gameclass name when entering a game
from the active games list
New in 620 Beta 3
Tournaments:
- Added Tournaments page, which displays available system tournaments
- Added ability to view tournament information when empires are invited into a tournament
- Added ability to request membership in a tournament
- Added system message notification when empires are removed from tournaments
- Added simple tournament information to Profile Viewer
- Added 'view personal tournaments' button to Profile Viewer
- Empires can now mark themselves as unavailable for new tournament games
- Empires can now see which tournaments they're in and remove themselves
from them
User Interface:
- Separated Profile Editor into nicer sections
- Chose better default options for new empires
- Added empire name to page titles
- Added Join.gif, Tournaments.gif, ViewEmpiresTournaments.gif
- Resigned empires are marked up with <strike> tags in diplomacy and empire
information screens
- Added new fields from beta 2 to advanced search form
- Corrected some details on the Server Information page
Bug fixes only in 620 beta 3:
- Fixed migration of ships set to 'colonize or deposit' on a 619 system
- Fixed a couple of spurious assertions deleting empires from a game
- Fixed a spurious assertion when a nuked empire triggered a pause
- Fixed a spurious assertion when a tournament game owned by a deleted
empire was verified during setup
- Fixed an access violation that could be caused by an error during empire
login
- Fixed several places where memory allocations weren't being checked
- Fixed a severe database corruption bug triggered by a table slowly growing
past 160 rows
- Fixed a database corruption bug that could cause the metadata to lie about
the number of valid rows
- Fixed several deadlocks caused by careless use of the new database
interfaces
- Fixed server time and repeated button display in game screens
- Fixed ill effects caused by turning off prompt confirmation in Profile
Editor
- Improved synchronization of tournament handling code
- Added thread-id to random seed for Alajar worker threads. This should help
make resource generation more random
Bug fixes in 619.3 and 620 beta 3:
- Fixed a bug in empire diplomacy counts that was counting alliances as an
extra trade. Cosmetic, but annoying
- Fixed a bug in the accounting of updated empires: a ruined empire
could set the count off
- Fixed a bug that was preventing the cached top list Bridier scores from
being updated when an empire's index decayed due to time
- Fixed an access violation that could occur when an independent carrier was
engaged in combat
Bug fixes in 619.3:
- Fixed a diplomatic status leak: if one empire was offering draw and the
other dropped down to war from truce, then the former wouldn't decrement his
truce count (thanks, DomusAurea)
New in 620 Beta 4
User Interface:
- Fixed line breaks when rendering empire quotes
- Added date-based searching to advanced search fields
- Added Bridier Score fields to advanced search fields
- Added creation time and last login time to advanced search fields
- Added update count and reason for death to the dead empires list in Empire
Information screens
- Improved the look and feel of the Login screen
- Added "Create Empire" button to the Login screen (thanks, BugLady)
- Moved "Map on first update" text to Planets column in game lists
- Added linebreak to "Paused by an administrator" text in game lists
- The Active Game List now warns about idle updates instead of claiming that
an idle empire is ready (thanks, BugLady)
- Made the text for system messages different from empire messages
- Messages from the system now have their own server-specific icon
- When new empire creation is disabled on a server, the new empire page and
the create empire button are no longer
displayed
- Added ship limit to Info screen
- Added ship count to Ships screen
- Added ag ratio to ratios line
- Added option to always, never or sometimes show ratios bar (thanks, Del
and Andy)
- Fixed inverted Server News and Documentation game screen names
- Instead of listing the number of ships built in an update, the update
message now lists ships
built itemized by type (thanks, Alexia)
- Added Alien Glow theme (thanks, Vapula)
- Updated SCRoom links
- Added Paypal donation button to contributions page
- Added Rebuild.gif and Lookup.gif to the buttons
Gameplay:
- Made sure that end or unend turn on previous update doesn't affect current
update (thanks, Andy)
- Non-Bridier games can now apply Bridier Score-based empire filtering
- Fixed problem where fleets couldn't be built when BR was less than 1
Tournaments:
- Tournament and Personal games are now listed separately in the Active Games list
- Added tournament owner name in parenthesis to gameclass names
- Placed a limit on the number of personal tournaments an empire can have
- Placed a limit on the number of gameclasses a personal tournament can have
- Added tournament news to detailed tournament view
Administration:
- Implemented manual rebuilding of top lists by administrators
- Added nslookup on profile IP addresses, only available to administrators
- Made server admin email displayed in contact line disjoint from the root
empire's listed email address
- Fixed a security hole in new empire creation: empires could have been
created bypassing the name filter
- Added empire creation option to Empire Administrator
- Added option to disable Almonaster score-based privilege changes
Cleanup:
- Compacted search field handling code into generic types, making it more
extensible
- Changed GameEmpireMessages::Broadcast to GameEmpireMessages::Flags
- Added special flag for update messages, which will enable new features in
the future
- Replaced a large number of functions with GetSystemProperty/SetSystemProperty
- Improved chatroom interfaces
- Fixed several chatroom bugs under low memory conditions
- Identify system messages by stored flag instead of "The System"
string
- Profile IP addresses are now updated on logon, as well as being checked on
every submission
- Fixed lock release bug in certain 3.x style surrender situations (thanks,
Austin)
- Incorporated Linux port of Osal library (thanks, Austin)
- Built with VC++.NET (VC7)
Database:
- Added bitfield searches to IDatabase::GetSearchKeys
- Remembered to implement binary search in TableContext::GetIndexForColumn
Alajar
- Fixed division by zero when server was shut down without requests and the
last statistics update was form the previous day
- Base64 decoding now protects against buffer overflows and fails a request
on error
- Unescaping now protects against buffer overflows and fails a request on
error
- Improved canonicalization of file names deduced from URIs
- Improved detection of reserved file names in URIs
- Fixed problem where thread pool might lose track of certain threads
(thanks, Austin)
New in 620 Beta 5
Fixes:
- Fixed next tech display in ratios (thanks, Austin)
- Fixed backups in Linux (thanks, Austin)
- Fixed Linux problem with broadcasts from diplomacy page not working
(thanks, Austin)
- Fixed an old bug that caused individual graphics elements to be rearranged
when clicking on a Theme Info button
- Fixed an old bug that caused individual graphics elements to be rearranged
when visiting the elements page after choosing a theme for the first time
- Fixed rendering of simple search interface
- Fixed toggling of default ratio line setting
- Fixed text of update messages when minefields detonate
- Fixed a memory leak that was causing unclean shutdowns in certain cases
- Fixed 100% CPU usage when shutting down the Alajar threadpool. This makes
process shutdown somewhat faster
- Fixed some minor issues with reporting an empire's own planets ships in
up-close planet views
- Fixed settle command always being available on one's own planets
- Fixed gates losing BR when processing a gate command even if not ships
were gated
- Fleets are no longer gated if no ships are gated
Security:
- Empire's own passwords are no longer given out in readable form in the ProfileEditor.
This prevents an attacker who might have accessed an empire's account through
a hashed password replay from learning the empire's real password, which might
be used in places other than the server
- Added 64 bit integer as secret key for all empires, and used it to hash
passwords. This ensures that two empires with the same password will always
have different password hashes
- Added the current time as a salt field for password hashes in all game
pages. This allows the server to discard login attempts from pages rendered
more than 24 hours ago, which protects empires from replay attacks based on
old saved maps or intercepted credentials
- Added empire game entry filtering by Bridier Rank loss (thanks, Black Squirrels)
- Added empire game entry option to block empires who are idle in other
games (thanks, BugLady)
- Made sure that planet and fleet names in build and ship screens are
properly filtered for HTML
User Interface:
- Added first update delay display to Active Game List when game hasn't
updated yet
- The login screen now defaults to the last empire used (thanks, Alexia)
- Itemized all ship dismantles by ship type in update messages (thanks, Alexia)
- Added Iceberg-style mini-maps (thanks, Alexia)
- Added ViewMiniMap.gif
Gameplay:
- Added option to refresh page every two minutes in unstarted game screens (thanks, zChris)
- Added build option in map / planets pages (thanks Soma, Dofiki)
- Added option to delete empty fleets automatically on update
- Added special actions for fleets: colonize, terraform, invade, annihilate (thanks, Alexia)
- Added ability to build ships directly into a new fleet (thanks, Soma)
- Added ability to merge one fleet into another
- Added ability to move fleets containing only ships being built from one
planet to another
- Added ability to move ships being built from one planet to another (thanks, Alexia)
- Added ability for fleets to pick up all unaffiliated ships on planet (thanks, Alexia)
Tournaments:
- Added tournament score accounting for empires and teams
Cleanup:
- Build in Win64 mode with VC++.NET and fixed all the warnings
- Made all files referenced in the code lowercase, except for button names
- Improved error handing with Mutex::Initialize and ReadWriteLock::Initialize
- Fixed Linux deadlock caused by the reacquisition of a named mutex (thanks,
Austin)
- Centralized password hashing code
- Made Algorithm::AtomicIncrement and Decrement return current value and not
old value
- Cleaned up build page code
- Added lock manager for per-empire game screen synchronization
- Removed unnecessary synchronization for in-game objects
- Optimized ship screen rendering
Administration:
- Added administrative flag enabling empires to keep privilege levels
regardless of score changes
- Default privilege for creating games with unlimited empires is now Adept,
not Apprentice
- Added option for games to be paused by default when starting (Austin
wanted this)
Database:
- Added option to use write-through buffering instead of write-back. This
will make the system slower, but will greatly improve database consistency after OS crashes or
power outages.
Osal:
- Added some Win32 Crypto API functionality to Osal: MD5 hashing,
very random blob
generation
New in 620 RC1
Fixes:
- Fixed display of multiple search hits in simple search mode
- Fixed follow-up searches after max hits are found
- Fixed thread-safety of pausing and un-pausing games
- Fixed autologon not working (thanks, Austin)
- Fixed problem with submitted fleet orders being ignored under certain
circumstances
- Fixed wrong selected ship order under certain circumstances (thanks,
Austin)
- Fixed a couple of HTML insertion security holes on the planets page
- Fixed heap corruption rendering the ships screen with
many build locations (thanks, Austin)
- Fixed display of individual build locations when selecting default
- Fixed fleet ship counts when ships defect from a fleet during an update
- Fixed setting names and max pop on planets
- Fixed update button in up-close map views
- Merged Linux updates for beta 5 (thanks, Austin)
User Interface:
- Added "ends-with" string searches
- Added active empire counts in Server Information screen (thanks, Alexia)
- Added alt tags with coordinates to mini-map planets
- Added config file option for chatroom not to display system messages such
as enter, leave and timeouts (thanks, Austin)
- Added option to collapse and expand fleets (thanks, Alexia)
- Added profile option to collapse or expand fleets by default
- Added next strength column for fleets
- Empires in the diplomacy screen are now sorted by status and separated (thanks, Alexia)
- Columns in the diplomacy and ships screens are now aligned
- Added Iceberg Theme (thanks, Alexia)
- Added Plus.gif, Minus.gif
Cleanup:
- Optimized Osal's reader/writer locks
- Added proper error handling for Osal::Event objects
- Added proper error handling for named mutexes in Almonaster
New in 620 RC2
Fixes:
- Last Bridier activity counts are now updated when a server goes down for a
week or more
- Different ship types built into a new fleet on the same planet will now go
to the same new fleet
- Fixed map display when game hasn't started
User Interface:
- Added profile entry for age
- Added profile entry for gender
- New empire creation screen now warns off children under 13
- Integrated TOS into new empire creation. All empires must accept the TOS
to play. Added TOS button to UI
- Empires can now see in their own profiles if their privileges are fixed or
score-based
- The number of idle empires is now listed during the update message (thanks, Alexia)
- Updated credits page
- Added TOS.gif
Administration:
- Empires can now be disabled temporarily by making them 'guests'
- Empire Administrator now has 'update' button for empire profile tweaking
Database:
- Added simple search optimization to use indexed rows for exact search
columns
- Added ability to specify that a particular indexed column must contain
only unique data
- Changed IDatabase::GetSearchKeys to be able to return only the number of
rows matched
- Fixed problem where certain kinds of searches wouldn't be accelerated
despite the existence of an available index
- Optimized IDatabase::ImportTable in scenarios with tables with many empty
rows
Cleanup:
- Made GameEngine::Setup modular and readable
- Changed messaging code to rely on database locks instead of named mutexes
- GameMap::Owner is now indexed, which will optimize the fetching of the
list of builders for the Build screen
Legal:
- Wrote a TOS and privacy policy
- As the privacy policy dictates, personal information is now cleared when
an empire is marked for deletion
New in 620 RC3
Security:
- Empire blocking now checks the empire's current session id and ip address,
as well as the ones stored when the empire was initially blocked
- Empire blocking will no longer give false positives if a blocked empire is
deleted and a new empire claims the same key
- Dead empire game re-entrance blocking will no longer give false positives
if a dead empire is deleted and a new empire claims the same key
- Empires who were nuked out of games can no longer see them in the game
list, even if the game is still open
User interface:
- Added a few 'community' links to the front page
Fixes:
- Nukes from classic 3.0 surrenders will now appear properly in both
empires' nuke histories
- Fixed blocked empire duplicate IP address detection when entering games
Cleanup:
- Merged Linux fixes (thanks, Austin)
New in 620 RC4
User interface:
- Major documentation update
- Removed borders from game list tables. This looks a whole lot better in
Mozilla and Opera
- Removed nomenclature section from Server Information. It belongs in the
documentation section
- Changed "Enter Game" to "Enter" in Open Game List
- Changed "Start Game" to "Start" in System Game List
- Moved "Bridier Game" text from Empires cell to Bridier cell in
Active and Open Game Lists
- Minor fixes for Mozilla and Opera compatibility
- Added responsibility text to game entrance prompt (thanks, Ah)
- Added SourceForge usenet information to intro page
- Made Login the default action when pressing enter in the login screen
(thanks Lucky, CJ)
- Added Kia's Zazu icon as alien 153
- Repeated advanced searches will now display the aggregate number of
empires found
- Latest Games and Latest Nukes now display elements in descending order
- Changed "broadcasted" to "broadcast" everywhere
- Made admin email field longer in Server Administrator
- Added initial tech developments field to game lists
- Added information about system message icon to Server Information
- Corrected front page links to Erick Beck's resources (thanks, Paul)
- New fleet names are now just random numbers, not "Fleet5678"
- Added 'After BR' strength column to ships and fleets to assist in
evaluating overbuilds
- A link to server source code has been added to the login page
- Added ship costs table to Server Information
- Added contributor list to Contributions screen
- Removed the separator between an empire and its allies in the Diplomacy
screen
- Added links to SC-Club and SC-Talk on login screen
- Bridier gain loss is no longer displayed with a minus sign
- Changed active empire display in Server Information to display two
different values:
- Number of different empires in games on the server
- Number of different empires who recently rendered a game screen on the server
Gameplay:
- Idle empire filtering is now on by default for new games
- The last message target option now only records targets used while feature
was enabled
- When the last message target option is selected but no messages have been
sent, the default is now broadcast
- Made subtraction constant for builders different from MinBR
constant (thanks, BackStabber)
- Made new ships cheaper (thanks, Lucky)
Carrier: +100 +16 +32 to + 75 +12 +24
Morpher +50 +8 +16 to +35 +6 +12
Jumpgate +200 +32 +64 to +150 +24 +48
Fixes:
- Fixed display of jump planets in Spectator Game up-close planet views
- Fleets can no longer be given blank names
- Fixed compatibility with NT4 and Win2K
- Fixed display problem with uploaded icons on map screens
- Fixed bug displaying log and report through admin interface
- Fixed a spurious assertion that could fire while checking an empire's
access to a game
- Fixed display of timeout messages in chatroom
- Fixed upload of new alien icons
- Fixed display of default icon author in Server Administrator
- Fixed repeated advanced searches on date fields
- Fixed games being paused even if they hadn't started
- Fixed problem with view map option in Game Administrator for games that
generate the map on the first update
- Fixed enforcement of limits on number of saved messages
- Fixed grammar of Morpher description text
- Fixed missing line break when ratios option is changed in Options screen
- Fixed bug that could cause shared maps to be selected in new gameclasses
(thanks, Hastur)
- Fixed gameclass creation to automatically adjust initial number of tech
developments when too high (thanks, Hastur)
- Fixed recognition of allied ships for friendly gating
- Fixed several bugs in the last message target option
- Fixed the updating of news and login files from the Server Administrator
screen
- Fixed server information text when privilege does not depend on
Almonaster scores
- Fixed spurious assertion creating a planet with a builder
- Fixed access violation caused by search for empire with blank name
(whoops)
- Fixed a rare race condition that could lead to an empire deleting itself
while creating a game
- Fixed a couple of assertions requesting pause (thanks, Wretch)
- Planet and gameclass names can no longer be blank or a string of spaces
- Fixed game list display of techs to not list "0 tech devs" when all
techs are developed
- Changed "Instant Messaging" to "Instant Messenger"
- Rephrased the description for minefields
- Removed extra parenthesis in 'explored' update messages
Security:
- URIs with carriage returns are no longer allowed
- All file releases are now signed with a public key associated with
almonaster@myrealbox.com
Internals:
- Enabled LFH (Low Fragmentation Heap) on Windows XP and .NET Server
- Added BufferedPageRendering option to config file
- Rendering documentation pages always turns off buffered page rendering
- Rendering game lists no longer triggers a synchronous write to each game's
GameData table
Administration:
- Report files now contain information about empire deletions, undeletions,
statistics blankings, TOS acceptance, game entries,
quits and resignations
- Report files now distinguish logon from autologon
- The game will now assert if it finds existing tables for a new empire
- Added privilege selection to empire creation option in Server
Administrator
- All server disabled bits now survive restart, except for disabled logins
Alajar:
- Only HTTP 1.1 responses with Connection: close will be sent, instead of
returning HTTP 1.0 responses
- New headers used: Expires, Cache-Control and Accept-Ranges
- Fixed a couple of bugs in chunked encoding responses
- Added log entry containing referer when referer is rejected, to aid in
debugging user problems
- PageSource report entries now automatically add timestamps
New in 620 Final
User interface:
- Added Paypal subscription buttons to Contributions screen
- Added 'destroyed' message when a detonating minefield is defused
- Added links between Prometheus and Falcon on login pages (thanks, Wretch)
- Update messages now show the number of ships destroyed during a fleet
battle, in addition to their names
- The update timer at the top of the screen now displays the number of
empires ready for an update
Fixes:
- Fixed a problem rendering maps from a tournament administration screen
- Empire names are now always exposed in tournament games
- Minor UI fixes on tournament screens
- The blank GIF on the login screen no longer has a border (some Netscape
browsers would show a small box)
- Fixed a rare situation that could cause alliance counts to be off when an empire was
nuked out of a game with alliances set to last the entire game
- Fixed a case where ship order construction might reference freed memory
and crash or print garbage
- Fixed a problem with morphed stargates not being able to gate from planets
not colonized by their owners (thanks, Lucky)
- Fixed a bug that could cause no-weekend-update games to update prematurely
if they were unpaused after being paused on a weekend
- Moving a building fleet to a new planet will no longer resets the expanded
flag to the default
- Fixed independent ships showing up as allied in maps with ship coloring by
diplomatic status
Alajar:
- Fixed problem where disabling buffered page rendering would break cookie
creation (including Almonaster autologon)
- Fixed buffered page rendering with small pages that could fit within a
single non-buffered block
- Fixed a problem with Mozilla submitting large forms
Administration:
- Added count of resigned and idle empires to Empire Information pages
Documentation:
- Documented tournaments and the tournament administrator screen
- Documented how planet populations change with colony builds
- Documented how minefields and minesweepers work
- Documented that tech developments remain even if a BR level is lost
- Documented how the next update time is determined
- Documented how pausing and unpausing a game affects update times
- Documented that forced dismantles happen before ship combat and special
actions
- Made the documentation page more printer-friendly
Internal:
- Changed all released files to use an .md5 file signed with the Almonaster
public key
- Added signed sources to older builds: 615, 616.4, 617, 618.1 and 619.3
New in 620.1
Fixes:
- Fixed error message when cancel all builds button was pressed with
building ships remaining to be cancelled (thanks, Denton Troy)
- Fixed wrong error message when empire was deleted from a tournament to
which it did not belong
- Fixed wrong error message when empire attempted to join a tournament to
which is already belonged
- Fixed spurious assertion in rare cases when empire attempted to join a
tournament to which it already belonged
- Fixed assertion that maintenance is never zero (it can be zero if an
empire's total pop is zero)
- Fixed assertion that could occur when a game with a large first update
delay was paused on the first update
- Fixed assertion that could occur when a fleet containing a ship not
being built is moved to a different planet
- Fixed assertion that could occur when a fleet is set to a special action
and the ship causing that special action leaves the fleet
- Fixed problem with moving building colonies and fleets containing them
to planets whose populations can't handle the load
- Fixed a significant number of memory leaks
User interface:
- In up-close planet views, total ship counts are now shown for each
empire
Administration:
- Added purge condition: "Not on top list"
- Added purge condition: "Last logged in more than 3 months ago"
Alajar:
- Alajar will now append to existing report files, instead of overwriting
them
- Added option to turn off object caches, which helps track down memory
leaks
- Requests with invalid methods and versions will now be rejected earlier
New in 620.2
Fixes:
- Fixed error message when cancel all builds
button was pressed with building ships remaining to be cancelled (thanks,
Denton Troy)
- Fixed wrong error message when empire was deleted from a tournament to
which it did not belong
- Fixed wrong error message when empire attempted to join a tournament to
which is already belonged
- Fixed spurious assertion in rare cases when empire attempted to join a
tournament to which it already belonged
- Fixed assertion that maintenance is never zero (it can be zero if
an empire's total pop is zero)
- Fixed assertion that could occur when a game with a large first
update delay was paused on the first update
- Fixed assertion that could occur when a fleet containing a ship not being
built is moved to a different planet
- Fixed assertion that could occur when a fleet is set to a special action
and the ship causing that special action leaves the fleet
- Fixed problem with moving building colonies and fleets containing them to
planets whose populations can't handle the load
- Fixed a significant number of memory leaks
- Fixed excessive error message displayed when an empire would log into a
game that had already ended (thanks, Romulan)
- Fixed grammar in Server Information text
- Fixed non-existent empire showing up in latest games records as winner of
games in which all empires fall into ruin (the infamous F0F0F0 bug)
- Fixed empires not dropping off Top Lists when their scores decrease and
they're the last empire on the list (thanks, Kronos)
- Fixed same buttons being used for accepting/declining TOS and for
tournament invitations
- Fixed failure when game with 3.0-style surrenders fell into ruin
- Fixed lowballing of next ag ratio when an empire has trade relationships
(thanks, Denton Troy)
- Fixed bug with drawing empires not being subtracted from draw request
count when deleted from game (thanks, Madame Thunderbolt)
- Fixed a deadlock that could occur in rare cases when database fileheaps
are resized
- Fixed error message when empire attempts to delete itself from a
tournament while still active in tournament games (thanks, Hastur)
- Fixed an extremely rare bug that could lead to empires being arbitrarily
deleted (thanks, sam_robo, whoever you were)
- Fixed "game no longer exists" error message when broadcasting a message to players
from the tournament administrator interface (thanks, Denton Troy)
- Fixed backup restoration causing login access denied with "database being
backed up" message
- Fixed a bug that could cause an empire's target population to be set
incorrectly after a planet belonging to that empire was invaded (thanks,
Kronos)
- Fixed a bug that could cause a planet's max pop to be incorrectly set
after colonization, under certain conditions
- Fixed a bug that could cause colony build cost accounting to be wrong
when building colonies multiple times at the same planet (thanks, dim2a)
- Fixed a bug that was leaving morphers in fleets when they morphed into
immobile ships
- Fixed assertion and hang that could occur when certain out-of-range
values were used to search by empire key
Gameplay:
- Idle empires will now automatically request a draw
- Resigned empires will now automatically request a draw
- Resigned empires now behave exactly like empires that are have been idle
long enough to ruin
- If all empires are requesting a draw, but all are idle or resigned, the
game will not end in a draw
- For empires to be considered "idle in at least one game", merely having
missed an update is no longer sufficient. Now, they must be idle
according to the idle update count configured on the gameclass in order to
qualify
- When all empires are idle in a game, and then one or more empires return,
they 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. While it sounds odd,
this is necessary to prevent games in which all empires are idle from
prematurely pausing or drawing games that should otherwise have ended in a
ruin.
- Games will no longer be paused on server restart if all empires are idle
User interface:
- In up-close planet views, total ship counts are now shown for each empire
- Fleet orders such as "Standby and Invade" now include the name of the
planet, like other orders
- The standby order for a fleet that contains ships being built is now
"Build at" instead of "Standby"
- The "Resigned" tag in the Diplomacy screen will now appear in "Last
Access", where the idle update count appears
- Empires returned from idle are now warned about the special state of games
where all empires were idle
- The update text for ship destruction now includes in parenthesis the
number of ships that participated in the battle (thanks, Lucky)
Administration:
- Added purge condition: "Not on top list"
- Added purge condition: "Last logged in more than 3 months ago"
Tournaments:
- Extended the maximum allowed length of tournament news from 512 to 1024
characters (thanks, wiwwt)
Alajar:
- Alajar will now append to existing report files, instead of overwriting them
- Added option to turn off object caches, which helps track down memory
leaks
- Requests with invalid HTTP methods and versions will now be rejected earlier
- OnFinalize() will now be called when pagesources are restarted
New in 620.3
Fixes:
- Fixed bug that could lead to incorrect update time calculations and
premature updates in some rare cases involving games with no weekend updates
paused during the after-weekend grace period (thanks, wiwwt)
- Fixed bug that could cause games to ruin prematurely, with the wrong
empire winning, if all empires but one are idle
(thanks, dragon_breath)
- Fixed bug that could leave games in a state where they were paused by an
administrator, but could not be unpaused (thanks, 42)
- Fixed next ratio calculations with trade partners: the bonuses from the
previous update were being erroneously used for the next update's resource
totals
- Fixed typo in game list tech developments count
- Fixed spurious error message "at least one ship in the fleet could not
be moved to the new planet" that could appear if two fleets were merged with
each other
- Removed useless Classic Score change form in Empire Administrator page
- Removed redundant "Full Game" text from the Empire column in the Active
Game List
- Removed empires required text from the Empire column in the Active Game
List for closed games
- Fixed grammar in update message: 1 (of 3) ships of XX *were*
(not was) destroyed at Planet Foo
- Fixed spurious assertion viewing empire information from administrative
view when game hadn't started
- Fixed error when blocking empires from one's own personal game class
games (thanks, Kronos)
- Fixed an access violation when searching a column for a null string as a
substring. This was exposed through the profile viewer
- Fixed bug where fleets composed entirely of cloaked ships would have an
option to nuke, but wouldn't actually do it (thanks, Kronos)
User interface:
- Empires that are ready for update are now displayed with the good color
font in the Empire column in the Active Game List
- Empires that are not ready for update are now displayed with the bad
color font in the Empire column in the Active Game List
Gameplay:
- Trade bonuses no longer stack: the bonus from one trading partner is no
longer applied to calculate the bonus from the next trading partner
- The next ratios now consider colonies set to colonize and minefields set
to detonate as ships that won't be around next update
New in 620.4
Fixes:
- Fixed bug that listed in idle empires as being idle in update message,
during the update in which they
ruined
- Fixed error message when creating empire that inherits from non-existent
parent (thanks, William Randolph)
- Fixed floating point precision in several calculations, including trade
bonuses (thanks, wiwwt)
- Fixed display of empire count in system game list
- Fixed resigned games counting against an empire's idle game count, which
could cause empires to be unfairly denied access to open games
- Fixed bug that allowed immobile ships to be moved into fleets during the
update in which they were built
- Fixed discrepancy in Info screen next tech increase field calculation
(thanks, wiwwt)
Todo
- Update and complete Alajar.html documentation
- Almonaster documentation:
- Document default map generation algorithm
- Explain exact steps taken by update algorithm
- Write better ship combat description
- Provide exact ship special action descriptions and math
- Write a better Bridier Score description
- ===
- 621
- ===
-
- 620.1: Change Bridier score calculations to use empire's current score,
but opponent's begin score?
-
- Feature: My Empires (CJ)
My Empires screen
Two-way associations with other empires, two types: can log in as, can be logged in as
Importing of ProfileEditor settings
Consider score redirection for game entry and scoring purposes
Allow other empires control over empire in specific games
-
- Feature: display players in game as pop-up screen from Info-button, with stats (Ah)
- Feature: option to display coordinates in maps (Alexia)
- Feature: per-planet setting for turning off builder status
- Feature: simple shared maps
- Feature: move ignore option to Option screen from dip, include all 'seen' empires (CJ)
-
- Feature: team games outside tournaments (Ah, Alexia) or random prearranged
alliances in games
- Feature: show active empires on server (Phred, Alexia)
-
- Feature: option to delete all messages but update messages
- Feature: option to replace animated uploaded icons with system icons (BigB)
-
- Feature: mirrored maps - generate planet chain, then mirror it around
random axis for 2/4 empire games
- Feature: expose map options in advanced game settings, maybe as presets
-
- Feature: allow tech selections to be undone until the end of the update (Agt, Backstabber)
- Feature: allow build and end turn before game starts (Black Squirrels)
-
- Feature: individual checkboxes for all existing confirmations
Quitting a tournament
Deleting a tournament
Selecting techs (Backstabber, CJ)
Dismantling ships?
Server Admin shutdown options
-
- Feature: user polls
-
- Alajar: implement gzip support (http://www.msxnet.org/fast-website)
- Alajar: replace filecache with wrapper around TransmitFile
- Alajar: allow multiple TCP ports to service one threadpool of tasks
-
Alajar: allow disabling of admin pagesource
-
Alajar: user stats gathering for % OS usage, browser usage, etc
-
Alajar: Bug: servers with different ports on the same host will share
cookies
-
- Osal: Socket::AsyncSend
-
- Security: provide option for IP address hashing with autologon
- Security: server option to disallow games to be started or joined by empires who are idle in other games
(Ah)
- Security: add ruin percentage to game entrance blocking parameters (Ah)
- Security: place limit on the number of empires that can be blocked in
Advanced Options
- Security: place limit on the number of active games an empire can join
- Security: use hashes longer than 64 bits?
-
- Cleanup: replace GameEngine::GetEmpireGameInfo with GetRatioInformation
- Cleanup: use variable length columns for empire ship names, with 'use default' option
- Cleanup: merge empire Nuker and Nuked tables
- Cleanup: remove all get/set functions for simple empire properties, use
Get/SetEmpireProperty
- Cleanup: optimize System Game List screen to thrash the heap less
- Cleanup: lifetime manager with rw-locks for empires, gameclasses and other
objects with queued deletions to avoid deadlocks
- Cleanup: remove LockEmpire usage where possible
-
- Bug: documentation page has several </form> markups which break the
real form
- Bug: game doesn't end if all empires resign
-
- ===
- 622
- ===
-
- SMTP client library
- Use private email fields to send lost passwords
- Use private email fields to send game list summaries, in-game messages,
update notifications
- Allow server mode that forces email registration to create an empire
-
- Security: calculate password
hash in client side script for login screen (Vapula)
-
- Feature: fair map generator (Agt)
- Feature: Ebay-like empire feedback system (Del)
- Feature: next logical command for each ship or fleet (Del)
-
- Cleanup: remove global objects, allow multiple Almonaster servers to run in the same process
- Cleanup: replace object cache with IAllocator implementations: page allocator,
etc.
-
- Database: store a "first invalid row hint" in the table header
-
Database: backup files with CopyFile if possible
-
Database: ref-counted single-instance storage (scenario: broadcasts)
-
-
Alajar: memory gates for requests
-
Alajar: digest authentication for admin pagesource
-
Alajar bug: HttpServer::Shutdown closes socket from underneath main thread
-
Alajar: investigate P3P support
-
- ===
- 623
- ===
-
- Game Histories
Game creation time
Empire entries, exits, resignations, deletions, quits
Pause events
Each update:
Time
First contacts, diplomacy level
changes
Idle empires
Planet colonizations, invasions,
terraforms, nukes, annihilations, engineering, etc.
Fleet battle outcomes
Surrenders, obliterations, ruins
Save history update message from each update.
Save map from each update 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
-
- ===
- 624+
- ===
-
-
Scoring groups (teams / clans)
-
Advice button for new players
-
Robot player
-
Ship / fleet auto-control interface
-
Teacher' empires (Lucky)
-
Mechanism for saving and restoring individual game state
-
Garbled transmissions between non-allied empires (BigB)
-
Tournaments:
1v1 elimination tournament type
-
- Zero knowledge games (Backstabber)
No info on # of empires in game much less max #
permitted (remove from info screen also). Nothing on size of map, average planet
resources, etc.
Wide range of possibilities for each, randomly determined.
Game updates only show what you see, so when empires are eliminated you don't
know unless you've met them.
New map algorithm so that you may not necessarily be able to explore the
entire map without opening some links to do it, unlike current maps. Or maybe
you can, no way to be sure.
Dip screen only shows subjective info (for those who remember this option from
Almo).
All you know at the start is:
update time
Ship costs
Tech advance
And tech advance is a randomly determined number also, so you get values like
1.831.
More diverse statistics (Ralof, Wretch)
Hot and cold players of week/month/year
Longest winning, losing streak
Top blood, team, grudge players
-
-
Use CSS:
background-attachment: fixed;
<table style="filter:glow(color=red)">
-
-
Replace all .gif files with .png
-
-
Add Independent Planet graphic to themes
- Purge interface should use search interface
-
- Osal bug: MemoryMappedFile class unmaps on failed resize
-
-
Consider adding 'join period' after min number of empires join' instead of
using updates for close and first update
delays. No updates during join period. End turn button equivalent
might allow game to start early (Lucky)
Future enhancements:
Alajar
- Multi-hosting
- SSL support
- Full HTTP 1.1 support
- Ports to more platforms
- Create a page source for CGI-like functionality
- Implement standard SSI support
- Implement byte range requests
Database:
Osal:
- Add more meaningful error codes for the various classes and
namespaces