Kavawuvi

Administrator
  • Content count

    4584
  • Joined

  • Last visited

Everything posted by Kavawuvi

  1. It can be the tiebreaker.
  2. 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-compare - CLI program for comparing sets of tags and showing differences invader-convert - CLI program for converting between different tag types - highly useful for Xbox map porting invader-dependency - CLI program for listing the dependencies of a given tag OR the tags that depend on a given tag invader-edit - CLI program for scripting tag editing operations 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-model - CLI program for creating gbxmodel/model tags invader-recover - CLI program for recovering source data from tags 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-script - CLI program for compiling scripts. invader-sound - CLI program for generating sound tags invader-string - CLI program for generating string list tags invader-strip - CLI program for cleaning up tags Six Shooter (Windows only) - GUI frontend for Invader ... and (hopefully) more programs to come! You may be wondering, why am I taking time to replace the Halo Editing Kit, something that supposedly 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 and takes advantage of modern hardware to boot. ...is slow. This is due to thousands of unnecessary checks as well as the program, itself, not being compiled with optimizations. Invader is considerably faster than tool.exe! ...only guarantees to work 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: Site: https://invader.opencarnage.net/ Source code: https://github.com/SnowyMouse/invader Builds: https://invader.opencarnage.net/builds/nightly/download-latest.html Original version of this post (for posterity):
  3. The Rust rewrite of Invader has been going fairly smoothly, as you can now extract bitmaps and sound data from extracted tags. I've also been working on improving performance among other things. In other news, Discord announced that they were going to add support for subscriptions so you can support your favorite content creators in exchange for perks such as bonus content and cosmetic perks. So, to help with the development of Invader, I've decided to roll out Invader's new subscription plan which I like to call Invader++, replacing the old model entirely. With Invader++, you will get priority access to new builds, new features, and other services, all for a very low price! Here's the pricing for each tier: I imagine most people will probably get Invader++ Ultra. I will also be awarding one year of free Invader++ Ultra to the first person to the winner of this month's screenshot of the month. That's right, no pizza pics are needed today, just good old fashioned screenshots of your favorite game. Post your entry here and you might just win a free year of Invader!
  4. Good to see people still making maps for CE!
  5. I'm going to start releasing builds of the rewritten parts of Invader as those become more feature complete. For example, the new bitmap command is not only faster than old Invader but extremely accurate to tool.exe where it matters and straight-up better in all other cases, featuring higher quality DXT compression, highly accurate sprite sheet and bunpmap generation, highly accurate sharpening, and a superior blurring filter that is gamma-corrected. While an already superior tool in its own right compared to any other released bitmap tool, it also features more powerful data recovery, tag conversion, and script compilation, making it the best tool for all of these features. Being written in Rust, it is also inherently less prone to stability issues, being that nearly all code is "safe" Rust.
  6. It seems the download problem is an issue on the server's end, as it no longer works with the "new" way of downloading maps, where HAC2 uses the "old" way. I am planning to later push an update that uses HAC2's older method of downloading. Hopefully the problem will be solved then.
  7. 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.
  8. Oh dear, I hope things are okay!!

  9. I thought I would put here that this guide is now a bit outdated. They have cache version 13 in the header (0x000D) and the tag data address is 0x50000000. They also no longer use compression of any kind, so they are clear to read in a hex editor or with Eschaton. Otherwise they are still really similar to the retail Halo PC cache files, being that the game is based off of it rather than them opting to use code or features from Halo Custom Edition.
  10. 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.
  11. There is absolutely no valid reason to protect maps, but with protected maps, map makers decided to consciously and deliberately corrupt their maps so that only the stock game can load the map. Because we have tools that trivially defeat all common forms of map protection, then I think it is reasonable for modders and scripters to not be always expected to go through the hassle of adding support for what is basically complete bullshit. This does mean that a backlog of a few hundred maps will not be supported by these mods and tools, but again, these maps are easily fixed. Invader can easily and instantly detect most common forms of map protection, and Refinery can reverse most common forms of map protection. If you want to combat map protection, then these are your best friend.
  12. A bit of a year-long bump, but I think it is worth noting that, in recent news, 343 Industries are planning on dropping Custom Edition map support. This means that, if you want to run your maps on the latest version of the game, you will have to extract the tags and then fix them up and rebuild the map for Halo: Combat Evolved Anniversary. If any maps you liked were protected, then this will not be possible without fixing the maps. In fact, even today, map protection is still used. As previously stated, those map developers made a conscious decision to corrupt their maps, and in doing so, their content was essentially restricted to only one version of the game forever. All of this was to prevent people from extracting their tags and using them in new maps. However, moving forward, this is ironically the only way you will be able to play these classics on newer versions of the game. Despite this, there is a question raised in this thread: Should we respect their choices and leave their maps in the dust, the way the authors technically intended? Some people may say "Yes" here, and that's fair. Personally, I think we should absolutely not respect this decision. After all, it is unreasonable to expect someone in the 2000's to mid-2010's to know that this would be Halo PC's future. After all, Microsoft had long kept Halo as an Xbox console exclusive despite the player base having asked for a new Halo FPS on PC since Halo 2 Vista, effectively dashing away any hopes of us getting a new Halo PC release. Therefore, as a community, we should preserve Halo PC's history by porting our favorite maps to this newer engine. However, it does mean that a nontrivial amount of effort will be required for some maps, especially as later-generation protectors became a thing which did worse things than just nuke the tag paths. Now it's more important than ever to keep map protection out of Halo as: Map protection does not work with CEA Custom Edition maps will not work with CEA Protected Custom Edition maps are stuck on Halo Custom Edition Therefore, map protection should absolutely not be supported or enabled. Instead, we should support high quality map deprotectors that allow us to preserve these classic gameplay experiences. I, myself, am working on a new map decorruptor in Invader targeting various forms of map corruption, ranging from map protection to issues caused by Eschaton. One longstanding goal has been to port Phoenix 3 and Ice Floe into the CEA map format, but because of artifacts created by Eschaton's map rebuilding process among a few tag-related issues and weird tag paths (e.g. +++++++++++++++), it's not so simple to port it into loose tags.
  13. I love it! This is really good.
  14. I have moved. Far away. Sadly I could not bring my PC, so I'm going to be building a new PC! The CPU is going to be an AMD Ryzen 9 5950X since they've come down massively in price and are thus way more affordable. Intel just doesn't look very compelling at the $490-$590 price point right now. I plan on buying an NH-D15 cooler as well, but I'll need to make sure it fits. The GPU is going to be my AMD Radeon RX 580. Newer GPUs are too costly right now. I'm looking to start on 64 GB of RAM, but I plan to maybe upgrade to 128 GB. I'm still deciding on a decent motherboard, but 128 GB requires four DIMM slots. I'd prefer if there was no chipset fan. I'm also still deciding on a case, but the Corsair 200R looks really good. I've used this case before and found it to be very affordable but also very sturdy. Yes it's almost 10 years old, but no one makes that much better cases for $60, so this choice is very compelling. The SSD is initially going to be my older 500 GB Samsung 970 Evo, but I plan on installing a 1 TB SSD to hold games. I would rather avoid a hard drive. PSU is probably going to be whatever decent 750 W power supply I can get my hands on for around $90-$120 that isn't a nuke. PSUs are pricey, but it is better to not risk blowing everything up. Use cases for the build are coding, video editing, and gaming! Here's the PCPartPicker: https://pcpartpicker.com/list/Rmg6qm
  15. Invader supports the new features of CEA introduced in the MCC August 2022 Update. This includes the following: Script parameters are now supported! This goes for both compiling AND decompiling scripts. New functions and globals for scripting! These are more features you can use to make your maps more dynamic and do things you were not able to do before. New definitions! One useful flag you might like is the ability to turn off the "Jason Jones" hack. This is the patch Jason Jones famously implemented which, when compiling a singleplayer map, the pistol and plasma rifle would get buffed significantly. Now you can turn off this hack, making the pistol and plasma rifle more in line with the multiplayer versions. Note that it is recommended you update all MCC-related tools immediately, including both Invader AND the MCC mod tools from Steam. Running old tools on new tags causes issues, and 343 Industries never devised a good way to prevent this.
  16. 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
  17. Invader's received more updates and bugfixes! It now has all of the original HEK limits in place, and we're going to be providing some extended limits for things the base game is OK with but the stock tools are not. I'm also working on a Rust rewrite, and it's about 5x faster at loading tags than the current C++ implementation. Here is how long it takes to load d40b.scenario_structure_bsp, one of the largest tags in the entirety of Halo. Top is current invader-edit.exe. Bottom is the Rust rewrite compiled for Windows. The new parser is about 5.1x faster than the older one. On the same system, this tag takes over two seconds to load on Guerilla.exe. If we want to compare it to Guerilla, we could say it is 423.4x faster than Guerilla, but this would be misleading as it doesn't include the time it takes to load widgets. The actual metric is more like only 5.9x faster, where the current parser is only 5.6x faster than Guerilla. Invader also now supports the August 2022 update. For more information on what this entails, check out the MCC post here:
  18. A few months in, I'm working on getting a decent Internet connection. I'm currently using a mix between 5G and neighbor's wifi. (yes, using the neighbor's wifi is legal. iirc they get a discount from their ISP if they have a public hotspot)
  19. Sauce:https://imgur.com/gallery/QydBStF
  20. Status update: I installed two more SSDs: a 1 TB SATA III drive for Windows 11 and a 2 TB NVMe drive for games. I think SATA III SSDs are fine for OS drives. Sure they have somewhat worse startup times than PCIe, but this really doesn't matter after that simply due to the fact that they are not hard disk drives. I think keeping video game loading times as low as possible is more important, and if my Windows 11 install decides to be a slow pile of garbage after a few years of updates, I can just nuke the whole drive and reinstall Windows without affecting my games. SATA III drive is a 1 TB Crucial MX500. It's a fairly affordable drive with a decent amount of cache. The NVMe drive is a 2 TB Samsung 970 Evo. This drive is a bit more expensive per GB, but the speeds speak for themselves, and no cables are directly needed for it which makes cable management nicer. I want to keep my Arch Linux install, so it's taking up my second NVMe drive slot.
  21. Blue Yeti microphone and another pair of K702s. Sound quality from the microphone is really good. This might be the best microphone I've owned yet. Also holy shit, the DAC in the Blue Yeti microphone is goooood. Basically there is a headphone jack for monitoring, but it can also be used to play back audio from your computer, effectively making it an external sound interface.
  22. I just gotta get an Internet connection, and then I can join you at 2 in the morning... because of timezones. -.- I'm currently using the neighbor's wifi. And yes it's perfectly legal since it counts as a hotspot. Only problem is it is absolute shit... Like, this is the best I can get, and I have to be in a certain part of the building to get it.
  23. All right, I built it! There's a bit of clean up left to do, both inside the PC and outside. Basically, I haven't done any cable management yet outside of having things go through the back of the case, as my main goal for today is to just make sure it all fits and works. So while the airflow will at least be as good as it can be and there are no cables in danger of touching any fans, there are improvements to be made. Of course, this build isn't done yet. I have three upgrades in mind which I'll talk about later. When that happens, I'll post one final picture with the finishing touches. Here is the build successfully POSTing for the first time. And here is htop. So, what's next? Well, I made a mistake when planning my build and bought high profile RAM. This means the Noctua NH-D15 is missing a fan for now. I am going to be purchasing a full 128 GB kit of low profile DDR4 RAM later. This will cost about $500. I'll give the 64 GB of RAM to a close friend of mine. This 64 GB RAM will be a pretty nice, surprise upgrade for her. Next, I need a drive for Windows 11. I plan on buying a 2 TB NVMe SSD - enough for a large amount of games. This will cost around $200. Lastly, while the RTX 580 is a fantastic card, it is a mid ranged from 2017. Times have changed in the past five years, and Polaris no longer cuts it for modern games. Because Nvidia have decided to be nice recently and make open source drivers for their newer GPUs, Nvidia GPUs are going to soon be a viable option for Linux. Therefore, I have my eyes set on the RTX 3080. This would normally cost around $600, but GPUs suck to buy in 2022, so I'm going to be paying around $900 instead. Overall, this upgrade will cost me around $1500. But if Nvidia graphics cards stock stops being bad, maybe I'll pay even less? We'll see. But probably not. I've added a PCPartPicker link to the OP while I'll update as I go along, but as a "snapshot" of my current plans, it's https://pcpartpicker.com/list/Rmg6qm Note I will not be going with a dual GPU configuration. The airflow is not good enough to sustain this, and the maximum power draw exceeds my PSU rating. So, I will be dropping the current RAM and GPU once they have been replaced.
  24. To make custom reticles, you need to make a bitmap tag that has your reticle in it. To do this, you can use tool.exe or invader-bitmap to turn a color plate into a bitmap tag. To do things like setting position, scaling, type, or other things about the reticle, use a tag editor such as Guerilla or invader-edit-qt and make or edit a weapon_hud_interface tag.