Solo project · in active development · not yet release-ready

Yope3D

A C++20 Vulkan game engine from scratch — physics, 3D rendering, scripting, UI, and an in-house ImGui editor. Initially an old Java engine.

trailer coming soon

Features

Physics

  • A 240 Hz fixed timestep rigid body simulation independent of rendering, on its own thread
  • An acceleration structure with sweep-and-prune as the broadphase
  • An SAT-based narrowphase with clipping for rich contact manifolds and feature ID'ing for solver warm starting
  • A parallelizable (island splitting based) Projected Gauss Seidel solver with lambda warm starting and body sleeping
  • Various constraint types with regular contacts as well as joints (supported: hinge, cone-twist, point-to-point, suspension, wheel friction) allowing for ragdolls and driven vehicles
  • Hookean springs, enabling ropes, cloths, and soft body lite
  • Static and Dynamic Compound Colliders with baking to accelerate
  • Collision layers support with masks (natural collision filtering) alongside collision enter/exit events carrying critical contact info
  • Built-in query support for raycasts, capsule-casts, and overlaps
  • GJK/EPA narrowphase pipeline for capsules/cylinders (in development)

Entity, Component, System Architecture (The Data Oriented Design)

  • An Archetype-based registry with contiguous component storage, generational entity handles, tagged components: yielding extremely fast iteration over archetypes and wonderful data locality
  • What's in the DOD Registry? everything (Physics, UI, Meshes, Scripts). Everything is fast and you don't chase ANY pointers

Rendering Capabilities

  • Vulkan based backend, with raster and compute-raytrace modes
  • Forward renderer with 32 Byte Vertices while supporting Cook-Torrance Physically Based Rendering (PBR) with full material maps
  • Shadow mapping (directional/spot + point-light cubemaps); skyboxes
  • Rigid animation clips; world-space debug-line pipeline

Scripting

  • Per-entity Python behaviors via an embedded pybind11 module, with params loaded into the Editor GUI
  • A fully typed stub so an IDE autocompletes for the entire engine surface
  • Access to callbacks for collision & UI events, as well as object lifecycle

Editor (debug builds)

  • Inspectors for every component; undo/redos
  • glTF 2.0 and OBJ import alongside drop-in primitives and automatic collider fitters (primitives as well as compounds on glTF imports)
  • An entire 3D viewport with a freely manipulatable camera for scene authoring and Play/Stop to demo scenes quickly
  • Easy object selection via mouse picking in the viewport
  • Easily parseable JSON scene format (reloadable) & entity templates
  • Async scene loading with an animated splash; cross-scene handoff payloads

Misc

  • UI with input routing (hover / press / click, text input), anchoring as well as pixel layouts, built-in fades
  • MSDF text rendering in both 2D UI and 3D world space
  • OpenAL 3D spatial audio with Doppler, streamed music with fades; Music/SFX/Voice buses

Tooling & tests

  • In-engine profiler with CSV export for pandas analysis and a stage-by-stage analyzer
  • Standalone macOS .app bundling
  • 6 Catch2 test suites (math, physics, ECS, glTF, text, packaging), most fully headless

Future Plans

Now: GJK/EPA narrowphase, headless execution, and ensuring determinism (scene replay).

Development Notes

Yope3D was built by me, using AI coding tools. All changes: architectural, design, optics, etc, are reviewed and understood before they land. Any and all additions also run through the 6-test gauntlet and performance profiler, who really decide whether it stays or goes.