Welcome to Open Carnage

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


  • Content count

  • Joined

  • Last visited

Everything posted by Kavawuvi

  1. 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-build - CLI program for building cache files from scenario tags invader-crc - CLI program for calculating the CRC32 checksums of cache files invader-dependency - CLI program for listing the dependencies of a given tag OR the tags that depend on a given tag invader-font - CLI program for generating font tags invader-indexer - CLI program for generating a list of all of the tags in a cache file or resource map (useful for invader-bitmap) invader-resource - CLI program for generating resource map files (i.e. bitmaps.map, sounds.map, loc.map) ... 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. Source code: https://github.com/Kavawuvi/Invader Builds: https://invader.opencarnage.net/builds/ Original version of this post (for posterity):
  2. Invader 0.10.0 is now out! invader-bitmap has been massively overhauled. with supports for sprites, 3D textures, cubemaps, interface bitmaps, height maps, as well as the ability to make P8 bitmaps. Detail maps and 2D textures are also better, too. Also, dithering has been improved and is now available for 16-bit and P8 bitmaps. You can read the entire changelog on GitHub: https://github.com/Kavawuvi/Invader/blob/master/CHANGELOG.md Here are all of the changes since 0.7.2: Added A changelog is now used to track changes invader-bitmap: Added --usage (default, bumpmap, and detail) and --bump-height parameters invader-bitmap: Added support for bitmaps with color plate data invader-bitmap: Added support for cubemaps, sprites, 3D textures, and interface bitmaps invader-bitmap: Added the ability to specify custom spacing for sprites invader-bitmap: Added the ability to specify bitmap type in the command-line invader-bitmap: Added p8-bump support based on Stubbs the Zombie's palette Changed invader-bitmap: Spacing now attempts to sort both vertical and horizontal to see if sprites will fit in a sprite sheet invader-bitmap: Changed how spacing is stored in the bitmap to effectively match how tool.exe calculates its spacing invader-bitmap: Double multiply sprites now simply replaces the pixel like tool.exe rather than alpha blend into gray invader-bitmap: Usage and the p8 compression flag are now preserved invader-bitmap: Height maps now generate bump maps similar to tool.exe invader-bitmap: --detail-fade replaces --mipmap-fade and is now only usable on detail maps. invader-bitmap: --detail-fade now approximately matches how tool.exe does fade to gray invader-bitmap: Dithering is now available for 16-bit and palettized bitmaps invader-bitmap: Dithering now takes an argument: `<channels>`. Channels are letters (i.e. `argb`). invader-bitmap: Sprite spacing now affects the maximum number of mipmaps you can have with sprites invader-bitmap: Non-divisible by 4 bitmaps are no longer compressed invader-bitmap: Registration point calculation has been changed to better match tool.exe's calculations invader-bitmap: Alpha is now ignored when checking if a pixel is blue, magenta, or cyan Fixed invader-build: Fixed an issue with certain sounds not being played correctly, such as the "Come on! We've got to get the hell out of here!" dialogue at the start of the game invader-string: Fixed cutting the last character of every string Removed invader-bitmap: Removed being able to specify negative mipmaps to remove mipmaps As always, you can get builds from https://invader.opencarnage.net/builds/nightly/download-latest.html and https://invader.opencarnage.net/builds/nightly/
  3. blue-gen is something I quickly whipped up on request, originally being a Linux alternative to halospritedoer written in C. By request, it has been released for Windows, as well. What it does is generate TIFF sprite sheets from BMP/PNG/TGA/TIFF images to be used as input for invader-bitmap OR tool.exe. By default, it uses blue and magenta for the color plate data, but if it detects that you are using either color for your bitmaps, it will choose a different color for the color plate. There are two programs: blue-gen and Blue Genstone. blue-gen is a command-line program that does all of the work (see the readme for the exact usage). Blue Genstone is a graphical user interface for blue-gen. You can use blue-gen by itself, but if you use Blue Genstone, ensure that blue-gen as well as any dependencies (e.g. DLL files) are the same folder. Here's the command-line program in action: I also made a GUI for it as a proof of concept: And here's the Windows version which has been slightly updated: Download (Windows 64-bit): blue-genstone-r2.7z Source code: https://github.com/Kavawuvi/blue-gen
  4. As of Invader 0.8.0, invader-bitmap can now make sprites, cubemaps, 3D textures, and interface bitmaps. I've updated the original post with this. We're a little over halfway there for a full open source HEK replacement.
  5. 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? The Halo Editing Kit is unmaintained and unsupported. It contains plenty of bugs, and it is not very user-friendly. It also contains numerous limitations and restrictions that may make sense with the limited 64 MiB memory of the original Xbox but not a PC game even from this time period. It was also made for much older systems (pre-2004 systems), and while it still works with modern systems due to Windows's robust backwards-compatibility support, issues have crept up in the past that make some things worse than what they were in the past (Sapien and Guerilla have UI issues, for example). Also, to use the Halo Editing Kit, you must agree to an additional restrictive license that takes away your freedom to use their software. Invader, on the other hand, uses the GNU General Public License version 3.0 which ensures that the software is free and stays free. Mozzarilla and Refinery are part of the MEK which use the MIT license, a license with even fewer restrictions than the GNU GPL. But the worst of all is that the Halo Editing Kit is closed source and nonfree. Locking down the source code is not only unhelpful to the modding community, but if people begin relying on the software, it proves to be detrimental to the modding community. Why? Because if the software stops being actively maintained and supported, the modding community ends up having to rely on this unmaintained and unsupported software, resulting in potential complications and issues. If issues arise (bugs, limitations, or better ways to do things have been found), there is no way to update the software without resorting to reverse engineering and modification of the binary, so people end up being stuck with the limitations and bugs of the older, closed source software until this happens. In a way, the closed source software ends up being worse than not having the software in the first place. What needs done? Questions we can answer right now: How do you edit your tags? Use Mozzarilla. How do you make string list tags? Use Mozzarilla. How do you make HUD message list tags? Use Mozzarilla. How do you make your bitmaps? Use Mozzarilla or invader-bitmap. How do you build your multiplayer maps? Use invader-build. How do you make your fonts? Use invader-build. How do you make sprites? Use invader-bitmap. How do you make cubemaps? Use invader-bitmap. 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. Questions we cannot answer right now: How do you make your sounds? We don't know yet. 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 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. How do you build your singleplayer maps? We don't know yet. Milestones to achieve? Making a HUD from scratch: Requires being able to edit tag data (use Mozzarilla) Requires being able to create 2D texture bitmaps (use Mozzarilla or invader-bitmap) Making a simple multiplayer map: Requires being able to build a map (use invader-build) Requires being able to create scenario tags (use Mozzarilla) Requires being able to edit tag data (use 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 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 edit tag data (use Mozzarilla) Requires being able to make sprites (use invader-bitmap) Requires being able to make cubemaps (use invader-bitmap) Requires being able to make a HUD for weapons, units, and vehicles (can be done fully in Mozzarilla, optionally using invader-bitmap for bitmaps) Requires being able to make collision model tags (use tool.exe from the HEK) Making a new campaign map: Requires being able to edit tag data (use Mozzarilla) Requires being able to make string tags (use Mozzarilla) Requires being able to create scenario tags (use Mozzarilla) Requires being able to make sprites (use invader-bitmap) Requires being able to build singleplayer maps (invader-build works, but it cannot yet place firing positions correctly, so use tool.exe from the HEK for better results) 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 create sounds for voice acting (using 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 Mozzarilla) Requires being able to make fonts (use invader-font) 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?
  6. Good job! While I probably wouldn't use this on my own servers (I feel it is part of the core Halo experience even if it is technically a glitch/bug), I can see why people wouldn't want it. Being able to reload a weapon without holding it is pretty stupid.
  7. This project has moved to Invader. Check out Invader here: There are a few differences between the original plans of TiaraCE's map parser and Invader that are worth noting: Invader is licensed under the GNU General Public License version 3. Invader satisfies a larger set of use cases beyond simply parsing maps including compiling cache files. Invader does not parse Xbox maps. Invader does not target Visual C++ with Windows. Instead it uses MinGW. Invader does not require macOS compatibility. Invader does not use information from Sparky's plugins. Invader's tag definitions are more complete than either Sparky's plugins or Guerilla since Invader must build maps. Invader uses the C++17 standard, not C++11. Old post (for historical reasons):
  8. My efforts towards this map parser have gone towards Invader. I'll probably go update the original post to indicate this.
  9. Praise is nice as an ego boost, but honestly, all I want people to do is test my stuff. I do get bug reports from people every few days ago, but it's rarely on here. Also, while it is true that I don't upload builds anywhere else, I've provided a means for people to get the latest build (which is automatically uploaded every day or so) without having to compile it themselves. Therefore, it is unnecessary make a reply to this topic for new builds. Before I started using this system, I was able to track how many people downloaded a certain build, and I found that nearly every build I posted had 0 downloads. This meant that nobody was testing the builds I was posting. Has that suddenly changed for nightly builds? Maybe, but it's unlikely. Each of these updates takes time to write. I have to go through the past source commits as well as look at issues that were resolved. Then I have to use that aggregate information to write a forum post in a way that non-programmers will understand. I really don't want to commit so much time into writing so many posts, as it seems like they just go nowhere. I'm still going to post updates for those who are interested in the project, but they're going to be more condensed and much less frequent.
  10. I haven't posted a full update in a couple days, so I guess I'll do that. I've posted Invader 0.7.2. Here are the changes since 0.5.0: An issue with invader-bitmap was fixed. invader-string has been started. Currently it only does string_list and unicode_string_list tags. HUD message text tags are not implemented yet. Some more hidden values have been calculated for machines. This probably won't fix anything, but for the sake of accuracy, I did it. When building maps that potentially use indexed tags (loc.map), invader-build will now compare the string data rather than comparing file size to determine if it matches what is in loc.map. invader-build no longer allows you to go beyond the number of bitmaps/sounds/loc tags used in stock bitmaps.map, sounds.map, or loc.map when building multiplayer maps, nor will it allow you to go beyond the Invader-extended tag set when building singleplayer/ui maps. This is to discourage people from creating a situation where you would need different, custom resource maps for different maps in your maps folder. This is also to discourage people from creating multiplayer maps that require custom resource maps - something which could theoretically happen accidentally when using a map downloader. Due to the lack of interest in Invader/this topic on this site, I'm not going to be posting updates here as often. Sorry! Continue to check nightly builds and the GitHub repository for updates, though.
  12. I fixed a bug with invader-bitmap. It wasn't setting the pixel offset value correctly.
  13. (Icon is by SteamFox) Chimera is a mod that adds additional functionality to Halo Custom Edition. Features: Enables player_magnetism without requiring HAC2 or devmode Fixes descoping issues in multiplayer servers Fixes aim assist, enabling it for both the movement and aiming versus just aiming (chimera_magnetism) Adds diagonals to analog input when in multiplayer servers (chimera_diagonals) Mimic's Xbox's automatic uncrouching when using analog input (chimera_auto_uncrouch) Enable anisotropic filtering without using config.txt (chimera_af) Override HUD with splitscreen HUD (chimera_split_screen) Allow video input to continue playing even when tabbed out (chimera_tab_out_video) Disable multitexture overlays (chimera_block_mo) Disable multiplayer map fade transition (chimera_skip_loading) Disable zoom blur and pixelation (chimera_block_zoom_blur) Make objects' movements appear much smoother to take advantage of higher framerates (chimera_interpolate) Allow mouse users a more granular sensitivity control (chimera_sens_mouse_<h/v>) Set deadzones for controllers (chimera_deadzone_looking and chimera_deadzone_movement) Show budget information for map developers (chimera_budget) Disable the 30 FPS lock in cutscenes (chimera_uncap_cinematic) Throttle your frame rate to a set frame rate (chimera_throttle_fps) Prevent your vehicle from aiming for you (chimera_block_vehicle_camera_leveling) Fix the scope when scoped (chimera_widescreen_scope_mask - requires HAC2 widescreen fix) * This feature requires Halo Custom Edition to function properly. Cyan features are enabled by default without user input. Green features are disabled by default and require use of the console to enable them. Use the chimera command to list commands. Download (build 49): chimera build 49.7z There is also a Discord server: https://discord.gg/ZwQeBE2 FAQ Very frequently do people ask me the same questions about Chimera, so here’s a little FAQ about it. How do I install Chimera? Place chimera.dll into your controls folder. What OS do I need? Windows 7 or newer OR Linux with Wine 3.0 or later. Older versions of Windows or Wine may work, but they are unsupported. If you are on an unsupported operating system, do not submit bug reports. Is there a list of commands? All commands are listed in the help menus using the chimera command. Is Chimera compatible with HAC2 and Open Sauce? Yes. Is Chimera compatible with HaloMD? No. Will Chimera be integrated with HAC2 or Open Sauce? No. What levels of interpolation do what? This graph details what levels do what: Note: Off is 0, Velocity is 1, Low is 3, Medium is 6, High is 8, Ultra is 9. Ultra has the same level of interpolation as High, but no distance check optimization is in place. Will interpolation work on frame rates higher than 60 FPS? Yes. Objects are jittery with interpolation on. Here is what I'd do: First of all, if you're not using the latest version of Chimera, install this. If you have vSync turned on, try turning it off. vSync causes poor frame pacing in Halo and can result in dropped frames even on fast hardware. If you need to throttle your framerate, use chimera_throttle_fps 240. If you need to play without tearing, use HAC2's borderless window feature (play in -window and set resolution to Windows's resolution). Using -vidmode always enables vSync. If you're getting bad performance (lag spikes or average frame rate dropping below refresh rate), turn your interpolation setting down. It's likely your PC cannot keep up. I recommend these settings if you want to use chimera_interpolate 3 or higher: If you're going to use chimera_interpolate, I recommend you have at least these specifications. These should get you chimera_interpolate 3 (low), max Halo settings (make sure you aren't locked to 30 FPS), 1080p, at approximately 60 FPS: CPU (Intel): Intel Core 2 Duo E8400 (3.0 GHz) or better CPU (AMD): AMD Athlon II X2 250 (3.0 GHz) or better Graphics (Intel): Intel HD 3000 or newer Graphics (Nvidia): NVIDIA GeForce 8600 GT or better Graphics (AMD): ATI Radeon HD 5450 or better RAM: 4 GB Note: These values are listed only for reference and are recommendations. The chimera_interpolate command does not directly utilize the GPU, nor does it use a large amount of RAM for interpolation, but your game will run better if you have enough RAM for the rest of your PC. If you're getting good performance but your interpolation setting is less than 9, try turning it up. It's possible the object in question isn't being fully interpolated. Is the retail version of Halo supported? No. Halo Custom Edition on version 1.10 is the only version supported by Chimera. Are versions of Halo earlier than 1.10 supported? No. Does Chimera work with scrim mode? Client-sided features (interpolation, anisotropic filtering, zoom blur removal, etc.) are not affected by scrim mode. However, the server-side Lua script, which includes fixes for lag and analog movement, will not function. Does Chimera automatically update or have update notifications? Currently, you are responsible for keeping Chimera up-to-date, and if there is an update, you will have to come back here to get it. Notifications are planned, however auto updating will not be included. Why are Chimera releases slow? Chimera does not function on donations, thus development is done on a portion of my personal time. If it takes a while, it takes a while. SPV3 includes Chimera. Are you in CMT? No. Can I install Chimera on my Mac? Yes. Install Windows, buy the Windows version of the game (if you don't own it), install Halo Custom Edition 1.10, then place chimera.dll into your controls folder. I can't install Windows on my Mac. Can I still install Chimera? Yes. Simply buy a PC, install Windows on it (if Windows isn't preinstalled), buy the Windows version of the game (if you don't own it), install Halo Custom Edition 1.10, then place chimera.dll into your controls folder. Older downloads If you need an older version of Chimera, here are older versions:
  14. That doesn't help me. You need to explain what a timer/"partner respawn's in" is, and you'll need to explain what you mean by it not being steady. I can't help if I don't know what you're talking about.
  15. I'm an author? Does that mean people want a sequel to Bomb Walk?
  16. I'll try, but I can't guarantee this will be added.
  17. Here's a fix for the chimera_block_gametype_rules command. Download: chimera-20190830T024658Z.7z Map downloading is planned. No. The amount of time it would take to do this without disabling/removing any of Chimera's features, ensuring HAC2 support indefinitely, and making sure everyone gets Chimera updates in a timely manner would basically turn developing Chimera into a part time job that I don't get paid to do. Sorry, but you'll just have to use an older version of Chimera if HAC2 support is absolutely required. What do you mean?
  18. I've added chimera_auto_uncrouch and chimera_shrink_empty_weapons. This means that all commands from previous versions of Chimera have been added in with the exception of a few for various reasons that I won't be adding in. Here's an update to Chimera's netcode that I posted on the Chimera Discord: Anyway, with all that bad news out of the way, here is a download to the new build. Download: chimera-20190829T164912Z.7z
  19. Gravity is a function of acceleration (over time the object gets faster), so you do need to use 25% gravity for 60 TPS since acceleration is distance divided by time squared. So, a = d / t2 To show what I mean: d / ((1/30 second)2 * x) = d / (1/60 second)2 1 / ((1/30 second)2 * x) = 1 / (1/60 second)2 1 / (1/30 second)2 = x / (1/60 second)2 x = (1/60 second)2 / (1/30 second)2 = (1/3600 second2) / (1/900 second2) = 900 / 3600 = 0.25 Therefore, to get the same exact acceleration but at 60 TPS, you must multiply your acceleration by 0.25. This not only applies to gravity but also to things like vehicles.
  20. I've added chimera_deadzones. Download: chimera-20190828T063612Z.7z I've decided to not implement this command in future versions of Chimera. Sorry.
  21. Here is me rendering the same font five times: one on Windows 10 using tool.exe, one on Wine using tool.exe, one on Linux using invader-font, one on Windows using invader-font, and then one using GIMP, a free image editor. I did also test invader-font on Wine, but it produces completely identical results (byte-for-byte) to running it on Windows 10. Here's what I noticed: The invader-font tool produces nearly identical results between Linux and Windows 10, with, at worst, a 0.4% difference in intensity on certain pixels. This is not surprising since they both use the same FreeType library. GIMP seems to have somewhat different antialiasing than invader-font, resulting in it looking a little more intense. Otherwise, it looks around the same. The Wine result does look partially correct, but the spacing is too narrow, resulting in some characters touching one another. For example, the "la" in "lazy" and "ha" in "halo(" have zero spacing between each other. Also the period is a square. The Windows 10 render of the font barely resembles the font at all, somehow managing to look even worse than the Wine render. Not only does it very noticeably lack anti aliasing, but it isn't even monospaced. Like Wine, the period is a square. In other news Invader is now 0.6.0.
  22. Invader is now 0.5.0! This is yet again another major change. Here are the changes: invader-build can now forge the CRC32 of maps it builds (--forge-crc or -c) invader-crc's forging CRC functionality was removed in favor of invader-build since it lets you forge a CRC at the same time as building a map invader-build now puts the CRC32 in the header of the map As always, you can download builds at https://invader.opencarnage.net/builds/nightly/download-latest.html
  23. Invader is now 0.4.3! Once again, another major change. Here are the changes: Added another program to the Invader toolkit (invader-font). This allows you to create font tags from .ttf files. The way encounters' BSP indices have been determined has been revised. This fixes the T-posing issues in d40.map (The Maw).