Track decompilation progress here: https://github.com/Vatuu/silent-hill-decomp
- Math wrappers and functions (similar to DXTK but with some usability improvements)
- Input handling
- Savegame handling
- Config options handling
- Window handling
- Asset streaming
- Timestep handling
- Parallel task handling
- Filesystem handling
- Clean, extensive logging
- Renderer with swappable backends
- Sound system
- Translator for internationalized scripts
- Font manager
- "Power" menu for deubgging
- Various utilities pulled from other projects
All considerations are being made to establish a flexible, readable, and accessible foundation. Portability is in mind as a top priority for cross-platform support from inception.
- The decomp must be farther along before the bulk of the porting work can begin. More basic things like the boot screen and game menus could be ported already, but it's best to wait for the rest while the decomp is in constunt flux and much of the engine code remains to be deobfuscated.
- Switch to GCC as the compiler. Works on Linux, Windows build has problems and relies on MSVC for now.
- Forward renderer. Basic system abstraction is done, now it needs expansion.
- Sound system. Need to write a
KDC+VAB->XMconverter? - Parsers for all proprietary game file types.
- Test math classes.
- Extensive documentation.
- Lua scripting.
- Remove GLAD dependency. Primary renderer backend currently in progress uses
SDL_gpu, others can be added in the future.
WIP! Ideally, the project will be able to cross-compile between all main development platforms.
The project has the following requirements:
- cmake
- git
- ninja
- pip
- python3
Windows
winget install Kitware.CMake Git.Git Ninja-build.Ninja Python.Python.3
macOS
# TODO: Add macOS instructions here
Linux
sudo apt install build-essential git ninja-build python3 python3-pip
Clone https://github.com/Sezzary/SilentEngine to your desired directory. Cloning recursively will ensure the following submodules are included in the process:
- assimp
- FlatBuffers
- FreeType
- GLM
- HarfBuzz
- ImGui
- ImGuizmo
- json
- LuaJIT
- rectpack2D
- SDL3
- sol2
- spdlog + {fmt}
- stb
- UTF8-CPP
- VLC
git clone --recursive https://github.com/Sezzary/SilentEngine
git submodule update --init --recursive
Build LuaJIT locally:
cd Libraries/LuaJIT && make && cd ../..
Generate GLAD source:
pip install glad
glad --generator=c --api=gl=4.6 --profile=core --out-path=Libraries/glad
Linux
sudo apt install build-essential git ninja-build python3 python3-pip
Install SDL dependencies:
sudo apt-get install build-essential git make \
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
libaudio-dev libfribidi-dev libjack-dev libsndio-dev libx11-dev libxext-dev \
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev \
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev libthai-dev
Set up Python virtual environment:
python3 -m venv .venv
source .venv/bin/activate
Available commands:
-
Configure Debug:
cmake -S . -B Build/Debug -G Ninja -DCMAKE_BUILD_TYPE=Debug -
Build Debug:
cmake --build Build/Debug -
Configure Debug:
cmake -S . -B Build/Release -G Ninja -DCMAKE_BUILD_TYPE=Release -
Build Release:
cmake --build Build/Release -
Activate Python virtual environment:
source .venv/bin/activate
Too early for this, but feel free to take a look around in the meantime!