← Back to projects
2018 — present

Lily Engine

Model-driven game engine on Vulkan

The Challenge

Building a game engine that applies Model Engineering to a domain as constrained as Vulkan: finding an abstraction low enough to stay faithful to GPU resources and memory layout, without pushing all of that complexity into game code.

The Approach

The architecture was designed as a modular foundation, not just a thin wrapping layer:

  • a central data model as the pivot for all development
  • two distinct layers: Lily-core for the application framework and Lily-Vulkan for game and rendering specialization
  • an intentionally low-level abstraction with objects such as Shader, DescriptorSet, Descriptor, and Buffer
  • specific modeling work around buffers and memory regions, which are among the trickiest parts of Vulkan
  • an extension and dependency-injection system based on Java annotations to reduce boilerplate in projects built on top of the engine

The Result

The engine has served as the foundation for multiple real projects: VSand, Children of Earth, and Story. More importantly, it demonstrates that a model-driven approach can structure a full Vulkan engine without staying theoretical: LMF is the backbone, and VSand is the end-to-end proof that the architecture holds.

Tech Stack

JavaVulkanGLSLLWJGLModel EngineeringLMF

Screenshots

Built with SvelteKit + Tailwind CSS

© 2026 Aurélien Mora