Welcome to Open Carnage

A resource for Halo Custom Edition and MCC modding, with unique means of rewarding content creation and support. Have a wander to see why we're worth the time! - EST. 2012

Kavawuvi

Administrator
  • Content count

    4,334
  • Joined

  • Last visited

Everything posted by Kavawuvi

  1. I've updated the download to include a copy of the GNU GPL v3. I forgot to do this, so it led to some confusion over whether the binary can be distributed (it can under GPL v3).
  2. This is a tool that compresses/decompresses Halo Combat Evolved Anniversary PC map, ipak, and s3dpak files. Have fun! Also, make sure to run MCC with anticheat off if you use any map files compressed with this tool. Otherwise, bad things will happen. Source code: https://github.com/kavawuvi/ceaflate Download (win32): ceaflate-build-win32.7z License is GNU GPL v3.
  3. Yesterday, I fixed the floor decal on stock maps. This applies to any "double multiply" decal on an alpha tested layer. Here's what it looks like without the fix: Basically, you can't see it. The game does not appear to render it. Here's what it should look like: It should appear bright green. Refined works around this issue by changing it to a regular multiply: However, it now looks like a dark green instead of a light green. Granted, floor decals would probably look more like this in real life, but it doesn't match Xbox. Chimera fixes the issue by making it follow the same code path as multiply but in a way where it's still rendered as double multiply: Much better! Like all fixes that were worked around with tags, there is a caveat. Because this is an issue with the game's renderer and not the tag, if you use the Refined maps with the workaround decal, it will still look just as dark as usual as that's what the tag is telling the game to do. The issue will only be fixed if you're using the stock double multiply decal because that is the only case where the issue exists. Therefore, if you choose to make maps that utilize such decals, know that they won't be fixed unless you have Chimera. But if you would prefer the decal to be visible for all clients, then you'll have to use the workaround as always, and this will apply to all clients, even those with the fix.
  4. 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: As always, you can get the latest, nightly builds (for Windows) at https://invader.opencarnage.net/builds/nightly/download-latest.html
  5. I've added more controller configurations, partly in thanks to this topic: We now have profiles for the following controllers: Microsoft Xbox 360 Razer Serval (via Razer Synapse 2.0) Sony DualShock 4 (with or without DS4Windows) Steam Controller Xbox One Xbox One S Feel free to continue submitting gamepad information in the above topic for easy tickets if you have any gamepads that are not listed! I've also fixed a few issues with compiling Chimera from source, namely issues that occur if you don't have cURL installed.
  6. Invader is a work-in-progress, open source, cross-platform toolkit for creating Halo: Combat Evolved maps. There are a number of tools that come with Invader: invader-archive - CLI program for creating archives of all of the tags required to build cache files invader-bitmap - CLI program for generating bitmap tags invader-bludgeon - CLI program for backhanding uncooperative tags invader-build - CLI program for building cache files from scenario tags invader-compress - CLI program for compressing cache files invader-dependency - CLI program for listing the dependencies of a given tag OR the tags that depend on a given tag invader-edit-qt - GUI program for editing tags invader-extract - CLI program for extracting tags from a map invader-font - CLI program for generating font tags invader-index - CLI program for generating a list of all of the tags in a cache file or resource map (useful for invader-bitmap) invader-info - CLI program for getting metadata of a cache file invader-refactor - CLI program for renaming tags (or directories of tags) without breaking references invader-resource - CLI program for generating resource map files (i.e. bitmaps.map, sounds.map, loc.map) invader-sound - CLI program for generating sound tags ... and (hopefully) more programs to come! You may be wondering, why am I taking time to replace the Halo Editing Kit, something that already works fine? I'm glad you asked (or I asked?)! The Halo Editing Kit... ...is closed source. This means that you cannot make changes to it or add functionality without resorting to modifying the .exe file directly. Also, information has been obfuscated away through compilation. Invader is open source. ...is unsupported. Since it's closed source, you cannot rely on the developers to issue any updates to fix problems with the program. If they never update it, then it is the final version you get. An ideal program should never need updated, but the HEK is very far from ideal. Because Invader is open source, anyone may fork and support Invader at any time. ...is limited. Since it's closed source, you have to modify the .exe file directly in order to make changes to it. If you don't, you're limited to building 384 MiB cache files. Also, singleplayer maps are tied to the resource maps you built them with, thus users must have the same exact bitmaps.map and sounds.map you used to ensure the correct assets are displayed/played. Invader does away with most of Halo's arbitrary limits, even the 384 MiB cache file size limit (it's 4 GiB now!). ...was made for older PCs. As robust as Windows's backwards compatibility may be, even it has limitations, especially with Win32 GUI programs like Guerilla and Sapien. Invader runs natively on 64-bit x86-based PCs. ...is slow. This is due to thousands of unnecessary checks as well as the program, itself, not being compiled with optimizations. Building all stock multiplayer maps with tool.exe takes over 4x as long as Invader. ...only works on Windows. Not everyone uses Windows, and Wine compatibility on Linux is, at best, a mixed bag especially in regards to the GUI-based applications Sapien and Guerilla. Invader natively runs on both Windows and Linux without having to worry about Wine. tl;dr: You can't guarantee the Halo Editing Kit will continue to work indefinitely, and it doesn't meet all of our needs anymore. Invader is here to fix that. I recommend reading this post for more information on why it is important that the Halo Editing Kit should be replaced: Please note that Invader is a work in progress. Using it would be nice, but it is limited. With invader-build, stock multiplayer maps are very close to perfect, while singleplayer maps and maps with scripts work but may have issues with AI, scripts, and detail object collection tags. Also, invader-bitmap cannot process sprites, yet. Lastly, Invader is untested for macOS. As such, macOS is not supported, but it will most likely work just as well as it does on Linux if built correctly. Here is a FAQ composing of some of the questions I've received: What is Invader? Invader is an open source replacement of various tools in the Halo Editing Kit. What license does Invader fall under? GNU General Public License version 3. Note that, for numerous reasons, this is specifically version 3 and NOT "version 3 or later" like what many GPL-licensed projects do, so if a GPL version 4 comes out, then you cannot use this project under that license. Where do I get Windows builds? https://invader.opencarnage.net/builds/nightly/download-latest.html Where do I get Linux builds? Currently you must build them from source. If you are on Arch Linux, you can use the package on the AUR to help you do this. Is Invader finished? No. Where do I get the source code? https://github.com/Kavawuvi/invader What operating system can run Invader? There are probably dozens of operating systems that can run Invader in some form since it's open source, but it's been at least tested on Arch Linux which is what I use to develop it. How do I compile Invader? I've written some instructions on the readme. What HEK functionality can Invader do right now? tool.exe build-cache-file, tool.exe windows-font, tool.exe bitmap Is there a tutorial on how to use Invader? No. Is there a 32-bit version of Invader? No. How can I contribute to the project? I recommend reading https://github.com/Kavawuvi/invader/blob/master/CONTRIBUTING.md Basically, there are several ways you can contribute: One of the most important things you can do right now is test Invader and report issues at https://github.com/Kavawuvi/invader/issues or here on this topic. You can also contribute directly to the project by fixing issues listed there. Simply fork the repository, fix the issue, and submit a pull request for me to review, ensuring you adhere to the standards I set in the CONTRIBUTING.md file. If I don't approve your changes, I will leave a comment explaining why. Site: https://invader.opencarnage.net/ Source code: https://github.com/Kavawuvi/invader Builds: https://invader.opencarnage.net/builds/nightly/download-latest.html Original version of this post (for posterity):
  7. Invader has dropped MCC support. For an explanation and what I plan to do on going forward, please read this post:
  8. 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.
  9. I've just recently added controller button text support to Chimera as of this topic: As such, we have some example configurations for people to choose from. You can see all available configurations at https://github.com/Kavawuvi/chimera/tree/master/controller_config However, we only have a limited number of controller configurations available. That is, we only have the following: Windows DualShock 4 (native drivers and DS4Windows) Razer Serval (via Razer Synapse 2.0) Xbox 360 Xbox One Linux Xbox (original) Xbox 360 Xbox One If you own a controller that has not been submitted yet and you're eligible for tickets, then you can earn four (4) tickets by submitting a list of each button/axis and what they physically map to (e.g. "Button #1 corresponds to the A button, Axis #1 - corresponds to the left stick being pushed up, etc."). This will only take you a few minutes, so it's easy tickets. If an unlisted controller uses the config of another controller (e.g. controller X works exactly as an Xbox 360 controller), you can earn one (1) ticket by simply saying that it is. This will only take you a few seconds, and one ticket is enough for a chance to win the monthly raffle. Make sure to note your operating system and what software you're using to get your controller working! Some controllers require custom drivers, and that can impact button mapping. For example, the built-in Windows driver for the Xbox One controller registers the left and right triggers as one axis, where the Linux drivers address them as two separate axis.
  10. Added Razer Serval as a duplicate of Xbox 360, then. And, uh... lol.
  11. Chimera now provides the option to substitute controller button names. Sadly, it's text only, but this should, at least, be an improvement over "Hold "BUTTON #3" to pick up...". You can configure this from within chimera.ini. Here are some screenshots: Because there are many different controllers, no default configuration is given. However, I've included an example controller configuration here: https://github.com/Kavawuvi/chimera/tree/master/controller_config Note that I only have an Xbox One controller that I can plug into my PC, so this is currently the only config file available.
  12. Added @giraffe's config. Thanks a lot! I've also found that Steam Controller + Steam = Xbox 360. Obviously most games that support controllers support Xbox 360 controllers, so it makes sense that a lot of them go to this.
  13. Some stuff has been added: Bookmarks Server history Hotkeys (off by default) I also fixed an issue with maps in RAM when hosting client-hosted servers and changing maps. Here you go: chimera-20191212T232636Z.7z Thanks! I'll look into that. auto_uncrouch has a few issues.
  14. Fixed the issue. Check the latest announcement:
  15. Today, I fixed the issue with servers not on port 2302. Check the announcement here: Maybe, but I'm considering whether that's even a good idea to implement.
  16. This is just a general topic for posting questions and suggestions for Chimera. You can also post issues in here if you are having issues with Chimera.
  17. Good afternoon. Here's what I did today: I've fixed an issue with failing to query servers that are not on port 2302. The issue was that, although I was reading the port, it was defaulting to 2302 even so. I've also fixed an issue with parsing bookmarks with passwords. You can now add bookmarks without specifying a port. They will default to port 2302. I've also added a new channel, #git-log, to the Chimera Discord server. You can now see updates as they're made without ever having to go to GitHub.com. Clicking on a specific commit hash will display that commit in your web browser. Note that this is, of course, not a replacement to general announcements like this, as an announcement can also include screenshots and give rationale. Commits only cover changes, and features can span multiple changes and commits. Instead, you should think of this as a way to receive updates for the project in real time.
  18. Well, I don't imagine anyone wrote any tools specifically designed to port Halo maps to Unity, but you might be able to extract vertices from the gbxmodel/scenario_structure_bsp tags in the map and convert them into a mesh that is in some Unity-compatible format.
  19. That isn't really a waiting room. What people call a "queue" we call "spam-to-join" because it spams the server until it can successfully allow you to join. You're using fixed function shaders. You made a similar post in another topic, so I won't retype my reply, but for the sake of continuity, here's a link: The issue was due to multihack.exe changing Halo's code. I made those particular features optional in the latest update, so Chimera won't close Halo if it can't use the features.
  20. You're using fixed function graphics (e.g. -useff, -use00, -safemode, UseFixedFunction, SafeMode, etc.) rather than pixel shaders. Unfortunately, on the Windows version of the game, using fixed function graphics breaks certain aspects of the game (especially on newer GPUs), particularly overlays like the console and HUD. On the console, only every other line is rendered. Note that fixed function shaders are used for getting Halo to run on hardware that doesn't support running the full game, and this really only includes low end hardware from around Halo's release date (2003) or hardware from before it. Anyway, this isn't a Chimera issue, nor is fixing this a priority since all modern GPUs support the full graphics.
  21. Since Invader is a toolset that supports building maps and assets for all versions of Halo PC as released by Gearbox, I figured it was worth putting a link here.