Skip to content
ChemaclassPublic

About

Terminal DOOM-lite raycaster built in Phel (Lisp on PHP). 256-color ANSI, 5 procedural levels — a real-world Phel showcase app.

Topics

Resources

Contributing

Stars

12 stars

Watchers

0 watching

Forks

Repository files navigation

phel-doom

phel-doom gameplay (YouTube)

A DOOM-lite raycaster for the terminal, written in pure Phel, a Lisp that compiles to PHP. It has 256-color ANSI graphics, 10 levels, first-person combat, and a frame time of about 5 ms. See the feature list.

Play

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

Download the single-file PHAR from the latest release. You don't need to clone the repository or install 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

The Docker image includes PHP 8.5, Composer, and the dependencies:

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 about 1 second per command. Local PHP is faster for development.

Controls

Use w a s d to move, arrows or mouse to turn and look, space or left-click to fire, r to reload, 1-7 to select weapons, p to pause, and q twice to quit. Walk into doors to advance.

See gameplay for all controls, pickups, and weapons.

Internals

License

MIT

About

Terminal DOOM-lite raycaster built in Phel (Lisp on PHP). 256-color ANSI, 5 procedural levels — a real-world Phel showcase app.

Topics

Resources

Contributing

Stars

12 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages