In this thread I'd like to introduce the changes our UHC2 implementation brings, and how you can make use of them in your own mod.
ESOC-UHC 2.1.2 [2019-07-10]
combined changelog since UHC 1.9
- customSyscalls may now be used as a multi-value property in order to specify concrete plugin filepaths to load, instead of loading all plugins found in the working directory. Default behavior when no paths are specified remains the same as before.
Code: Select all
- Introduced option selectionLimit, which may be used to alter the maximum number of units selected at a time (default being 50). The maximum possible value is currently 95, attempting to go above this value will make the game crash.
Code: Select all
- The team selection in multiplayer lobbies (ESO/LAN) is now sorted logically, and teams 3 & 4 are properly synchronized between all players in the game room when selected.
- Default state of the Free-for-all option in multiplayer lobbies (ESO/LAN) now persists for the host indefinitely (saved in user profile).
- File transfer start and completion is now announced in multiplayer (ESO/LAN) game room chat to the local player for all of Scenarios/Maps/Savegames.
- It is now possible to replace the "Play Fast" button in record game UI with a dropdown allowing for a more precise selection of the playback speed factor - effectively allowing for faster playback than which was possible before. Value "1" is equivalent to the default speed, while value "2" is equivalent to the previously available "Play Fast" button. Note that playback speed remains highly influenced by the particular recorded game and by computer processing power.
- The game now indicates to the user machine that a high-performance NVIDIA/AMD GPU should be used to run the game, instead of an integrated GPU.
ESO game browser
- Added a new filter option to the Filter dialog; "Show games hosted on a different patch". With this option disabled, you will only see games hosted on the same patch as you're on and able to actually join. The option persists only until you leave ESO; the initial state always remains to show games hosted on any TAD-based patch.
- Added a new checkbox option above the game list; "Auto-pest inviters". With this option enabled, anyone who invites you to a custom game will become immediately pested. This option persists throughout a single game session (until the game is closed), disabled by default. The option is meant to alleviate the "invite spam" glitch, possibly making the glitch harder to execute or grant some additional time before it goes through. Absolutely no results guaranteed, previous attempts at this approach had mixed results at best. Note that the pest list has a limited size, which currently remains up to the player to manage.
- Fixed a bug allowing for "knocked out" units (such as downed explorers) to wake up on command at any point by using a hotkey to change their tactics/squadmode.
- The master game sound level will no longer reset to maximum level whenever the game window regains focus.
- Fixed a bug that could cause a building foundation to be built at a much slower speed than intended when the main builder unit's action was suspended in an irregular way (garrison).
- Fixed a bug where garrisoned builders could continue to affect the maximum builder limit of a placed building foundation they were originally tasked on, resulting in less or even no other builders being able to be tasked on the building foundation.
- The incredible Aizamk's Spectator UI may now be bundled in your patch and automatically activated for players who are spectating a match, according to their current game resolution. If the spectator's game resolution isn't supported, no version of the spectator UI will be activated. The Spectator UI will be automatically activated in live matches as well as while playing back recorded games on a UI-enabled map (working on all post-UI 2.2 maps and post-UHC2 recs). The Japanese branch of Aizamk's Spectator UI is also supported in all its resolutions, but requires manually creating file "isjapaneseversion.txt" in the root game folder in order to activate it in place of the English one.
- The "minimized UI" game option will now become automatically enabled while observing, in order to ensure no display issues with the spectator UI. Upon leaving the match, this option will be returned to its original state in the case it's been force-switched. This should allow for seamless observing even for users who prefer maximized UI during regular gameplay.
- We are introducing a separate checkbox option "Observer Mode" to activate observer mode, available only in multiplayer lobbies (ESO/LAN). The new option is properly synchronized between players in a game room, and its default state will persist for the host indefinitely (saved in user profile).
- Whenever a "team observer mode" game room is joined by a player, default teams as appropriate for the Observer Mode logic will be preselected for all players. For these purposes, a "team observer mode" game room is defined as a room with 4 or more players, FFA disabled, and Observer Mode enabled. With 4 to 6 players, 2v2 tvb is assumed. With 7 to 8 players, 3v3 tvb is assumed. Observers are placed on team 3.
- The amount of experience received for deleted units/buildings is no longer affected by the number of observers in a match. Players will now always receive the full bounty award as if there were only two opposing teams.
- Take note that Aizamk's Spectator UI was primarily made to support the official game version and may not be able display much information about custom content introduced by your modifications.
Diplomacy / Locked Teams
- Diplomacy can now be toggled using the "Locked Teams" option in ESO/LAN multiplayer game rooms, as is common in other Age games. Since AI players are not currently able to utilize this feature intelligently, it is not available in singleplayer Skirmish.
- Diplomatic stance change notifications are included natively.
- Added "Save" option into the main game menu of multiplayer matches. Works the same way as in Singleplayer.
- The game will now be automatically saved on each player's computer upon encountering an OOS (out-of-sync). The savegame filename is in the format "oos_recovery_", followed by date and time of OOS occurrence.
- The "Unresponsive Player" dialog now allows any player to save the game on their computer using a new Save button (this does not affect the voting). In this case, the savegame filename is in the format "unresponsive_recovery_", followed by date and time of save.
- Players are now able to host a multiplayer game of the "Savegame" game type, which will allow them to select a savegame file to restore. A "restored" game room can only be joined by players who participated in the original game (verified by player name, including the host), no game room settings can be altered before launching the restored game.
- A "restored" game room must be hosted by the same player who had hosted the original game.
- All players in a "restored" game room must select a homecity of the same civilization they have originally played with.
- Remote transfer of the savegame file between players in a game room is handled automatically, similarly to Scenarios or Custom Maps.
- All restored games will be unrated on ESO.
- Note that a restored game which was played on any mapset will display with an unselected map in the game room. This does not signify that there is anything wrong with the savegame.
- Note that loading a foreign savegame in general can cause some of your game settings to change (such as camera zoom distance), similarly to loading recorded games.
- If you currently have Aizamk's Spectator UI manually installed, you will still need to uninstall it in order to get on the regular game UI. Unless you are intending to observe games not played on the environment of ESOC-UHC2, you should not need to install it again.
- Game resolution for Aizamk's Spectator UI is decided upon match start, and will not react to further resolution changes applied during the course of a match. The game resolutions supported by Aizamk's Spectator UI are:
- 1920 x 1080
- 1680 x 1050
- 1600 x 900
- 1366 x 768
- 1280 x 800
- 1280 x 768
- 1280 x 720
- Visual C++ 2017 redistributable has to be installed.
Some of the introduced features require altering UI definition files in order to work properly; failure to do so can result in a game crash. Your mod should provide the following UI alterations in some way (complete example files are provided in the release package):
- Aizamk's Spectator UI files should be included in your mod in the same structure as demonstrated in the release package (all files in Art/spec + files in data/ containing "observer" in their name).
- The "Team ?" (random team) option must be moved below Team 4 to the last position in multiplayer room UI files (uiMPGameSetupPage.xml, uimpesogamesetuppage2.xml). Furthermore, the multiplayer room UI files must define the following checkButton gadgets: "mpsetup-ObserverModeCheckButton", "mpsetup-LockedTeamsCheckButton".
- The ESO game list UI file (uimpesogamelist.xml) must define the following checkButton gadgets: "MPESOGameList-InviteShieldCheckButton", "MPESOGameList-FilterDlg-CRCFilterCheckButton".
- You may include the enhanced gadget for selecting record game playback speed factor as demonstrated in uimain.xml in the form of "RecordGameCtrl-PlayFastFactor" gadget.
- It is highly recommended to use the included uiplayerstatusdialog.xml file (diplomacy UI window), as it is much more polished compared to the one provided in official game version. It is also recommended to redesign the "PlayerStatusButton" gadget in both uimainnew.xml and uimain.xml as demonstrated in the example files, otherwise it will be displayed as a black square.
- uimainnew.xml should be updated with the added Save button for multiplayer menu as demonstrated in the example files.
- uimpvotedialog.xml should be updated with the new Save button as demonstrated in the example files.
In order to distribute UHC2 with your mod, the mod's game executable must be "patched" to load the UHC library. For this purpose, you can utilize the original UHC1 patcher program (download it and drag your exe over onto the patcher). You can skip this step if your exe has already been patched due to using UHC1.
Once that's done, you simply need to have the UHC.dll file (the one attached to this post as part of the release package) in the game installation folder and fulfill the requirements stated above. If you're using a renamed UHC configuration file, don't forget to update the dll using a hex editor to reference your custom config.
You are welcome to provide feedback on the features offered, as well as submit feature requests to have us look into hardcoded game behavior that ails you.