Odamex 10.0.0
Yes, 10.0.0. At some point in the past decade and a half, Odamex went from a beta, work-in-progress port to a port stable enough to have been used for tournaments, events, and even online leagues. So instead of releasing 0.10.0, we thought it was about time to get rid of that leading "0" in our version number.
* The Release *
There are so many testers, developers, and contributors involved, we cannot possibly thank them all individually. However, we do want to welcome two new members to the Odamex team:
KBlair - introduced MBF21 and DEHEXTRA along with Ch0wW. KBlair has been helping Odamex behind the scenes for years with server hosting, stats, and many other factors.
DeathEgg - namely implemented UMAPINFO, and many improvements to overall MAPINFO.
With this, welcome to the team guys! Thanks for making Odamex 10 as great as it is!
It's not just for looks, as this release is one of the largest in the port's history. First, Odamex now has a brand-spanking new game mode, the first unique one since the port has been publicly announced. We've also added support for many new modern extended MBF features such as DEHEXTRA and MBF21. We have added a brand new boot menu that isn't just for selecting IWADs. Our interface has taken its long-overdue first step beyond its Quake 2 inspirations. Behind the scenes, our server-to client network protocol has undergone a complete rewrite - there is not a single network message left untouched.
* Changelog *
There are a lot of details with this release, but what you need to know is listed below:
New Features - Horde Gamemode
- Odamex now has a horde gamemode, which will be familiar to anyone who has ever played Killing Floor, Halo's Firefight mode, or Unreal Tournament's Invasion gamemode. This gamemode is new and unique to Odamex, and is not compatible with Invasion maps from Skulltag/Zandronum.
- Monsters spawn into the map in waves, and it's up to you and a few buddies to continuously thin their ranks until a big boss spawns in. Beat the boss and you win the wave, reach the wave limit and you win the level. Sounds easy, but the monsters spawn relentlessly only giving you the occasional breather, and the bosses have special boss properties that make them far more of a threat.
- There are many ways to play Horde. Play it in single-player straight from "New Game" or join up with a few friends online. Play it on UV skill for the intended experience or dial the skill down a few notches if things get a little too hectic. Online servers can either use either limited or unlimited lives. There are also numerous variables that can adjust the size of the horde, the length of waves, and more.
- Alongside Odamex 10.0 we are releasing our Odamex Horde map pack, which is as much an exploration of many different themes and shapes of Horde map as it is a selection of hellspawn-filled tempests. This map pack also comes with a number of popular custom monsters like Arachnorbs, Stealth Aliens, and Suicide Bombers, with a few WAD-only wave defines to show them off in.
- A Boot IWAD Selector and IWAD Manager.
- Starting Odamex for the first time now gives you a selection of all IWADs the port has found. You can select and launch any one you prefer.
- Is Odamex not finding your WAD files? The launcher also allows you to manage your waddirs setting allowing you to add, remove, or move around directories that will be searched for WAD files.
- The Boot window is supported on Windows, macOS and Linux.
- Kill Feed Obituaries
- Odamex now has a brand-spanking new obituary feed in the top right hand corner of the screen.
- This feed is much like the ones you might find in modern FPS games - instead of listing a textual obituary, the means of death is representated with player names and icons instead.
- By default, old text obituaries no longer show up in the message line in the top left of the screen, although they do appear in the dropdown console. If you prefer the old way, you can re-enable message line obituaries and disable the killfeed from the options menu.
- All of the obituary icons are brand new art courtesy of Scuba Steve. Thank you for your contribution!
- A 21st century server protocol
- All of Odamex's server-to-client messages are now contained in shiny new protocol based on Google's Protocol Buffers. We can now add new network messages and add fields to existing messages without breaking protocol, allowing us much more flexibility to make protocol changes in minor releases.
- One nice side effect of this is now that we can accurately measure how big a message is going to be before we write it, we can now fit many more messages into one packet. This means fewer opportunities for packets to be dropped or delivered out-of-order.
- In the process of rewriting, many unused and "reserved" messages were removed. Others were consolidated or simplified. A few messages were even hoisted into the header of each packet as a fundamental part of the new protocol.
- Either way, we expect this new protocol to function as base to further improve the netcode in future.
- Pistol-starting support. You can now play through the game starting from a pistol on every level-switch.
- Support for pistol-starting has been added to the difficulty selection menu.
- g_resetinvonexit is the cvar, so-named because you can change your starting inventory with Spawn Inventory.
- The -pistolstart command line switch is also supported, for parity with prBoom.
- A baseline-based netcode
- Odamex has revamped in a major its way of sending monsters and objects to the client in a way that should feel much more "solid" with fewer mispredictions.
- Based on an idea from Quake, we now send over a "baseline" containing an initial set of data to each client, and then for every subsequent update we only send over the fields that have changed between the baseline and the current time.
- On average, this new baseline approach to object persistence is not only more accurate than the old 0.9 method, but also uses less bandwidth.
- We are quite eager to support the new Extended-vanilla and BOOM-based standards that have been coming to fruition as of late. To that end, we have implementations of the following:
- UMAPINFO support. If your WAD has a UMAPINFO lump, Odamex should be able to parse and run it. Thanks to DeathEgg for the implementation!
- DEHEXTRA support. More frames, more sprites, more sounds, more of everything. Thanks to Ch0wW and KBlair for the contribution.
- MBF21 support, adding support for both the map extensions and extra DeHackEd codepointers, plus arguments. Again, you can thank Ch0wW and KBlair for the tag-team.
- That said, we don't want to forget about ZDoom features either:
- MAPINFO now supports episode definitions. Thanks to DeathEgg for the implementation.
- Additionally, MAPINFO now supports boss actions, and special handling of EXM8/E4M6/MAP07 is now handled completely through this feature. Again, thanks to DeathEgg for the implementation.
- UsePlayerStartZ now works in ZDoom-flavored MAPINFO. Thanks to Ru5tk1ng for the contribution.
- Thing_Stop was added as a line special and ACS function. Thanks to Ru5tk1ng for the contribution.
- A long list of ZDoom line specials have been added, courtesy of DSDA-Doom. Thanks to KBlair for the contribution.
- The widely used SR50 bind is now a built-in feature of the engine, available with a new setting: in_autosr50, which is enabled by default.
- This does not require rebinding any keys, and simply changes +strafe to add the boost you get from turning left or right with strafe on automatically.
- Exiting a level via trigger now prints a completion time to the console.
- Pausing during netdemo playback now allows you to advance frame by frame using the right arrow key.
- A new setting: hud_demoprotos.
- This allows you to examine the server messages that were received during a given demo frame.
- By default the first message is "unfolded" and shows the packet contents. You can select which message to unfold using Page Up/Page Down.
- A new setting has been added for cl_switchweapon which allows holding +attack to override player weapon order.
- A new font is available based on BOOM's digital font. It is used in various places.
- New cheats:
- MDK (Kills whatever the player's crosshair is pointing at)
- TNTEM (Kills all monsters)
- BUDDHA (Player health cannot dip below 1%)
- Added give function to console.
- Added support for the REKKR 1.16a IWAD.
- A bump to the major version number
- As alluded to above, the numbers in our version have shifted right by one place, getting rid of the needless leading "0".
- Compatibility of version numbers has shifted over one as well. A hypothetical Odamex 13.1 can connect to Odamex 13.0 servers, but not Odamex 13.2 or 12.0 or 14.0 servers. If you see a release with a third version number, like 13.2.1, that number is reserved for optional updates and is ignored by clients and servers.
Fixes - An instance where a corrupt patch could crash the game was fixed.
- Doomguy's head now looks in the direction of your attacker while playing online.
- A_Mushroom has been re-enabled and should be fully working, including the misc parameters.
- notarget now works online.
- Translucent graphics at 100% opacity no longer leak any of the background.
- Colored lighting now has the correct amount of brightness, instead of being over-bright.
- Music no longer starts over when loading a map with the same music track.
- Demos in an old demo format now produce an error when they're played.
- "Avatar" voodoo dolls can now telefrag.
- Running out of blue armor and picking up an armor bonus now correctly shows green armor when playing online.
- Several C++ conformance bugs have been fixed. If you had trouble compiling Odamex 0.9.5 on newer versions of clang, you should be good to go with 10.0.0.
Changes - Cooperative modes are now scored according to damage dealt to monsters, instead of kills.
- The Spawn Inventory system now understands a new invul setting which allows you to set the amount of invulnerability time you get when spawning.
- sv_unblockplayers now allows friendly projectiles to pass through you.
- Online voodoo dolls (Avatars) can now exit the level.
- Many HUD-specific options have been added to a new HUD-specific submenu and organized better therein. A second setting shows just the FPS (the old counter)
- vid_displayfps has gotten a significant upgrade, showing a frame-time graph in the default setting.
- Odamex's BIGFONT now accepts color translations.
- Ingame cheats have undergone a significant rework and should now work much more consistently in online contexts.
- g_rounds and g_roundlimit now work in Survival as well as Survival Horde. When enabled, the players have a limited number of attempts at any given map before the map is considered failed and the server switches to the next map.
- Odamex now handles Doom and Hexen map format specials completely independently instead of using XLAT to translate them to Hexen format.
Removed: - hud_fullhudtype no longer exists, meaning that the "Odamex" version of the fullscreen HUD is now the only fullscreen HUD available
* Thank You*
For this release, we had many contributors, both from inside and outside the team. The Odamex Team would like to thank them all, no matter if you added a feature or two or significantly rewrote large subsystems in the engine. It's amazing how far an active open source project can go in less than a year, and we couldn't have done it without you.