187 lines
6.6 KiB
Markdown
187 lines
6.6 KiB
Markdown
# Ordoor
|
|
|
|
Ordoor is an **unofficial** [game engine recreation](https://en.wikipedia.org/wiki/Game_engine_recreation)
|
|
of the Random Games, Inc., [Strategy Engine](https://www.mobygames.com/game-group/game-engine-random-games-1996-2000-strategy-engine),
|
|
which was in use from 1996 - 2000.
|
|
|
|
Four games are known to have been published for this engine:
|
|
|
|
* [Wages of War: The Business of Battle](https://en.wikipedia.org/wiki/Wages_of_War) (1996)
|
|
* [Soldiers At War](https://en.wikipedia.org/wiki/Soldiers_at_War) (1998)
|
|
* [Warhammer 40,000: Chaos Gate](https://en.wikipedia.org/wiki/Warhammer_40,000:_Chaos_Gate) (1998) [GOG](https://www.gog.com/game/warhammer_40000_chaos_gate)
|
|
* [Avalon Hill's Squad Leader](https://en.wikipedia.org/wiki/Avalon_Hill%27s_Squad_Leader) (2000)
|
|
|
|
The aim of Ordoor is to be a complete reimplementation that allows all four
|
|
of these games to be played on modern hardware. It should also permit new games
|
|
of the same style to be built.
|
|
|
|
For each of the games above, **You must have a copy of the original game data to play**.
|
|
Links are provided above if we're aware of an active publisher; otherwise, check
|
|
your back catalogue, or perhaps a local charity shop.
|
|
|
|
Trademarks and intellectual property are the property of their respective
|
|
owners, and the games mentioned above (including the game data) are protected by
|
|
copyright. As a mere game engine recreation, we're confident that this project
|
|
operates legally, and that its goal is a noble one. Do get in touch if you
|
|
believe otherwise!
|
|
|
|
Ordoor is a portmanteau of Order Door, which is, of course, the opposite of a
|
|
Chaos Gate. The project began with a Chaos Gate recreation, then more games were
|
|
discovered, so scope expanded. A rename and/or rewrite may be on the cards as a
|
|
result.
|
|
|
|
## Current status
|
|
|
|
### Chaos Gate
|
|
|
|
Some of the original file formats are either partially or fully decoded. Maps,
|
|
menus, and most visual data can be rendered pixel-perfect. Sound can be played
|
|
(with a preprocessing step). Some UI tookit work is done. No game mechanics are
|
|
implemented yet.
|
|
|
|
I keep a GIF showcasing interesting progress here:
|
|
|
|

|
|
|
|
I've just been informed that another game from 1998, [Soldiers At War](https://en.wikipedia.org/wiki/Soldiers_at_War),
|
|
seems to use the same engine. Maybe at some point Ordoor will be able to play
|
|
both. Will that need a rename? Hmm. Watch this space.
|
|
|
|
### Soldiers At War
|
|
|
|
(At least some) objects display. Map support is being worked on in the
|
|
`soldiers-at-war` branch, which can more-or-less display them, albeit with many
|
|
errors.
|
|
|
|
### Squad Leader
|
|
|
|
Squad Leader is the most recent of the games created with this engine. Nothing
|
|
has been done with it yet, but a preliminary look at the game data suggests many
|
|
changes are afoot. The object files are a different format, at the very least.
|
|
|
|
### Wages of War
|
|
|
|
This is the oldest of the four games. The object file format seems to be mostly
|
|
the same. the installer only copies some data to the game directory; we may want
|
|
to work directly from the CDROM instead, if we can.
|
|
|
|
Maps are uncompressed, around 243K, and no header is present. They look similar
|
|
in principle to the tile data of Soldiers At War or Chaos Gate maps, otherwise.
|
|
|
|
The menu system seen in Chaos Gate is not present; instead, there is a `BUTTONS`
|
|
directory and a lot of `pcx` files under `PIC` that, I suspect, do the job for
|
|
this game.
|
|
|
|
Even with a full installation, Wages of War leaves a lot of data on the CD. It
|
|
may be best to run solely from the `WOW` directory on the CD, assuming it's a
|
|
strict superset of what gets installed, data-wise.
|
|
|
|
## Long-term goals
|
|
|
|
Once full playthrough of the official single-player campaign for all four games
|
|
has been achieved, thoughts turn to other things we could do. Here are some
|
|
ideas, mostly at random.
|
|
|
|
Multi-player support.
|
|
|
|
Graphics enhancements - 3D models instead of sprites, high-resolution tile sets,
|
|
32-bit colour, etc. Hopefully we'd be able to drop these in one at a time.
|
|
|
|
Vastly improved AI.
|
|
|
|
Mash-ups? How do mercenaries fare against cultists fare against Nazis? Only one
|
|
way to find out!
|
|
|
|
New campaigns with existing assets. Tell new stories, or elaborate on / modify
|
|
existing ones.
|
|
|
|
Completely new fantasy game using the same engine.
|
|
|
|
## Building from source
|
|
|
|
I'm writing code in Go at the moment, so you'll need to have a Go runtime
|
|
installed on your system. Dependency management uses `go mod`, so ensure you
|
|
have at least Go 1.11.
|
|
|
|
```
|
|
$ go version
|
|
go version go1.14 linux/amd64
|
|
```
|
|
|
|
In addition, you'll also need the following packages installed, at least in
|
|
Debian:
|
|
|
|
```
|
|
# apt install libx11-dev libxcursor-dev mesa-common-dev libxrandr-dev \
|
|
libxinerama-dev libgl1-mesa-dev libxi-dev libasound2-dev mpv ffmpeg
|
|
```
|
|
|
|
You can then run `make all` in the source tree to get the binaries that are
|
|
present at the moment.
|
|
|
|
## Configuring
|
|
|
|
Since we support multiple games, a fair bit of configuration is required. Copy
|
|
`config.toml.example` to `config.toml` and edit it to your requirements. The
|
|
`data_dir` for the engine(s) you want to use is probably the most important bit,
|
|
along with the `default_engine`.
|
|
|
|
The various games all use snapshots of the original engine at different points
|
|
in time, and specify a lot in code that we need to specify in data. That should
|
|
all go into the config file, so new games will be able to adapt the engine to
|
|
their needs.
|
|
|
|
## Running
|
|
|
|
To run:
|
|
|
|
```
|
|
$ make view-map
|
|
$ ./bin/view-map -map Chapter01
|
|
```
|
|
|
|
Looks like this:
|
|
|
|

|
|
|
|
Use the arrow keys to scroll around the map, the mouse wheel to zoom, and the
|
|
`1` - `7` keys to change Z level.
|
|
|
|
Menus / UI widgets have fairly good support now; you can use the `view-menu`
|
|
binary to inspect them:
|
|
|
|
```
|
|
make view-menu
|
|
./bin/view-menu -menu Main
|
|
```
|
|
|
|
This renders the menus found in Chaos Gate and Soldiers At War. The Squad Leader
|
|
format seems basically the same, but has some extra files and aren't 8-bit
|
|
colour. They don't display at the moment. Wages of War uses a different format
|
|
altogether.
|
|
|
|
For Chaos Gate, there is the **start** of the game in an `ordoor` binary:
|
|
|
|
```
|
|
$ make ordoor
|
|
$ ./bin/ordoor
|
|
```
|
|
|
|
The idea is to hook all the different parts together, and to an abstract game
|
|
state (which is called `ship` for ordoor), to make the whole thing playable. It
|
|
isn't playable *yet*, but it's heading in that direction.
|
|
|
|
## Sound
|
|
|
|
Sound is in the very early stages. Chaos Gate uses ADPCM WAV files, which are a
|
|
pain to play in Go, so for now, a preprocessing step that converts them to .ogg
|
|
is used instead. To create ./orig/Wav/*.wav.ogg, run:
|
|
|
|
```
|
|
# apt install ffmpeg
|
|
$ ./scripts/convert-wav ./orig/Wav
|
|
```
|
|
|
|
As with video playback, the ambition is to *eventually* remove this dependency
|
|
and operate on the unmodified files instead.
|