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,412
  • Joined

  • Last visited

About Kavawuvi

  • Birthday April 10

Extra Information

  • Gender
    Male
  • Contributed
    $100 (US) to Open Carnage
  • Raffle Victor
    One-time

Computer Details

  • Name
    Dark Citadel
  • Central Processor
    AMD Ryzen 5 2600
  • Motherboard
    MSI B450M MORTAR
  • 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

115,532 profile views
  1. I've been thinking more about the new scripting API, and having talked with a few other people, we found this to be the best thing for Chimera (and Halo modding in general) moving forward. There are two key things: No functions for reading/writing to arbitrary memory addresses More functions for reading/writing values of objects, gametypes, players, etc. Let's refill the ammo of the player's weapons, for example. In the Lua API, you do something like this: local player = get_player(PlayerIndex) local dynamic_player = get_dynamic_player(PlayerIndex) if dynamic_player ~= nil then for w = 0,12,4 do local weapon = read_dword(dynamic_player + 0x2F8 + w) if weapon ~= nil then write_float(weapon + 0x23C, 0) write_float(weapon + 0x240, 0) local weapon_tag_data = read_dword(get_tag(read_dword(weapon)) + 0x14) local magazine_count = read_dword(weapon_tag_data + 0x4F0) local magazine_address = read_dword(weapon_tag_data + 0x4F4) for m = 0,magazine_count-1 do local maximum_reserved_ammo = read_word(magazine_address + 0x8 + m * 112) write_word(weapon + 0x2B6 + m * 0xC, maximum_reserved_ammo) local maximum_loaded_ammo = read_word(magazine_address + 0xA + m * 112) write_word(weapon + 0x2B8 + m * 0xC, maximum_loaded_ammo) end end end end Using addresses requires assuming that everything uses the same offset. This might not be the case on some versions of the engines for some things. In theory, the same code above could be represented with this code instead: local player = engine.get_player(player_index) local dynamic_player = player.get_object() if dynamic_player ~= nil then for w = 0,dynamic_player.get_weapon_count()-1 do local weapon = dynamic_player.get_weapon(w) weapon.set_heat(0) weapon.set_battery(1) for m = 0,weapon.get_magazine_count()-1 do local maximum_reserved_ammo = weapon.get_maximum_reserved_ammo(m) weapon.set_reserved_ammo(maximum_reserved_ammo, m) local maximum_loaded_ammo = weapon.get_maximum_loaded_ammo(m) weapon.set_loaded_ammo(maximum_loaded_ammo, m) end end end Using functions does not require this assumption, as the mod handles this for you. This guarantees that your script will be portable for any version of the game that uses this scripting API. There may be some things that will only be possible in the older API that will not be possible in the new API, so the older API isn't going to be going away any time soon, even if I start on the newer API. However, note that anything that uses the older API will be stuck on its respective game. The new API, on the other hand, is intended to be portable, and it may be ported to other versions of Halo: Combat Evolved such as MCC (if MCC ever becomes viable to mod lol), and since these read/write functions may not work very well on non-Gearbox versions due to completely different addresses/offsets/signatures, the older API won't be ported over. I'm still planning on expanding the older API with newer functions, events, etc. It isn't going to be inferior to the newer one (besides the portability and verbosity), but note that it'll always be a product of its time (after all, doing things like this is how we've always modded Gearbox Halo, right?), and using it isn't advised if you want your script to work beyond whatever version(s) of the game you wrote it for. For some people who prefer the old ways of modding, I imagine they'll be fine just targeting Halo Custom Edition, retail Halo PC, and maybe even the demo version (of course, there's no way to detect what versions a script that uses the older API will work on, so it'll be up to the community to do that). For people getting into scripting as well as some more seasoned script writers who want to get back into modding Halo through Lua scripting, they may find the newer API's verbosity and portability to make their lives easier and their scripts more pleasant to read and write. Update (2020-11-18): I wrote down that I was going to use, but due to the apparent lack of support and updates for it, I might decide against that. Its forum is kinda dead, so, yeah... I'll probably use Lua for this too. Update (2011-11-19): Added information regarding the new vs. old API.
  2. Yes. Jerry is definitely MVP here.
  3. It's back. Many thanks to Jerry for porting this! There are still some things left to do, but a lot of scripts should work as they did before.
  4. I've gotten a large amount of feedback from people in regards to how the retail-only fixes are handled. Many people wish to have these fixes present in Halo Custom Edition, and the common suggestion is to have a toggle for these fixes. I think making this stuff optional globally isn't the right way to go about it, given that the scope of this project is to fix Halo. After all, would an update give you an option to re-break the game? Probably not. So instead, I'm looking into writing a Lua script that disables these fixes for select maps. This means that, for the maps that are broken by these fixes, you can choose to disable the fixes for them. Since most maps are not affected by this as they only use the stock tagset, it is safe to have the fixes on by default for most maps.
  5. When's creative mode coming out?
  6. Well, what can I say? Halo's a dark game.
  7. The flashlight intensity has been corrected. Note that this fix will ONLY apply to retail Halo PC and the demo version. Custom Edition will not receive the fix to avoid altering the experience intended by map developers. Anyway, this mostly impacts the campaign, notably levels like 343 Guilty Spark, Keyes, Truth and Reconciliation, and The Maw. Lastly, before anyone asks, the yellower color of the reflections is due to how Halo PC does environment shaders. I'm not sure how to fix this. UPDATE: I've been asked by a couple people about why the flashlight fix is exclusive to retail Halo PC and the trial. There is no technical reason. Actually, the reason this fix doesn't apply to Halo Custom Edition is because there may be maps that use custom flashlights, and these would be affected by the change. Therefore, to preserve the map author's intended experience, the fix is disabled on Halo Custom Edition. Similar to the shader/fog fix, I added a compile-time flag you can set if you want to build a chimera.dll file that has the fixes enabled on all versions.
  8. This cover is AMAZING.
  9. As @Sunstriker7 stated, modern PCs won't care. 64 - 23 = 41, thus Chimera will increase memory usage by a fixed 41 MiB. Extra RAM usage does NOT directly impact frame rate unless your system is starved of RAM. Most gaming PCs have at least 8 GiB of RAM, with the latest gaming PCs typically having 16 GiB of RAM or more. Not everyone is on a modern PC, so let's look at an old PC. Halo's system requirements are listed here: https://www.systemrequirementslab.com/cyri/requirements/halo-combat-evolved/10234 Halo recommends 512 MiB of RAM. We're talking about a PC from 2003, so 512 MiB was what was mid-ranged (perhaps slightly higher) back then. Pretty much every desktop PC sold within the past 10 years has had well over 512 MiB of RAM. 2-4 GiB was pretty common in 2008 with Core 2 Duo CPUs which seem to be pretty commonplace with Latin American players. But let's assume, for a moment, you were on a mid-ranged gaming PC from 2003 and you had 512 MiB of RAM. Would 41 MiB be a lot? 41 MiB / 512 MiB = around 8%. So, that means that if you're on a PC that is so old that you have only half a gig of RAM, an additional 8% of your total RAM will be used. I really don't think this is going to be noticeable if you're just running Halo and maybe a few things in the background and, again, your PC just so happens to be THAT old. Of course, if you're running a dedicated server, it's a slightly different discussion. If you're trying to host Halo on a box with only 512 MiB of RAM, then if the game normally takes up 100 MiB but now has to take up 141 MiB, the number of games you can run simultaneously is reduced from around 4 to now around 3. It's unlikely this will be a big deal for most people, but if you're the type of person that thinks it's a good idea to host about 200 Sniper Gulch servers, you're going to be needing another 8.6 GiB. All-in-all, 41 MiB is a small price to pay for a more than doubling of the tag space. That said, we were considering 48 MiB tag space instead of 64 MiB. This would mean only an extra 25 MiB instead of 41 MiB which might matter if you're trying to run against Halo Combat Evolved's absolute minimum requirement of 128 MiB of RAM. However, those systems probably shouldn't be used for playing even stock Halo. ...or games in general.
  10. So, first test! I want to see how well 64 MiB works on people's systems. As such, I've compiled a release of Chimera that increases the tag space usage. You shouldn't need any LAA patch for this to work, but if you do, let me know. Download: chimera-1.0.0.r698.44ada2d.7z I also got a couple questions asked from people: Does this mean Chimera will support Open Sauce maps? No. What does this mean for people who don't have Chimera (such as HAC2 or OS users)? The map format should be fairly straightforward to implement, and if I do this, I'll post documentation. I'm not planning on adding any tag extensions in the vein of Open Sauce. Anyway, if it works, let me know. Or if it doesn't, let me know. You'll know it didn't work if the game presents a "Can't allocate memory" sort of error message from Halo.
  11. Screw cheaters in multiplayer games. They are why anticheat exists, and anticheat is probably the second worst thing to come to PC gaming next to aggressive DRM. I'm 100% for this stuff being shut down.
  12. I'm working on a new map format that is intended to solve a few problems: Halo's tag space limit is only 23 MiB Halo is fragmented into different versions, with what seems like around 25% of the player base on the retail Halo PC version and the rest on Custom Edition Halo has some tag data features locked away that requires mods to fix, namely PCM audio and 32-bit environment textures Halo has an issue where indexed tags count towards the limit, resulting in potential crashing when using non-English loc.map files from certain languages of the game if you are close to the tag space limit when building for English The new format we're coming up with should aim to alleviate these issues. These are the following features being devised: Extended tag space (23 MiB ---> 48 MiB or 64 MiB depending on what we can get Halo to load successfully without an LAA patch through further testing) In all honestly, unless you have an excessively large BSP, it's unlikely that most maps will exceed 48 MiB of tag space All clients that load these maps support PCM audio and 32-bit environment map textures, giving you the option for the best quality textures and audio All clients that load these maps will also support indexed tags properly without it counting against the tag space limit Maps will work on both demo and full version (including both the retail Halo PC release and Custom Edition), with two separate "blobs" for each Each tag "blob" shares raw data and model data, so only BSPs and tag data have to be different between blobs This means tag data will be twice as large, but zstandard should mostly alleviate this issue If loaded on Custom Edition, ting volume and stun values are automatically fixed All stock multiplayer maps are indexed and CRC32'd, ensuring they will work over the Internet if joining a server provided that all tags are present and accounted for As for enabling this, you will need to ensure you have Custom Edition resource maps present. If you are on Halo Custom Edition, you already have that. If you are on the retail version of the game or the demo version, refer to this topic: I wanted to put this here before I started releasing tools that actually let you build these maps. I don't imagine I'll actually receive very much input about this, but I figured it was worth a try. It's worth noting that it isn't difficult to implement these things. Other mods are welcome to implement these changes, and if I do finish this, I'll document as much as I can about it.
  13. I fixed a crashing issue that occurred if you used chimera_load_ui_map or backed out of a server being spammed to join (it uses the same function to disable playing main menu music). This issue was reported yesterday, so thanks to the person who found it!