Survivalcraft has a small but dedicated community of players and tinkerers who want to push the game beyond its defaults with custom textures, new mechanics, multiplayer tooling, and more. However, the game ships with no official modding documentation, leaving would-be modders to reverse-engineer everything from scratch.
This site exists to change that. It will centralize what the community has learned through decompilation, experimentation, and collaboration, covering everything from plugin development with the Survivalcraft API to low-level internals like the world format, shader pipeline, and content packages.
Survivalcraft is a 3D voxel game written in C#. Initially it used the MonoGame Game Engine, but the developer later switched to his own engine which seems similar to MonoGame. This new engine, named "Engine" uses OpenTK graphics backend on iOS and Android, and SharpDX on Windows and Windows Phone.
Modding the game typically involves either using the Survivalcraft API client, or modifying the source directly and redistributing the entire game from build artifacts.
This project uses Zensical to build the documentation site. You can serve it locally either by installing Zensical directly with pip/uv, or by running the official Docker image with Podman or Docker — no local Python install required.
Run this from the root of the repository (where your zensical.toml lives):
zensical serveThe site will be available at http://localhost:8000 and will live-reload as you edit files.
This uses the official zensical/zensical container image and mounts your working directory into it, so no local Python or Zensical install is needed.
- Podman installed
Run this from the root of the repository:
podman run --rm -it --network host -v ${PWD}:/docs:z zensical/zensical serveThe site will be available at http://localhost:8000.
Flag reference:
| Flag | Purpose |
|---|---|
--rm |
Remove the container automatically when it stops |
-it |
Interactive terminal (lets you Ctrl+C to stop) |
--network host |
Share the host network so localhost:8000 works directly |
-v ${PWD}:/docs:z |
Mount the current directory into the container; :z sets the correct SELinux label |
Windows / PowerShell note: Replace
${PWD}with${PWD.Path}or use the full absolute path, e.g.C:\Users\you\project.
If you prefer Docker over Podman, the command is identical — just swap podman for docker:
docker run --rm -it --network host -v ${PWD}:/docs:z zensical/zensical servemacOS / Windows Docker Desktop note:
--network hostis not supported on these platforms. Use-p 8000:8000instead:docker run --rm -it -p 8000:8000 -v ${PWD}:/docs zensical/zensical serve
Port already in use — If port 8000 is taken, pass a different port:
zensical serve --port 8080
# or with container:
podman run --rm -it --network host -v ${PWD}:/docs:z zensical/zensical serve --port 8080Changes not reloading — Make sure you are running from the directory that contains your zensical.toml. The dev server watches files relative to that location.
SELinux errors (Podman) — The :z volume flag handles this on most systems.