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

Everything posted by Kavawuvi

  1. So it seems Qt 6 will be dropping support for Windows 7 and Windows 8/8.1. https://www.qt.io/blog/qt6-development-hosts-and-targets Invader uses Qt for invader-edit-qt. This means that, if I use Qt 6, then Windows 7 support comes into queston. Basically, there are a few options on how this project can proceed: Stay on Qt 5. This only works for the short term, as Qt 5 will lose support as time goes by, especially on Linux. Pray that Qt 6 doesn't break on Windows 7. Since we have zero guarantee ANYTHING in Qt 6 will work, we don't even know what all will work. Drop Windows 7/8 support. Let me put this front and center: Windows 7 is better than Windows 10 and it isn't even close. I'd be impressed at how catastrophic Microsoft fucked up when making Windows 10 if it weren't for the fact that I have lost so much productivity on that operating system. Dropping the last decent version of Windows to ever be made by the good people at Redmond, Washington would suck massively. But Windows 7 is now considered "legacy" software, having fallen out of support years ago. Fewer things are supporting it these days, even if some software is dropping it for really dumb reasons. Switch to another GUI toolkit. I really don't have time to commit to such a massive project.
  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-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-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-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-sound - CLI program for generating sound tags ... 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: Site: https://invader.opencarnage.net/ Source code: https://github.com/Kavawuvi/invader Builds: https://invader.opencarnage.net/builds/nightly/download-latest.html Original version of this post (for posterity):
  3. You install this script That's it.
  4. The camera shake is now fixed when playing the game at a high frame rate. In addition, the camera shake is interpolated. Here's the rocket launcher, for example: The forum doesn't allow me to embed videos, so I made an ugly gif that sort of looks okay. If you want to see the 120 FPS video recording of this, I posted it on Discord. Also, the F2 (game rules) screen is also now interpolated, and it's no longer instantly appearing/disappearing at high frame rates unless you edit the chimera.ini file. This is similar to the scoreboard fix. Lastly, I fixed an issue where the scoreboard faded too slowly at low frame rates.
  5. Yeah. We used to have a means to embed videos when we were on IPB 3 when we had custom BBCode. That functionality was lost, so we'd need to install a plugin (costs $$$ or time if we want to write it ourselves) to readd it. Also, if you try to embed videos by editing the HTML directly, IPS will filter it out. The forum only supports embedding from the following sites:
  6. For a while, Chimera has had the option to randomize your CD hash whenever you join a server. We've decided to make this option default in the chimera.ini. Basically, a lot of servers have functionality to store the names of players. While this feature won't prevent your name from being recorded by the server, it will prevent your name from being associated with other names you've used by CD hash. Note that this will NOT block IP based tracking. This will also not allow you to circumvent bans if by IP (which is typically what most servers use now). You can opt out if you want, such as if you use a modded server that requires your CD hash for admin functionality, by commenting out (putting a semicolon at the beginning of) this line: hash=%
  7. I know SAPP requires its mapvote.txt file to be USC-2 with LE BOM ("UTF-16" in some text editors). Regular ASCII won't work sometimes. You did not actually upload your mapvote.txt file, so I don't know if this is the issue. What you can try doing is renaming the mapvote.txt, let SAPP regenerate a new one, and then open the new one in a text editor that supports the format, such as Notepad++.
  8. I've updated Invader a bit! invader-bludgeon can now fix invalid strings caught by invader-build. invader-build now takes rotation into account when placing objects and determining if they wouldn't spawn. It also now has some more checks. invader-compare can now look for duplicate tags. Fun fact: There are over 800 instances where a tag is a duplicate of another tag in the stock tag set. If you were to dedupe these, you could possibly save quite a bit of tag space in some maps. invader-edit-qt now has some help text for bitmap tags to help guide you through the various formats. invader-extract: You now have the option to not load resource maps. If so, then tags that require them cannot be extracted. However, this is required for some maps. invader-info: I've refactored it, and I've updated some of the checks in it to better diagnose issues. invader-refactor can now copy tag directories while also updating all references internal to said directory. For example, if you copy weapons\assault rifle to weapons\assault waffle, then the weapon, model, shaders, bitmaps, etc. will be copied to the new directory with the references updated to match the new paths. invader-string now checks to see if your last string ends with ###END-STRING###. This is to prevent you from generating string lists where the last string is missing. tool.exe does NOT have this check, interestingly, so it can have the issue. Anyway, Invader is now 0.37!
  9. I don't know if this is your issue, but the "Restore EAX" or "EAX Enabler" is basically just a version of Creative ALchemy modified by someone to work on hardware not authorized by Creative (which, it's just a crappy DRM thing - the sound processing is all CPU). In all honesty, Creative ALchemy is really bad, often times sounding worse than just not having a dsound.dll present in the first place. Use DSOAL instead. http://vaporeon.io/hosted/dsoal-builds/dsoal-latest.7z
  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 ( instead of either [maps that came with the retail disc] or [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. http://protonnebula.com/misc-files/vids/ipv6_halo.mp4 I added a connect6 command to HaloMD so it can connect to (modified) servers via IPv6. To HaloMD and SAPP, everything is on, because the program running runs on (forwarded server) and [iPv6 address]:2301 (to/from server). The syntax is also a little different from normal connect: connect6 <ipv6 address> <port> [password (is optional)] It's not as nice as I want, as it'd take so much work overriding everything with IPv6 and remapping everything. Also, if you get IP banned on SAPP, everyone gets IP banned. However, if IPv4 becomes unused by a majority of users, it won't spell doom for Halo PC.
  12. SAPP is an amazing extension for the Halo dedicated server, being the only extension that supports no-lead. However, its online documentation is a little frustrating to read through either because part of it is outdated, or sehe's site isn't up for whatever reason. Download: sapp-2.4.pdf (56 pages) View it on Google Docs: https://docs.google.com/document/d/1RAnl68RN8z0RAvJcPqnv94ngzWZ6xavaX1EHsAqHeJU/edit?usp=sharing Older versions:
  13. I've noticed there are several unfulfilled script requests. Let's fix that, together! If you complete one of these script requests (or any script request in which a staff member placed a bounty on the request), you can earn a set number of tickets. The number of tickets earned will be indicated above the link. Here is the process: Reply to the linked script request topic with your script. I recommend attaching your script to your post as links can go stale after a while. Reply to this topic with the link to your post to ensure your reply is seen. I'll probably still see your post even if you don't reply here, but I recommend posting here just in case I don't. To get a link to your exact post, click the share button on the top right corner of the post and copy the link. If I verify your script works correctly, then you will be credited tickets. If it does not work correctly, I will reply to your post telling you what is wrong so you can fix it. Verify that your script works correctly before posting. Starting on the first and third Sunday at 18:00 UTC of each month, bonus tickets will be awarded to the person who earned the most tickets that session from this contest as long as that person completed at least two (2) requests that session. These tickets do NOT need to be in your possession to win, thus the standings can even carry over to the next raffle period, and if not, you can use your tickets the moment you get them without affecting your standings. If there is a tie, though, then the prize will be split between the winners. The current bonus is 4 tickets. Bounties 15 tickets Squad System 5 tickets VIP escort gametype 4 tickets Animate a biped 3 tickets Vote for lo3 Spawn weapon to the passenger Expanded weapon respawn timer Prevent portal camping Change points for an item (A market) Remake of "Breakout" Gametype Block wdel $n with the flag 2 tickets Disable Rod or Rox or OS, or camo Weapon Layout script breaks CTF Custom spawns Suicide Area Vehicle spawner Record Stats Frag spawns Block Access to Map Area Current Standings (non-staff) --: -- TIP: Lower ticket values will typically take less time than higher ticket values (with the exception of 5 ticket requests), but, of course, they have a lower reward. If you are trying to get the bonus tickets and you are one or two requests away from the request requirement, try doing these! For more information on the monthly raffle, check out the FAQ. Lastly, happy scripting! This mini-contest will go on until either there are no more scripts or there isn't activity for an extremely long period of time.
  14. First off, after posting the previous news post about Chimera's Lua scripting, I was informed that requiring people edit the ini file in order to install -5XX scripts was, in fact, super dumb. Having thought about it, I agree. So, instead, I'm going to have a folder based on the Lua API version: Newer scripts go in to api-3 as such: scripts\api-3\my-1.0-script.lua Older scripts go into api-2 as such: scripts\api-2\my-5xx-script.lua I'll still allow you to configure in the ini whether or not you want scripts to load automatically or load certain scripts not automatically, but the default option will be to load everything automatically. Next, some frequently asked questions I've gotten over the new Chimera Lua API. What is the expected release date? I don't typically promise release dates. Sorry! Even though I have been working on a lot of other things, I'm still working on this Lua API to get everything I want in here, and maybe more based on feedback. Will scripts be available on release? There are a number of scripts I've written or will be written that will come with the newer API. Here are some examples: Auto balancing If teams are unbalanced, then the next player to die gets switched. This is retuned so it does NOT switch players who have contributed towards the team score in objective games. Xbox safe zones Elements at the edge of the screen will be drawn towards the center of the HUD. Taxi If you type "taxi" in chat, then you will be teleported to a vehicle, with the following order of priority (so if it doesn't find one, it checks for the next): Driver seat of a vehicle that is occupied by a friendly gunner or passenger Gunner seat of a vehicle that is occupied by a friendly driver Passenger seat of a vehicle that is occupied by a friendly driver Driver seat of a random unoccupied vehicle (optional) A warthog spawns at your location (optional) If you recently exited a vehicle, you will not teleport back to it unless there is no other vehicle to teleport to Recommended for Race Anti-glitch If you are outside of the BSP for longer than three seconds, you will be respawned Spawn protection If you spawn, all damage taken will be heavily reduced until you move. While protected, you will be unable to damage other players or throw grenades. As I give copies of the new Lua API to more testers, I imagine some people may even make scripts of their own and submit feedback. This is something that I want to be "semi-open" in which you may ask for builds. Of course, any time this is distributed, source code will always be public under a branch as per version 3 of the GNU General Public License. Do Lua scripts have to be GPL? Generally, they'd only have to be GPL if your scripts use GPL code or they are distributed alongside a GPL library or program such as Chimera. Merely writing a script for a GPL program's API does not make the script GPL. Will all scripts work with all version of the game? No. Many scripts already use memory pointers specific to one version of the game, and while I am providing a means to abstract these hardcoded addresses away in more sane and more universally compatible manner, I imagine some people will stick to what they're used to regardless. To ensure people on other versions of the game do not load scripts that break the game, I'm adding optional functions that scripts can run to tell Chimera what version of the game ([retail, custom, demo] and [client, server]) they can use. Will scripts for -5XX work with the newer API? Ideally, most older scripts should work fine, but some may not, and that is due to a number of limitations: It has one of the incompatibilities listed due to the switch to Lua version 5.4 It was compiled for Lua version 5.3 (we aren't supporting compiled scripts anymore, though it still wouldn't work even if we did) Subtle differences in the behavior of some functions (since they're being reimplemented) It is a map script (we're redoing how these are done) How will I be able to tell if a script is written for the newer or older API on the forum? Script releases will have tags. Will compiled scripts work? Probably not. Script compilation is more-or-less a form of unnecessary obfuscation. There are plenty of (more) effective ways to obfuscate your scripts without compiling your scripts, and while I wish people wouldn't do it, that's life. Will scripts work with protected maps? That will depend on the script. Some scripts require functionality that simply does not work on protected maps. I'll be looking into adding a variable you can check to see if the map is, indeed, protected. Chimera can already determine this with the chimera_map_info command. If anyone has any further questions, feel free to ask away.
  15. Chimera is distributed as a single .DLL because it's the least likely to be screwed up when installing. Let's just say that, throughout my days of making these kinds of mods, I've seen a lot of people fail to follow simple directions in the most spectacular of ways (though I'm... uh... not saying I've never messed up simple directions, myself, before O-O). For example, one of the ways people commonly mess their install up is by only partially updating something. That is, they replace a file with a new file, but that file requires a new version of another file, except they didn't update the other file. Of course, I'm don't think Lua is susceptible to this since the DLLs are named lua52, lua53, lua54, etc., but hey, better safe than sorry. So, at this current point in time, the official builds I put out will probably be static linked. You're certainly free to choose not to static link, of course, and this may be useful for having Lua scripts load DLLs that depend on the same Lua DLL (since you won't load the same exact Lua DLL twice).
  16. Chimera's Spanish translation is pretty incomplete, so I'm going to be offering a raffle ticket bounty for it at the following rates: 3 lines = 1 ticket 5 lines = 2 tickets There are 36 strings right now. If you were to translate all of them, it would come out to 15 tickets (36 -> 30 + 6 -> 2 x 6 + 1 x 3 = 15). At the time of this post, that would give you a 55.56% chance of winning the monthly raffle. EDIT: The bounty has been claimed. Thank you! Here are the strings: chimera_allow_all_passengers_command_help Disable team restrictions for vehicles. chimera_block_auto_center_command_help Set whether auto centering is disabled. chimera_block_button_quotes_command_help Set whether or not to remove quotes from button prompts. chimera_block_equipment_rotation_command_help Disable rotation from equipment spawns when hosting (emulates Xbox behavior). chimera_block_extra_weapon_blocked Blocked %s chimera_block_extra_weapon_error_cannot_get_object Failed to read your object (you are dead) chimera_block_extra_weapon_error_cannot_get_weapon Failed to read the weapon chimera_block_extra_weapon_error_not_enough_weapons You need to be holding at least 3 unblocked weapons. chimera_block_extra_weapon_error_weapon_already_blocked Your held weapon is already blocked. chimera_block_extra_weapon_help Block the weapon you're holding (must be holding at least 3 weapons) chimera_delete_empty_weapons_help Delete empty weapons when hosting (emulates Xbox behavior). chimera_error_cannot_download_retail_maps_1 Retail Halo PC and HaloMD maps are unsupported by the map downloader. chimera_error_cannot_download_retail_maps_2 Modify chimera.ini and set \"download_retail_maps\" under \"memory\" to enable. chimera_error_failed_to_open_init Failed to open init file %s chimera_error_must_be_in_a_server You have to be in a server to do that. chimera_fov_vehicle_command_help Set field of view for vehicles. Use \"auto\" for automatic FOV or suffix FOV with \"v\" to lock to a vertical FOV. chimera_fov_cinematic_command_help Set field of view for cinematics. Use \"auto\" for automatic FOV or suffix FOV with \"v\" to lock to a vertical FOV. chimera_fov_error_invalid_fov_given Invalid FOV given. Expected \"auto\", <FOV>, <FOV>v, or \"off\" chimera_send_chat_message_help Send a chat message on the given channel. chimera_send_chat_message_invalid_channel Invalid channel number %i chimera_send_chat_message_throttled You are sending messages too quickly! chimera_set_color_command_help Set your color. chimera_set_color_command_invalid_color Invalid color %s specified. chimera_set_name_invalid_name_error Invalid name \"%s\". Argument must be between 0 and 11 characters. chimera_teleport_help Teleport to a player or coordinates. chimera_teleport_invalid_arguments Invalid arguments were given. chimera_teleport_dead Failed to teleport: target is not alive chimera_teleport_dead_self Failed to teleport: teleported player is not alive chimera_teleport_success_mp Teleported %S to %f %f %f chimera_teleport_success_sp Teleported to %f %f %f chimera_unblock_all_extra_weapons_fail No weapons were blocked. chimera_unblock_all_extra_weapons_help Unblock all extra weapons. chimera_unblock_all_extra_weapons_success All weapons were unblocked. chimera_widescreen_fix_command_warning_cannot_disable_font_override_enabled Cannot disable widescreen fix while font_override is enabled custom_edition_netcode_command_error_needs_custom_edition_map_support Custom Edition map support is not enabled on your client. custom_edition_netcode_command_help Enable Custom Edition support. Note, anything written in snake_case should not be translated as those refer to configuration data or commands. Also, proper nouns like Halo or Chimera should not be translated. Lastly, double quotation marks require an escape character (i.e. \") but single quotes (i.e. ') do not. Substitutions (e.g. %s, %S, %i, %f, etc.) are used for substituting data in to make the message. For example, %s is substituted for text. They don't need to be in the same same exact part of the message, but if there are multiple substitutions in a message, they have to retain the same order. If it isn't possible to translate something without changing the order, let me know.
  17. I've fixed a few font override issues with the Spanish version of the game. This notably fixes the text issue with entering vehicles. The issue was caused by a line break which was likely added due to the text being so long.
  18. Oh yes I'm going to be downloading all the RAM today!
  19. 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 DualShock 4 (native drivers and DS4Windows) Razer Serval (via Razer Synapse 2.0) Xbox 360 Xbox One 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.
  20. One of my favorite ads
  21. I've fixed some UTF-16 issues with Chimera regarding exit messages. Also, some issues with custom chat were fixed regarding the characters that could be used (basically it's now being properly converted to UTF-8). Many thanks to surrealwaffle for this! Here's the pull request: https://github.com/Kavawuvi/chimera/pull/45 There are some known issues regarding some of the placement of text in things like HUD text (when on Spanish) or some help dialogs that appear when you're on Normal or Easy difficulty. I'm currently working on these, and I hope to have a fix.
  22. The console and chat now use system fonts, but there are still a few more in-game things that should be updated. Today I've updated HUD text as well as names above heads. This is best played with Jesse's HUD as seen in the above screenshots. There are a few things left to do: Add a font for names above heads, since it's typically smaller than even the regular font Update the name you see when staring at a player, maybe? Update the scoreboard, maybe? Update the postgame carnage report, maybe? Update the F2 screen, maybe? All-in-all, I've already covered most of the stuff you'll see in-game. And, of course, here's a 4K screenshot for the people who really want to see those pixels. Unfortunately imgur does not like really big images and made it into a jpeg. Oh well I guess. EDIT (2020-08-10 @ 06:41 UTC): Someone reported an issue with the fonts not being on when initially installed. Add "hud_text_enabled=1' to below [font_override] in the chimera.ini file as well as set 'enabled=1' to enable the whole thing. I've also re-uploaded Chimera with the modification in place.
  23. Menus are not currently affected by this feature, so you can use your universal UI, although your console may still be replaced. As for HUD text in custom maps, the only consideration I've given thus far is the option to not enable font overrides. I did consider disabling font overrides if the font in the map isn't stock. In fact, there are a few ways to do it (SHA-256 the pixel data, check if it's in loc.map, etc.), and assuming it's completely accurate, then the map will now always look as intended by the author, whether a Bungie map or custom map. However, the author can now give you a shitty or even broken console font. This is present in some maps, as tool.exe's font quality is awful and nobody has ever heard of Invader, so now your font is not only low resolution, but it's trash quality AND the cursor is invisible, so going around with the left and right arrow keys is screwy. Custom console with font overrides basically makes you immune to these memes. Also, having the chat font change between games between a vector font and a bitmap font is a little jarring, too, considering some fonts don't even support certain characters and Chimera has scrollback, basically resulting in the past being 'rewritten' in a sense. Lastly, some maps use better renders of the existing font. Ironically you'd get a lower quality version of the font, instead, since there's no way to differentiate between a custom font and a remastered font. For example, here's the gamespy font (used for displaying names above heads): The one on the left was made with invader-font. The one on the right is the one that came with Halo PC. The source fonts are (to our knowledge) the same, but again, tool.exe's font rasterization is terrible, while invader-font uses FreeType which is not terrible. You'd still get something better than the original font, but it wouldn't be nearly as good as having a vectorized font. And, of course, mixing vectorized fonts with bitmap fonts isn't great which is why I've recommended using a map that has Jesse's HUD.
  24. 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!