Welcome to Open Carnage

A resource for Halo 1 modding and tech, with unique means of rewarding individual 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. Here is another small update: invader-build: New argument: --always-index-tags. This will force all indexable tags to be indexed without checking, speeding up map build time slightly. Only use this if you have not modified any tags present in bitmaps.map, sounds.map, or loc.map. invader-bitmap: Dropped libpng, instead opting for stb Added support for TGA and BMP formats through stb TIFFs won't have their RGB multiplied with alpha by libtiff anymore. If you want this behavior, do it yourself. You don't, though. Want to test this? You can download a build (Windows 64-bit) here: invader-win32-20190717T223957Z.7z edit: Uploaded a new build again. I just realized that accidentally built this with outdated code.
  2. Invader is a work-in-progress, open source tag data compilation tool. What this does is it converts a scenario tag in a tag directory into a cache file. While I can't guarantee anything will come of this, I'm giving this a try at the very least. Why do this? I'm bored and I want to work on something other than Chimera for a change. How long has this been worked on? Since 2018-07-25 What could this (theoretically) do? There are several uses for a map compiler. Building (your) maps While the obvious use is building a map, many argue that when you compile a map with tool.exe, then the resulting map belongs to Microsoft. Often, these people will cite the End User License Agreement and tool.exe specifically, despite the fact that neither the Halo Custom Edition EULA nor Halo Editing Kit EULA indicate anything about tool.exe. Regardless, by using an open source tool such as Invader, you can be sure that your map file is yours because I'm not a huge asshole. Distributing and loading (your) maps via tag folders By only distributing only your tags when distributing your map, you can save space, as clients and servers will already have all of the Halo Editing Kit tags installed. Also, you do not distribute any Bungie/Microsoft created assets by doing this - only your content. This can also help with organization, too. Rather than replacing the tag files in one tags folder, you simply override them in a second tags folder that's dedicated to your map. Larger cache files Cache files are limited to 384 MiB (402653184 bytes) of data. Any more than this and Halo will refuse to load the map. As a result, tool.exe may not allow such large map files to even be generated. In maps with large amounts of internalized assets such as custom bitmaps and sounds or large amounts of BSPs, it can be very easy to run into limitations. A potential new cache file format Halo limits the amount of tag data that can be loaded at once to 23 MiB (24117248 bytes). This includes all tag paths, the tag array, the tag data header, all non-BSP tag data, as well as the currently loaded BSP tag. Normally this isn't a problem for most multiplayer maps, but many large singleplayer maps with heavily complex geometry can get constrained by this. By compiling the map to a format that supports loading BSP tag data to load into a space separate from tag data, you could make bigger BSPs as well as use more tag data. There are some hurdles to such an idea. For one, Halo CE would need to be modified to support this format, and this would require changing how BSPs are loaded into memory. Also, Sapien and tool.exe will have to either be modified or replaced to support the new format. Where is the sauce? On GitHub: https://github.com/Kavawuvi/Invader Roll the screenshots BSPs and shaders working (after being imported to a map via Eschaton) Loading the map (almost) works. Models are broken and the game crashes after a few seconds, but it lived long enough for me to take a screenshot.
  3. Here's a small update I added a new tool: invader-resource. This tool compiles bitmaps.map, sounds.map, and loc.map. You will need the HEK tags directory as well as a complete, extracted Halo Combat Evolved tags folder to use this. You can also use multiple tags directories like with invader-build. There are a few applications for this: Smaller campaign maps, since some of the tags are now located inside of these maps rather than in the cache file Campaign maps that work across all languages of the game - I've built a d40.map that can interchangeably use any language assets provided you use a patched tool.exe to do this. Custom resource maps that retroactively apply to your maps (e.g. a 4K AI upscaled set of bitmaps) Also, I changed the argument, --output-format, for invader-bitmap to --format. Lastly, bitmap, sound, and unicode string tag compilation are now slightly more accurate. They should compile to exactly the same size tags as tool.exe would do.
  4. I've noticed there are several unfulfilled script requests. Let's fix that, together! If you complete one of these script requests, 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 next week, on every Friday, bonus tickets will be awarded to the person who earned the most tickets this week from this contest as long as that person completed at least three (3) requests that week. These tickets do NOT need to be in your possession to win, so feel free to use your tickets for whatever you want the moment you get them. If there is a tie, though, then the prize will be split between the winners. The current bonus is 4 tickets. Here are the bounties: 5 tickets VIP escort gametype 3 tickets Animate a biped Disable fall damage under certain situations 2 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 1 ticket 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 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 any activity.
  5. The s command only sets currently present players' speeds. Since nobody is present at the start of the game, it won't do anything. You could do this, though: event_alive $mode:speed_ctf 's $n 2' For every second any player is alive, that player's speed will be set to 2.
  6. Yes. Use this to set everyone's speed to 2x: s * 2 The speed value is the kill penalty/death bonus value, a trait that only exist on Slayer gametypes. The speed penalty/bonus gradually goes back to 1, because being able to be 3x speed or 0.2x permanently would be broken. You can work around this by disabling gradually reducing the speed and then resyncing the speed every tick. I imagine on Oddball, it's used for the speed bonus for holding the ball or not holding the ball depending on gametype settings. This results in it instantly resetting to 1 or some other value depending on gametype settings. You cannot work around this because the client also locally instantly sets the value, so it'd be the same effect as setting the running speed in Eschaton if you disable the resetting back to 1 thing: a warp fest. It's unused on CTF, so while it increases/decreases speed, the game doesn't have any reason to change it back to 1. I imagine it's the same deal for Race.
  7. s * [speed] If you play the game in Slayer, then the speed will gradually go back to 1. If you play the game in CTF, then the speed will stay at what you set it to. If you play the game in other gametypes, the speed may end up instantly resetting back to 1.
  8. Could be another useful script! Moving really fast makes it really easy to die from fall damage, so something like this could be useful to server hosts. Therefore, I'm offering another three (3) raffle tickets to the first person who successfully fulfills this request. For more information on our monthly raffle, check out the FAQ. If nobody takes it within one week of my post being made, I will fulfill the request, myself.
  9. There isn't much to share today. I've just gotten in monochrome bitmaps, though these will require a later version of Chimera to function properly. I'm considering updating the OP of this topic to reflect the current state of the project as well as have download links to the Windows build of the project. Linux users must compile from source for now, but from my experiences, this isn't hard provided you have the required dependencies installed. Also, since building my PC, nearly all testing has been on Linux, so you can be sure that if you compile it for Linux correctly, it will probably work better than the Windows build provided you're running it on a true Linux kernel and not WSL 1. If WSL 2 ends up being easy to use and performs well (WSL 1 is not easy to use and performs poorly), I may start recommending people using that, too, but I'll still provide Windows builds for Windows 7 users.
  10. HDLP or Halo Dedi Launcher for Penguins is a script is intended for those who are new to hosting Halo servers on Linux, and as such, this takes care of the following tasks: Installing Wine and Screen* Downloading the Halo Custom Edition dedicated server and maps (especially useful for people on a data cap) Setting up a dedicated user for the Halo server to improve security Setting up a Wine prefix for your servers Creating server directories Deleting server directories Starting servers Stopping servers *Currently, for installing Wine and Screen, it requires apt-get. In the future, I'd like to support other options for installing this software, such as for users on CentOS, but as this script was really only thrown together in less than the span of a day, only apt-get is supported for now. If it detects wineconsole, 7z/7za, and screen as being valid commands, though, then you should then be able to use this script regardless. The Halo Custom Edition dedicated server and maps are all hosted courtesy of @Vaporeon. To use this script, simply upload hdlp.sh to your Linux server and run it. In the future, maybe I could write some commands you can use to download and execute it, instead. Also, note that SAPP is not currently installed for you - only vanilla servers are generated. For now, you will have to do this yourself. I may add this in the future, but from what I've heard, later versions of SAPP do not work well with Wine and sehe doesn't seem to care, therefore having it install Wine for you might either give you an enhanced server or a server that won't start. Download (.zip): hdlp.zip
  11. Halo Custom Edition is an expansion of the Windows version of Halo Combat Evolved. It supports user-created maps, and it is freely available to anyone who purchased the retail game.
  12. If you're using the main one, then it's not really a VM. You aren't using the actual Linux kernel but rather a compatibility layer akin to Wine. WSL 2, on the other hand, is virtualized. Anyway, I'll be looking into fixing this script, if possible. Going to be trying that Ubuntu VM tomorrow. I can't really promise too much, though.
  13. (Icon is by SteamFox) Chimera is a mod that adds additional functionality to Halo Custom Edition. Features: Enables player_magnetism without requiring HAC2 or devmode Fixes descoping issues in multiplayer servers Fixes aim assist, enabling it for both the movement and aiming versus just aiming (chimera_magnetism) Adds diagonals to analog input when in multiplayer servers (chimera_diagonals) Mimic's Xbox's automatic uncrouching when using analog input (chimera_auto_uncrouch) Enable anisotropic filtering without using config.txt (chimera_af) Override HUD with splitscreen HUD (chimera_split_screen) Allow video input to continue playing even when tabbed out (chimera_tab_out_video) Disable multitexture overlays (chimera_block_mo) Disable multiplayer map fade transition (chimera_skip_loading) Disable zoom blur and pixelation (chimera_block_zoom_blur) Make objects' movements appear much smoother to take advantage of higher framerates (chimera_interpolate) Allow mouse users a more granular sensitivity control (chimera_sens_mouse_<h/v>) Set deadzones for controllers (chimera_deadzone_looking and chimera_deadzone_movement) Show budget information for map developers (chimera_budget) Disable the 30 FPS lock in cutscenes (chimera_uncap_cinematic) Throttle your frame rate to a set frame rate (chimera_throttle_fps) Prevent your vehicle from aiming for you (chimera_block_vehicle_camera_leveling) Fix the scope when scoped (chimera_widescreen_scope_mask - requires HAC2 widescreen fix) * This feature requires Halo Custom Edition to function properly. Cyan features are enabled by default without user input. Green features are disabled by default and require use of the console to enable them. Use the chimera command to list commands. Download (build 49): chimera build 49.7z There is also a Discord server: https://discord.gg/ZwQeBE2 FAQ Very frequently do people ask me the same questions about Chimera, so here’s a little FAQ about it. How do I install Chimera? Place chimera.dll into your controls folder. What OS do I need? Windows 7 or newer OR Linux with Wine 3.0 or later. Older versions of Windows or Wine may work, but they are unsupported. If you are on an unsupported operating system, do not submit bug reports. Is there a list of commands? All commands are listed in the help menus using the chimera command. Is Chimera compatible with HAC2 and Open Sauce? Yes. Is Chimera compatible with HaloMD? No. Will Chimera be integrated with HAC2 or Open Sauce? No. What levels of interpolation do what? This graph details what levels do what: Note: Off is 0, Velocity is 1, Low is 3, Medium is 6, High is 8, Ultra is 9. Ultra has the same level of interpolation as High, but no distance check optimization is in place. Will interpolation work on frame rates higher than 60 FPS? Yes. Objects are jittery with interpolation on. Here is what I'd do: First of all, if you're not using the latest version of Chimera, install this. If you have vSync turned on, try turning it off. vSync causes poor frame pacing in Halo and can result in dropped frames even on fast hardware. If you need to throttle your framerate, use chimera_throttle_fps 240. If you need to play without tearing, use HAC2's borderless window feature (play in -window and set resolution to Windows's resolution). Using -vidmode always enables vSync. If you're getting bad performance (lag spikes or average frame rate dropping below refresh rate), turn your interpolation setting down. It's likely your PC cannot keep up. I recommend these settings if you want to use chimera_interpolate 3 or higher: If you're going to use chimera_interpolate, I recommend you have at least these specifications. These should get you chimera_interpolate 3 (low), max Halo settings (make sure you aren't locked to 30 FPS), 1080p, at approximately 60 FPS: CPU (Intel): Intel Core 2 Duo E8400 (3.0 GHz) or better CPU (AMD): AMD Athlon II X2 250 (3.0 GHz) or better Graphics (Intel): Intel HD 3000 or newer Graphics (Nvidia): NVIDIA GeForce 8600 GT or better Graphics (AMD): ATI Radeon HD 5450 or better RAM: 4 GB Note: These values are listed only for reference and are recommendations. The chimera_interpolate command does not directly utilize the GPU, nor does it use a large amount of RAM for interpolation, but your game will run better if you have enough RAM for the rest of your PC. If you're getting good performance but your interpolation setting is less than 9, try turning it up. It's possible the object in question isn't being fully interpolated. Is the retail version of Halo supported? No. Halo Custom Edition on version 1.10 is the only version supported by Chimera. Are versions of Halo earlier than 1.10 supported? No. Does Chimera work with scrim mode? Client-sided features (interpolation, anisotropic filtering, zoom blur removal, etc.) are not affected by scrim mode. However, the server-side Lua script, which includes fixes for lag and analog movement, will not function. Does Chimera automatically update or have update notifications? Currently, you are responsible for keeping Chimera up-to-date, and if there is an update, you will have to come back here to get it. Notifications are planned, however auto updating will not be included. Why are Chimera releases slow? Chimera does not function on donations, thus development is done on a portion of my personal time. If it takes a while, it takes a while. SPV3 includes Chimera. Are you in CMT? No. Can I install Chimera on my Mac? Yes. Install Windows, buy the Windows version of the game (if you don't own it), install Halo Custom Edition 1.10, then place chimera.dll into your controls folder. I can't install Windows on my Mac. Can I still install Chimera? Yes. Simply buy a PC, install Windows on it (if Windows isn't preinstalled), buy the Windows version of the game (if you don't own it), install Halo Custom Edition 1.10, then place chimera.dll into your controls folder. Older downloads If you need an older version of Chimera, here are older versions:
  14. Are you using an insider build of Windows 10?
  15. I'll look at it in a bit. I'll have to fire up an Ubuntu VM for that, though.
  16. Here's a small update: The .bitmap tag will be read for some of the values (format, mipmap count, etc.). The registration point is now set in the bitmap. I'm not entirely sure how to calculate this, so I'll be looking into updating this later. --input-format was removed. Instead, it will try all available extensions until it opens the bitmap. Bitmap sequences are generated. With 2D textures, this is primarily required for user interface widgets. From this moment on, I will no longer be posting builds daily unless I'm fixing a critical issue such as a crash.
  17. That's good enough for the tickets.
  18. The syntax appears to be correct. Did you copy and paste the text to a .lua file? Make sure to click the "download" button from Pastebin if you want to use the script to avoid any potential issues from copying and pasting.
  19. Such a script could be of use to various server hosts. For anyone who wants it, I will be offering four (4) raffle tickets to the first person who successfully fulfills this request in this topic. For more information on the monthly raffle, check our FAQ. That said, if nobody takes the offer by the next week, I'll fulfill it. Good luck, scripters!
  20. Another update! DXT1, DXT3, and DXT5 are now supported! These are lossy compression formats supported by Halo that can be used to compress bitmaps to very low sizes. Here are the compression ratios you can expect: DXT1 (no alpha) - 8:1 (4 bits per pixel) DXT3 (explicit alpha) - 4:1 (8 bits per pixel) DXT5 (interpolated alpha) - 4:1 (8 bits per pixel) Here is why you should NOT use this: DXT is lossy. You are trading image quality and detail for a lower file size, and this loss in quality is irreversible. Better compressors can lessen the impact, as can dithering (--dithering), but for most images, the compressed image will be inferior to the original. The detail loss from using DXT can be very high on low-resolution bitmaps. You will need to upscale the source image to a higher resolution to improve quality, and increasing the resolution increases file size, reducing the file size reduction you got from DXT. Modern graphics hardware will have no trouble handling larger uncompressed textures. Even the lowest end GPUs made today have 2 GB of video memory, well over the size of your map. Modern hard drives and even some solid state drives are now sold with over a TB of storage capacity. Your map's file size may only be trivial at best especially compared to modern games. Compressing your map to a .7z archive with the LZMA compression algorithm can allow you to distribute large maps with small file sizes. tool.exe can be patched to allow for larger bitmap sizes. By using lossy compression, it is possible you are trying to fix a problem that isn't really a problem anymore while creating a problem that will always be a problem. Please consider using 32-bit color, or at the very least, distribute your tags as an alternative download to your map so people have an option to rebuild your map using 32-bit color bitmaps. Anyway, here is what 32-bit color, 16-bit color, and DXT1 / DXT3 / DXT5 look like next to each other: Note that DXT1, DXT3, and DXT5 have the same color quality and are not superior/inferior to one another. The only difference between them is in how alpha is handled: DXT1 does not have an alpha channel, thus it is half the size of DXT3 or DXT5. While 1-bit color-key transparency can be used with DXT1, invader-bitmap does not support this, and this reduces color depth. If you need support for transparency without reducing color depth, use 32-bit color, DXT3, or DXT5. DXT3 uses explicit alpha. This means the alpha, itself, is defined per-pixel, but the drawback is that you are limited to 4 bits (16 shades) per pixel. This means that there will be significant alpha banding for gradients, but things like the borders of shapes are preserved. If you want less alpha banding, use 32-bit color or DXT5. DXT5 uses interpolated alpha. The alpha is interpolated similarly to the color, thus alpha gradients won't suffer from the same banding problems as DXT3. However, the borders of shapes can potentially be blurred. If you need the alpha to be explicitly defined, use 32-bit color, DXT3, or 16-bit color. Use --output-format dxt1, --output-format dxt3, or --output-format dxt5 to pick a compression format. If you ever need help on the syntax, use the -h / --help argument to list arguments or read the README.md file on GitHub.
  21. No. Halo has really low requirements. That said, I have heard that it performs better if CPUs are not shared, but it's not required if you're just doing a public 16 player game.
  22. The Halo dedicated server software probably won't use more than 150 MiB at peak times. Take into consideration what you plan on using as the operating system. Here are some estimates (from my experience): If you are using a Linux-based server/VPS with no desktop environment, the OS itself likely won't consume more than 32 MiB. If you are using a Linux-based server/VPS with a desktop environment, add 400 MiB to account for the desktop and a couple desktop programs. I recommend LXDE, Xfce, or MATE as they are the easiest on RAM, with LXDE being the lightest. Environments like GNOME and KDE are relatively heavy on RAM and should be avoided for this use case. If you are using Windows, you can probably expect the OS to use 25% of your total RAM, with a greater proportion the less RAM you have.
  23. Another update! Once again, this is just to invader-bitmap. Here are the changes: 16-bit color is now supported! This provides a lower-memory, uncompressed option for textures, thus cutting memory usage in half without compression artifacts. However, 16-bit color has much less color depth than 32-bit, and it has even less color depth if you use alpha. This can result in color banding as well as slightly different colors used in images. For reference, here is how many colors you will get (with how many shades of each color channel you get): 32-bit without alpha: 16777216 colors (256 red x 256 blue x 256 green) 32-bit with alpha: 16777216 colors (256 red x 256 blue x 256 green) + 256 alpha 16-bit without alpha: 65536 colors (32 red x 64 green x 32 blue) 16-bit with 1-bit alpha: 32768 colors (32 red x 32 green x 32 blue) + 2 alpha (basically either no transparency or full transparency) 16-bit with 4-bit alpha: 4096 colors (16 red x 16 green x 16 blue) + 16 alpha The following image contains two rainbow gradients: one as 32-bit without alpha and one as 16-bit without alpha: The number of alpha shades will be determined based on the 32-bit version of the bitmap: If all pixels have 100% opacity, you will get the full color depth 16-bit can offer, 65536 colors. If all pixels are either 0% opaque or 100% opaque with nothing in between, you will get 1/2 the color depth, 32768 colors. If there are pixels that have anything between 0% and 100% opacity, you will get 1/16 the color depth, 4096 colors. Note this applies to each bitmap, not the whole source image. If your source image contains bitmaps that have full opacity and bitmaps that don't, the ones that do have full opacity will still have 65536 colors. To use this feature, pass --output-format 16-bit or -O 16-bit as arguments. Note: Support for DXT compression and monochrome bitmaps are planned. Currently, only 32-bit color and 16-bit color are implemented for now. invader-bitmap now writes the format used into the bitmap tag. This means that if you create a tag with invader-bitmap and choose to use tool.exe's bitmap feature, it will use the same format that Invader used. Also, I may make a version of invader-bitmap that reads this value if no format was passed as an argument.
  24. I don't think that's an Invader issue. Are you using quotation marks for parameters with spaces? For example: invader-bitmap.exe "vehicles\death vehicle of doom\bitmaps\death vehicle of doom"
  25. Thanks for bringing that to my attention. I've re-uploaded Invader with the new .dll. Here is the missing .dll in question: libpng16-16.zip. You can copy this to the same directory as invader-bitmap.exe if you don't want to redownload the thing.