Skip to content

Releases

v0.1.9 — Smooth screen flashes

Choose a tag to compare

@Distortions81 Distortions81 released this 15 Oct 04:38

Screen flashes now use a lightweight blended overlay in both Faithful and Modern modes, removing the full-screen palette copies, GPU readbacks, and dedicated flash shaders that could cause frame hitches.

Damage, pickup, berserk, and radiation-suit flashes retain Doom's timing and priority. Rendered colors stayed within 1/255 per channel of the original DOOM1 PLAYPAL palettes in testing.

Validation: full Go test suite, flash framebuffer tests with both modes and shader settings, and 48 Ebiten/Raylib framebuffer comparisons passed.

v0.1.8 — Weapon, HUD and power-up accuracy

Choose a tag to compare

@Distortions81 Distortions81 released this 14 Oct 19:45

Modern camera bob now evaluates the classic phase formula continuously at any display frame rate. Modern Options adds independent camera-bob and weapon-bob switches, persisted across desktop and browser sessions.

Weapons and HUD now preserve classic fractional poses, attack/death positioning, patch sampling, lighting, key artwork, multiplayer player backgrounds and frag counters. Power-up rendering corrects PLAYPAL damage/bonus/radiation flashes, infrared and invulnerability priority, and invisible-weapon fuzz.

Modern rendering keeps its intended smoother motion and scaling while fixing resolution-dependent weapon brightness, native fullscreen weapon placement, and dark native crossfade edges. A normalized artwork comparison checks accuracy without demanding pixel-identical modern rasterization.

Validation: 3,401 classic presentation captures match exactly across Doom I/II; 1,224 Modern weapon comparisons pass the documented sampling allowance; 216 Modern CPU/GPU world views pass the existing error budget. Full Go tests, native HUD/power-up/gamma/lighting/crossfade checks, comparison-harness tests, and desktop/WASM builds pass. These checks have bounded coverage and do not certify every gameplay scene.

Multiplayer clients and servers must update together because the authoritative snapshot schema now retains weapon poses and skull-key variants. Save version 28 reads versions 26–27; keyframe version 15 reads versions 13–14. Reload an existing browser session before joining multiplayer.

Desktop packages use the standard Ebitengine renderer; the optional Raylib executable remains a separate source build.

Source: b0507f730dacc7e27baee6162deeff51af6ac0cd (clean main, tag v0.1.8).

Known validation issue: the separate vulnerability scan still reports the same ten Go 1.26.6 standard-library findings as v0.1.7, with no new finding IDs. Toolchain/dependency remediation is outside this presentation release.

v0.1.7 — Classic rendering and death camera parity

Choose a tag to compare

@Distortions81 Distortions81 released this 14 Oct 17:05

Faithful rendering now follows classic Doom's texture offsets, animation phase, fixed-point wall/floor sampling, visplane coverage, sky mapping and light-table quantization. The fixes cover scrolling and composite textures, masked boundaries, shared-sky walls, sky floors and lighting-disabled views.

Player death cameras follow the body down to the classic six-unit eye height, use corpse collision height, preserve teleport view recovery and lower the weapon immediately after fatal damage. Demo respawn preserves gamma. These fixes remove post-death movement, lighting and image differences found by independent classic/GD replay.

A repeatable visual harness compares classic, CPU and shader output across Ultimate Doom and Doom II, five resolutions and three lighting modes. Demo/death comparisons cover all 25 repository recordings plus natural-death and respawn examples. Actors and HUD are omitted from these world captures. Non-native resolutions use an explicitly resolution-adapted classic reference. Proven out-of-buffer classic texture reads remain visible in reports and are the only excluded pixel differences.

Validation: the full Go suite, both IWAD GPU framebuffer suites, 96 sky shader cases, 10 Python harness tests and 15 browser launcher tests pass. All 97 state/RNG replay checks pass (25 repository demos and a fresh 72-demo COMPET-N sample across all 68 maps and nine categories). The historical full 4,646-demo corpus was not rerun. All 324 demo/death world captures have identical CPU/shader output; 321 match classic completely and the other three pass bounded-source pixel and shared-plane-UV checks.

The optional commercial-WAD campaign test now skips correctly when its WAD is absent. Desktop packages use the standard Ebitengine renderer; the optional Raylib executable remains a separate source build.

The complete static matrix passes all 30 runs / 11,214 scenes across 68 maps, five resolutions and three lighting modes. CPU and shaders are identical in every capture. 11,140 images match classic completely; the remaining images pass the bounded-source pixel and shared-plane-UV gates.

Source: c72eaa82df88440c96121ce6bea41e12111a3fdc (clean main, tag v0.1.7).

Known validation issue: the separate vulnerability scan still reports the same ten Go 1.26.6 standard-library findings as v0.1.6, with no new finding IDs. Toolchain/dependency remediation is outside this renderer release.

All four desktop release builds and main-branch Go CI succeeded. All five ZIP archives passed integrity checks and match the release commit; SHA256SUMS includes each archive. The optional Raylib source build also compiles.

The browser and matching co-op, deathmatch and lobby services are deployed at https://m45sci.xyz/u/dist/GD-DOOM/. Public asset hashes match the release manifest. A browser smoke test reached Faithful gameplay without console errors. Live native TLS, public WebTransport/WSS, and newly created co-op/deathmatch room checks passed discovery, movement, snapshot decoding, roster updates and explicit leave.

v0.1.6 — Faithful timing and multiplayer speed fixes

Choose a tag to compare

@Distortions81 Distortions81 released this 14 Oct 03:05

Faithful mode now keeps simulation and visual updates at the original 35 Hz, without motion interpolation or prediction smoothing. Game-speed controls are disabled in multiplayer and remain available for single-player Source Port play.

This release brings the desktop downloads up to the fixes already deployed in the browser game. It retains the multiplayer lobbies, co-op/deathmatch, automatic QUIC with WSS fallback, and downloadable Freedoom games from v0.1.5.

Desktop packages use the standard Ebitengine renderer. The optional Raylib executable remains a separate source build.

Built from main commit f86a04c5c4139af5439c7d6b43e1c31b302d44a6. Validation: the full Go test suite, WASM compilation, all 15 browser launcher tests, and the optional Raylib build passed locally.

All four desktop release builds succeeded. The five downloadable ZIP archives were checked for integrity and matching source revision; SHA256SUMS covers each archive.

Known validation issues: the main-branch CI run fails one optional Doom II campaign test because its missing-WAD skip does not recognize a wrapped file error. The test passes locally with the WAD available. The separate vulnerability scan reports existing Go 1.26.6 standard-library vulnerabilities, also reported before this merge; dependency/toolchain remediation is not included in this release.

v0.1.5 — Faster multiplayer updates and automatic QUIC

Choose a tag to compare

@Distortions81 Distortions81 released this 10 Oct 07:52

Multiplayer now sends fresh world updates every Doom tick (35 per second), with less compression work and fewer packet-processing allocations. Desktop uses native QUIC and browsers use WebTransport automatically, with WSS fallback when needed. QUIC now serves created co-op/deathmatch rooms and the default deathmatch server through the existing public gateway.

Faithful-mode mouse sensitivity now matches Modern mode across window sizes.

Validation: networking race and room integration tests, packet-loss recovery, movement/interpolation/audio regression tests, real-browser WebTransport, and the production WASM build passed. All desktop archives were built from commit f4111b159296aae9a4a4c9a31b3d1ffa1f4efed4.

Use the matching desktop build or reload the browser game for this deployment. The higher update rate increases bandwidth; benchmark CPU reductions do not measure Internet ping.

v0.1.4 — Multiplayer and free standalone games

Choose a tag to compare

@Distortions81 Distortions81 released this 10 Oct 06:50

GD-DOOM v0.1.4 brings the current authoritative multiplayer and free-game catalog to desktop builds.

  • In-game room browser and Create Game, with co-op, deathmatch, difficulty, map selection, and custom WAD uploads.
  • Automatic downloading and loading of approved WADs when selecting a game or joining a room.
  • Freedoom Phase 1 and Phase 2 for single player and co-op, plus FreeDM for deathmatch; no separately owned base game is required. These WADs download from the GD-DOOM server on selection. Unchanged Doom Shareware remains bundled for offline play.
  • Player names, ping, connection status, scoreboards, and join/leave notices.
  • Improved prediction, moving-sector presentation, binary snapshots, networking performance, GPU shaders, and browser audio buffering.

Choose your graphics, sound, and music settings in the game before playing. The desktop room lobby is enabled by default; joining still requires an explicit menu action.

Downloads include Windows x86_64, Linux x86_64, macOS Intel, macOS Apple Silicon, and a WASM archive. Free-game license and contributor/music notices are included. SHA256SUMS covers every archive.

Source commit: 2d45598dfab2bdcbe0bbfe916a7139518f3552c4.
Multiplayer compatibility: GDMP 3 / gd-doom-authority-dev-3. Older multiplayer builds must be updated to join current servers.

Play in your browser · Free-game sources and compatibility.

v0.1.3 — Classic spectre fuzz and browser VSync

Choose a tag to compare

@Distortions81 Distortions81 released this 02 Oct 16:25

Spectres now retain Doom’s 320×200 fuzz grain at every resolution, using the original offset table, column sequencing, neighbor feedback, and WAD COLORMAP row six. Fuzz shading runs on a small GPU layer before scaling to the framebuffer.

Sprites, masked textures, and spectres now interleave by depth. A spectre behind an enemy no longer blurs that enemy, and each spectre samples the scene behind it, including farther spectres.

Browser rendering now uses VSync by default. The separate 75 FPS WASM sleep throttle is removed; Doom simulation remains at 35 tics per second, and -no-vsync remains available.

Validation: full Go test suite; real GPU/software framebuffer comparisons for Doom and Doom II; regression checks for foreground enemies, alpha holes, overlapping spectres, palette/gamma shading, and fixed fuzz grain across resolutions. Feedback interrupted by wall clipping remains approximate.

Desktop downloads include the shareware IWAD and General MIDI SoundFont. The WASM archive includes the matching browser build, and SHA256SUMS covers every archive.

v0.1.2 — Classic software appearance, faster GPU shaders

Choose a tag to compare

@Distortions81 Distortions81 released this 02 Oct 15:29

GD-DOOM now uses faster GPU shaders in both Faithful and Source Port modes while preserving Doom's classic software-rendered appearance. The CPU retains the renderer's visibility, projection, clipping, and lighting decisions; shaders draw the resulting columns, spans, sprite cutouts, and sky.

  • Enable GPU rendering by default in Faithful mode with indexed 256-color PLAYPAL/COLORMAP lookups, active gamma, exact CPU sky coordinates, and classic low-detail column doubling.
  • Compress repeated wall columns and sprite rows into compact draw commands, and halve texture metadata fetches with packed coordinates and dimensions.
  • Reduce close-up sprite stalls by reusing horizontal visibility spans until wall or portal clipping changes, including sprite plane occluders.
  • Correct overlapping texture-row sampling in the software sprite magnification path. Faithful software sprites, sky, and fullbright teleport effects now consistently use their palette and gamma rules.
  • Expand the README, rendering guide, browser landing page, visual comparisons, and reproducible benchmarks around the software-rendered appearance and GPU optimizations.

Validation: the full Go test suite passes. Real shader framebuffer checks pass on Doom E1M1/E1M5 and Doom II MAP11/MAP26, including melee-range views, gamma, invulnerability, and Faithful high/low detail. Palette checks cover all 256 indices through 33 non-linear COLORMAP rows at three gamma settings and verify Faithful world pixels remain in the active palette. The largest observed Faithful difference from software was 0.300% of pixels differing by more than two color levels in the tested scenes. Native and WASM builds pass.

GPU drawing is enabled by default on desktop and in the browser. Use -gpu-renderer=false for the CPU software renderer; unsupported texture banks also fall back automatically. Small texel-boundary rounding differences remain, and GPU spectre fuzz approximates the original effect using a background snapshot.

Downloads include Linux x86_64, Windows x86_64, macOS Intel, macOS Apple Silicon, and the deployable WASM browser build. Desktop packages include the shareware DOOM1.WAD, General MIDI SoundFont, README, and license notices. See renderer checks and benchmarks for detailed results; synthetic CPU timings are not whole-game FPS.

Play in your browser · Full changes

v0.1.1

Choose a tag to compare

@Distortions81 Distortions81 released this 02 Oct 06:29

This release improves original Doom demo compatibility and adds GPU rendering to Source Port mode.

  • Fix many gameplay and RNG desynchronizations involving doors, platforms, teleport destinations, slide movement, thinker ordering, pause handling, and targetless Lost Souls.
  • Safely reproduce the original manual-door/platform interaction. All 13 affected COMPET-N recordings now strictly match the original game's state and gameplay RNG.
  • Add an opt-in semantic trace comparison for the unused topheight field on downward lowerAndCrush ceilings. Strict comparison remains the default, and raw mismatches are preserved. All 13 affected recordings pass state and RNG checks: six strictly and seven through the limited semantic comparison.
  • Enable GPU world rendering by default in Source Port mode; Faithful mode continues to use software rendering. CPU rendering remains available with -gpu-renderer=false.
  • Fix initial relay keyframe delivery for viewers joining a broadcast, improve browser controls and uploads, and update PC speaker audio integration and dependencies.
  • Expand the COMPET-N inventory to 4,646 eligible recordings by recovering twelve demos from legacy archives. Document the remaining 18 exclusions: seventeen original-reference crashes and one timed door that uses uninitialized memory.

Completed COMPET-N sweep, verified 2026-10-02 against this release's gameplay source: 4,628 of 4,646 recordings (99.61%) pass across Ultimate Doom and Doom II. 4,621 match strictly (99.46%); seven match only with the opt-in unused-ceiling-field semantic policy and retain their raw strict mismatches. Eighteen exclusions remain: seventeen original-reference crashes and one timed door that uses uninitialized memory. There are zero pending inputs or unexplained ordinary desyncs. Comparisons include every tic through original termination or the first player death, including the death tic; every pass requires an independent gameplay RNG match. Exclusions are included in the percentage denominator and never count as passes.

All 101 ordinary replay fixtures and the 26 affected-recording follow-ups pass state and independently audited gameplay RNG checks. The full Go suite, fourteen Python corpus checks, and GitHub CI/vulnerability checks pass. Historical runtime coverage is separate from the completed current sweep.

See the public compatibility guide, per-recording results, and exclusion guide.

Downloads are available for Linux x86_64, Windows x86_64, macOS Intel, and macOS Apple Silicon. Each package includes the shareware DOOM1.WAD, the General MIDI SoundFont, README, and license notices.

Release documentation refreshed on 2026-10-02 with the completed sweep results and portable links. Executables and bundled game/audio assets are unchanged.

Full changes: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@Distortions81 Distortions81 released this 18 Apr 11:30

Improve opl2 accuracy