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


  • Content count

  • Joined

  • Last visited

About Kavawuvi

  • Birthday April 10

Extra Information

  • Gender
  • Contributed
    $100 (US) to Open Carnage
  • Raffle Victor

Computer Details

  • Name
    Dark Citadel
  • Central Processor
    AMD Ryzen 5 2600
  • Motherboard
  • Graphics
    MSI GeForce GTX 1070 Gaming 8G
  • Memory
    32 GB [2x 16 GB] G.Skill Ripjaws V Series
  • Storage
    500 GB Samsung 970 EVO
  • Power Supply
    EVGA SuperNOVA 650 G3
  • Case
    Fractal Design Node 804
  • Display
    Acer G257HU smidpx 25" 2560x1440 60 Hz
  • Keyboard
    MAX Keyboard Nighthawk X9
  • Mouse
    Logitech M510 Wireless Mouse
  • Operating System
    Arch Linux

Recent Profile Visitors

101,606 profile views
  1. Here's a heavily requested update to Chimera. It's not really that big, funnily enough, since it really only took a day or so to make it, but here we are. Basically, a lot of people have been complaining about the blurry, low resolution of the chat. This is because Chimera uses in-game fonts, and these are pre-rendered for 480p and stretched using linear filtering. This is safe to use because it doesn't have any external dependencies, and it works well on Wine, dgVoodoo2, and DXVK. Now, with one small change to your .ini configuration, you can use a system font, instead! This change affects all Chimera commands that draw text (outside of the console), including showing your frame rate, budget, and coordinates, as well as spectating and showing all of the color codes you can use in chat. And, yes, you can choose which font to use. In fact, you can supply a directory of fonts if you don't want to use a system-wide installed font. I can't take all of the credit. Sehe provided some code for me to more or less play around with from his Halo Chat V2, and it was pretty easy to figure out from there. Note that this is not based on Halo Chat V2, itself. And it's actually using the same exact custom chat code it has before, so it's just as configurable as it always has been, not including the addition of font customization. Note, however, that there is a caveat to this. Wine does not work well with this, having issues such as incorrect spacing (if using Wine by itself) or rendering artifacts (if using Wine with DXVK installed via Winetricks). Suffice to say, Wine is a less than perfect implementation. Also, you cannot use this with the widescreen fix disabled if you're not playing at 4:3. If you do, uh... bad things happen. Therefore, if you have the widescreen fix and you are not playing in the 4:3 aspect ratio, this feature will be disabled. The widescreen fix requirement and the Wine issues are why it's not enabled by default, but it's easily enabled by editing the included chimera.ini file. Lastly, the work-in-progress Lua scripting's draw_text function can utilize this feature by passing a string ("small", "large", "console", "system") in place of a tag ID, and if the user has this featured enabled, it will display using it! If you don't want to this in your Lua script, note that passing a tag ID will always use that tag ID (unless it's an invalid tag, which the only text you'll see is "Gathering exception data..."). Anyway, that's all for now. Enjoy!
  2. I'm working on a slight overhaul of the draw_text functions, allowing the option to use system fonts instead. Here's 1920x1080 featuring the chat, budget, and FPS (locked to 60) Also works with the name when spectating (1280x720): Unlike many other implementations, this is fully compatible with dgVoodoo2 and DXVK. However, Wine's font rendering is... uh... not good, and it has some graphical artifacts when using that. In other news, the FPS counter has been fixed when using fonts higher than 20 pixels.
  3. From Discord: tl;dr: No more Mr. Nice Mouse. I am going back on supporting HAC2, and I don't think you can convince me otherwise.
  4. I've done some more work on Invader. For a start, a number of invalid string tags are now caught by invader-build and reported as errors. This includes the following: Strings with a size of zero bytes (not the same thing as an empty string since those have a null terminator) Strings without a null terminator Strings with a size that isn't divisible by the character size (i.e. a unicode_string_tag with half a character) Strings with invalid line endings These issues are caused by tools that edit string list tags and can potentially cause issues in-game, so they are caught by invader-build. Tools that generate string list tags such as tool.exe and invader-string do not have these issues. I'll be adding an option in invader-bludgeon to make such invalid tags valid if you want to use them. Invader's vector checker is now more sensitive, catching more vectors that tool.exe doesn't like when doing things like generating lightmaps or building cache files. invader-build now errors on these, since they aren't technically valid vectors, but you can use invader-bludgeon to normalize them so they work. Matrices are no longer displayed on one line in invader-edit-qt.
  5. This one's a small update: I've fixed a crashing issue with loading temporary files when maps in RAM is disabled. An issue with Halo running in the background having issues with focus has been fixed. This fix was submitted by lag supreme (Keystone) from Discord: https://github.com/Kavawuvi/chimera/pull/39 The chimera_map_info command has been added. This will allow you to view the name, build, and some other information about a map such as protection. This was submitted by Jerry from Discord: https://github.com/Kavawuvi/chimera/pull/38
  6. I’ve been getting a few questions about Chimera as a server ever since I’ve announced that I was looking into making it into a server. I figured I’d address them here, too. I don’t like to announce things before I do them because that sort of makes me obligated to do exactly what I said, so I’ve tried my best to word things as if it’s merely planned and not promised. I could, for example, get hired for a job and stop working on Halo stuff forever, or I might simply decide not to do this anymore. Or I could tragically get hit by a bus unexpectedly, and while I do hope that doesn’t happen any time soon, I try to make as few promises as possible. So, yeah, take everything I say with a grain of salt, as always, until you can run what I'm saying on your own PC at least. This is the best way to not get disappointed with expectations - by not expecting anything at all! What features are planned? Chimera already has a number of bug fixes, so it only makes sense that the server should have bug fixes, too. These bug fixes include fast loading and weapon spawn timing being fixed. In addition to bug fixes, some extra features have been added such as the option to use Xbox equipment rotation, the option to delete empty weapons, and access to some of Chimera’s ini options such as the initialization options. There are also a few debug commands such as basic teleportation which “just work” on the server. Also, for Lua scripting, I imagine that many scripts that work on the client will work on the server since I'm not planning on changing the scripting API. However, some features may work differently, and there may be some events that won't work. Therefore, if your script requires features that only work on the client (e.g. camera control), I recommend checking, in your script, what version of Halo you're running. Refer to the to-do list for the planned list of features, though note that I have more ideas than what are listed here: https://docs.google.com/spreadsheets/d/1WzUCMm99xvPDXumGyC4tmmWb_BmJ-ZR-caQUcdAfeRk/edit#gid=0 And, of course, you have the option to use the mods folder for loading additional DLLs just like you can with the client. Note that any mods you load will be unsupported by myself, of course, but the option is there if you want it. Will there be a readme? A readme is already included with Chimera, and you can also view this online on GitHub: https://github.com/Kavawuvi/chimera/blob/master/README.md How does Chimera compare to SAPP? This is a question I get asked the most. Similar to how Chimera is not and never has been or will be a direct replacement for client mods such as HAC2, Chimera is also not a direct replacement for other server mods such as SAPP. This will not change. SAPP has features such as its easy-to-use custom events and commands system which Chimera will not include. SAPP also has a very robust admin system which, again, Chimera will not include. And, of course, SAPP includes a number of other heavily used features such as scrim mode, aimbot detection, and a wealth of fun “naughty” commands which, again, will be absent from Chimera. All-in-all, besides Lua scripting, bug fixes, Chimera’s existing features, and, of course, support for Wine, there really isn’t much planned for Chimera as a server. In fact, there won’t even be auto updating just like with the client. And, of course, updating Chimera requires restarting the server unlike SAPP which can be replaced in the middle of a game if desired. I know a few of you wanted an open source SAPP option of some kind, but the truth is that I’m just not interested in making a SAPP replacement. Obviously, people who want SAPP want an option that provides lots and lots of features out-of-the-box, so I imagine most get SAPP for its utterly titanic wealth of features. Why should I take so many hours to give you basically the same thing? After all, I highly doubt most people even care about the fact that Chimera is open source when it comes to considering their choice of mod, and I don’t blame them. Chimera, on the other hand, is intended for people who want to tinker with or fix Halo, and the goal is to provide a lean but open source option with a powerful Lua scripting engine to boot. Anything extra is added through Lua scripts. When will this be released (if it does)? I don't know. After I finish Lua scripting at least? I hope these answer most people's questions. If you have any further questions, feel free to comment below. Don't expect any further updates regarding Chimera as a server until I have something tangible to show you.
  7. As of today, I've started implementing the new Lua API, so I'm going to discuss that in this topic. First of all, for the API, itself, there are a lot of changes being done in here, with the inclusion of dozens of new functions and callbacks that have been planned. Most of the read_*/write_* functions are the same, but how callbacks are set is mostly different, and some functions have been changed. Scripts that target this API, therefore, will require this to be set: clua_version = 3.0 Also, an optional global can be set in addition to this to run a function immediately after initializing. This will allow Chimera to check the Lua API version before executing anything else. clua_init = "OnScriptLoad" As you can guess, version 3 of the API, itself, is not backwards compatible with older scripts (which use version 2), meaning you'll have to use the older API for these scripts. Which brings me to the next point: How Lua scripts are loaded is now slightly different, and it uses the chimera.ini to determine which scripts to load automatically. Here is an example (commented) configuration: [lua] ;=============================================================================== ; Lua initialization settings ; ; This is used to configure Lua ;=============================================================================== ; Set whether or not scripts, by default, are loaded automatically without ; needing the `chimera_lua_load` command. By default, this is disabled. ;autoload=true ; Set whether or not Lua scripts compiled into maps are supported. ;internal_map_lua=true [lua.scriptname] ;=============================================================================== ; Example Lua initialization settings for "scriptname.lua" ;=============================================================================== ; Set whether or not the script can be loaded automatically without needing the ; `chimera_lua_load` command. If unspecified, use the global "autoload" setting. ;autoload=true ; Use an older API (by default, the latest version is used) ; 3 = Chimera 1.0's Lua API ; 2 = Chimera -5XX's Lua API ;backwards_compatibility=2 This does alter how you load scripts. Instead of merely copying the scripts into the scripts folder, you also need to indicate in your ini whether or not you want to automatically load. You can still use the older behavior of loading everything automatically, but you have to set that, yourself. Also, since the newest API is not backwards compatible, you need to specify which API you want to use if you want to use something that is not the latest version of the API. For example, if you wanted to install the fp_legs script, then you would copy it to the [Halo's -path]\chimera\lua\global folder as usual, but you also need to put this in your chimera.ini: [lua.fp_legs] backwards_compatibility=2 If you don't do this, then it will try using the latest version (version 3) of the API of the Lua API and you'll get an error. For scripts that use the latest version of the Lua API, you do not need to put anything in chimera.ini unless you want to configure how scripts are automatically loaded. Also, Lua version 5.4.0 is used, and this was released last month. These are the main changes from the Lua readme: Lua version 5.4.0 is used regardless of if you use the older or newer API. Simultaneously including two versions of Lua is infeasible, and the differences are likely not significant enough to break any existing scripts. Note that everything in this topic is subject to change as I'm still at the start of working on this, and it may be a while before you see a Chimera build with Lua scripting. If anyone has any questions, feel free to reply here.
  8. Yeah. It basically does what Eschaton does. None that I know of, but I'm planning on releasing a decorruptor for Invader.
  9. A couple issues with Chimera have been fixed, except this time they were fixed by other people and not me. The issue where objects are interpolated when the game is paused has been fixed. This fix was submitted by Jerry from Discord: https://github.com/Kavawuvi/chimera/pull/32 The issue where chat input would have some characters being duplicated if typing too quickly was fixed. This fix was submitted by lag supreme (Keystone) from Discord: https://github.com/Kavawuvi/chimera/pull/33 I'm also going to be adding an option to configure the widescreen fix. Jerry posted some tweaks which got the widescreen fix to work better on a ui.map as well as fix an issue with a Halo 3 HUD. This will have to be configurable per-map, as it causes issues with certain stock assets including the sniper rifle HUD. Lastly, a bug where the About information used the wrong bitmap was fixed. This was also submitted by Jerry: https://github.com/Kavawuvi/chimera/pull/31 Many thanks to everyone who has contributed to this project. You are all awesome!
  10. Please note that this guide is purely for educational reasons and NOT to develop map protectors. All protection techniques discussed in this post are easily thwarted by today's tools. In fact, map protection is never a completely effective way of stopping tag extraction because of a simple rule: If Halo can open it, then it can be extracted. I do know of a number of other map protections (and how to break them), but I'm not going to go over them in this topic until the tools to break them are released. In fact, if you use any unmentioned methods, then please note that I will not only break the map protection (and release the tool used to do it), but I will leak all of your tags to drive home the fact that your tags are, in fact, not safe from my grubby mouse paws. You have been warned. With that out of the way, let's get started. Note that this will be a bit of a more low-level guide, so it is not a guide on how to use a map deprotector per se (please refer to the deprotector's respective readme for this). What is map protection? Map protection is basically a form of corruption intended to make maps difficult to read from anything that is not the Halo game. Most forms of protection take advantage of the fact that a lot of data in cache files is redundant and/or unused, and by corrupting this data, you can confuse programs that assume this data to be correct. This is typically used to prevent tag extraction, and the reason is generally to make it so only the author (who has the original tags) can use the tags. Ironically, most protected tags are not even owned by said author, but that's a topic for a different discussion. Tag path obfuscation The most common form of map protection is tag path obfuscation. Most tag paths are not read by the game, so they can be changed to either random garbage or a message like "Map by New001 DON'T TOUCH" in the map that is only seen when viewing the map in a program. The exception are some hardcoded paths which are used by the game to refer to things like globals, certain bitmap tags, etc. This form of map protection cannot be reversed, but it isn't actually necessary to reverse it to extract the tags. Simply make the tag paths into something sane and unique. There are also methods that can be used to make tag paths into something actually useful to make it easier to identify what has been extracted, too. Tag class obfuscation Tag class (or tag group) obfuscation is fairly common. This takes advantage of the fact that the identity of the tag class (e.g. 'bipd' = 'biped') isn't read by the game. For example, object tags are not identified by the tag class but by an enumerator in the tag, itself. Initially, the way tools broke this was by finding tag references and inferring the tag classes from them. However, this isn't effective if the references, themselves, are obfuscated (though note that some references cannot be obfuscated such as object attachments as these are actually read). The only way to effectively break it is to infer them based on actual tag definitions and what each reference can possibly reference, instead. Tag array displacement Tag array displacement involves moving the tag array to a different part of the tag data besides immediately after the tag data header. This is only effective at stopping programs that assume the tag array location such as Eschaton. It just so happens that MCC does this, too, so doing this will also stop MCC from loading your map. While this form of map protection cannot reliably be reversed, it has no effect on programs that use the pointer in the tag data header for finding the tag array.
  11. I had no idea this version of the song existed. Wow.
  12. What you're asking is how to do something called "seeding" with your server. Seeding is looked down upon here, as it's basically lying to players that have players that are present when, in fact, you don't. This causes your otherwise empty server to be listed for clients that have that stuff normally filtered out, and it tricks players into joining your empty server thinking they'll actually get a game. To answer your question, people generally join and AFK in the server 24/7 (you may notice that the "seeds" have generic names like Shadow or Walla Walla). Or they fake the query packets and there isn't even any seeds present. Either way, it results in unsuspecting players joining a game that is truly empty. If you are actually planning on doing this yourself, then rather than ruining the game for everyone, why not host something that is actually interesting for players to join?
  13. event_kill is only triggered when a player kills another player. event_die is triggered when a player dies in any circumstance, including being killed.
  14. A few days ago, I fixed a longstanding issue where dialogue that wasn't supposed to play would play. Also, the "blend shared normals" flag in model tags now works (this flag linearly averages the normals of all vertices with the same position). Lastly, sound_looping tags now have their distances correctly set. There are only two pending issues left for invader-build: script compilation (which only applies to maps that contain child scenarios which have scripts - most people don't do this) and Xbox map compilation. This means that, unless there are any unknown issues that have not been reported due to a lack of testing, invader-build is almost feature complete. Next, invader-edit-qt has received a few improvements. It now has a color picker. You can also play sounds from different pitch ranges: I'm also working on adding groups and documentation for the tag fields to better assist you in making tags, and some of this text will be rewritten to better explain fields. Here's an example: