SnowyMouse / chimera

The update to Halo PC that never was
https://chimera.opencarnage.net
GNU General Public License v3.0
137 stars 26 forks source link

Add Custom Edition support into retail #1

Closed SnowyMouse closed 4 years ago

SnowyMouse commented 4 years ago

This will require:

SnowyMouse commented 4 years ago

For joining Custom Edition games using stock retail maps, the stun of the following .damage_effect tags will have to be set to 0 to prevent desyncing:

Joining retail servers with Custom Edition maps will equally result in desyncing if these vehicles are present. The best way to handle this is to prevent players from using Custom Edition stock maps and Custom Edition maps when joining retail servers. Since the retail map's CRC is unlikely to match its Custom Edition counterpart, the game will have to falsify the CRC.

There are other ways to handle this, but I feel they would ultimately make things worse:

Also, doing it this way and not the alternative ways will discourage people from using maps that workaround Halo Custom Edition-specific bugs bugs like fog issues with .shader_environment shaders on models.

Also, for using existing Custom Edition maps, sound/sfx/impulse/ting/ting.sound's randomization gain will have to be set to 0.2 due to retail playing this sound 5x as loud vs. Custom Edition.

SnowyMouse commented 4 years ago

Upon testing, I've found that there are several multiplayer Halo Custom Edition maps hosted on the HAC2 repository that have non-indexed bitmap and sound tags that directly reference the bitmaps.map and sounds.map files.

I always assumed that tool.exe did not do this with multiplayer tags, but it seems that tool.exe actually checks the tag data and raw data separately. Here is the observed behavior:

I imagine that this can happen if sprites are added, such as new weapon icons, but some of the bitmaps are the same size.

Unfortunately, there is no reliable way to determine which kind of bitmaps.map and sounds.map resources were used when creating these maps, and there may be many maps that have this problem.

Therefore, I'm going to have to close this