2018-03-22 20:17:02 +00:00
|
|
|
# Ordoor
|
2018-02-24 13:50:35 +00:00
|
|
|
|
2020-03-22 17:19:26 +00:00
|
|
|
Ordoor is an **unofficial** [game engine recreation](https://en.wikipedia.org/wiki/Game_engine_recreation)
|
2020-06-01 01:08:53 +01:00
|
|
|
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.
|
2018-02-24 13:50:35 +00:00
|
|
|
|
2020-06-01 01:08:53 +01:00
|
|
|
Four games are known to have been published for this engine:
|
2018-02-24 13:50:35 +00:00
|
|
|
|
2020-06-01 01:08:53 +01:00
|
|
|
* [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!
|
2018-03-17 04:16:14 +00:00
|
|
|
|
2020-03-22 17:19:26 +00:00
|
|
|
Ordoor is a portmanteau of Order Door, which is, of course, the opposite of a
|
2020-06-01 01:08:53 +01:00
|
|
|
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.
|
2020-03-22 17:19:26 +00:00
|
|
|
|
|
|
|
## Current status
|
|
|
|
|
|
|
|
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.
|
2018-03-22 20:17:02 +00:00
|
|
|
|
2020-04-18 13:44:00 +01:00
|
|
|
I keep a GIF showcasing interesting progress here:
|
|
|
|
|
|
|
|

|
|
|
|
|
2020-05-19 11:07:10 +01:00
|
|
|
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.
|
|
|
|
|
2020-06-01 01:08:53 +01:00
|
|
|
## 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.
|
|
|
|
|
2018-03-18 04:23:34 +00:00
|
|
|
## Building from source
|
2018-03-17 04:16:14 +00:00
|
|
|
|
2018-03-18 04:23:34 +00:00
|
|
|
I'm writing code in Go at the moment, so you'll need to have a Go runtime
|
|
|
|
installed on your system:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ go version
|
2020-03-21 23:45:51 +00:00
|
|
|
go version go1.14 linux/amd64
|
2018-03-18 04:23:34 +00:00
|
|
|
```
|
|
|
|
|
2018-03-22 20:35:19 +00:00
|
|
|
In addition, you'll also need the following packages installed, at least in
|
|
|
|
Debian:
|
|
|
|
|
|
|
|
```
|
2019-10-08 22:28:45 +01:00
|
|
|
# apt install libx11-dev libxcursor-dev mesa-common-dev libxrandr-dev \
|
2020-03-21 23:45:51 +00:00
|
|
|
libxinerama-dev libgl1-mesa-dev libxi-dev libasound2-dev mpv ffmpeg
|
2018-03-22 20:35:19 +00:00
|
|
|
```
|
|
|
|
|
2019-10-08 22:28:45 +01:00
|
|
|
You can then run `make all` in the source tree to get the binaries that are
|
2020-03-21 23:45:51 +00:00
|
|
|
present at the moment.
|
2018-03-18 04:23:34 +00:00
|
|
|
|
|
|
|
Place your WH40K: Chaos Gate installation in `./orig` to benefit from automatic
|
|
|
|
path defaults. Otherwise, point to it with `-game-path`
|
|
|
|
|
2018-03-22 20:17:02 +00:00
|
|
|
The `view-map` binary attempts to render a map, and is the current focus of
|
|
|
|
effort. Once I can render a whole map, including pre-placed characters (cultist
|
|
|
|
scum), things can start to get more interesting.
|
|
|
|
|
2020-03-21 23:45:51 +00:00
|
|
|
Current status: almost pixel-perfect map rendering. Static objects (four per map
|
|
|
|
coordinate: floor, centre, left, and right) are rendered fine, and each Z level
|
|
|
|
looks good. There are a few minor artifacts here and there.
|
2018-09-07 20:28:33 +01:00
|
|
|
|
|
|
|
Characters and animations aren't touched at all yet. Rendering performance is
|
2020-03-21 23:45:51 +00:00
|
|
|
poor. No gameplay, no campaign logic. Interaction with the play area is minimal
|
|
|
|
and limited to pan, zoom, and click for basic console output.
|
2018-09-07 20:28:33 +01:00
|
|
|
|
|
|
|
Still, I'm proud of myself.
|
2018-03-24 03:00:31 +00:00
|
|
|
|
2018-03-22 20:17:02 +00:00
|
|
|
To run:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ make view-map
|
2020-03-21 23:45:51 +00:00
|
|
|
$ ./view-map -map Chapter01
|
2018-03-22 20:17:02 +00:00
|
|
|
```
|
|
|
|
|
2018-09-08 02:00:03 +01:00
|
|
|
Looks like this:
|
|
|
|
|
|
|
|

|
|
|
|
|
2018-03-22 20:17:02 +00:00
|
|
|
Use the arrow keys to scroll around the map, the mouse wheel to zoom, and the
|
|
|
|
`1` - `7` keys to change Z level.
|
|
|
|
|
2019-10-08 22:28:45 +01:00
|
|
|
Dependency management uses `go mod`, so ensure you have at least Go 1.11.
|
2018-03-18 05:53:01 +00:00
|
|
|
|
2020-03-22 17:19:26 +00:00
|
|
|
There is the **start** of the menu / campaign flow in a `ordoor` binary:
|
2019-10-08 22:28:45 +01:00
|
|
|
|
|
|
|
```
|
2020-03-21 23:45:51 +00:00
|
|
|
$ cp config.toml.example config.toml
|
2020-03-22 17:19:26 +00:00
|
|
|
$ make ordoor
|
|
|
|
$ ./ordoor
|
2019-10-08 22:28:45 +01:00
|
|
|
```
|
|
|
|
|
2020-03-21 23:45:51 +00:00
|
|
|
This plays the introductory videos so far, and nothing else.
|
|
|
|
|
|
|
|
Menus are in the process of being rendered; you can use the `view-menu` binary
|
|
|
|
to inspect them:
|
|
|
|
|
|
|
|
```
|
|
|
|
make view-menu
|
|
|
|
./view-menu -menu ./orig/Menu/Main.mnu
|
|
|
|
```
|
|
|
|
|
|
|
|
This menu *displays* OK, including
|
|
|
|
|
|
|
|
## 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.
|
2018-03-18 04:23:34 +00:00
|
|
|
|