- resetting all readiness states on territory selection, prevents fake starts - territory change messages after game start are ignored - new setting: ConnectionTimeout determines how long it takes for clients to be considered dropped - Resyncs now work more reliably - Dedcon: fixing automatic score recording if one of them is 0 - potentially harmful commands without TeamID from out of sync clients are rejected - Dedcon: score messages from isolated clients no longer end the game - Dedcon: disabling JoinAs during recording for steam clients - Fixed parsing of empty password Admin lines. - Dedcon: added AdminLevelPlay to allow only logged in players of a certain level to play. - Line after a REnd is now actually read and processed - Removed expiration date for lack of authentication circumventing exploits. - Allowing to host replays even when only a DEMO key is available - Dedwinia: Filtering out pause commands - Dedwinia: Bumped version to 1.3.0 - Dedwinia: Fixed selection of Engineers/Harvesters via direct click - ServerIP now correctly affects the communication with the metaserver - Dedwinia: Implemented game event logging - Dedcon: Fixed broken playback and removed sync error message that should be specific to Multiwinia - Dedcon: added ForbidCeaseFire - Dedcon: Taking charge of random territory selection, configurable for specific setups via Territory1 to Territory6. - Dedcon: Added AllianceSize - added -v/--version command line argument - added /fullinfo chat command to give complete client info, including disconnected clients - Added Anonymise setting to allow completely anonymous tournaments - Dedwinia: Map database no longer case sensitive - Dedwinia: Added .wmw support and automatic downloads - Added MinRating and MaxRating to make newbie and expert servers - Dedwinia: Added ForbidDirectControl to disable direct MW control - Dedwinia: Added Quarantine setting that blocks spreading of Master Player - Added RankedDefault setting so server admins can mark games as not ranked by default - Dedwinia: added WaitGameSecondsAbsolute - Dedwinia: fixed winner score, it's now always bigger than the scores of all other players - Dedwinia: fixed CPUs getting wrong colour names - added LogPing to log pings into the event log - fixed quit reason on client drops - unified parsing of event logs, it is now done by parser.py - disabled reconnecting in Multiwinia - reenabled platform dependant IP ranges - fixed connection errors in Multiwinia, the login packet must not be received twice. - added WaitSecondsFromStart to make scripts robust against reloading - added Reload command that reloads the whole configuration - added chat filtering system - added /report chat command to report griefers - added CaseSensitive and DryRun settings - socket resets are less noisy - added /version chat command - DOS/Windows style configuration files now work quirklessly on Unix - recordings are now LZMA compressed, no need to zip them any more - added optional argument (player count) to WaitClient command - added MakeDir command to create directories - log prefix now also applied to recording file - timestamps of log filenames now go after the program start time - added /team chat command for private team chat and improvised /me command - added event log messages CLIENT_ACHIEVEMENTS, RANKED and ENCODING - added /leave and /join for hacked spectator mode - adaptions to Multiwinia, of course - a bit less zealous banning of people from playing for stalling the game - added client lag (unprocessed simulation time on the clients) to ping output - added /say admin chat command to bypass chat filters without the cumbersome "/set Say : " construct - added ForceName and Silence - rating.py: added support for alias keys - griefdatabase.py: griefer database now contains everyone who plays and veterans get a small benefit of the doubt over unknown griefers - added AllStarMinRating - All Star Games are never advertised as full while in the lobby - added CPUIze - rating.py now can give players who have not played many games (recently) a lower weight - kick votes against players in the lobby are converted to removals - added DropCourtesy to be nice to players who drop or reconnect - added RatingFluctuation to mask player identities in the server browser by randomly disturbing their ratings - added all star mode where higher ranked players are preferred - added import function for player ratings that will be displayed in the server browser - refactored ban and message system, they now use a common user info framework. This makes it easier to add new features. 1.43: - Adapted to partial metaserver outages 1.43_beta4: - Added PortForwarding setting for odd port forwarding scenarios - Added public server information to log - Network packages are sent with low latency priority - Switching to or from spectator mode no longer counts towars name change spam - Fixed spamming bot bug when a player ignored by someone would switch to or from spectator mode - clients that have been detected to be out of sync get a marginally less significant vote on the correct sync value than clients that are in sync - added RequireMetaServer config option that makes the server quit if the metaserver can't be reached - Quit console command no longer prevents recording from getting saved - added support for c2 packets from clients - requested game speed is now handled correctly on reconnects - worked around clients sending illegal commands in some circumstances, scores are not revoked on commands that come from out of sync/reconnecting clients - reconnects from players are not falsely identified as ghosting attempts any more 1.43_beta3: - fixed problems with windows timer when the game was running while the magical 49.something days mark of computer runtime (2^32 milliseconds) was passed - secret information no longer written into recordings 1.43_beta2: - Fixed freezer/memory eater/crash when a player left to spectator mode while the game start countdown was running and almost finished. - IP range bans for Windows demo players now also affect Steam users - playbacks are now advertised as not yet started, that way, demo players can share a playback over the internet. - fixed score signature revocation bug - more diagnostic output on Hyperion's IP-change-duplicate key problem - name collision avoidance code no loger produces hideous names like NewPlayer_2_2, it just goes for NewPlayer_3 - clients are no longer sped up due to inactivity after the game is over - fixed CPUAlliance and CPUTerritory 1.43_beta1: - reserved nicknames are now enforced, impostors get renamed to "fake " - added EarlyQuitMinutes - added AllowDuplicateNames - better handling of CPU lag, the game slows down to allow everyone to catch up - reconnections are no longer prevented when the server is full. - rating.py no longer needs the score:error parameter, it figures it out automatically. - rating.py now understands (and ignores) CPU players. - fixed RemoveCPUs, it did nothing... - banned demo players now no loger get the "kicked by the server" message, they get the "server is demo restricted, go buy the game" message. - fixed late random territory bug: when random territories are activated after players have already selected a territory, they could not be unselected any more. - finer range bans: it is now possible to distinguish between the different problematic versions where KeyID bans are ineffective - fixed bug where whiteboard painting would revoke score signatures; alliance change messages, radar sharing and cease fire changes have been removed from the list of events causing revocation, too. - fixed amnesy bug with nested Fork commands - stricter anti-ghosting protection: it is already ghosting to connect to a server from an IP if a player WAS active from the same IP (the player may rejoin later) - fixed problems with score entering and reconnecting players - preventing players from blocking score entering by setting quirky names, then leaving 0.9.1: - alliances displayed in the server browser are now at least correct for the pre-game selections - fixed negative prescale usage in rating.ini for suicide game modes - finer grained demo restrictions - removing a player to spectator mode now unreadies everyone 0.9: - log files get flushed now after every write to make realtime analysis possible - fixed (non-security-critical) crash when faced with forged recordings - added LogEvent for custom event log entries - fixed another false game start prediction bug triggered by the countdown abort grief prevention mechanism. - added Kick and KickID console commands. - added error checking to rarely used log files (whoops). - server refuses to accept score signatures if scores are missing. - added AdvertisePlayers to include player names in server name. - added two python scripts that operate on the event logs: grieferdatabase.py logs griefers and generates banfiles, rating.py logs game results and generates player ranking tables. - added TEAM_ALLIANCE event log message - added (Public)MessageIP to send players without fixed KeyID messages. - Added log file prefix. 0.8: - Limited number of times a player can abort the start countdown. - Limited the number of resync attempts. More and you get kicked. - CPUs and player entered scores now appear in server browser detail window - Added manual score management - Added JoinAt to rejoin a recorded game at an arbitrary time. - Odd characters ('(', ')', '\', ''', '"') in player names are now escaped in the log files. - Added machine readable event log - More info on early quitters (ping, packet loss, whether they were out of sync or behind in the simulation.) - Logging of attempts of [unknown] chat spam. - Unified the various grief logs to one. - Added /remove and /removeid to remove players from the game as a final warning before a kick; same admin level as for kicks is required. - Added /ignoreid, /unignoreid, /opid, /deopid, /promoteid and /demoteid. - Added CPU territory and alliance selection - Added JoinAs to make new clients take over control of a specified team. - Added log for spammers. - Added messages for players. - Input from the console is accepted and treated like configuration file input. - The active players are logged. - Online list of configuration commands added. 0.7: - Added keyIDs and IPs of players to the recordings. - Added packet loss rate measurement. - Added MaxPacketLoss, keeping players with too much packet loss out of the game. - Packet loss compensation resends take the packet loss rate into account when deciding what to do. The higher the packet loss rate, the more aggressive the resending. - Added binding to a specific IP. - Added IP range banning. - Naval blacklists can be restricted to specific versions. - Added kick votes. - Spectators can't change their name any more if spectator chat is private. - Added a system to combat game blocking by not readying up. 0.6: - ServerLANIP is no longer required in most situations - Added more example configurations - Game recording and playback - More game start misprediction bugfixes: alliance changes and territory selections trigger a countdown abort - Fetching the server key from a steam installation really works now (a wrong path was appended) - Added timestamps to logs (optionally) - added MaxPing: maximum ping a player can have - Added slowdown budget - Added Forbid to forbid placing selected types of units. 0.5: - Fixed oversized message bug, including large files producing tons of errors no longer crashes the server - Added IP and key bans. - Added special OWNER key in admin accounts to make it easier for steam users to reserve their own nickname. - NAT piercing really works now. - Added extended logging options - Added MaxIdleRunTime and MinRunTime for better run loop customization - Added CPU player support. - Fixed private chat filter, some stuff got logged while it shouldn't. - Fixed huge performance bug caused by wrong arguments to select(). - Added ServerKeyFile setting. - Fixed a game start misprediction bug, turns out all players unready themselves even when a spectator leaves. 0.4: - Added /info to give admins extended info about players - Added /include to directly include files without /set Include - Added admin levels to configuration options, added Sudo - Added admin levels and more secure login methods - Added chat spam protection - The server now runs without a config file, and you can give configuration options over the commandline. - Fixed fleet formation chaos bug - Added wait commands that are based on game time, not real time - Added Include and Fork configuration file commands - Added IP-based anti-ghosting mechanism - Added global timeout to combat problem of players locking the server by starting a game, then going AFK. - The server now takes complete control over the clients' readyness status, so it can determine precisely when the game starts. - Added naval blacklists - After a certain idle time, players can be automatically kicked to spectator mode (while in the lobby) or made to speed up (when in game) - Server is now aware of client speed changes and can intercept bogus requests - Better ping calculation, faster packet loss compensation - Better Mac compatibility: authkey found, bug with metaserver communication fixed - Better handling of acks from the clients 0.3: - added /help - added /ignore and /unignore - made /ping available for everyone, it's now sent secretly - Compatibility with 1.0-1.3 resp. 1.4 - Fixed problems with stray messages from clients that are not logged in - Players can no longer kick players - Added /op and /deop commands 0.2: - Rejoining implemented - NAT piercing implemented - Filtered out chat from connecting players - Performance improvements with joining spectators - Kick system improved, it now creates bans for the session - Config file scripting: you can wait for events or just for some time before executing the next command - Added version compatibility interval - Code is now Windows and Mac-compatible - Many bugfixes, of course 0.1: Initial Test Release - Basic functionality - Metaserver communication