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

Kavawuvi

Administrator
  • Content count

    4,332
  • Joined

  • Last visited

Posts posted by Kavawuvi


  1. I've added more controller configurations, partly in thanks to this topic:

    We now have profiles for the following controllers:

    • Microsoft Xbox 360
    • Razer Serval (via Razer Synapse 2.0)
    • Sony DualShock 4 (with or without DS4Windows)
    • Steam Controller
    • Xbox One
    • Xbox One S

     

    Feel free to continue submitting gamepad information in the above topic for easy tickets if you have any gamepads that are not listed!

     

    I've also fixed a few issues with compiling Chimera from source, namely issues that occur if you don't have cURL installed.

    Tucker933 and (SBB) Storm like this

  2. Invader is dropping direct support for Halo: Combat Evolved Anniversary (MCC) maps.

     

    This means that Invader, itself, will not natively support building CEA maps or extracting tags anymore. There are a few reasons for this, but it mainly boils down to the fact that supporting both CEA and Gearbox Halo PC maps at the same time would be insane for a project developed by one person (me) while trying to add new features. I don't know how many times I've added a feature, only to break MCC or break Gearbox Halo PC maps and having to take time to fix that, too.

     

    I am planning on writing a couple tools that use Invader and build/extract MCC maps, but they will not be a direct part of Invader by themselves.

     

    Anyway, let's talk about why this change is being made.

     

    It is impossible to identify a compressed CEA map without decompressing part of it, unlike every other type of map file.

    Because CEA maps compress the header, it is impossible to determine what kind of map it is without decompressing it. This is a pretty big deal, because I can't be sure if, say, bitmaps.map, sounds.map, or loc.map files are actually MCC maps, so I have to attempt to decompress it. This makes things like map loading less efficient, as a result, and it also makes it prone to being broken by feature additions.

     

    It is impossible to rationally tell the difference between a CEA map and a retail Halo PC map, and this is an IMPORTANT distinction.

    Halo: CEA changes up the rules for map parsing in its format, yet for some reason, they decided to continue using engine version 0x00000007, the same as retail Halo PC. These are different formats, though! Here's a list of what they did:

    • CEA maps no longer use a fixed base memory address. Instead, they can have any base memory address, and this address is derived from the tag array address. It just so happens that there's a tool that does the EXACT same thing: Eschaton. This means that MCC maps cannot have their tag array moved, but Halo PC maps can.
    • CEA maps (that are stock) use a different base memory address than Halo PC (0x40448000 instead of 0x40440000).
    • CEA maps' BSP data can overlap the base tag data by address. Just going by the map alone, the tag space would appear to have been reduced to 16 MiB (in actuality it was increased). However, BSPs are loaded in separate buffers, and this 16 MiB window provides a high chance for an overlap. Halo PC maps cannot do this, thus Invader's map parser accounts for this when it comes to potential BSP data being placed in tag data (Invader's -O does this).
    • CEA maps can have BSP data located outside of the BSP tag, itself.

    Maps are limited in what custom assets can be used.

    Someone (likely Saber) changed the way bitmaps and sounds are loaded to a way that completely bypasses tag data. Basically, all of the bitmap data is located in the inplace1.ipak file and referenced in .imeta files, and the sound data is located in .fmod files. For whatever reason, CEA does NOT use tag data for determining the location or format of bitmap and sound data, even if that data were internal to the map, itself. This means custom lightmaps, textures, sounds, etc. are impossible by map file alone. You can use custom assets, but to do so, you'd need to replace the inplace1.ipak file, the fmod files, and the .imeta files of all maps. The inplace1.ipak file is a massive file, containing both CEA and classic CE assets. Unless you're okay with all of your other maps not working, you need to include that, too. Most CEA custom maps work around this massive limitation by deleting the lightmaps (so everything is fullbright - better than not being able to see anything I guess) and swapping textures with stock CE textures until it resembles the original.

     

    What tag data is even used?

    It appears that the way 343 Industries prefers to fix issues is through code. A quick look at the game executable confirms that they use a large number of hardcoded tag paths, thus some tags are directly referenced for some reason. From reading discussions from 343 Industries developers, this somewhat implies this. For modding, this limits us even further. This quote basically sums tag data in CEA up:

     

    Getting custom maps to work on MCC is an error-prone process.

    As seen in Storm's video, even correctly installing a map can fail, resulting in even 2v2s failing to work in some custom games.

     

    Correctly installing a map requires replacing an existing map while modifying a file in a completely separate file. This is a far cry from Halo: Custom Edition (or Halo Trial / retail Halo PC with a mod like Chimera) simply letting you copy the map into the maps folder. Speaking of which, the game, by popular demand, has anticheat. Guess what anticheat does NOT like you doing? Replacing or modifying files. This limits how you can even play the game. Even a theoretical "Refined Anniversary" would have to be played with anticheat turned off, and you're only limited to singleplayer and custom games.

     

    We don't know how modding support will work, assuming CEA will even support custom maps.

    We don't even know how 343 Industries plans on supporting custom maps in the future, if at all. We assume that, if they wanted to, they would want to support Halo: Custom Edition maps, and if they do, Invader supports generating Halo: Custom Edition maps, anyway.

     

    --

     

    tl;dr:

     

    It's difficult to support a game that is actively and openly hostile towards custom content being loaded. Invader is developed by two people, with me being the only person who actually writes code. I do this in my spare time, and I do it for free. Maybe it'd be different if I was actually getting paid for this, but I'm not. Also, Invader's scope is tag data and maps that reference or have tags. Traditionally, a Halo map file is an archive of tags. However, this game actively disregards tag data, and its assets are stored in ipak/fmod files which do NOT use tag data to reference.

     

    Supporting something that falls within the scope of Invader (Halo PC) and something that is well out of scope (CEA ipaks, etc.) at the same time in one project is insane, so this was the path we both agreed on.

    Zatarita and (SBB) Storm like this

  3. 15 hours ago, VoidsShadow said:

    Summary: Razer Serval can be treated identical to an Xbox 360 controller after Razer Synapse 2.0 is installed.

     

    Razer Serval (Optimized for Android OS)

    Xbox-styled with two extra buttons for Android usage.

     

    * Requires Razer Synapse 2.0 for triggers to work correctly on Windows else Z-axis will bind to R-Stick horizontal axis and Z-rotation will bind to R-Stick vertical axis.

    After drivers are configured, there are three axes, ten buttons, and an 8-direction POV hat according to Windows' game controller joy.cpl applet.

    Listed as an Xbox 360 controller in Device Manager.
    The Android buttons are remapped as extra Back and Start buttons. The power/Guide button is no longer mapped. There are 10 buttons

    However, LT and RT are now mapped to the Z-axis. R-Stick is now mapped to X-axis (Horizontal) and Y-axis (vertical). Button IDs are changed to match a standard Xbox 360 controller's IDs.

     

    Should I try getting my Xbox 360 Kinect working on Windows again? That would be a really stupid and pointless endeavor especially seeing as it wouldn't translate well to the button press strings.

    Added Razer Serval as a duplicate of Xbox 360, then.

     

    And, uh... lol.


  4. I've just recently added controller button text support to Chimera as of this topic: 

     

    As such, we have some example configurations for people to choose from. You can see all available configurations at https://github.com/Kavawuvi/chimera/tree/master/controller_config

     

    However, we only have a limited number of controller configurations available. That is, we only have the following:

     

    Windows

    Linux

    • Xbox (original)
    • Xbox 360
    • Xbox One

     

    If you own a controller that has not been submitted yet and you're eligible for tickets, then you can earn four (4) tickets by submitting a list of each button/axis and what they physically map to (e.g. "Button #1 corresponds to the A button, Axis #1 - corresponds to the left stick being pushed up, etc."). This will only take you a few minutes, so it's easy tickets.

     

    If an unlisted controller uses the config of another controller (e.g. controller X works exactly as an Xbox 360 controller), you can earn one (1) ticket by simply saying that it is. This will only take you a few seconds, and one ticket is enough for a chance to win the monthly raffle.

     

    Make sure to note your operating system and what software you're using to get your controller working! Some controllers require custom drivers, and that can impact button mapping. For example, the built-in Windows driver for the Xbox One controller registers the left and right triggers as one axis, where the Linux drivers address them as two separate axis.

    ST34MF0X and Tucker933 like this

  5. Chimera now provides the option to substitute controller button names. Sadly, it's text only, but this should, at least, be an improvement over "Hold "BUTTON #3" to pick up...". You can configure this from within chimera.ini.

     

    Here are some screenshots:

     

    Qhwc3lZ.png

     

    osaog4Q.png

     

    9xqqloS.png

     

    77wZqrT.png

     

    ouz9gU5.png

     

    Because there are many different controllers, no default configuration is given. However, I've included an example controller configuration here: https://github.com/Kavawuvi/chimera/tree/master/controller_config

     

    Note that I only have an Xbox One controller that I can plug into my PC, so this is currently the only config file available.


  6. 59 minutes ago, ferxo0o said:

    Maybe it's due to my game settings being at a low resolution of 640px. I had to change the server port to 2302 to fix it, but I have 2 sv with the same ip but different port, and in both only data from the 1st server appears.

    Today, I fixed the issue with servers not on port 2302. Check the announcement here: 

     

    59 minutes ago, ferxo0o said:

    About the "spam to join" is there a way to implement it?

    Maybe, but I'm considering whether that's even a good idea to implement.


  7. Good afternoon.

     

    Here's what I did today:

    • I've fixed an issue with failing to query servers that are not on port 2302. The issue was that, although I was reading the port, it was defaulting to 2302 even so.
    • I've also fixed an issue with parsing bookmarks with passwords.
    • You can now add bookmarks without specifying a port. They will default to port 2302.

    I've also added a new channel, #git-log, to the Chimera Discord server. You can now see updates as they're made without ever having to go to GitHub.com. Clicking on a specific commit hash will display that commit in your web browser.

     

    COf9SZl.png

     

    Note that this is, of course, not a replacement to general announcements like this, as an announcement can also include screenshots and give rationale. Commits only cover changes, and features can span multiple changes and commits.

     

    Instead, you should think of this as a way to receive updates for the project in real time. 

    ST34MF0X, Tucker933 and ferxo0o like this

  8. Well, I don't imagine anyone wrote any tools specifically designed to port Halo maps to Unity, but you might be able to extract vertices from the gbxmodel/scenario_structure_bsp tags in the map and convert them into a mesh that is in some Unity-compatible format.

    Enclusion likes this

  9. On 6/19/2020 at 7:52 PM, ferxo0o said:

    Will it be possible to add a waiting room like hac2 to wait for a slot in full servers?

    https://imgur.com/831FdET

    That isn't really a waiting room. What people call a "queue" we call "spam-to-join" because it spams the server until it can successfully allow you to join.

     

    On 6/19/2020 at 7:52 PM, ferxo0o said:

    and I have a problem with servers with a port other than 2302; for example my favorite server has port 1000 and when I add it to bookmarks it doesn't look in the bookmark list it just shows a space.

    https://imgur.com/wmqYyHQ

    You're using fixed function shaders. You made a similar post in another topic, so I won't retype my reply, but for the sake of continuity, here's a link:

     

    On 5/30/2020 at 1:51 AM, altairibnlaahad said:

    Yeah i downloaded the official patches from bungie website

    The issue was due to multihack.exe changing Halo's code. I made those particular features optional in the latest update, so Chimera won't close Halo if it can't use the features.

    Tucker933 likes this

  10. On 6/17/2020 at 9:19 PM, ferxo0o said:

    when i add a server to bookmarks with port other than 2302 it doesn't show up, it just shows an empty space but if i select it with alt + (number) it works. Servers with port 2302 have no problem.

    too happen with the history list

     

    kYRdwRQ.jpg

    You're using fixed function graphics (e.g. -useff, -use00, -safemode, UseFixedFunction, SafeMode, etc.) rather than pixel shaders.

     

    Unfortunately, on the Windows version of the game, using fixed function graphics breaks certain aspects of the game (especially on newer GPUs), particularly overlays like the console and HUD. On the console, only every other line is rendered.

     

    Note that fixed function shaders are used for getting Halo to run on hardware that doesn't support running the full game, and this really only includes low end hardware from around Halo's release date (2003) or hardware from before it.

     

    Anyway, this isn't a Chimera issue, nor is fixing this a priority since all modern GPUs support the full graphics.

    ferxo0o likes this

  11. From the Chimera Discord:

     

    Quote

    So it seems having the master server be seamlessly made into one list will *not* be feasible for Chimera. The problem is that there is no sane way to determine if a server is using the Custom Edition or retail netcode.

     

    Halo PC actually has a check in place to determine if the version is wrong, and Gearbox specifically made the versions between retail and Custom Edition clients different while also making the check exactly the same so you *could* gracefully handle retail Halo PC attempting to join Custom Edition (and vice versa). Ideally, what I would have done is have Halo PC attempt to join using the PC netcode, and if the server says the version is wrong, change it to the correct netcode.

     

    However, this approach does not work because SAPP, the most commonly used server mod, removes the version check, and there is no client-side verification. With this, when retail Halo PC tries to join Halo Custom Edition servers with the retail netcode, the game takes a shit for around five seconds (pressing escape does NOT cancel this) and then says "Network connection lost" as an error. A "Network connection lost" error *might* be due to the version being wrong, but it might not be. Either way, you were forced to wait several seconds before anything could actually handle it. Fuck that.

     

    Want to see this yourself? There's a single Custom Edition server that somehow managed to get onto the retail Halo PC master server running Bigass multiple times (no that's not a typo - there are 6 listings of the same exact server), and if you join it, you get to watch the client choke on bullshit sent by the server because the mod on the server removed the very thing that prevented this.

     

    Therefore, if I implement this feature into Chimera, then the way to switch between netcodes and server lists will be using a command.

     

    This was not what I originally wanted, and it reveals just how fucked up this game is (and the modding that goes on). In truth, I wanted it to be totally seamless, and it could have been. However, you have 10000 IQ geniuses who wrote version changers to support morons who refuse to update old clients for invalid reasons.

     

    Sorry for the inconvenience.

     

    tl;dr; The only way to switch between server lists and netcodes is with a command, and I'm not happy with this.

     

    If you're wondering what I mean by "However, you have 10000 IQ geniuses who wrote version changers to support morons who refuse to update old clients for invalid reasons," the original 1.00 release of Halo Custom Edition was generally used for piracy and cheating. However, newer versions aren't immune to piracy, and cheaters can fuck off, thus there actually isn't any legitimate or valid reason to use old versions of Halo Custom Edition. Also, those versions have known exploits that can be easily abused where newer versions have them patched.


  12. 4 hours ago, WaeV said:

    Haha, love this technical term.

    The needler is a very naughty model.

     

    I did look into the issue a bit further. Funnily enough, invader-extract is not the only extraction tool that exhibited this bug.

    Ryx likes this