Getting Started

Introduction

MavonEngine is a Three.js game engine for single-player and multiplayer browser games — with server-authoritative physics, real-time networking, and a unified server-client architecture.

MavonEngine is a Three.js game engine built on top of Three.js and Rapier3D, designed to abstract away the common boilerplate needed when bootstrapping 3D browser 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