PHPackages                             chemaclass/phel-doom - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. chemaclass/phel-doom

ActiveProject[CLI &amp; Console](/categories/cli)

chemaclass/phel-doom
====================

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

v0.7.0(1w ago)801MITShellPHP &gt;=8.4CI passing

Since May 22Pushed 1w agoCompare

[ Source](https://github.com/Chemaclass/phel-doom)[ Packagist](https://packagist.org/packages/chemaclass/phel-doom)[ Docs](https://github.com/Chemaclass/phel-doom)[ Fund](https://chemaclass.com/sponsor)[ RSS](/packages/chemaclass-phel-doom/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (8)Dependencies (6)Versions (30)Used By (0)

phel-doom
=========

[](#phel-doom)

[![phel-doom gameplay (YouTube)](https://camo.githubusercontent.com/d5cd3a5f53f46610393cbbcf739976fc73776f93032e79a575142fbe9b026665/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f30732d73587870636f49412f6d617872657364656661756c742e6a7067)](https://www.youtube.com/watch?v=0s-sXxpcoIA)

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

Quick start
-----------

[](#quick-start)

Needs PHP &gt;= 8.4, Composer, 256-color terminal.

```
git clone git@github.com:Chemaclass/phel-doom.git
cd phel-doom
make install
make play
```

Or `composer install && composer play`.

### Docker

[](#docker)

No 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
--------

[](#controls)

KeyAction`w` / `s` / ↑↓Forward / back`a` / `d`Strafe left / right`←` / `→`Turn left / right`SHIFT` / `x`Sprint (1.6× speed)`e`About-face (180°)`space`Fire`r`Reload`1` / `2` / `3`Switch weapon`m` / `n`Minimap / sound toggle`p`Pause + settings`h` / `ESC`Info menu + pause`F3`Debug overlay`q`QuitWalk into doors to advance. Pickups:

- **♥ heart**: `+1` life
- **◆ armor**: absorbs one hit (cap 5)
- **armor shard**: `+1` armor over 5, up to 10
- **soulsphere**: `+1` life over cap, decays back
- **ammo box**: `+N` to weapon reserve
- **berserk**: 20s of `×2` damage
- **invuln**: 10s immunity
- **backpack**: increases reserve cap
- **⚿ keycard**: unlocks L4 (blue) / L5 (red) exits; L10 boss-locked

Compass at top-centre: tints the cardinal letter (E/S/W/N) toward your target. Orange = exit, blue/red = keycard needed.

Weapons (DPS-balanced, found on map):

SlotWeaponDmgCDMagDPS1pistol10.12s1082shotgun30.6s453chaingun10.05s30204chainsaw10.10s∞10Hold space to spray (pistol / chaingun / chainsaw). Shotgun: one pull per shell.

CLI flags:

- `--difficulty=easy|normal|hard|nightmare` (`-d`) - scales enemy speed, HP, count
- `--level=N` (`-l`) - start at level N
- `--god` (`-g`), `--armory` (`-a`), `--full-map` (`-f`) - dev flags

Terminal quirks (kitty, tmux): [docs/input.md](docs/input.md).

Internals
---------

[](#internals)

[docs/README.md](docs/README.md) - per-subsystem guide.

License
-------

[](#license)

MIT

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance98

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

8

Last Release

8d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3d166420c6770c5941e10bd68b2d26501eabb432e280d8e6eba0a344bcc1e5ae?d=identicon)[Chemaclass](/maintainers/Chemaclass)

---

Top Contributors

[![Chemaclass](https://avatars.githubusercontent.com/u/5256287?v=4)](https://github.com/Chemaclass "Chemaclass (367 commits)")[![SauronBot](https://avatars.githubusercontent.com/u/82400622?v=4)](https://github.com/SauronBot "SauronBot (1 commits)")

---

Tags

ansiascii-artclidoomfpsfps-gamegamelisplisp-gamephelphel-appphel-langphpprocedural-generationraycasterretroterminal-gameterminal-renderingfunctionalgamelisppheldoomraycaster

### Embed Badge

![Health badge](/badges/chemaclass-phel-doom/health.svg)

```
[![Health](https://phpackages.com/badges/chemaclass-phel-doom/health.svg)](https://phpackages.com/packages/chemaclass-phel-doom)
```

###  Alternatives

[phel-lang/phel-lang

Phel is a functional programming language that compiles to PHP

5085.1k16](/packages/phel-lang-phel-lang)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
