Summary of Changes Community Mods in-game mod manager Custom Server support Server improvements New modding capabilities Numerous UI enhancements Tons of bug fixes Full changelog below. 1. Community Mods in game mod manager No external application required. Uninstall your mods in PAMM first and then reinstall them through Community Mods. added community mods in game mod manager to start menu added auto updating of mods added dependency tracking to automatically enable and disable dependency mods replaces PAMM (PA Mod Manager) external application 2. Custom Server support No mods required. added game server browser support for hosting, joining and spectating custom server games added game invite support for custom servers added game configuration in new game support for custom servers added reconnect support for custom servers to start menu custom servers now advertise max players and max spectators 3. Servers Applies to Uber and custom servers: added metalClusters, metalDensity, landing_zones_count, metal_spots_count and planetCSG_count to game beacons and system info added support for 32 colours added support for custom commanders added support for selecting of AI commander added server mod identifiers to game beacons added support for custom servers to advertise max players and max spectators in game config beacons added --max-players and --max-spectators command line options added --server-password command line option added --default-lobby-name command line option added --default-game-type command line option added --replay-timeout command line option to set timeout when replay will be written even if clients still connected added --replay-filename command line option added UTCTIMESTAMP token for --replay-filename to automatically name replays based UTC timestamp added support for lobby chat history added support for lobby custom json messages (will also add to playing) improved support for server mods status added support for server mods in replays and saved games fixed null secondary colour causing server crash when starting game and showing new game commanders cinematic added validation of secondary colour 4. Modding General added support for Legion Expansion mod added support for companion mods to reduce the size of large server mods added game info to session, connect_to_game and various scenes: serverType / game_server_type (local|uber|custom) serverSetup / game_server_setup (game|replay|loadsave) gameType / game_type (Galactic War|Ladder1v1|FFA|TeamArmies) gameModIdentifiers / game_mod_identifiers (work in progress) deprecated joinLocalServer / join_local_server in preference to isLocalGame / is_local_game changed isLocalGame to use the same is_local_game session key everywhere changed join_lobby helper to use isLocalGame updated to latest knockoutjs 3.4 added save method to storage extenders New Game added support for model.send_message('set_ai_commander', {id: model.playerId(), commander: commanderSpecString}); fixed empty spectators (playersWithoutArmies) added spectatorCount observable added emptySpectatorSlots observable added serverModsState (uploading/downloading/mounting/mounted) string observable added buildVersion string observable added isLocalGame boolean observable added gameModIdentifiers added serverMods observable array added gameCheats observable arary added localChatMessage(name, message) added mods lobby chat message type added registerHoldReady(identifier, info) added unregisterHoldReady(identifier) added registerJsonMessageHandler(identifier, handler, priority) added unregisterJsonMessageHandler(identifier, handler) added sendJsonMessage(object) Live Game exposed listen_to_spectators in GameOptionModel fixed lobbyId not set Build Bar improved modability of build bar (wondible) Icon Atlas / Strategic Icons added engine support for server mods and reloading (Uber) Uberbar updated to latest strophe (xmpp used by uberbar and PA Chat) APIs added api.download for community mods manager (Uber) added api.file.list for community mods manager (Uber) added api.file.zip for community mods manager (Uber) added api.memory.remount for community mods manager (Uber) added api.mods.getMounted (Uber) deprecated api.mods.getMountedMods (Uber) Engine implemented watcher support for OS X / linux implemented memory mounted shader reloading 5. Polish Game Server Browser added saving of game server browser filters with reset filters button Connect To Game added status messages when mounting server mods added busy animation added mounting of server mods when starting game (moved from new game lobby to fix many UI issues) Galactic War changed default save name to include time New Game added lobby chat history added planet radius, metal / custom metal, custom landing and custom csg in a tooltip to planets added halleys required and increased size of planet icons added highlights to econ rate when not 1.0 moved mounting of server mods when starting game to connect to game Live Game changed default save name to include time changed global spectator chat default to team chat added spectator label for spectator chat Live Game Planets added display of metal spots count to tooltip in planets summary reduced size of planets summary tooltip to minimise overlap with preview added metal spots count to planet list with localised metal tooltip reduced height of planets list for large systems with many planets Live Game Players added right click look at player in PIP added right click track commander in PIP Uberbar added searching by display name added lobby status to game invites added cancelling of game invites if full or inviter leaves lobby improved reconnect handling Replay Loading added support for server mods in replays and saved games added downloading server mods status 6. Fixes GPU fixed windows laptops with AMD GPUs to always use discrete (Uber) fixed negative output of dither in HDR compose pass... should fix crash on Intel 5xx GPUs (Uber) Audio fixed windows 10 audio issues with updated FMOD (Uber) Uberbar fixed display names not updating fixed buy missing content dialog description when a classic player is invited to a titans game fixed a long standing issue where a network / data issue or reloading the uberbar reset the user tag map and killed friends list fixed the ubernet extender to not lose data or use bad data from playfab or local storage fixed the ubernet extender to correctly check previous and not update on refresh fixed long standing issue with large user tag and id to interaction time maps (based on optimise user tag map) fixed a long standing issue where idToJabberPresenceTypeMap and idToJabberPresenceStatusMap were not written to session storage fixed long standing issue where searches of existing friends add duplicates to friends list fixed invites to private games fixed long standing issue where previously accepted game invite fails then later invite from same person teleports you into new game without confirmation New Game fixed game password lost after refresh, selecting system, settings, etc fixed cannot join empty slot issue where player disconnects without leaving fixed the many issues caused by new game lobby loading without server mods ready and the freezes while server mods are uploading and remounting Live Game fixed alt-tab back to PA then backspace with chat window open triggering window back then reload or connecting to server Live Game Players fixed missing look at players for spectators Game Over fixed server freeze 30 seconds after game over while replay is being written which prevents chat, stats, review, etc
Non-reader friendly patch notes: Community changes Added download & zip JS APIs. - The client can now download files from any valid URL. - Zip file contents can now be mounted transiently at any point in the file system. - See download.js and file.js for new APIs. Put a trailing slash on directory entries in the JS file list API. Convert mod system over to using the same file system everyone else uses. - Also introduces aliases to the file system in order to work around issues with the way mods were mounted. - Might have some small inconsistencies in mod behavior. A number of fixes to zip file mounting and mod interactions. - Primarily related to listing directories with memory files. - Mounting the same content is no longer a no-op. - Added api.content.remount(), which is necessary after changing mods. Auto-activate download redirects. - A download url will get a different result from Coherent, meaning it won't find an active download. - Auto-starts the download with the default filename. (Which is sub-optimal, but there isn't a reliable way of detecting the redirect.) Icon atlases now refresh when memory files are mounted -Allows shadowing from server mods -Also allows changing them at runtime -Does not support changing icon altas indices after creating a client world Icon atlases now have access to the client engne APIs - Primarily for the memory API Part 1 of in-memory shader mod support. - Includes hypothetical memory mounted file shader reload support for OSX/linux. - Doesn't appear to dynamically load shaders based on reports from testing, but is significant enough for OSX/Linux that I would like to get it checked in so I can do other smaller work. - Also doesn't cause any extra crashing or bad behavior from what has been reported. Ensure the timestamp of memory mounted files doesn't match previously mounted files. - Prevents caches of rapidly re-mounted files from returning stale data. Make boot.json memory file friendly. Remote mounted mods now override file system aliases when they are mounted. Fixed the change watcher support. - Added some more characters to filter from download file names. Added "raw" mod info interface so mods can extra information to modinfo.json. - Includes deprecation of api.mods.getMountedMods() in favor of api.mods.getMounted(), which uses promises instead of a callback. The following changes contributed by JustinLove: Add ".stock" event namespace to the holodeck mousedown binding. Add server-side spec tag support to army configurations in the lobby. Expose build bar spec id grid map for easier modding. Correct gamma in world hover information. Improve modability of build bar. - Expose object constructors so new instances can be made. - Save their arguments so new properties can be defined. - Expose grid dimensions and tab definitions. - Extract function for unit specs so it can be either replaced or called again. - Expose ammo build hover details. - Fix the build hover cost of nuke missiles for titans. Extract function so showing game over can be cleanly customized. Remove call to undefined api.camera.setPreviewLinkage. - Appears to have been a by-product of the pa-x1 branch integration. Fix depreciated getMountedMods to return same type as before. Convenience improvements to GW card access for mods. Use appropriate commander for spec tag - Can't really use spec tags without a tagged commander. Commander verification won't let them through. Having the server append the tag during finalization avoids having to think about it everywhere else. Prevent incorrectly broken promises when chaining. - If a promise gets eaten by merge it will never be resolved/rejected. If one of the previously bound handlers is called, pending != ok and it gets rejected though the handler being called is usually for resolve. Return content remount promise for completion tracking Make api.file.list reject missing directories instead of waiting for parse exception General bugfix/polish Upgrade FMOD to 4.44.60 and rebuilt banks with new version Tell windows laptops with AMD GPUs to use the discrete part Fix a client crash that occurs when a URL is requested with a trailing / Fix for startup crash on Linux related to file case issues. Fix error logging for unknown error codes Planet description now includes metal spot, CSG, and landing zone counts Fix for mac build. - Define copy ctor/assign operator for ChangeWatcherList. Pop open store page instead of cart for Steam Titans upgrade. Print complete authenticateHelper failure information instead of [object Object]. Fix alias search crash bug in WindowsFilesystem/StdioFilesystem::exists(). Prevent negative output from dither in the HDR compose pass. -Hypothetically, this should fix a crash issue on some Intel 5xx GPU drivers. Fix for aliases not being converted to lowercase.
The following changes contributed by mikeyh: Custom Server Reconnects and Improved Game Invites - fixed long standing issue where previously accepted game invite fails then later invite from same person teleports you into new game without confirmation - fixed invites to private games (missing uuid) - fixed buy missing content dialog description when a classic player is invited to a titans game - fixed game password lost after refresh, selecting system, settings, etc - added logging to api.net - added game info to session, connect_to_game and various scenes for custom server reconnects, improved invites and mods (will reduce number of hacks by mods) - added serverType / game_server_type (local|uber|custom) - added serverSetup / game_server_setup (game|replay|loadsave) - added gameType / game_type (Galactic War|Ladder1v1|FFA|TeamArmies) - added gameModIdentifiers / game_mod_identifiers (work in progress) - changed isLocalGame to use the same is_local_game session key everywhere - deprecated joinLocalServer / join_local_server in preference to isLocalGame / is_local_game - changed join_lobby helper to use isLocalGame - added serverType, serverSetup, gameType and gameModIdentifiers to join_lobby helper - added saving of reconnect_to_game_info in local storage - added timers in new_game and live_game to update timestamp of reconnect to game info - added reset of reconnect to game info when abandoning live game - added support for serverSetup, serverType and gameType to gw_play - added support for serverSetup, serverType and auto updated gameType to live_game - added reset of reconnect info and lobby info when leaving live game - changed save_game_utility to set isLocalGame, serverType and serverSetup - removed unused session observables in save_game_browser that might actually cause confusion - added support for serverSetup, serverType and gameType (limited) to replay_browser - added reset of reconnect info to replay_loading - added reconnect option to start menu (first pass) with 5 minute expiry - added game type, uuid and mod identifiers support to rejoinGame for uber servers - changed lobbyId and reconnectContent to use session - added directReconnect for local and custom servers (also supports uber servers if getGameWithPlayer fails) - refactored game invites (from latest pa chat) - added auto updating lobby status to game invites - added auto updating of game password to game invites - added auto updating of game mods to game invites (in progress) - added cancelling of game invites when inviter leaves game lobby or game starts with no free spectator slots - added game_invite_update and cancel_game_invite xmpp commands - added canInviteToChat checks for existing lobby contact and pending invites - moved some context menu logic out of uberbar html into model (from pachat) - fixed lobbyContacts to correctly update in new_game based on current players and spectators - fixed empty spectators (playersWithoutArmies) in new_game - added spectatorCount and emptySpectatorSlots - added lobbyFormat to new_game (first pass) - added sendLobbyStatus to update uberbar - added support for resetting reconnect_to_game_info and invite lobby info when leaving, kicked or disconnected from new_game - added serverModsUpdated and serverModsLoaded - changed default GW new game to include time - changed default save name to include time - updated to latest knockoutjs 3.4.0 (from 3.3.0) - added ready deferred to db knockout extender so that consumers can reliably know when indexed db data is loaded (or not) Allow changing AI commanders from client mods. Add custom server support to the server browser. Start Hook and Placeholder Scene for Community Mods. Changed global spectator chat default to team chat. Fix for live game alt-tab backspace reload Changed Start Hook and Community Mods Scene To Support Offline - changed start hook to try a remote load and if that fails try the download cache for offline support - changed community mods scene to load from download cache (remote code automatically downloads latest to cache) - added a default back button to community mods scene just in case there is any failure loading cached Added Saving of Game Server Browser Filters - Refactored filters to use text: value (allows localisation) - Added local storage settings to save filters - Added filter defaults - Added reset filters button - Implemented filterRetiredGames with existing default Added Saving of Game Server Browser Filters Community Mods Integration Changed custom servers feed to be remotely configurable Added mod identifiers to server beacon Added support for custom commanders Replaced color_table.js with 32 color burntcustard version Added —max-players and —max-spectators command line options Added --server-password command line option - added SERVER_PASSWORD to main - added --server-password command line option to set SERVER_PASSWORD - changed empty state to check if server password specified - changed lobby state to validate server password if specified Improved custom server support and lobby chat history - added lobby chat history so hosts never lose messages when selecting system and new players joining lobby see recent chat history with MAX_LOBBY_CHAT_HISTORY of 100 - added support for custom JSON messages in new lobby (will also add to playing) - added DEFAULT_LOBBY_NAME command line option - added DEFAULT_GAME_TYPE command line option - added some getMods helpers to server_utils - changed lobby beacon to use getModsForBeacon helper - changed empty beacon to use getModsForBeacon helper - added downloading_mod_data client message using getModsPayload helper - changed mount_mod_file_data to return mods using getModsPayload helper - added some uberId support for custom servers (work in progress) Custom commanders, lobby chat history, server mods status and mod helpers Custom commanders in server mods: - added custom commander support for server mods via commander_list.json and unit_list.json (both will be managed files in a future update to community mods) - changed commander utility to allow updates from server mods - added update of commanders in new game lobby when server mods are mounted - added update of commanders in new game cinematic when server mods are mounted Connect to game: - added downloading server mods message New game lobby: - added lobby chat history so hosts never lose messages when selecting system and new players joining lobby see recent chat history - changed gameType to use session (will now remember last selection) - added server mods status for hosts (uploading/downloading/mounting) - improved UI display of server mods and cheats (first pass) - added server mod description tooltips - deprecated combined updateActiveModAndCheatText - added updateMountedServerMods which is only called when changed - added updateActiveCheatText (may change to allow tooltips) - added setupAISkirmish for mods - replaced handleAISkirmishInitRule and exposed as checkAISkirmish for mods - added buildVersion - added isLocalGame, serverType and serverSetup from connect_to_game - added gameModIdentifiers set in connect_to_game from beacons, invites, etc which UI mods can use to determine what server mods will be mounted - added serverMods with the full modinfo from engine - added localChatMessage for mods - added mods message type - added serverModsState and serverModsStatus for upload / download / mount status for hosts and mods - added registerJsonMessageHandler and unregisterJsonMessageHandler for mods to send custom JSON messages via server - added registerHoldReady and unregisterHoldReady for mods to prevent ready - changed aiPersonalities to observable (breaking change and already handled by Queller AI)- Live game chat: - added spectator label for spectator only chat (first pass) - added check to prevent sending empty invalid chat messages APIs: - changed api.mods.getMounted to return array (breaking change from previous PTE) - changed api.mods.publishServerMods to return a promise - changed api.mods.sendModFileDataToServer to return a promise - changed api.mods.mountModFileData to return a promise Other: - fixed annoying white flash in player guide - improved tooltip visibility with an arrow you can actually see - changed gameModIdentifiers to observableArray
Even more mikeyh fixes: Reworked uploading of server mods and added server browser hook - moved uploading of server mods by host into connect_to_game which fixes many issues with the new game lobby loading without server mods ready and the freezes while server mods are uploading and remounting - added needsServerModsUpload for hosts starting a game or joining a waiting custom server - added serverModsUploading while uploading and remounting server mods - changed server_state handler to upload server mods if needed before redirecting to new_game - added mount_mod_file_data handler to remount server mods once uploaded then redirect to new_game - added hook for community mods to server_browser.js (will be used to show missing companion mods prior to joining or spectating games) Fixed game over server freeze while writing replay - fixed server mods not mounted by client in replays - added downloading_mod_data client message once replay file is loaded - added client.downloadModsFromServer once replay file is loaded - fixed server freeze 30 seconds after game over while replay is being written which prevents chat, stats, review, etc - removed writing of replay after 30 seconds - added REPLAY_TIMEOUT defaulting to 10 minutes to main - added --replay-timeout command line option to set REPLAY_TIMEOUT on custom servers - added write replay after REPLAY_TIMEOUT seconds even if all clients not disconnected (allows enough time for chat, stats, review, etc) - added REPLAY_FILENAME with default of empty for Uber servers - added --replay-filename command line option to set REPLAY_FILENAME on custom and local servers - changed game_over to use REPLAY_FILENAME if provided - added UTCTIMESTAMP option for REPLAY_FILENAME to automatically name replays on custom servers Fixes for landing crash and can't join game with revised colour table (work in progress) - Fixed long standing can’t join game with empty slots issue caused by ubernet player disconnecting from lobby without leaving and calling removePlayerFromGame. - Added disconnected to removePlayer. - Added remove_disconnected_player message for host with ticket of player to be removed from game. - Revised colour table (work in progress). - Added helpers getRandomSecondaryColorIndexFor and self.getNextSecondaryColorIndexFor to colour manager. - Fixed null secondary colour in setPrimaryColorIndex with different numbers of secondary colours per primary colour and secondary colour no longer valid. - Changed setPrimaryColorIndex to use getRandomSecondaryColorIndexFor helper if secondary colour no longer valid. - Added mod_identifiers to ladder beacon. Fixes for can't join last game, empty systems and copyright info / layout. - Fixed long standing can’t join game with empty slots issue caused by ubernet player disconnecting from lobby without leaving and calling removePlayerFromGame. - Added remove_disconnected_player handler which calls removePlayerFromGame for disconnected player in lobby. - Fixed buildVersion not in new_game model. - Updated copyright in start to include full time period and rights for Uber. - Tweaked start layout of copyright, watermarks and view intro button. - Added save to storage extenders. Reworked replay_loading to support server mods in replays and saved games (first pass): - added pageSubTitle for detailed status - added gameModIdentifiers for server mods used in replay - added mods_info handler hook for community mods to load companion mods - added downloading_mod_data handler to show downloading server mods status - removed unused request_config and mod_msg_sv_ccl_set_replay_config handlers - added busy animation in connect_to_game - reworked sequence of events to support server mods in replays and saved games: -- wait for replay to fully load with server mods info -- process replay config -- wait for client to connect and send first heartbeat from replay_loading -- send mods info to client -- wait for send_mods request from client (allows client to mount missing companion mods) -- send mods to client with downloadModsFromServer -- wait for mod_data received -- send any cooked files to memory mount -- wait for memory_files_received -- generate armies -- create sim from replay -- move to playing state - added mods_info client message sent when replay is fully loaded and client sends heartbeat from replay_loading - added send_mods handler when client is ready to download server mods and any cooked files - added mod_data_received handler when server mods have been download and mounted on client Added metal spots count to planets in live game - added display of metal spots count to tooltip in planets summary - reduced size of planets summary tooltip to minimise overlap with preview - added metal spots count to planet list with localised metal tooltip - reduced height of planets list for large systems with many planets - exposed PlanetModel for modding - exposed planetThrusterString for modding Fixed look at player for spectators, minor focus issues and added right click for PIP: - fixed missing look at player for spectators - added right click show in PIP using lookAtPlayerIfKnownInPIP - changed track commander to use new track_commander handler in live game - added right click to track commander in PIP - added track_commander handler and trackCommander with optional holodeck to live game - added primary holodeck focus when handling planet clicks in live game - added primary holodeck focus when selecting sun in live game - added primary holodeck focus on commander spawn in live game - added updating of existing game options so observables can be used by mods in live game - tweaked showAlertPreview to support multiple PIPs Added additional planet info to selected system in new game lobby: - fixed and deleted old lobbyId observable in new_game - added planet radius, metal / custom metal, custom landing and custom csg in a tooltip - added planetTooltip for modding - added halleys required icon - exposed process system for modding - exposed processSystemPlayersText for modding - exposed processSystemPlayersCSS for modding - fixed editable econ rate for players - added highlight to econ rate when not 1.0 Fixed fix for can't join empty slot issue
Awesome. And on the two year anniversary of support for server mods too! Thanks mikeyh and those uberent people involved with this awesome patch.
Holy crap! I totally thought this game was abandoned! Thank you! Thank you! Thank you to everyone involved. I hope you continue improving the game.
The game is getting much more interesting now many people are hosting games with mods and new custom maps.
Excellent! Any chance of unit type selection (unit enabled/disabled) option when facing AI? I've never liked competitive (plus the salt it brings) and prefer to play coop against an AI. Unit selection is critical in providing a rich variety to the types of games you can play against an AI. Would much appreciate this feature in a future update! Thank you very much for all the hard work Ubers team has put into this game.
Using the string 'select' in search filter under community mods doesn't produce any results relating to unit selection. Not sure if I'm looking in the wrong place?