chemaclass/phel-doom

DOOM-lite showcase written in Phel Lang. Terminal raycaster, pure functional state, ANSI render.

Maintainers

Package info

github.com/Chemaclass/phel-doom

Language:Shell

Type:project

pkg:composer/chemaclass/phel-doom

Fund package maintenance!

chemaclass.com/sponsor

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 8

Open Issues: 4

v0.12.0 2026-06-09 08:28 UTC

README

phel-doom gameplay (YouTube)

DOOM-lite raycaster in your terminal. Pure Phel (Lisp on PHP). 256-color ANSI, 10 procgen levels, FPS combat, ~5ms frame. Full feature list: docs/features.md.

Play

Needs PHP >= 8.4 and a 256-color terminal.

Fastest: 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 (needs Composer, or Docker)
git clone git@github.com:Chemaclass/phel-doom.git
cd phel-doom
make install
make play

Or composer install && composer play.

No local PHP? Run in Docker

PHP 8.5 CLI + Composer + deps in an image; docker is the only prerequisite.

make docker-build      # build image
make docker-play       # launch game (raw TTY)
make docker-test       # run test suite
make docker-shell      # bash inside container
make docker-clean      # remove image

Override tag: DOCKER_IMG=mytag make docker-build. Host PHP is the inner loop; Docker adds ~1s startup.

Controls

Key Action
w a s d / arrows Move / turn
SHIFT Sprint
space / r Fire / reload
1...8 Switch weapon
p / q Pause / quit

Walk into doors to advance. Find weapons and pickups on the map.

Full controls, pickups, and weapons: docs/gameplay.md.

Internals

License

MIT