A fork of Imoria with some fixes and changes, making it more fun to play for me. This project has also involved into a way for me to try out the Rust language, so I am in the process of porting it from C to Rust. So basically this project is a port of a port (Pascal -> C -> Rust). I wouldn't recommend anyone else compiling this project and running themselves, as there are probably a lot more bugs you would like.
Build on macOS or Linux with:
- Rust and Cargo, including the rustfmt and Clippy components.
- Make and GCC or a compatible C compiler supporting GNU C99. The Makefile
defaults to
gcc; select another compiler withmake CC=your-compiler. - ncurses development headers and libraries, plus termcap-compatible linkage. The build also links the platform math, pthread, and dynamic-loader libraries.
On macOS, install the Xcode Command Line Tools for the C toolchain and Make;
install ncurses development files if they are not available to the compiler.
On Debian/Ubuntu Linux, install build-essential and libncurses-dev.
Install Rust with rustup and add the checks with
rustup component add rustfmt clippy. Non-system ncurses installations may
require include/library search paths; termcap library availability varies by
platform.
Run these commands from the repository root:
make # Build the C objects, Rust static library, and linked omoria executable
make run # Build if needed, then start the game in an interactive terminal
make check-fast # Fast verification: formatting, Clippy, Rust tests, and C/Rust build
make check # Full verification suite, including C harnessesUse T0 focused cargo test <module::filter> checks during each edit, then run
T1 make check-fast at the end of each behavior or delegated task. Add only
the C harnesses mapped to touched boundaries in the testing guide.
Run the full T2 make check once before each commit/PR and always in CI. The C
tests use controlled input/drawing doubles without a terminal; headless targets
cover bounded scenarios, not complete gameplay workflows. Existing Clippy
warnings remain non-blocking, and six legacy denied lints have scoped
allowances to preserve existing behavior. CI runs on macOS and Linux (x86_64
and ARM64); runner results still need confirmation.
- Source structure
- Epic backlog and story plans
- Testing and verification levels
- Agent containers (Dev Container and headless workers)
- Combat proposal (not implemented)
- Historical item guide
(There may be some outdated information here, because of changes I have introduced in this repo. This section is preserved for historical reference; use the build instructions above for the current project.)
I finally wrote a README file.
Edit configure.h to set the paths you want the data files to go and were the help file (mhelp.pl) will be.
Put a copy of monsters.dat into the DATA_FILE_PATH, and move mhelp.pl to the propper place as well.
In the Makefile edit the owner and group to use for the game and data files.
run make imoria
the first time you run imoria it should make a bunch of data files and then quit. Since the Makefile does not know where the data files are at this may not work correctly for you (I do intend to make this better).
Several people are having a problem running the game where it quits right after starting, without any error messages. Two problems have been found that cause this. The first is not having copied monsters.dat to the data files directory that is set in configure.h. The second is if ncurses does not like the default terminal type.