Posted February 22, 2020 Invader is a toolkit for creating assets for Halo: Combat Evolved on PC. The full topic can be viewed here: Anyway, as of version 0.26, invader-compress allows for compressing/decompressing CEA maps with invader-extract also extracting CEA tags (except bitmaps and sounds). In version 0.27, invader-build started to support building Halo: Combat Evolved Anniversary maps for MCC. Since there is a section dedicated to MCC modding tools on Open Carnage, it was worth having a topic for Invader here dedicated to MCC-related updates. Take care of the following notes: You will need to run your game without anticheat enabled if you have modified your MCC installation. Building MCC maps is very experimental right now - even more experimental than building Custom Edition maps. Stuff will not work right, including anything with bitmaps or sounds that were not in the map you're replacing. Make sure to keep your version of Invader up-to-date. Only the PC version is supported. Modding the Xbox One version risks a ban. Here is the original mini-update: Spoiler Another mini-update: Invader now has partial tag extraction for Halo CE Anniversary (MCC) maps. You cannot extract bitmaps, sounds, or BSP tags at this time, but all other tags seem to be accessible. You also do not need to decompress the map files before using them with Invader, and you really shouldn't do that unless you use invader-compress to do it, as, when normally decompressed, the maps look almost indistinguishable from retail cache files. Bitmap and sound data is stored somewhere outside of the map and does not use offsets of any kind from the map file, instead checking tag paths against some sort of external index, so conventional modding tools won't be able to access this data. It appears that sound data also does not even use the same exact format specified in the tag, itself, instead apparently opting for some form of MPEG audio stored in FSB files. The quality is apparently higher than whatever Gearbox used when creating their Ogg Vorbis tags, though. BSP vertices are stored outside of the BSP tag but still in the cache file, apparently located immediately after the header. The vertices are the same format, though, so, in theory, they should be able to be reconstituted into BSP tags. Edit: BSP tag extraction works As always, you can get the latest, nightly builds (for Windows) at https://invader.opencarnage.net/builds/nightly/download-latest.html ShikuTeshi, Sunstriker7, ST34MF0X and 2 others like this Share this post Link to post Share on other sites
Posted February 24, 2020 CEA maps now build sort of ST34MF0X, Sunstriker7, Takka and 2 others like this Share this post Link to post Share on other sites
Posted February 24, 2020 Takka, Sunstriker7, Vuthakral and 2 others like this Share this post Link to post Share on other sites
Posted February 25, 2020 Scenery now works. turns out there is a value in scenario tags for the BSP index scenery is in that the gearbox version of the game does not care about while MCC however does. Kavawuvi, Takka and Sunstriker7 like this Share this post Link to post Share on other sites
Posted February 25, 2020 1 minute ago, Vaporeon said: Spoiler Scenery now works. turns out there is a value in scenario tags for the BSP index scenery is in that the gearbox version of the game does not care about while MCC however does. Looks like we won't be having any trouble porting Snowgulch over. Sunstriker7 and ST34MF0X like this Share this post Link to post Share on other sites
Posted April 13, 2020 We got the entire campaign working! Yay! We're also working on a way to make it so you can extract tags and have them work correctly when added back in a map. Stay tuned for more on that. WaeV, ShikuTeshi, Sunstriker7 and 2 others like this Share this post Link to post Share on other sites
Posted June 28, 2020 Invader is dropping direct support for Halo: Combat Evolved Anniversary (MCC) maps. This means that Invader, itself, will not natively support building CEA maps or extracting tags anymore. There are a few reasons for this, but it mainly boils down to the fact that supporting both CEA and Gearbox Halo PC maps at the same time would be insane for a project developed by one person (me) while trying to add new features. I don't know how many times I've added a feature, only to break MCC or break Gearbox Halo PC maps and having to take time to fix that, too. I am planning on writing a couple tools that use Invader and build/extract MCC maps, but they will not be a direct part of Invader by themselves. Anyway, let's talk about why this change is being made. It is impossible to identify a compressed CEA map without decompressing part of it, unlike every other type of map file. Because CEA maps compress the header, it is impossible to determine what kind of map it is without decompressing it. This is a pretty big deal, because I can't be sure if, say, bitmaps.map, sounds.map, or loc.map files are actually MCC maps, so I have to attempt to decompress it. This makes things like map loading less efficient, as a result, and it also makes it prone to being broken by feature additions. It is impossible to rationally tell the difference between a CEA map and a retail Halo PC map, and this is an IMPORTANT distinction. Halo: CEA changes up the rules for map parsing in its format, yet for some reason, they decided to continue using engine version 0x00000007, the same as retail Halo PC. These are different formats, though! Here's a list of what they did: CEA maps no longer use a fixed base memory address. Instead, they can have any base memory address, and this address is derived from the tag array address. It just so happens that there's a tool that does the EXACT same thing: Eschaton. This means that MCC maps cannot have their tag array moved, but Halo PC maps can. CEA maps (that are stock) use a different base memory address than Halo PC (0x40448000 instead of 0x40440000). CEA maps' BSP data can overlap the base tag data by address. Just going by the map alone, the tag space would appear to have been reduced to 16 MiB (in actuality it was increased). However, BSPs are loaded in separate buffers, and this 16 MiB window provides a high chance for an overlap. Halo PC maps cannot do this, thus Invader's map parser accounts for this when it comes to potential BSP data being placed in tag data (Invader's -O does this). CEA maps can have BSP data located outside of the BSP tag, itself. Maps are limited in what custom assets can be used. Someone (likely Saber) changed the way bitmaps and sounds are loaded to a way that completely bypasses tag data. Basically, all of the bitmap data is located in the inplace1.ipak file and referenced in .imeta files, and the sound data is located in .fmod files. For whatever reason, CEA does NOT use tag data for determining the location or format of bitmap and sound data, even if that data were internal to the map, itself. This means custom lightmaps, textures, sounds, etc. are impossible by map file alone. You can use custom assets, but to do so, you'd need to replace the inplace1.ipak file, the fmod files, and the .imeta files of all maps. The inplace1.ipak file is a massive file, containing both CEA and classic CE assets. Unless you're okay with all of your other maps not working, you need to include that, too. Most CEA custom maps work around this massive limitation by deleting the lightmaps (so everything is fullbright - better than not being able to see anything I guess) and swapping textures with stock CE textures until it resembles the original. What tag data is even used? It appears that the way 343 Industries prefers to fix issues is through code. A quick look at the game executable confirms that they use a large number of hardcoded tag paths, thus some tags are directly referenced for some reason. From reading discussions from 343 Industries developers, this somewhat implies this. For modding, this limits us even further. This quote basically sums tag data in CEA up: Getting custom maps to work on MCC is an error-prone process. As seen in Storm's video, even correctly installing a map can fail, resulting in even 2v2s failing to work in some custom games. Correctly installing a map requires replacing an existing map while modifying a file in a completely separate file. This is a far cry from Halo: Custom Edition (or Halo Trial / retail Halo PC with a mod like Chimera) simply letting you copy the map into the maps folder. Speaking of which, the game, by popular demand, has anticheat. Guess what anticheat does NOT like you doing? Replacing or modifying files. This limits how you can even play the game. Even a theoretical "Refined Anniversary" would have to be played with anticheat turned off, and you're only limited to singleplayer and custom games. We don't know how modding support will work, assuming CEA will even support custom maps. We don't even know how 343 Industries plans on supporting custom maps in the future, if at all. We assume that, if they wanted to, they would want to support Halo: Custom Edition maps, and if they do, Invader supports generating Halo: Custom Edition maps, anyway. -- tl;dr: It's difficult to support a game that is actively and openly hostile towards custom content being loaded. Invader is developed by two people, with me being the only person who actually writes code. I do this in my spare time, and I do it for free. Maybe it'd be different if I was actually getting paid for this, but I'm not. Also, Invader's scope is tag data and maps that reference or have tags. Traditionally, a Halo map file is an archive of tags. However, this game actively disregards tag data, and its assets are stored in ipak/fmod files which do NOT use tag data to reference. Supporting something that falls within the scope of Invader (Halo PC) and something that is well out of scope (CEA ipaks, etc.) at the same time in one project is insane, so this was the path we both agreed on. Zatarita, (SBB) Storm and Pfhunkie like this Share this post Link to post Share on other sites
Posted July 1, 2020 (edited) On 6/28/2020 at 2:39 PM, Kavawuvi said: ... Supporting something that falls within the scope of Invader (Halo PC) and something that is well out of scope (CEA ipaks, etc.) at the same time in one project is insane, so this was the path we both agreed on. I think this part alone should be enough for everyone tbh. If the original intention was to create an open source hek, supporting mcc falls outside that scope, and would cause bloat reducing the options for optimizing for its original intention. Besides, with the niche design of mcc, it requires a bit more finesse to keep everything working smoother. If someone REALLY wants it they can fork it and do it; however, I’m certain there will be someone who comes along and can dedicate the appropriate amount of time to their own project and do it right instead of just adding partial support to an existing project. Plus managing expectations is important for project management. When working with something as ambitious as an open source hek, from a programmers perspective it can become overwhelming to add things while you’re going. Almost managing two separate projects at once. i respect your decision. I appreciate the work you put in. Thank you for trying Edited July 1, 2020 by Zatarita Pfhunkie, WaeV and Kavawuvi like this Specifications: S3dpak - format - Imeta/ipak - format - Fmeta - format Programs: H2a-inflate - SuP Share this post Link to post Share on other sites
Posted December 7, 2020 Goodness, it seems that 343 Industries decided to secretly add some partial support for Custom Edition maps in a recent update. To enable Custom Edition map support, copy your bitmaps.map, sounds.map, and loc.map into your maps folder. As usual, you still need to replace a stock map, update the fmeta, run with anticheat disabled, etc. (screenshot courtesy of @Vaporeon) Note the following: 16-bit textures do not work in the CEA engine, and this includes lightmaps. You will need to recompile them as 32-bit, or else your maps will appear dark. Stuff like the HUD isn't correct. The colors are wrong, the positioning of some elements is wrong. The scaling of some elements is wrong. Yeah, it needs work, but the bitmaps are correct at least. Maps with scripts that rely on bipeds to be synced will not work correctly with this due to the new netcode. Maps with scripts that use Halo Custom Edition exclusive commands, such as coldsnap using multiplayer_draw_teammate_names, will probably crash. Some protected maps will NOT work with this. I can't say I'm not impressed. Progress is progress after all! But it's still a very long way from what we need. We need custom map support and all that stuff, and this doesn't have it yet. However, I am working on adding back some partial MCC support in Invader, since it seems MCC modding may become viable, yet, and the extended tag space may be very useful for modders. Also, I've found my mouse/keyboard input doesn't work on custom edition maps. Other people are not experiencing this issue. Just in case, have a controller ready. Sunstriker7, Takka and ST34MF0X like this Share this post Link to post Share on other sites
Posted December 7, 2020 This combined with the news that custom map browsing is in the works is promising. ST34MF0X likes this Share this post Link to post Share on other sites