Skip to content
dtonnaPublic

About

Cross‑platform 2D game engine with Metal (Apple) and Vulkan (Android) backends. C++23, zero virtual dispatch, SoA layout, slotmap handles, bump allocators, job system, sprite batching.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

84 Commits

Folders and files

Repository files navigation

Markmos Engine

A cross-platform game engine built from scratch — Metal backend for iOS/macOS, Vulkan backend for Android.

Written in C++23 with no exceptions, no RTTI, and no engine hiding the details from you.

Screenshots

Engine Examples

Sprite Stress Test (mm_01)

10,000 animated sprites rendered at 60fps using the engine's sprite batch. Tests draw-call sorting, vertex throughput, and fill rate.

Game Entry (mm_game_entry)

Production-style entry point with UI, particle effects, camera shake, tweening, save data, and touch/mouse hit-testing.


Shader Lab (mm_06)

Interactive shader playground with 18+ material modes, hot-reload from .msl files, and on-screen navigation.

Controls: 1-9, C, P, G, Y, S, X, A, F, W switch modes; Q/E or on-screen < PREV / NEXT > cycle pages; R reloads the current lab .msl file.


UI Lab (mm_07)

Widget showcase with 18 pages, live-tune knobs, modal dialogs, and keyboard shortcuts.

Controls: D1-D9, T, A, L, S, G, V, C, O, P switch pages; [Prev]/[Next] buttons or Q/E cycle pages; B toggles button border; Space pauses animations; R rebuilds the current page.


Features

  • Renderer abstraction — Metal (iOS/macOS) and Vulkan (Android) behind a unified RHI
  • Sokol-style architecture — markmos_main() as the single cross-platform entry point
  • Audio via miniaudio
  • Memory via rpmalloc
  • Job system for multithreaded tasks
  • Sprite batching with draw call sorting
  • C++23 — no exceptions, no RTTI, no unnecessary abstractions

Build

iOS (device)

cd engine
./build-ios.sh

iOS (simulator)

./build-ios-sim.sh

Android

cd engine
./build-android.sh                    # debug APK
CONFIG=Release ./build-android.sh     # release APK

Project Structure

engine/
├── core/          # Memory, VFS, job system, utilities
├── render/        # Renderer, shaders, sprite batch
├── rhi/           # Metal/Vulkan backends
├── app/           # Platform entry points (iOS, Android, macOS)
├── thirdparty/    # rpmalloc, miniaudio, simdjson, stb, metal-cpp, VMA
├── shaders/       # GLSL sources (Vulkan)
└── entry/         # Game entry point

License

MIT

About

Cross‑platform 2D game engine with Metal (Apple) and Vulkan (Android) backends. C++23, zero virtual dispatch, SoA layout, slotmap handles, bump allocators, job system, sprite batching.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages