Use this checklist before tagging or publishing a release.
For a stricter engine bar (automated steps + optional content-backed maps), see PRODUCTION_CERTIFICATION.md and run ./scripts/production_readiness.sh (set GAME_BASE when you have a full base/ tree). Gap report: ./scripts/evidence_status.sh.
- Local CI validation (optional):
./scripts/validate_ci_build.shruns shader compile, Vulkan build, and smoke test - Production readiness orchestrator (optional):
./scripts/production_readiness.sh- extends validation with fullctestand, ifGAME_BASEis set,renderer_regression_maps.sh - Vulkan build:
./scripts/compile_engine.sh vulkansucceeds - OpenGL build:
./scripts/compile_engine.sh openglsucceeds - Debug build:
./scripts/compile_engine.sh vulkan debugsucceeds - Shader regeneration: If shader sources (
.tmpl,.vert,.frag, etc.) changed, run./scripts/compile_shaders.sh --applyand commit the updatedshader_data.candshader_binding.c
- Smoke test passes:
./scripts/smoke_test.sh release(run after build; requiresidtech3andidtech3_serverinrelease/)
- Renderer regression check:
./scripts/renderer_regression_check.sh(docs + generated shader blobs + recursive GLSL; optionalGAME_BASE=...with uncommented paths indocs/samples/renderer_regression/OPTIONAL_GAME_ASSETS.txtto require BSPs) - Map load sanity (when full
base/+ regression pk3 available):GAME_BASE=/abs/path/to/base ./scripts/renderer_regression_maps.sh - Graphics changes: run the manual short list in docs/RENDERER_CONFIDENCE.md or the visual regression pack before release
- Unit tests pass:
cd build-vk-Release && ctest -R unit -V(includesunit_macros,unit_qmath,unit_surfaceflags,unit_qhelpers,unit_crc,unit_pathutil,unit_msg,unit_info,unit_cm_bounds,unit_parse,unit_endian; or run fullctest)
- All CI jobs pass: Push to
mainor open a PR and verify all builds succeed (Windows MSYS, Windows MSVC, Ubuntu x86_64, Ubuntu ARM, macOS, Android)
- Windows:
idtech3.exe,idtech3_server.exe; MSYS2/MinGW artifacts also need bundled MinGW runtime.dll(CI runsscripts/stage_mingw_runtime_dlls.sh) plus OpenAL Soft (scripts/stage_openal_windows_dlls.ps1→OpenAL32.dll+soft_oal.dllnext to the.exefiles on x64). MSVC builds static-link renderers (noidtech3_vulkan.dll/idtech3_opengl.dll); MSVC x64 CI still runs the OpenAL bundle for drop-in compatibility with OpenAL-linked binaries. MSVC ARM64 skips that step (no official ARM64 OpenAL Soft bin zip; stock MSVC client uses WASAPI/DirectSound, notsnd_backend_openal.c). - Linux:
idtech3,idtech3_server,idtech3_vulkan.so,idtech3_opengl.so - macOS:
idtech3,idtech3_server, renderer plugins
-
CHANGELOG.mdor release notes updated -
docs/reflects current features -
docs/QUICKSTART.mdaccurate for release download URL
- Tag created with version (e.g.
v1.0.0) - GitHub Release created (draft first, then publish)
- Publish release - this triggers the CI build workflow; the
release-attachjob will build binaries for all platforms (Windows, Linux, macOS, Android) and attach them to the release. Allow 15–30 minutes for all platform archives to appear. - Verify all platform archives are attached to the release
- Announcement (if applicable)