Odamex

Émulateur v11.0.0

Odamex est un moteur multiplateforme dédié à la pratique du Doom en réseau, fonctionnant sur macOS (incluant Apple Silicon), Windows et Linux. Il s’agit d’une modification open-source du moteur original, permettant aux joueurs de rejoindre des serveurs dédiés pour des parties en ligne. Compatible avec Doom, Doom II, Freedoom ou Chex Quest, il nécessite une version légale de ces jeux pour fonctionner.

L’outil inclut un client, un serveur et un lanceur, offrant une expérience multi-joueur optimisée. Développé par une communauté active, Odamex mise sur la stabilité et les améliorations techniques, avec une documentation et un wiki collaboratifs pour faciliter son utilisation. Bien que non strictement un émulateur, il repose sur une portabilité poussée pour s’adapter à divers systèmes, y compris macOS moderne.

Dernière mise à jour :

Plateformes

Interpréteurs

Architecture

Mac OS X - macOS Mac OS X - macOS Intel x86 Intel x86 Apple Silicon Apple Silicon 64 bits 64 bits

Téléchargement et liens

Historique des versions

v12.3.0
  • Améliorations majeures pour les développeurs et modders :

    • Ajout d’un outil de documentation des cvars (cvardocjson) exportable en JSON/HTML depuis la console ou en ligne de commande, intégré comme source officielle dans Odalaunch pour la gestion des paramètres serveur/client.
  • Corrections critiques de stabilité et gameplay :

    • Correction des problèmes de mouvement et de spawning dans les murs (implémentation des changements de MBF), ainsi que des cas de stuck persistants.
    • Fix des teammates qui ne subissaient plus de dégâts entre eux avec le BFG (quand sv_unblockplayers=1 et sv_friendlyfire=0).
    • Résolution des bugs liés aux demos (perte de couleur des joueurs en fast-forward/rewind, jitter à la pause, écran rouge en spectateur).
    • Correction des HOM (Head On a Missile) dans les grands espaces ouverts ou avec un FOV élevé, évitant les overflows du rendu.
  • Optimisations techniques et compatibilité :

    • Prise en charge des stacked portals (portails empilés) comme dans ZDoom, avec limitation récursive via r_portalrecursions (défaut : 16).
    • Extension des skyboxes récursives, alignée sur la spécification UMAPINFO.
    • Ajout d’un freecam côté client pour les net demos et modes survival (quand le joueur n’a plus de vies).
  • Améliorations spécifiques à macOS :

    • Correction du non-affichage de la classe WM_CLASS (X11) ou de l’app_id (Wayland) sur les systèmes BSD (incluant macOS).
    • Builds .dmg : Aucune mention explicite de modifications pour macOS dans ce changelog (pas de mention d’Apple Silicon, de macOS minimum, ou de correctifs spécifiques).
Changelog complet
**Odamex 12.3.0 is out now!** This is a minor version release with many bug fixes, feature additions, and performance improvements. ## Added - Created a `cvardocjson` console command to dump cvar information in both the client and server. - External programs can import this to have information about Odamex's cvars. - Odalaunch now uses these exports as a source-of-truth for cvar information. - This can also be run from the command line as `--cvardocjson` to dump this information without requiring a WAD or other subsystems to be loaded. - Created `--cvardoc` and `--cvardocjson` command line flags to dump the cvardoc file, in HTML or JSON format, from the command line. - The client's `--cvardocjson` will print to a file on Windows platforms, and dump the file to stdout otherwise. - Added a 90fps option to the Framerate selector in Video Options. - Added a "Server Details" window to Odalaunch. - To activate it, right click a server and select "View Server Details..." or middle-click a server in the server list. - Implemented MBF's changes to player movement and spawning code, which should help cases where players may get stuck in walls. - Added a new cvar `g_horde_cooldown` that puts recently played waves in a cooldown queue to avoid playing the same wave twice in a short interval. - Added a clientside freecam for net demos and survival game modes that can be accessed when a player is out of lives. - Added the cvar `ui_mouse` to navigate Odamex menus using the mouse, defaulting to on. - Left click toggles selections, drags sliders, and drives down into menus. - Right click emulates the Esc key and goes back 1 menu level. - Scroll wheel scrolls menus as you'd expect. - Added an implementation of ZDoom's stacked portal things. - Things added to support these: - Thing 9077 - Upper Sector Portal - Thing 9078 - Lower Sector Portal - Also uses the cvar `r_portalrecursions` to limit the amount of recursions when rendering portals. - ACS additions: - Added the ability to run client-side scripts. - Add support for SpawnProjectile, SpawnSpotFacing, Thing_Projectile2, SpawnForced, SpawnSpotForced, SpawnSpotFacingForced, StrCmp, StrICmp, Sqrt, FixedSqrt, VectorLength, SetSectorDamage, SetSkyScrollSpeed, Floor, Round, Ceil, SetActivator, SetActivatorToTarget, and SetActorAngle. - Spawn specials/functions taking a spawn number can now spawn health bonuses, mancubus fireballs, and baron projectiles (spawn numbers 152, 153, and 154) - Print now supports x, b, n:PRINTNAME_LEVELNAME, n:PRINTNAME_LEVEL, n:PRINTNAME_NEXTLEVEL, n:PRINTNAME_NEXTSECRET, and n:PRINTNAME_SKILL. - Spawn and SpawnSpot now return the number of things spawned - WIP PowerShell tab completions for Odamex and Odasrv are now available. - These are not yet included in the releases. - See the `completion/` folder for more information. - Added support for UZDoom's `Tag` property in DeHackEd for setting thing display names. ## Changed - Removed the `vid_pillarbox` cvar as it was not operational. - Pasting into the client console when running under X11 or Wayland now allows pasting from both the clipboard and the primary selection: - Middle-click and ALT+V paste from the primary selection. - Right-click and CTRL+V paste from the clipboard. - Skyboxes now recursively stack together. - Skyboxes will render recursively up to a level defined by the new cvar `r_portalrecursions` which defaults to 16. - Missing patches are now treated as non-fatal. - The `tntem` command can now be run by the server itself. - Teammates no longer hit each other with BFG tracers when `sv_unblockplayers` is 1 and `sv_friendlyfire` is 0. - Bossactions now use a copy of line 0, keeping up with UMAPINFO spec. - Odalaunch changes - Server browser now sorts servers that return `>` to the bottom of the server list. - Instead of permanent tables that show players and server configuration, we show "popovers" when you mouse over a server's player list or server name. - "Copy server address" copies to the clipboard instead of the primary selection when running under X11/Wayland ## Fixed - Fixed X11 WM_CLASS/Wayland app_id not being set on the BSD family of platforms. - A_WeaponBulletAttack no longer handles refire (matches MBF21 behavior). - Fixed `exec` and `-config` not searching relative paths. - Many stability fixes and crash remedies. - Fixed some cases of weapons not changing as you'd expect when grabbing a weapon while lowering your current weapon. - Fixed many instances of HOM with high FOV, or maps with massive open areas causing the renderer functions to overflow. - Fixed instances of deep water rendering where it should not. - Also fixed instances where deep water should render but it does not. - Fixed clearing additional flags when activating a dormant monster. - Fixed players losing their color when fast forwarding or rewinding a demo. - Fixed the VC++ runtime not installing when installing via installer. - Fixed a bug in Odalaunch when multiple client instances launched at the same time are closed. - Fixed MBF21 death exits not killing everyone. - Fixed incorrect red screen when spectating a new player. - Fixed bumping gamma not affecting colored sectors. - Fixed HOM in status bar when starting a new game after viewing a netdemo. - Fixed jitter when netdemo is paused. - Fixed crash when wads had textures between TX_ markers. - Fixed pixel gap when drawing 2 sided midtextures. - Fixed some DeHackEd things being spawned as player starts. - Fixed players sometimes spawning at the wrong start in coop on Hexen format maps. - Fixed some locked doors displaying as the wrong color on the automap. - ACS fixes: - Spawn, CheckInventory, GiveInventory, and TakeInventory are now fully case insensitive - SpawnSpot no longer uses the `tid` argument as the value for the `spottid` argument - Fixed an off by one error when printing player names with Print - Fixed out of bounds array accesses in GiveInventory, CheckInventory, and TakeInventory [![Download Odamex](https://a.fsdn.com/con/app/sf-download-button)](https://sourceforge.net/projects/odamex/files/12.3.0/Odamex%2012.3.0%20source%20code.zip/download)
v12.2.1
  • Corrections critiques pour macOS :
    • Plus de blocage ni de CPU excessif en arrière-plan sur macOS (comme sur Linux).
    • Correction d’un problème de gel lors de la fermeture après lancement depuis Steam ou macOS.

(Aucune nouveauté majeure ou modification spécifique à macOS/M1/M2/M3 n’est mentionnée.)

Changelog complet
**Odamex 12.2.1 is out now!** **First-time contributors** We would like to thank our first-time contributors for: - @TehRealSalt for adding automatic scaling to HUD text ## Added - Patches referenced by the PNAMES lump can now be used as textures without a corresponding entry in TEXTURE1/TEXTURE2 - Use of this in new maps intended for multiple ports is discouraged due to compatibility concerns - Support for additional assignment operators in ACS: `=`, `|=`, `&=`, and `^=` - The server console is now colorized to help identify different message types at a glance - This can be disabled by setting `log_color 0` in the server config - Colored logs can be enabled with `log_color 2`, but note that this will likely not be rendered correctly in a text editor - Color is unsupported on Windows 8/8.1 - HUD text scaling has a new `auto` setting to try and determine the ideal scale factor automatically - `sv_respawnbarrels` for endless explosive fun - `sv_itemsrespawn` must be enabled as well for it to take effect - Additional settings for sprees and multi-kills: - Client: - `cl_showofflinesprees` - Show sprees in non-network games. Superseded by `cl_showsprees`. Defaults to 0. - `cl_showofflinemultikills` - Show multi-kills in non-network games. Superseded by `cl_showmultikills`. Defaults to 0. - Server: - `sv_showsprees` - Configures server-wide disablement of sprees. If 0, sprees aren't shown to any player. Defaults to 0. - `sv_showmultikills` - Configures server-wide disablement of multi-kills. If 0, multi-kills aren't shown to any player. Defaults to 0. - The client and server now have a Bash completion script - It is included in the Flatpak and can be printed to stdout with `flatpak run net.odamex.Odamex shell-integration bash` - For users of third-party packages, the script can be found [here](https://github.com/odamex/odamex/tree/stable/completion) if it is not included - Bash 4 or newer is required ## Changed - A bug causing a fatal error with the message "Tried to tic unknown levelstate" to obscure other more informational errors has been fixed - Runtime SDL version check has been relaxed - The Odamex client now requires SDL with an equal *or greater* minor version than the one it was compiled against - Client and server now use the [segment heap](https://devblogs.microsoft.com/cppblog/segment-heap-support-for-c-projects-in-visual-studio/) on Windows 10 and 11. This should improve performance and memory footprint - Windows releases are now built with the Visual Studio 18 2026 toolchain - FLTK updated to 1.4.5 - libADLMIDI updated to 4412f7b - The accuracy of the "Balanced" option has been improved. It now uses the [Nuked-OPL3-fast](https://github.com/tgies/Nuked-OPL3-fast) fork of Nuked-OPL3 1.8 rather than using Nuked-OPL3 1.7 ## Fixed - Avatars are now affected by wind - Voodoo dolls no longer appear to rapidly spin on the automap when using IDDT - Compatibility setting overrides from the COMPLVL lump are now properly applied in singleplayer - Boom generalized specials, other than doors and lifts, are now no-ops when used with tag 0 - MAPINFO `defaultmap`'s functionality has been restored - A bug in the DeHackEd parser that caused it to skip two sections instead of single section when encountering an unknown section header has been fixed - Odalaunch's `File -> Start Odamex (Single Player)` menu option has been fixed - The ability to specify wad directories in Odalaunch settings has been restored - The episode select skull no longer sometimes appears past the end of the episode list when switching wads - Crashes and memory corruption that could occur when `co_blockmapfix` was enabled on maps containing custom enemies/decorations wider than 384 units have been fixed - A crash that could occur when rendering zero-length segs has been fixed - A crash when printing certain `-stepmode` debug information has been fixed - Various crashes that could occur due to linedefs without frontsectors have been fixed - Desyncs due to moving ceilings have been mitigated - Rewinding an unpaused netdemo after previously stepping forward by a tic while paused no longer causes the netdemo to unexpectedly pause - Game tics no longer progress while netdemos are paused, fixing various timers that would continue during paused netdemos - A bug in `FLZOFile` that caused data from uninitialized memory to be written to save files has been fixed - `download get` no longer downloads HTML files from doom.dogsoft.net when the requested wad could not be found - Compatibility with MBF friendlies has been improved. See 49e2d2fa73a03537362c4cdcf8cbff519b87796a for the change - WDL stat tracking no longer logs disconnects from players that failed to fully connect in the first place - The client and server no longer freeze when quitting after being launched from Steam or on macOS - The client and server no longer exhibit extremely high CPU usage when running as background processes on macOS/Linux - Various typos have been fixed [![Download Odamex](https://a.fsdn.com/con/app/sf-download-button)](https://sourceforge.net/projects/odamex/files/12.2.1/Odamex%2012.2.1%20source%20code.zip/download)
v12.2.0
  • Nouveauté majeure pour l'automap : Ajout d’un mode minimap (réalisé par un contributeur externe), permettant d’afficher l’automap en miniature, avec une meilleure intégration visuelle.

  • Amélioration des flags et scripts :

    • Prise en charge complète des flags "BOSS" pour plusieurs niveaux (ex. E1M8BOSS, MAP07BOSS1, etc.).
    • Support de SpecialAction_KillMonsters dans les fichiers MAPINFO, ainsi que des propriétés DefaultSkill et ACSReturn dans les blocs skill.
    • Implémentation complète de Scroll_Ceiling pour les scripts ACS et les cartes au format Hexen.
  • Corrections critiques pour macOS :

    • Build universel pour Apple Silicon (M1/M2/M3) : Plus besoin de Rosetta pour exécuter l’émulateur sur ces architectures.
    • Correction potentielle de problèmes de rendu ou de performance liés aux secteurs et lumières (ex. r_thingsectorlight), bien que non explicitement ciblé pour macOS (à valider en pratique).
  • Corrections majeures :

    • Serveur (odasrv) : Chargement des WADs après la config (retour à la compatibilité pré-0.8.3), résolvant des erreurs de recherche de fichiers et de parsing des commandes maplist.
    • Multiplayer : Correction de la propagation des sons dans les cartes utilisant des formats de nœuds étendus, évitant les plantages.
    • Netdemos : Stabilisation des playbacks (plus de jitter avec cl_movebob différent, suppression du chat pendant la lecture, etc.).
  • Compatibilité et stabilité :

    • Correction d’un softlock dans Ultimate Doom E4M6 lié à SpecialAction_OpenDoor.
    • Gestion améliorée des REJECT lumps trop petits (remplissage par zéros au lieu d’ignorer, préservant les performances).
    • Limite relevée pour les cycles de states (jusqu’à 512 au lieu de 128),
Changelog complet
**Odamex 12.2.0 is out now!** Featuring a number of bug fixes and smaller features, this will likely be the final 12.x release before 13.0.0. **First-time contributors** We would also like to thank our first-time contributors for: - @teesquared for implementing the new minimap feature - @endless-r0ad for a variety of netdemo-related fixes ## Added - All MBF21 thing flags are now supported. Newly supported flags are listed below: - E1M8BOSS - E2M8BOSS - E3M8BOSS - E4M6BOSS - E4M8BOSS - MAP07BOSS1 - MAP07BOSS2 - MAPINFO now supports `SpecialAction_KillMonsters`. - `DefaultSkill` and `ACSReturn` properties are now supported in MAPINFO `skill` blocks. - `Scroll_Ceiling` is now fully implemented for ACS scripts and Hexen-format maps. - `A_Stop` can now be used in DeHackEd patches. - The automap can now be displayed as a minimap. - Sprees and Multi-Kills - Successive and simultaneous kills are now announced in PvP modes. - Mods can customize the messages, sound effects, and time intervals with a [SPREEDEF](https://github.com/odamex/odamex/wiki/SPREEDEF) lump. - Mousewheel horizontal scroll/tilt can now be bound as input actions. ## Changed - Building odamex.wad now requires Python instead of Deutex. - The minimum required Python version is 3.8. Nearly all modern Linux distributions should have this or newer preinstalled. - Unlike Deutex, Python is *not* automatically downloaded on Windows when building Odamex. It can be downloaded from [here](https://www.python.org/downloads/windows/). - Unit tests are now built by default. To disable this, pass `-DBUILD_TESTS=0` when running CMake. - The macOS version is now a universal binary. This means Rosetta is no longer required to run Odamex on Apple Silicon. - Windows builds now produce more detailed crash dumps. Because of the large file size, this is an additional dump created alongside the existing smaller ones, and it will always be overwritten by the most recent one. - `-confile` now expects a named pipe rather than a text file. - The HUD menu now has a title graphic, similar to many of the other options menus. - The `SmoothLighting` property is now recognized when loading MAPINFO. Note that the actual smooth lighting feature is not implemented yet. This only allows loading maps which use it, instead of erroring out. - The "Death from Above" default horde wave now has a low chance of spawning a chaingun as a powerup. - When a map has a REJECT lump that is too small, it is now padded to the correct size with zeroes instead of being ignored. - Vanilla Doom used the REJECT lump anyway, so some vanilla demos would not play back correctly before. - This also keeps the performance benefits of the REJECT lump if the too-small lump is otherwise a proper reject matrix, rather than throwing it away to use the slower line of sight checks. - Infinite cycle detection for thing states has been relaxed a bit, now allowing cycles up to 512 states long, from the previous 128. - Horde bosses are no longer displayed on the automap once they die, to avoid cluttering the map and creating confusion between dead and living bosses. Note that displaying bosses on the map in multiplayer is unfortunately still broken. - Flatpak builds now support dark mode for Odalaunch. ## Fixed - Odasrv now loads wads after loading the config file, instead of the reverse order. This matches the client and pre-0.8.3 versions of the server. There are a few noticeable effects of this: - Previously, if the config file set `waddirs`, the server would not search the given directories, and would fail with an error if an IWAD could not be found. - Maplist commands in the config are parsed before any IWAD has been loaded, so the IWAD must be specified, as there is no current IWAD for it to assume. - Using `->` in maplist command's `lastmap` argument now works properly in the case where the map being exited from has a secret exit - Teleporters in UDMX MAP32 no longer block players. - Avatars are now always spawned at floor height instead of at height 0, matching players and singleplayer voodoo dolls. - Window icons for the client and launcher are no longer missing on some Linux desktops, including KDE Plasma and Raspberry Pi OS. - Visual/rendering fixes: - Scrolling floors and walls that are being scrolled by multiple linedef actions no longer move too slowly. - Vanilla-compatible line horizons created by rotating segs by 180° now render correctly. - When `r_thingsectorlight` is disabled, things in sectors using height transfers once again use the light level of the "height sector" rather than that of the "real sector". - MUSINFO music changers now spawn in multiplayer. - An infinite loop in enemy pathfinding has been fixed. - The `GameSkill()` ACS function's return value now matches other ZDoom ports. It was previously off by 1. - A crash when propagating sound in maps using extended node formats has been fixed. - When item respawning is enabled, items are no longer dropped from the respawn queue when there are over 128 items waiting to respawn. - An error with a strange message about JSON prettyprinting that sometimes occurred when entering levels in multiplayer has been fixed. - `SpecialAction_OpenDoor` opens doors with blazing speed and no longer closes the doors after a delay. Fixes a softlock in Ultimate Doom E4M6. - `co_blockmapfix` now only skips the first element of each blocklist if all blocklists start with 0. This allows using the blockmap fixes on BTSX MAP20. - Netdemo fixes: - The status bar no longer becomes a HOM under certain circumstances when rewinding a netdemo. - Netdemos playback is no longer jittery when viewing the perspective of a player with a `cl_movebob` value that differs from that of the client playing back the demo. - It is no longer possible to open chat input during netdemo playback. - Playback no longer automatically switches back to the perspective of the player who recorded the demo when that player joins the game or is revived. - Spying fixes: - View angle interpolation now functions properly when spying another player's perspective - Spyprev no longer stops working after cycling through all players once in survival games. - Pasting into the client console when running under Wayland no longer crashes the game. - Odalaunch no longer crashes when built with recent versions of wxGTK. - On Linux and macOS, Odalaunch's server list is no longer partially out of order when sorted. - A few freezes that could occur when trying to resume from debugger breakpoint have been fixed. - An out of bounds memory write when clearing the `OZone` heap that could cause heap corruption in rare circumstances has been fixed. [![Download Odamex](https://a.fsdn.com/con/app/sf-download-button)](https://sourceforge.net/projects/odamex/files/12.2.0/Odamex%2012.2.0%20source%20code.zip/download)

Captures d'écran

Options dans Odamex