chemaclass / phel-doom
DOOM-lite showcase written in Phel Lang. Terminal raycaster, pure functional state, ANSI render.
Package info
github.com/Chemaclass/phel-doom
Language:Shell
Type:project
pkg:composer/chemaclass/phel-doom
Fund package maintenance!
Requires
- php: >=8.5
- phel-lang/phel-lang: dev-main
- symfony/console: ^8.1
Requires (Dev)
- symfony/var-dumper: ^8.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-29 22:42:11 UTC
README
DOOM-lite raycaster in your terminal. Pure Phel (Lisp on PHP). 256-color ANSI, 10 levels, FPS combat, ~5ms frame. Full feature list: docs/features.md.
Play
Needs PHP >= 8.5 and a 256-color terminal.
Grab the single-file PHAR from the latest release. No clone, no Composer:
curl -fsSL -o phel-doom.phar https://github.com/Chemaclass/phel-doom/releases/latest/download/phel-doom.phar php phel-doom.phar
Build from source (Composer or Docker)
git clone git@github.com:Chemaclass/phel-doom.git cd phel-doom make install # or: composer install make play # or: composer play
No local PHP? The Docker image bundles PHP 8.5, Composer and the deps:
make docker-build # build image (tag: DOCKER_IMG=mytag) make docker-play # launch game (raw TTY) make docker-test # run test suite make docker-shell # bash inside container make docker-clean # remove image
Docker adds ~1s per command. Host PHP stays the faster inner loop.
Controls
w a s d move, arrows or mouse turn and look, space or left-click fire, r reload, 1-7 weapons, p pause, q quit (press twice). Walk into doors to advance.
Full key list, pickups and weapons: docs/gameplay.md.
Internals
- docs/README.md: index of per-subsystem docs.
- docs/coming-from-clojure-or-php.md: read Phel fast if you know Clojure or PHP.
- docs/contributing.md: dev loop, gates, test conventions, Phel gotchas.
License
MIT