Invader

Kavawuvi
By Kavawuvi in Halo CE: Development,
  • 75 replies
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-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-extract - CLI program for extracting tags from a map 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-info - CLI program for getting metadata of a cache file 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.   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.   Source code: https://github.com/Kavawuvi/invader Builds: https://invader.opencarnage.net/builds/nightly/download-latest.html   Original version of this post (for posterity):