doomcr
Version, currently main branch1 version
- main branchlatestJul 25, 2026
github.com/omarluq/doomcr
play doom in the terminal using the termisu lib
Installation
# Add this to your shard.yml
dependencies:
doomcr:
github: omarluq/doomcr
branch: mainmain is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
>= 1.19.1- License
- MIT
- Author
- omarluq
- Targets
hacefrom lib/hace/src/main.cramebafrom lib/ameba/src/cli.crdoomcrfrom src/main.cr
Dependencies
Runtime Dependencies
- termisu*github: omarluq/termisu
Development Dependencies
README
doomcr
Run doomgeneric in a terminal using termisu (Crystal).
Docker (recommended)
# Build image
docker build -t doomcr:latest .
# Run with shareware DOOM1.WAD (default source)
docker run --rm -it doomcr:latest
# Run with Freedoom instead
docker run --rm -it -e DOOM_WAD_SOURCE=freedoom doomcr:latest
Persist downloaded WAD files between runs:
docker run --rm -it -v "$(pwd)/wads:/data/wads" doomcr:latest
Use your own IWAD directly:
docker run --rm -it -v "/absolute/path/to:/iwads:ro" doomcr:latest -iwad /iwads/doom1.wad
Supported runtime flags:
DOOM_WAD_SOURCE=shareware|freedoom(default:shareware)DOOM_SHAREWARE_URL=<url>to override the shareware download URLDOOM_WAD=/path/in/container/file.wadto bypass auto-download
Native Library
libdoomgeneric.a is committed in the repo root and used directly by both local Crystal builds and Docker builds.
If you want to rebuild it:
git clone https://github.com/ozkl/doomgeneric vendor/doomgeneric
chmod +x docker/build_doomgeneric.sh
./docker/build_doomgeneric.sh
This regenerates ./libdoomgeneric.a.
Development
# Run tests
crystal spec
# Run task runner workflow (format + lint + spec)
bin/hace all
# Optional wrappers for docker commands
bin/hace docker:build
bin/hace docker:run
bin/hace docker:run:freedoom
Basic controls in this terminal port:
- Arrow keys: movement/turn
spaceorf: firee: use/openesc: menuCtrl+Q: quit wrapper
Contributing
- Fork it (https://github.com/omarluq/doomcr/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- omarluq - creator and maintainer
License Note
doomgeneric is GPL-2.0 licensed upstream. If you distribute builds containing it, review GPL obligations.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
main- Seen
- Jul 25, 2026
- Crystal
>= 1.19.1- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/omarluq/doomcr
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 15, 2026
- Synced
- Aug 15, 2026
- Versions
- 1