Getting Started

Introduction

An overview of MavonEngine and what it provides.

MavonEngine is a TypeScript game engine built on top of Three.js and Rapier3D, designed to abstract away the common boilerplate needed when bootstrapping 2D/3D games — both single-player and multiplayer.

The underlying goal is to write logic once and then have it run on both the server & client identically with the needed updates / state synchronization happening when needed.

What it provides

Entity System

A hierarchical entity architecture for structuring all game objects.

State Machine

A pushdown automaton pattern for managing complex entity behaviors.

Networking

Authoritative multiplayer server with WebRTC and tick-based state sync.

Physics (Docs Coming soon)

Rapier3D physics with character controller and debug visualization.

Editor (Docs Coming soon)

Fully fledged level editor for your creations.

Design philosophy

The engine tries to abstract away common elements while remaining flexible. Some areas may be opinionated (e.g. audio listener is attached to the camera). If you find these and want to open them up further, pull requests are welcome. Please read Contributing for more

Core libraries

  • Three.js — Client rendering and scene management
  • Rapier3D — Server and client-side physics simulation
  • geckos.io — UDP via WebRTC for real-time multiplayer