REGoth
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 for more information about the project!
A list showing the current state of the engine, can be found here.
Videos showing the current state
- Release-Commentary to V0.4:
- Release-Commentary to V0.3:
- Release-Commentary to V0.2:
- Release-Commentary to V0.1.1:
- Dialogs, Audio, NPC script-states:
- Day/Night-Cycle and Fighting-animations:
- First showcase:
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:
git clone --recursive [email protected]:degenerated1123/REGoth.git
https:
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:
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, 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.
libsndfile
and libxinerama
Obtaining *nix systems (Linux, BSD, macOS)
On most *nix systems, this can be obtained using a package manager, for example on Debian/Ubuntu:
$ sudo apt install libsndfile1-dev libasound2-dev
$ sudo apt install libxinerama-dev
Or on macOS
$ 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:
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 dogit submodule update --init --recursive
and it should work.
Then, choose depending on your OS:
Linux, MacOS and other *nix
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 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:
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:
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 [<teleporter:default=player>] <target>
: Teleport NPCteleporter
(= player if none is given) to NPCtarget
goto waypoint <waypoint>
: Teleport player towaypoint
kill [<npc>]
: Killnpc
or a nearby NPC if none is givenknockout [<npc>]
: Knockoutnpc
or a nearby NPC if none is givensave <slotindex>
: Save the game to the given slotload <slotindex>
: Load the game from the given slotswitchlevel <zenfile>
: Switch to an other level in current sessionusemana <amount>
: Use manahurtself <amount>
: Hurt yourselfset clock <hour> [<min:default=0>]
: Set time of day tohour
:min
control <npc>
: Take control overnpc
- Available commands (square brackets mean optional argument):
Development
If you want to help out and don't know where to start, I suggest reading the wiki-page, 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