Files
ordoor/README.md

157 lines
5.4 KiB
Markdown
Raw Normal View History

# Ordoor
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.
2020-06-01 01:08:53 +01:00
Four games are known to have been published for this engine:
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!
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.
## 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.
2020-04-18 13:44:00 +01:00
I keep a GIF showcasing interesting progress here:
![](https://ur.gs/img/ordoor-main-menu.gif)
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-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
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 \
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
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`
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.
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.
Characters and animations aren't touched at all yet. Rendering performance is
poor. No gameplay, no campaign logic. Interaction with the play area is minimal
and limited to pan, zoom, and click for basic console output.
Still, I'm proud of myself.
2018-03-24 03:00:31 +00:00
To run:
```
$ make view-map
$ ./view-map -map Chapter01
```
Looks like this:
![](doc/formats/img/chapter01_rendered_2018-09-08.png)
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
There is the **start** of the menu / campaign flow in a `ordoor` binary:
2019-10-08 22:28:45 +01:00
```
$ cp config.toml.example config.toml
$ make ordoor
$ ./ordoor
2019-10-08 22:28:45 +01: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