Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/REGoth-project/REGoth

OpenSource-Reimplementation of the zEngine, used by the game "Gothic"
https://github.com/REGoth-project/REGoth

cpp engine gothic gothic2 reimplementation

Last synced: 3 months ago
JSON representation

OpenSource-Reimplementation of the zEngine, used by the game "Gothic"

Lists

README

        

# REGoth [![Build status](https://ci.appveyor.com/api/projects/status/50yputp2qe764sg2/branch/master?svg=true)](https://ci.appveyor.com/project/degenerated1123/regoth) [![Build Status](https://travis-ci.org/REGoth-project/REGoth.svg?branch=master)](https://travis-ci.org/REGoth-project/REGoth) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/REGoth/Lobby)
OpenSource-Reimplementation of the zEngine, used by the game "Gothic" and "Gothic II".

# Attention!
**The project has been restarted. Here is the new repository: https://github.com/REGoth-project/REGoth-bs**

Don't forget to check out the [REGoth-Wiki](../../wiki) for more information about the project!

A list showing the current state of the engine, can be found [here](../../wiki/state).

### Videos showing the current state
* Release-Commentary to V0.4:
* https://www.youtube.com/watch?v=DX92f8CrjrE
* Release-Commentary to V0.3:
* https://www.youtube.com/watch?v=EjEpN3I8Ovc
* Release-Commentary to V0.2:
* https://www.youtube.com/watch?v=jB3pzxd6vIk
* Release-Commentary to V0.1.1:
* https://www.youtube.com/watch?v=heg49o78Ii4
* Dialogs, Audio, NPC script-states:
* https://www.youtube.com/watch?v=R3F4WY6A060
* Day/Night-Cycle and Fighting-animations:
* https://www.youtube.com/watch?v=Z1mlI9qxkzc
* First showcase:
* https://www.youtube.com/watch?v=8bLAGttYYpY

# Download (Latest stable version)

**Version 0.4 (Windows)**: https://github.com/REGoth-project/REGoth/releases/tag/0.4

**Version 0.4 (Android)**: https://github.com/REGoth-project/REGoth/releases/tag/0.4-android

Automated nightly builds: https://github.com/degenerated1123/REGoth/releases

# Source
Make sure to clone this repository with the `--recursive` flag:

##### ssh:
```sh
git clone --recursive [email protected]:degenerated1123/REGoth.git
```

##### https:
```sh
git clone --recursive https://github.com/degenerated1123/REGoth.git
```

To update the repo, you need to make sure to update the submodules as well. Instead of simply pulling the repository, you can do:
```sh
git pull --recurse-submodules
```

# Building

> Note: If you are missing packages or are having trouble building on your platform, you can check out this [wiki-page](../../wiki/how-to-build), which may contain more detailed instructions.
> If you don't find your platform there, I'd kindly ask you to add some instructions for other people to that wiki-page!

You will need CMake (3.1 or newer) and a C++14-capable compiler.
Currently supported/tested are:
- GCC (6.x)
- MinGW
- Visual Studio 2015, 2017

You will also need a copy of `libsndfile` installed on your computer.

## Obtaining `libsndfile` and `libxinerama`

### *nix systems (Linux, BSD, macOS)
On most *nix systems, this can be obtained using a package manager, for example on Debian/Ubuntu:

```sh
$ sudo apt install libsndfile1-dev libasound2-dev
$ sudo apt install libxinerama-dev
```

Or on macOS

```sh
$ brew install libsndfile # Needs Homebrew
```

### Windows
`libsndfile` will need to be compiled separately. Create a directory somewhere on your system to store the compiled files, then run

mkdir build-libsndfile
cd build-libsndfile
cmake -D CMAKE_INSTALL_PREFIX=compiled/files/folder path/to/REGoth/lib/libdmusic/utils/dls2sf/lib/libsndfile
cmake --build . --target install --config Release

## Compiling REGoth

Then:
```sh
cd path/to/REGoth
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. # On *nix systems this is sufficient
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=compiled/files/folder .. # On Windows
```
> If CMake complains about some folders missing a CMakeLists.txt, you most likely forgot to clone with the `--recursive`-flag!
> Simple do `git submodule update --init --recursive` and it should work.

Then, choose depending on your OS:

### Linux, MacOS and other *nix
```sh
make -j4
```

### Windows
Starting Visual Studio 2017 you can use the integrated cmake functionality to open the cloned folder.
Check out the [how to build wiki page](../../wiki/how-to-build) for details on this.

For previous versions of Visual Studio, open the generated `REGoth.sln` and build as usual.
Alternatively, you may run this command inside of the build folder:
```sh
cmake --build . --config release
```

# Running
The compiled files are inside the `build/bin` directory.

Make sure to copy the `content/shaders` folder to the working directory of the compiled `REGoth`-Executable.
Then, run the program with the following flags:
```sh
REGoth -g "path/to/gothic1or2" -w startworld.zen
```

Where `path/to/gothic1or2` points to the root of a Gothic I or II installation and `startworld.zen` is one of the Zen-Files found in a `.vdf`-files in the games `data/`-directory. For example: `newworld.zen` or `addonworld.zen` for Gothic II.

> It is recommended to run this from the commandline, to see the debug-output of the program.

Additionally, for a list of possible commands, run `REGoth --help`.

# Controls

* Movement: WASD/QE or arrow-keys (Space or Shift to run faster)
* Actions: Left CTRL for everything
* Menus: B for status-screen
* Console: F10
* Available commands (square brackets mean optional argument):
* `tp [] `: Teleport NPC `teleporter` (= player if none is given) to NPC `target`
* `goto waypoint `: Teleport player to `waypoint`
* `kill []`: Kill `npc` or a nearby NPC if none is given
* `knockout []`: Knockout `npc` or a nearby NPC if none is given
* `save `: Save the game to the given slot
* `load `: Load the game from the given slot
* `switchlevel `: Switch to an other level in current session
* `usemana `: Use mana
* `hurtself `: Hurt yourself
* `set clock []`: Set time of day to `hour`:`min`
* `control `: Take control over `npc`

# Development

If you want to help out and don't know where to start, I suggest reading the [wiki-page](../../wiki), which contains information about the engine-layout and lists of which features are missing (Not yet, though!).

### Examples
**Gothic 1 - Overworld:** `REGoth -g "path/to/gothic1" -w world.zen`

**Gothic 1 - Oldmine:** `REGoth -g "path/to/gothic1" -w oldmine.zen`

**Gothic 1 - Freemine:** `REGoth -g "path/to/gothic1" -w freemine.zen`

**Gothic 1 - Orc graveyard:** `REGoth -g "path/to/gothic1" -w orcgraveyard.zen`

**Gothic 1 - Sleeper temple:** `REGoth -g "path/to/gothic1" -w orctempel.zen`

**Gothic 2 - Overworld:** `REGoth -g "path/to/gothic2" -w newworld.zen`

**Gothic 2 - Valley of mines:** `REGoth -g "path/to/gothic2" -w oldworld.zen`

**Gothic 2 - Addonworld:** `REGoth -g "path/to/gothic2" -w addonworld.zen`

**Gothic 2 - Dragonisland:** `REGoth -g "path/to/gothic2" -w dragonisland.zen`