Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

engine

Engine Official

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

⚔️ Valkyrie Engine

Powerful, flexible, and performance-focused 3D game engine for the web and native platforms.


Overview

Valkyrie Engine is a cross-platform game engine targeting desktop, mobile, and embedded devices. It combines a C++17 core with Pascal/Lazarus tooling for game-specific subsystems, and ships a static website + optional WordPress theme for its documentation site.


Project structure

pascal
engine/
????????? CMakeLists.txt          # Root build ??? platform detection, toolchain
????????? sb_rpg/                 # SamuraiBabel RPG ??? main C++ game project
???   ????????? CMakeLists.txt
????????? ekron_ccg/              # Ekron CCG ??? Lazarus/Pascal card game
???   ????????? CMakeLists.txt
????????? ekron_rpg/              # Ekron RPG ??? C++ RPG subproject
???   ????????? CMakeLists.txt
????????? ekron-realms/           # Ekron Realms ??? adventure game subproject
???   ????????? CMakeLists.txt
????????? kcc/                    # KCC ??? Kayte C Compiler (custom language toolchain)
???   ????????? CMakeLists.txt
????????? valkyrie-site/          # Documentation website
    ????????? build.pl            # Static site compiler (Perl, no deps)
    ????????? build.conf          # Site configuration
    ????????? src/                # Pages, partials, SCSS, JS, data

Supported platforms

Platform Architecture Status
macOS 11+ arm64 (Apple Silicon) · x86_64 · Universal ✅ Primary
iOS 18+ arm64 ✅
Android arm64-v8a · armeabi-v7a · x86_64 ✅
Windows 7+ x86_64 ✅
Windows on ARM ARM64 (Win10+) · ARMv7 (Win8+) ✅
Linux AMD64 · ARM64 (aarch64) ✅
GNU/Hurd AMD64 · aarch64 (experimental) 🧪
Anbernic handheld ARM64 / Rockchip ✅

Requirements

All platforms

  • CMake 3.21+
  • C++17 compiler (Clang 12+ recommended on macOS, GCC or Clang on Linux, MSVC or MinGW-w64 on Windows)

Pascal/Lazarus subprojects (ekron_ccg)

macOS

bash
xcode-select --install          # Xcode Command Line Tools
brew install cmake sdl2 sdl2_image sdl2_ttf
brew install --cask lazarus     # optional — for ekron_ccg

Linux (Debian/Ubuntu)

bash
sudo apt install build-essential cmake clang libsdl2-dev libsdl2-image-dev
sudo apt install fp-compiler lazarus   # optional — for ekron_ccg

Windows

  • MSYS2 with mingw-w64-ucrt-x86_64-gcc and mingw-w64-ucrt-x86_64-SDL2
  • Or Visual Studio 2022 with Clang/LLVM toolset
  • Optional: WinLibs standalone MinGW-w64

Building

bash
# Clone
git clone https://codeberg.org/ringsce/engine.git
cd engine

# Configure (macOS Apple Silicon — default)
cmake -B build -DCMAKE_BUILD_TYPE=Release

# Build
cmake --build build -j$(nproc 2>/dev/null || sysctl -n hw.logicalcpu)

Common configure options

Flag Default Description
CMAKE_BUILD_TYPE Release Debug / Release / RelWithDebInfo
CMAKE_OSX_ARCHITECTURES arm64 x86_64 or arm64;x86_64 for Universal
APP_NAME Engine Override the root executable name
USE_SDL3 OFF Prefer SDL3 over SDL2
USE_QT6 ON Enable Qt6 GUI (desktop only)
BUILD_TOOLS ON Build developer tools
USE_MoltenVK ON Use MoltenVK on macOS/iOS

macOS Universal Binary

bash
cmake -B build \
  -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
  -DCMAKE_BUILD_TYPE=Release
cmake --build build

iOS (Xcode)

bash
cmake -B build-ios \
  -GXcode \
  -DCMAKE_SYSTEM_NAME=iOS \
  -DCMAKE_OSX_DEPLOYMENT_TARGET=18.0 \
  -DCMAKE_OSX_ARCHITECTURES=arm64
cmake --build build-ios --config Release -- -sdk iphoneos

Android

bash
export ANDROID_NDK=$HOME/Library/Android/sdk/ndk/25.2.9519653

cmake -B build-android \
  -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=arm64-v8a \
  -DANDROID_PLATFORM=android-24 \
  -DCMAKE_BUILD_TYPE=Release
cmake --build build-android

Windows (MinGW-w64 via MSYS2)

bash
cmake -B build -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build build

Cross-compile to GNU/Hurd

bash
cmake -B build-hurd \
  -DCMAKE_SYSTEM_NAME=GNU \
  -DCMAKE_C_COMPILER=x86_64-gnu-gcc \
  -DCMAKE_SYSROOT=/cross/x86_64-gnu \
  -DMACH_INCLUDE_DIR=/cross/x86_64-gnu/usr/include
cmake --build build-hurd

Subprojects

sb_rpg — SamuraiBabel RPG

C++17 RPG built on SDL2/SDL3 with Vulkan/Metal rendering, optional Qt6 GUI, and KCC scripting.

bash
cmake -B build -DAPP_NAME=SamuraiBabel
cmake --build build

ekron_ccg — Ekron Card Game

Free Pascal / Lazarus collectible card game. Requires FPC 3.2.2+ and lazbuild.

bash
# LCL desktop build (via lazbuild)
make ccg_desktop

# SDL2 build (via fpc directly — lazbuild has no CLI define flags)
make ccg_sdl

# Cross-compile to Windows x86_64
# (requires fpc cross-compiler for x86_64-win64)
make ccg_win64

ekron_rpg — Ekron RPG

C++ RPG with SDL2/SDL3 backend and DirectX 9 support on Windows.

ekron-realms — Ekron Realms

Adventure game subproject.

kcc — Kayte C Compiler

Custom C-like compiler targeting Valkyrie Engine scripting. Requires GCC + GNU binutils on AMD64 platforms; aarch64 builds the base compiler only.


Documentation website

The docs site is a static site compiled from valkyrie-site/ by a single-file Perl script — no Node.js, npm, or build system required.

bash
cd valkyrie-site

# Production build (minified, cache-busted assets)
perl build.pl --clean

# Development build (relative paths, works from file://)
perl build.pl --env development --serve
# → http://localhost:4000

# Generate WordPress theme
perl build.pl --clean --wp
# → dist/wp-theme/valkyrie-engine.zip

Site CLI reference

Command Description
perl build.pl Production build
perl build.pl --clean Delete dist/ and rebuild
perl build.pl --env development Dev build, file:// compatible
perl build.pl --serve Built-in HTTP server on port 4000
perl build.pl --watch --serve Watch + serve
perl build.pl --check Validate links, SEO, alt text
perl build.pl --wp Generate WordPress theme zip
perl build.pl --new-page NAME Scaffold a new page

WordPress theme

bash
perl build.pl --clean --wp

Generates dist/wp-theme/valkyrie-engine.zip — a complete, installable WordPress theme.

Install: WP Admin → Appearance → Themes → Add New → Upload Theme → activate.

Pages (/docs/, /examples/, /plugins/, /community/) are routed automatically via template_include — no WordPress pages needed.


KCC — Kayte C Compiler

KCC is a lightweight C-like compiler used for in-engine game scripts.

bash
cd kcc
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/kcc mygame.k -o mygame

GCC + GNU binutils are detected automatically and their paths baked into the compiler at build time. On aarch64 only the base compiler is built (no binutils requirement).


Contributing

bash
# Fork, then clone your fork
git clone https://codeberg.org/ringsce/engine.git
cd engine

# Create a feature branch
git checkout -b feature/my-thing

# Build and test
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

# Open a pull request

Good first issues are tagged good first issue on GitHub.


License

MIT — see LICENSE for details.

Built by the Valkyrie team and contributors worldwide.