Let's write a video game from scratch like it's 1987

Retro hardware & nostalgia

  • Several comments reminisce about programming on TI graphing calculators (TI‑85/86/89), including algebra solvers and even a primitive ray tracer exploiting slow LCD response for anti‑aliasing.
  • Others recall TI’s dominance in education and link it to broader histories of TI and calculators.
  • Home computers like TI‑99/4A, ZX Spectrum, Amstrad CPC, Atari, and Amiga are discussed as fertile ground for early game dev, often with assembly, sprite chips, and tiny memory footprints.

Allocators, systems languages, and game engines

  • Odin’s implicit allocator passing is compared with Zig’s explicit “no hidden allocations” philosophy.
  • Debate over whether implicit/default allocators are acceptable:
    • One side argues systems programming is about tight, explicit control of memory, threading, and latency; otherwise a managed language may be better.
    • Others counter that implicit allocator threading doesn’t reduce control and that high-level abstractions and safety (e.g., Rust, C++) can coexist with low-level control.
  • Game engines are framed as systems programming: heavy dynamic allocation, custom allocators, and the importance of predictability.

X11, SDL, Wayland, and network transparency

  • Some argue SDL adds little overhead and big portability; others note that for X11 you can keep pixmaps server‑side for very efficient networked blitting, which SDL often doesn’t exploit.
  • Strong debate over whether X11’s network transparency is a “flaw” or a powerful feature now largely lost with Wayland.
  • Wayland is criticized for lack of native remote display and for requiring more pixel pushing; defenders say remote protocols (VNC‑like) are sufficient.
  • Clarification that Wayland can still send shared‑memory pixel buffers; claim that static linking is “impossible by design” is challenged.

Code readability: Doom vs modern engines

  • Some find Doom’s C code archaic and hard to maintain by today’s standards: terse names, few comments, and large functions raise bus‑factor concerns.
  • Others say it’s quite readable for its era and that minor indentation quirks are nitpicks.
  • Modern AAA practices favor small, self‑documenting functions, heavy commenting, and maintainability metrics; the Doom style is viewed as historical but not ideal today.

Constraints, binaries, and dev workflow then vs now

  • The article’s ~300 KB static binary and ~1 MB assets are praised, but multiple comments note this would still be “huge” for 1980s hardware (often 64–640 KB RAM, tiny disks).
  • Comparisons to tiny classic games (Minesweeper, Chip’s Challenge, SNES titles) emphasize how far resource use has grown.
  • Recollections of DOS/Turbo Pascal workflows highlight how integrated IDEs and fast compilers once gave very tight edit–compile–run loops, sometimes faster than modern C++ toolchains.
  • There is widespread sentiment that early dev combined strong constraints, custom tools, and intense focus (no internet/notifications), enabling impressive creativity.