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. 14th of February, 2012

Kavawuvi

Administrator
  • Content count

    4,251
  • Joined

  • Last visited

Everything posted by Kavawuvi

  1. I decided to open another hardware survey similar to the one I posted a couple years ago. This one is intended to help me (and other developers) make mods, modding tools, or other content for Halo on the PC by gauging the systems that people use. The only thing that's required is the operating system part, but more information is helpful. Here's a link: https://docs.google.com/forms/d/e/1FAIpQLSe4j7b4WnJvnK3KmW9e5yn_Hv0hDtOintJp_qhxrJWtmrg25g/viewform As always, results will be posted in the form of some cool looking graphs.
  2. The Halo Editing Kit sucks and everyone knows it. How do we replace it? I made a list of stuff that needs to be done and stuff that has already been done. Why should the Halo Editing Kit be replaced? One of the main issues with the Halo Editing Kit is that is unmaintained and unsupported. Like most Win32 applications, it can run on modern systems thanks to Windows's robust backwards compatibility. However, like many old applications, it hasn't exactly been unscathed by the passage of time. For a start, there are numerous user interface issues in both Sapien and Guerilla that have appeared in semi-recent versions of Windows. Not only that, but it also contains numerous limitations and restrictions that may have made sense with the limited 64 MiB memory of the original Xbox but not a PC game even from this time period. There are various other issues that have become well known by the modding community. None of these issues or concerns have or will ever be patched, officially, as the software is not supported. The Halo Editing Kit is also closed source and nonfree, requiring you to agree to an additional, restrictive license that takes away your freedom to use their software. While it's great that we have an editing kit in the first place, this nonfreedom can be to the detriment in the community in the long run. For any issues that are found, there is no way to fix the software without resorting to actually making changes to the binary, itself (and doing this is quite limiting!). As a result, people end up being stuck with the limitations and bugs of the software. However, since the software at least "exists" despite its issues, few people are inclined to replace the software. There's also another issue when it comes to modding using nonfree modding software: Because the software is closed source and nonfree, you're restricted to whatever the developers intended to allow you to mod. With the Halo Editing Kit, you can only modify Halo Custom Edition, and because it has an inferior renderer, people have resorted to dirty workarounds that sacrifice visuals (e.g. using model shaders instead of environment shaders due to fog). Also, without modifying the tools or creating new tools, you're only allowed to do whatever the tools allow you to do, and this is not everything you could do. Lastly, you're restricted to Windows on 32-bit x86, and while most people have access to that, it's possible that it may not be an option for most people in the distant future. In the end, it is a waste of time to try to fix something that is closed source and nonfree. While it's great that this software at least exists, we should focus our efforts on replacing the binaries, altogether, with better free and open source software. Usage of the Halo Editing Kit or any other "closed" modding tools should be discouraged whenever possible. What needs done? Questions we can answer right now: How do you edit your tags? Use invader-edit-qt or Mozzarilla. How do you make string list tags? Use Mozzarilla or invader-string. How do you make HUD message list tags? Use Mozzarilla. How do you make your bitmaps? Use invader-bitmap (for color plates) or Mozzarilla (for DDS files). How do you make your fonts? Use invader-font. How do you make sprites? Use invader-bitmap. How do you make cubemaps? Use invader-bitmap. How do you make your sounds? Use invader-sound. How do you make animation tags? Use Mozzarilla. You currently need to use closed source software to make the .JMA files. How do you make physics tags? Use Mozzarilla. You currently need to use closed source software or an outdated version of Blender to make the JMS files. How do you make model tags? Use Mozzarilla. You currently need to use closed source software or an outdated version of Blender to make the JMS files. How do you build your maps? Use invader-build. Child scenarios with custom scripts do not work, yet, as invader-build cannot compile scripts. Questions we cannot answer right now: How do you compile your scripts? We don't know yet. How do you make .scenario_structure_bsp tags? We don't know yet. You currently need to use closed source software or an outdated version of Blender to make the JMS files. How do you make collision model tags? We don't know yet. You currently need to use closed source software or an outdated version of Blender to make the JMS files. How do you place your objects? Besides manually placing them in invader-edit-qt or Mozzarilla or placing them in Blender and using an old invader-scenario tool I wrote to apply them to a .scenario tag, we don't know yet. How do you bake lightmaps? We don't know yet. Milestones to achieve? Making a HUD from scratch: Requires being able to edit tag data (use invader-edit-qt or Mozzarilla) Requires being able to create 2D texture bitmaps (use invader-bitmap w/ color plates or Mozzarilla w/ DDS) Requires being able to create sprites (use invader-bitmap) Making a simple multiplayer map with stock assets: Requires being able to build a map (use invader-build) Requires being able to create scenario tags (use invader-edit-qt or Mozzarilla) Requires being able to edit tag data (use invader-edit-qt or Mozzarilla) Requires being able to place objects (use Sapien from the HEK) Requires being able to compile BSPs (use tool.exe from the HEK) Requires being able to bake lightmaps (use tool.exe from the HEK) Making a new object completely from scratch: Requires being able to edit tag data (use invader-edit-qt or Mozzarilla) Optionally requires being able to make textures (use invader-bitmap w/ color plates or Mozzarilla w/ DDS) Optionally requires being able to make sprites (use invader-bitmap) Optionally requires being able to make cubemaps (use invader-bitmap) Optionally requires being able to make a HUD for weapons, units, and vehicles (see Making a HUD from scratch...) Requires being able to make animation tags (use Mozzarilla and a closed source program) Requires being able to make model tags (use Mozzarilla and a closed source program) Requires being able to make physics tags (use Mozzarilla and a closed source program) Requires being able to make collision model tags (use tool.exe from the HEK) Making a new campaign map with stock assets: Requires being able to edit tag data (use invader-edit-qt or Mozzarilla) Requires being able to make string tags (use invader-edit-qt or Mozzarilla) Requires being able to create scenario tags (use invader-edit-qt or Mozzarilla) Optionally requires being able to create sounds for voice acting (using invader-sound) Requires being able to build singleplayer maps (invader-build works, but it cannot compile scripts for child scenarios, yet) Requires being able to compile scripts (use Sapien from the HEK) Requires being able to place objects (use Sapien from the HEK) Requires being able to compile BSPs (use tool.exe from the HEK) Requires being able to bake lightmaps (use tool.exe from the HEK) Making a complete game: Requires being able to edit tag data (use invader-edit-qt or Mozzarilla) Requires being able to make fonts (use invader-font) Requires being able to make bitmaps for interfaces (use invader-bitmap for color plates or Mozzarilla for DDS) Requires being able to create sounds from scratch for various effects (use invader-sound) Requires being able to make multiplayer maps (incomplete) Requires being able to make campaign maps (incomplete) Requires being able to make objects from scratch (incomplete) Where do I get this stuff?
  3. Since invader-build now makes campaign maps quite well, I've updated the list. That said, if you're using child scenarios that have scripts in them, you will still need to use tool.exe as Invader lacks a script compiler at the moment.
  4. All in good time
  5. 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):
  6. I've done some work on script extraction. invader-extract now does it by default
  7. It's way too early to say for certain, but most people who responded have fairly decent setups.
  8. Have you tried connecting from outside your network?
  9. Probably not. It seems more likely that they probably Jason Jonesed it into the renderer. It really looks like 343 Industries is very hesitant to changing any of the tags in a map and are more likely to just change the tag data or game in code. If they weren't hesitant, maps like Assault on the Control Room wouldn't look messed up when looking at the sky.
  10. I've been looking into that. It's part of Chimera disabling Halo CE writing to the registry. Unfortunately, it writes the gamma values into the registry, too.
  11. (Icon is by SteamFox) Chimera is a mod that adds additional functionality to Halo Custom Edition. Passive features: Interpolation - Smooth out animations so they look better when playing the game above 30 FPS. Limit increase - Boosts various limits Compressed maps - Reduce disk space usage of your maps Reduced DRM - Make the game less of a hassle to run by taking out some of the annoying DRM (note: this does not crack the game) Descope fix - Make it so you are descoped only when you take damage on a server Fast loading - Increase Halo's loading time drastically Fast server listing - Increase the server list loading time drastically 128 MiB map leak fix - Fix an issue with the game leaking on large map files Model LOD fix - No more headless chief at 4K FOV fix - Pixel-perfect FOV Sun fix - No more moon-sized sun at 4K Custom chat - No more crashy keystone.dll NVIDIA camo fix - Fix the camo when on NVIDIA cards Map downloading - Download maps you do not have off of the HAC2 repo chimera.ini features: Halo settings - Configure ports and paths without command-line arguments as well as disable the main menu music (if you find it annoying) Memory settings - Configure whether to use maps in RAM (speeds up Halo) Video mode - Configure windowed mode, vSync, and more without command-line arguments. You can even tell the game to run above 120 Hz, too, or use a specific resolution without turning off vSync. Custom chat settings - Configure colors, sizes, and positioning of the custom chat Hotkeys - Run mini Halo scripts OR Chimera commands at the press of a button, such as favorites or spectating Commands: Aim assist - Fix the broken aim assist in Halo when playing on a controller Anisotropic filtering - Enable anisotropic filtering without editing without editing config.txt Auto centering - Fix or disable camera centering when driving Auto uncrouching - Crouch automatically when walking all the way forward, emulating Xbox behavior Block buffering - Disable buffering without editing config.txt Block camera shaking - Disable the broken camera shaking Block gametype indicator - Remove the gametype indicator from the top-right corner Block gametype rules - Prevent gametype rules from being spammed in your face when you join a server Block hold F1 - Prevent "Hold F1 for score" (or whatever you bound scores to) from showing up when you join a server Block letterbox - Get rid of the letterbox in cutscenes Block loading screen - Prevent the loading screen from blinding you when you join a server Block mouse acceleration - Get rid of Halo's shitty mouse acceleration (turning off mouse acceleration can actually significantly improve your mouse aiming) Block server IP - Hide the server IP Block zoom blur - Get rid of scope blur Bookmarks - Add, remove, list, and connect to bookmarks (recommended for use with hotkeys) History - Connect and list recently joined servers (recommended for use with hotkeys) Budget - Show some of Halo's budgets and whether or not they're being exceeded Chat: Block IPs - Block IPs from being spammed in chat by shitty servers Chat: Block server messages - Don't show server messages Chat: Chat color help - Show all of the nice chat colors you can use Console prompt color - Set the console prompt color Deadzones - Adjust deadzones for controllers Devmode - Enable developer mode commands such as camera_control or cheat_* commands Diagonals - Configure diagonals for controllers when in multiplayer games Enable console - Configure whether to enable the console without command-line arguments FOV - Set your FOV HUD kill feed - Configure whether to show a kill feed on the top left corner or in the chat Language - Set the language of Chimera (currently English or Spanish) Model detail - Set the model LOD detail scaling, reducing pop-in Mouse sensitivity - Set mouse sensitivity more granularly than the main menu Show coordinates - Show your current coordinates Show FPS - Show your average frame rate more accurately than Halo's built-in commands Shrink empty weapons - Shrink empty weapons so you know not to pick them up Split screen HUD - Show the split screen HUD Spectate - Spectate players, seeing more things from their perspective than sightjacker Throttle FPS - Prevent Halo from running too fast Uncap cinematic - Disable the 30 FPS cap in cinematics Widescreen fix - Fix most of the widescreen artifacts Download (1.0 beta 2): chimera-20200305T165206Z.7z There is also a Discord server: https://discord.gg/ZwQeBE2 Source code (GNU GPL v3): https://github.com/Kavawuvi/chimera
  12. Hey! As of today, I'm no longer going to be posting monthly updates into this topic. There are a few reasons why, but it mainly boils down to the fact that people in this community are generally not interested in testing or supporting unfinished, in-development software. I have heard from a lot of people that they are interested in the Invader project, but they are unwilling to use it due to it not being complete. For that, I completely understand, but know that hearing that is actually completely and utterly worthless for me. Funnily enough, there is equivalent software that people use that is far more buggy or broken (though somehow considered "complete"?). I have been upfront in stating that my project is, in fact, not complete, and I am not willing to be dishonest about the status of this project. Basically, I post these updates in the hopes that people will test my stuff. Since starting this project, numerous issues have been found, but almost none of these issues were reported from anyone on this forum (besides Vaporeon and myself, people already closely involved with this project), and some of these issues were present for months. Did you know that invader-build didn't work on Windows for over a month? I didn't until I found out and promptly fixed it within hours. In fact, nobody told me, and it was only until I randomly stumbled across it. Note that I'm not stopping or slowing development of this project. Updates will be posted as per usual on the Invader Discord server. Also, the MCC updates topic (https://opencarnage.net/index.php?/topic/7893-invader-mcc-updates/) will still get updates when that needs it. Oh, also, invader-edit-qt now has sound playback, so that's pretty cool!
  13. I had to disable CEA bitmap extraction due to some issues regarding how data doesn't match the actual stuff in the ipak. This doesn't prevent extraction in and of itself, but it may cause issues with rebuilding maps, so I'm looking into seeing if I can fix that. In the meantime, I began work on bitmap previewing in invader-edit-qt.
  14. The syntax is "chimera_fov 60" and "chimera_widescreen_fix 1". You put the underscores in the command name and you put spaces between arguments.
  15. Maybe give the latest Chimera build a try? Chimera's no longer in alpha, but it never has been truly "stable" in terms of feature completeness.
  16. Cheat Engine using a similar method of finding where to enable it which I did with Chimera so you could run Halo PC with a console without -console
  17. I figured that here would be a good place to put this here. Before someone asks for the difference between Custom Edition maps and CEA map files: aside from the ability to load tag data from external map files and different versions in the header, they're the same format as retail, so besides those two minor differences, all differences below also apply to Custom Edition maps. All of this information has been found from my work with Invader. Map Files Anyway, starting with the map file, itself, cache files are stored as 0x20000 byte (128 KiB) chunks which are each compressed using Deflate. This will signficantly negatively impact compression ratios, but it allows for threading for both compression and decompression. Unlike Xbox maps, the header is also compressed, so it is not possible to even identify a map file as a map file without decompressing it. The first number in the compressed file is a count (32-bit integer), followed by an array of file offsets to each block (32-bit integers). Each block is a size of the block when uncompressed (32-bit integer) followed by the Deflate stream. Using this, you can get the decompressed size by adding up the sizes. You can use Ceaflate to decompress and compress these files, but if you intend to use the map files with Invader, do not use Ceaflate to decompress them. Invader handles it automatically. Once you've got a decompressed map file, you may notice something: like retail maps, the engine version is 7, though the build string is different (01.00.01.0563 instead of either 01.00.00.0564 [maps that came with the retail disc] or 01.00.00.0563 [ui.map that came with the Halo PC dedicated server]). However, there is one key difference that will prevent many tag parsers from accessing the tag data in the map: the tag data address. Halo PC uses 0x40440000 and Halo CEA uses 0x40448000. Since the tag data header is the same size, tools that infer the tag data address based on the tag array pointer, such as Eschaton, will be able to work with the map as far as allowing you to view and edit tag data without having to update the tool. Also, there is another key difference that will prevent many tag parsers from accessing BSP tags in the map: BSP vertices are stored outside of the tag, and the lightmap pointers are meaningless here. Actually, the vertices are addressed based on file offset and size, so you'll have to use the offset values instead of the address values to find it. Fortunately, they're the same format, so they can be reintegrated back into a BSP tag and exported normally. invader-extract can already do this. There's one last difference: bitmaps and sounds are stored differently in CEA. They are not stored in bitmaps.map or sounds.map. All classic bitmaps are stored in inplace1.ipak (and referenced in the .imeta file), and all classic sounds are stored in fmod files. Also, the .fmeta contains information about file names and the uncompressed file size (which is read by the game and needs to be correct). These files not only store the data, itself, but also the actual attributes to the data. Therefore, the tag data for both the bitmap data and permutation data is actually not correct. Bitmap data can be determined by reading the .imeta and .ipak data and reading the data from that, and thankfully, MCC uses the same formats that Halo PC uses for classic bitmaps. However, sound data may not even use a format that stock Halo PC supports. How do I tell the difference between a Halo PC or CEA map? Technically, you can't safely do this if the maps are uncompressed. Here are a few scenarios: Yes, the build strings are different, but neither games read this value. Anyone can change these with a hex editor and it'd still be just as valid to either game. The only thing you can guarantee based on the header is whether or not something is a Custom Edition map. Yes, BSP vertices are stored differently, but the values used in one game aren't used in the other, so it is possible for either to be set to something that appears valid but isn't actually used. Yes, the tag data addresses are different, so usually the tag arrays will be different addresses, but this does not always have to be the case, and some map protections will exploit this for older, naive tag editors like Eschaton. The only reliable way I can think of for telling the difference between two maps is that CEA maps are compressed. invader-compress will also set its own 563 value in the header as the engine version when decompressed so it can still tell that the map is a CEA map. Ceaflate doesn't do that.
  18. CEA bitmap extraction now works. Turns out that MCC completely disregards everything in the bitmap data block (EDIT: when loading bitmaps - probably not when scaling them) and uses data from the .ipak files, instead. This can be fixed in extraction, but it's a pain in the ass. Thankfully I'm willing to do that.
  19. The console is still in CEA, even if it's a little difficult to reach
  20. None that I know of. Sorry. Halo PC has a bug where if you run the game in windowed mode, you can't run it at your desktop's native resolution. I think this was fixed in HAC2 - going to maybe look for a way to introduce this into Chimera.
  21. I suppose the link to the readme (that also comes with the .dll) should suffice then
  22. That command was removed and replaced with the much better chimera.ini system.
  23. I fixed a crashing issue when running on the demo version of the game. Check the original post for a new download link. Not presently. There used to be a command for blocking multitexture overlays but I didn't re-add it in the rewrite, as better options such as Jesse's HUD exist.
  24. I guess if I did make a dark and light theme, I would make the dark theme the default one. Those are a bit easier to read. I'm not really experienced with GUIs or theming, though, so that would be difficult to set up for me.