No description
  • C++ 56.7%
  • GLSL 41.8%
  • Python 0.9%
  • CMake 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-27 14:10:24 +02:00
.forgejo/workflows Testing windows workflow 2026-07-27 14:10:24 +02:00
cmake Steam audio spatial fitlering 2026-07-22 11:19:29 +02:00
docs Editor history 2026-07-27 12:03:56 +02:00
lib script scope and documentation 2026-07-23 15:22:01 +02:00
packages Editor history 2026-07-27 12:03:56 +02:00
src Editor history 2026-07-27 12:03:56 +02:00
test Editor history 2026-07-27 12:03:56 +02:00
tools Editor history 2026-07-27 12:03:56 +02:00
.gitignore fix: update gitignore to ignore atlas files 2026-07-21 13:39:05 +10:00
.gitmodules Soloud audio included 2026-07-21 21:39:00 +02:00
CMakeLists.txt Editor history 2026-07-27 12:03:56 +02:00
LICENSE Imgui integrated 2026-07-12 22:15:27 +02:00
README.md 0.2.0 fac/pvs added. 2026-07-23 22:15:33 +02:00
VERSION Version number and tools in build 2026-07-27 13:54:03 +02:00

engine

A small C++ game built with raylib, flecs, and Scheme (s7).

Requirements

  • CMake 3.22+
  • C++20 compiler (MSVC, Clang, or GCC)
  • Git (for submodules)

Build

git submodule update --init --recursive
cmake -S . -B build
cmake --build build

On Windows with Visual Studio, open the generated solution in build/ or use the commands above from a developer shell.

Optional: Steam Audio

Spatial audio can use Valve's Steam Audio SDK. This is opt-in (SLOPENGINE_USE_STEAM_AUDIO defaults OFF). The SDK is not vendored under lib/ or as a git submodule -- download the binary SDK separately and point CMake at the extract:

cmake -S . -B build \
  -DSLOPENGINE_USE_STEAM_AUDIO=ON \
  -DSTEAM_AUDIO_ROOT=/path/to/steamaudio

Expected layout under STEAM_AUDIO_ROOT:

  • include/phonon.h
  • lib/<platform>/ with libphonon (linux-x64, windows-x64, osx, ...)

A source checkout may resolve headers but still needs a prebuilt libphonon unless you build it yourself. See docs/audio.md for runtime behavior when Steam Audio is enabled.

Run

build/slopengine --base-game packages/base

Optional mods load on top of the base package:

build/slopengine --base-game packages/base --mod path/to/my-mod

Packages

A package is a folder of game content with a root package.meta:

(package
  (id "slopengine.base")
  (name "Slopengine Base")
  (version "0.1.0")
  (depends))

The engine looks up assets by type:

my-package/
  package.meta
  animations/   .anim, .tracks
  audio/        .saudio, .s7
  data/         .s7
  fonts/        .ttf
  geometry/     .geo, .vert, .weights
  icons/        .png, .iconmap
  maps/         <map>/map.meta, <map>/static.csg (+ compiled .bsp/.fac/.vis, optional rad/)
  materials/    .mat
  prefabs/      .csg, .s7
  scripts/      .s7
  shaders/      .glsl
  skeletons/    .skel, .bind
  sound/       .ogg
  sprites/      .spr, .spanim
  textures/     .png

Maps live under a package's maps/ folder (ownership is the package directory). Compile authored CSG with slopbsp -> slopfac -> slopvis -> sloprad (or Compile -> Run All in slopmap); see docs/maps.md and docs/slopmap.md. map.meta only lists other packages when needed:

(map
  (id "empty-room")
  (name "Empty Room")
  (depends))

Paths inside a package are virtual (e.g. human01/human01 for geometry/human01/human01.geo). Later mods override earlier packages for the same path.

Blender exporter

Source: tools/blender/slopengine_exporter/

Requires Blender 4.2+. Package it as a zip:

tools/blender/package_extension.ps1

In Blender: Edit -> Preferences -> Get Extensions -> (menu) -> Install from Disk and select tools/blender/slopengine_exporter.zip.

Exports are under File -> Export -> Slopengine:

  • Multiple -- skeleton, geometry, and animation into a package folder
  • Geometry, Animation, Skeleton -- individual exports

Point exports at your package directory (e.g. packages/base). The Multiple exporter writes into geometry/, skeletons/, and animations/ automatically.