Porting maps means taking maps built for one edition of H1 and converting them to work on another edition. For example, porting a Custom Edition map to Xbox or MCC.
Map cache files themselves are incompatible between editions of the game due to differing map versions, compression, size limits, and changes to how maps are loaded. Beyond this, engine features vary and the tags within the maps can be be incompatible. Porting maps is non-trivial, especially when the map is complex and includes a lot of custom content.
Process
The current recommended approach to porting maps is:
- Obtain a stock base tagset for the target game.
- Extract tags from the source map using invader-extract.
- Identify what custom tags are present, and make any changes needed to make them compatible with the target game.
- Layer the custom tags over the base tagset.
- Build the map with invader-build for the target game.
Challenges
- Some maps are protected and/or include corrupted data from buggy community tools.
- Custom tags may be poorly organized.
- Some tags are unsupported or buggy. For example, H1X uses model while others use gbxmodel. H1CE cannot render shader_
transparent_ generic and needs to use shader_ transparent_ chicago to emulate it. - Available script functions varies. Only H1A supports static script parameters.
- New tag features have been introduced to H1A, like new tag fields and flags, which are not implemented in other editions.
- Higher limits in H1A are not present in other editions.
- Visual differences can arise from renderer regressions or different limits.
- Multipurpose map channel order has two conventions.