- Merge stage-0-now.org content into stages/_index.org (now titled 'Stage 0: Now') - Delete stage-0-now.org - Add stage overview table to the top of the page (8 stages, what changes, threat eliminated) - Update all cross-references from old stage-0 UUID to stages _index UUID - Regenerate ID map to reflect the deletion - Also fix page-list shortcode: .ByTitle -> .ByWeight so subpage listing matches sidebar order - Rebuild: 147 files, 0 errors
31 lines
2.7 KiB
Org Mode
31 lines
2.7 KiB
Org Mode
:PROPERTIES:
|
|
:ID: f467ce16-1861-4ebd-96ed-b52fea909515
|
|
:CREATED: [2026-06-05 Fri]
|
|
:END:
|
|
#+title: Lisp as Game Engine Substrate
|
|
|
|
The GOAL compiler (Naughty Dog, Jak and Daxter) proved Lisp could ship SOTA games on constrained hardware (PS2, 32MB RAM). Twenty years later, the question is whether Lisp can do it again on modern hardware — and whether the CL Modernization work makes it viable.
|
|
|
|
**What Lisp gives you that C++ cannot match:**
|
|
|
|
- Interactive development at runtime — change AI, physics, or rendering code while the game runs. No compile-link-run cycle. C++ engines for large projects measure iteration in minutes; Lisp measures it in frames.
|
|
- Macros for game DSLs — behavior trees, animation blend graphs, dialogue trees, state machines become native Lisp code instead of external tools with serialization boundaries.
|
|
- CLOS multiple dispatch for ECS — generic functions on component types replace manual message routing.
|
|
- Image-based workflow — save and resume the entire engine state (GPU, audio, physics, editor) from anywhere.
|
|
|
|
**Where Lisp falls short:**
|
|
|
|
- GC tail latency — concurrent generational GCs (single-digit ms) are acceptable for 60fps (16ms budget) but problematic for VR at 90fps (11ms) or competitive esports. The CL Modernization analysis identifies this as inherent but mitigatable, and eliminates it entirely on a tagged RISC-V core with hardware CONS and concurrent collection.
|
|
- GPU interop — no idiomatic Vulkan/DirectX 12 bindings. This is an ecosystem gap (fixable), not a language limitation.
|
|
- No modern engine exists — Unreal Engine 5 is ~5M lines of C++. At 3-5x density, a Lisp equivalent might be 1-2M lines. Massive but smaller than the C++ baseline.
|
|
|
|
**The GOAL lesson:** Naughty Dog's compiler used disciplined Lisp written to avoid allocation on hot paths, proving the constraint is programmer practice, not language capability. Modern SBCL with type declarations compiles to within 2x of C on hot numerical code — sufficient for games where the bottleneck is GPU fill rate, not CPU-bound game logic.
|
|
|
|
**What changes with the CL Modernization work:** A verified Lisp runtime eliminates the class of bugs that causes engine crashes; a RISC-V Lisp extension with hardware CONS and concurrent GC eliminates the tail-latency argument against real-time use; and the density advantage makes a from-scratch engine build tractable for an AI agent working at 10x human velocity.
|
|
|
|
For further analysis, see [[https://en.wikipedia.org/wiki/GOAL_(programming_language)]].
|
|
|
|
See also:
|
|
- [[id:971cd9e7-2cc5-4743-8042-2469dbe4078f][Lisp Foundation]] — the CL Modernization analysis this builds on
|
|
- [[id:1c3ec48b-446c-50d2-b53e-126a81f5143f][Architecture]] — the verified Lisp machine target
|