Jump to content

[Staging] Patch Notes for September 29th, 2020


Jimmy

Recommended Posts

  • City Council

Halloween

  • The Halloween event is active!
  • Eternal night will now only be active later on in October, rather than for the whole event

Dr Kane's House of Horror

  • Removed two options (Bats Aura and the Costume Change Emote) from the reward table for Dr. Kane's House of Horror as these items are unlocked automatically on character creation

 

Bug Fixes

  • Trainers should no longer talk about certain free / prestige powers gaining enhancement slots when you level up

 

Technical Stuff

Most of this will be irrelevant for the average user, but we're including it here for transparency.

 

Intel Graphics Compatibility

  • Resolved a compatibility issue with Intel graphics chips on Windows 10 - the game no longer requires an external workaround involving dark rituals to function
    • If you're currently using the Intel OpenGL shim fix, you don't need to anymore
    • If you're currently using the Intel OpenGL shim fix and the game no longer functions for you, please post a dxdiag log
    • If you don't know what this is, you probably don't need to worry

Visited Maps

  • Some changes have been made to the way information on visited maps is stored
    • Now stored in a per-account subdirectory of the installation folder rather than in /appdata/
    • Now stored in a single file per character, rather than per map per character
    • Legacy map data from /appdata/ will be automatically imported
  • Reduced the performance impact of saving this data

Command Line Parameter Changes

The way the game interprets command line parameters has changed in order to accomodate for the upcoming launch of the new launcher - generally this is only relevant for those that launch the game with their own shell scripts or special shortcuts

  • The command line arguments -patchdir and -patchversion no longer exist
  • For use with existing installs, you should always include the -legacylayout command line argument, or the client won't be able to find certain files
    • This only applies if you aren't launching the game with Tequila or Island Rum
  • The new command line argument -assetpath will point the client to the piggs folders, in load order
    • The default is -assetpath piggs -assetpath homecoming for live, and -assetpath piggs -assetpath hc-beta for beta
    • Files in the data folder (eg: a standard vidiotmaps install) will still be applied as before
  • Like 1
  • Thanks 1

Got time to spare? Want to see Homecoming thrive? Consider volunteering as a Game Master!

Link to comment
Share on other sites

This way it can be migrated with you when you switch computers.   If it's in appdata, then it's in a distant location you have to track down, rather than just copy-pasting your entire City directory to your new computer.

 

I don't know if that's the reason the Team had to implement it, but it's the way I'm looking at it, and I appreciate it!

 

Now . . . just to find some time to test it out on a computer or three . . . 

Link to comment
Share on other sites

  • City Council
36 minutes ago, Mystic_Cross said:

Possibly just preparation for a new launcher... or some other reason entirely 🙂

This.

 

The new launcher was a good opportunity to clean up the file layout, and the setup looks quite a bit different. Some modifications to the client were needed to support it. As part of that effort, it was made fully portable so that you can just pick up the whole thing and move it. Dependence on the windows registry was removed, and any files being saved outside of the CoH directory structure were moved inside of it, including the shader cache and fog of war (VisitedMaps) data.

 

There is compatibility with the old way of doing things (activated by -legacylayout) since some people will no doubt prefer to keep using their existing Tequila/IR installs. The one exception is VisitedMaps. Examination of the way it was being handled revealed it was... not good. Rather than maintain that format for compatibility mode, a new format was created that is used for both modes. Data is automatically migrated to the new format so the transition should be seamless.

  • Thanks 4
Link to comment
Share on other sites

  • City Council

@FoulVileTerror

It's not exploitable, just horribly inefficient.

 

The current format saves one file per character per map - for example Player4872Map16.vm. There could be hundreds of files there, especially if you have a lot of alts. What happens is that the first time the game client needs to display the minimap, it loads the visitedmaps data into memory. ALL of it. Every map, for every character that's ever logged in on your computer, regardless of which account they belong to.

 

On top of that, any time the data changes, say by uncovering a map square, the game writes the map data to disk. To avoid extra code I suppose they used textparser for this -- a .vm file is just a .bin file -- so every time this happens the game opens a new file, writes all the data for the map to it, then closes the file (which flushes it to disk). It does this synchronously, in the main thread. You had better hope Windows has write cache available or it will stall everything. It repeats this every time you uncover another square.

 

The new implementation does things very differently. It creates one .vm2 file per character using a simple but effective binary format that can contain multiple maps and be expanded as needed. When map data is needed, only that single vm2 file is loaded. Instead of writing the changes synchronously, a background thread checks every 60 seconds if any maps have been updated, and if so flushes those maps to disk. The background thread keeps the file handle open and just seeks to the correct place.

 

Finally, the current files are stored using the dbid of the character, which changes when you transfer shards and causes you to lose the uncovered maps. It's also subject to potential collisions with the same ID across shards, but that's likely rare. The new files can use suid instead - a unique identifier that we added to the database back in 2019 which moves along with the character. The version in this patch I think still uses dbid because the client doesn't yet receive the character's suid, but all the framework to transition to suids is there. In the next patch that will be activated and after that date, transferring across shards will retain the map state.

  • Like 4
  • Thanks 6
Link to comment
Share on other sites

Funny, I was going to reply that the “not good” comment was likely just in avoidance of a very long explanation. 
 

I’m glad to see that there’s ongoing work to develop a new launcher. The standalone feature sounds fantastic, as do the changes to visitedmaps.

 

Thanks for taking the time to write out those explanations @Number Six
 

 

Link to comment
Share on other sites

Quote

The new files can use suid instead - a unique identifier that we added to the database back in 2019 which moves along with the character.

 

The character DB uses a UID now? Fantastic! Thank you from the bottom of my heart for making that little step in the direction of data integrity

Link to comment
Share on other sites

On 9/29/2020 at 3:43 PM, Jimmy said:

Now stored in a per-account subdirectory of the installation folder rather than in /appdata/

I'm not really a Windows guy so maybe I'm just ignorant here.  I thought that Windows prevented applications installed in one of the standard locations from writing to their own directory unless they are run as administrator.

 

On 9/29/2020 at 3:43 PM, Jimmy said:

The way the game interprets command line parameters has changed in order to accomodate for the upcoming launch of the new launcher

As someone running primarily on Linux and using etoh-downloader for updating, I manage my game shortcut manually.  I have to say this blurb here does not make it obvious how to migrate my existing command-line parameters to something that will work under this new configuration.  Do I just add -legacylayout and expect everything to work as before?  Do I take out the -patchdir and -patchversion arguments since they are no longer supported, or are they still used if -legacylayout is used?  I have no idea how things should look once this goes live.

Link to comment
Share on other sites

  • Developer

Look at the manifest file and copy the command line parameters from there. You no longer need to manually specify the patch version.

 

wine path\cityofheroes.exe -auth <ip> -legacylayout -assetpath piggs -assetpath <dir>

 

Where path\cityofheroes.exe is the relevant binary for the server you are trying to launch, <ip> is the IP (and port) of the relevant auth server, and <dir> is the relevant directory with patch files for that server.

Link to comment
Share on other sites

  • Jimmy locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...