This repository has been archived on 2026-05-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AgrarianGameArchive/Scripts/verify_non_ray_traced_default.py
T

87 lines
3.2 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
PRESET_FILE = ROOT / "Config" / "AgrarianRenderingPresets.ini"
DOCS_FILE = ROOT / "Docs" / "Rendering" / "InvestorRenderingPresets.md"
ROADMAP_FILE = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
def read_presets():
presets = {}
active_section = None
for raw_line in PRESET_FILE.read_text(encoding="utf-8").splitlines():
line = raw_line.strip()
if not line or line.startswith(";"):
continue
if line.startswith("[") and line.endswith("]"):
active_section = line[1:-1]
presets[active_section] = {"CVars": []}
continue
if not active_section or "=" not in line:
continue
key, value = line.split("=", 1)
if key == "+CVars":
presets[active_section]["CVars"].append(value)
else:
presets[active_section][key] = value
return presets
def main():
failures = []
presets = read_presets()
default = presets.get("AgrarianRenderingPreset.Default")
recommended = presets.get("AgrarianRenderingPreset.Recommended")
cinematic = presets.get("AgrarianRenderingPreset.Cinematic")
if not default:
failures.append("missing AgrarianRenderingPreset.Default")
if not recommended:
failures.append("missing AgrarianRenderingPreset.Recommended")
if not cinematic:
failures.append("missing AgrarianRenderingPreset.Cinematic")
for label, section in [("Default", default), ("Recommended", recommended)]:
if not section:
continue
cvars = set(section.get("CVars", []))
if section.get("RayTracing") != "Disabled":
failures.append(f"{label} RayTracing must be Disabled")
for cvar in ["r.RayTracing=0", "r.Lumen.HardwareRayTracing=0", "r.PathTracing=0"]:
if cvar not in cvars:
failures.append(f"{label} missing non-ray-tracing CVar {cvar}")
if "r.RayTracing=1" in cvars or "r.Lumen.HardwareRayTracing=1" in cvars:
failures.append(f"{label} enables ray tracing")
if cinematic:
cvars = set(cinematic.get("CVars", []))
if cinematic.get("RayTracing") != "Optional":
failures.append("Cinematic RayTracing must be Optional")
if "r.RayTracing=1" not in cvars:
failures.append("Cinematic must be the only preset that opts into r.RayTracing=1")
docs_text = DOCS_FILE.read_text(encoding="utf-8")
for snippet in [
"Default is the investor demo baseline",
"Ray tracing: disabled.",
"Cinematic is optional",
"No gameplay feature should require ray tracing.",
]:
if snippet not in docs_text:
failures.append(f"{DOCS_FILE} missing snippet: {snippet}")
roadmap_text = ROADMAP_FILE.read_text(encoding="utf-8")
if "[x] Verify the non-ray-traced compatibility/default path" not in roadmap_text:
failures.append("roadmap item is not marked complete")
if failures:
raise SystemExit("Non-ray-traced default verification failed:\n" + "\n".join(failures))
print("PASS: default and recommended investor rendering paths are non-ray-traced; cinematic is optional.")
if __name__ == "__main__":
main()