/javelin

TypeScript ECS and multiplayer game development toolkit

Primary LanguageTypeScript

CD codecov

javelin

Javelin is a suite of packages used to build multiplayer games for the web.

The primary goals of Javelin are speed, minimalism, and ease-of-use. A secondary goal is to provide examples of client-side prediction, input reconciliation, and other algorithms commonly used in fast-paced online games.

This library is comprised of an Entity-Component System (ECS) and an associated networking package used to synchronize game data between a client and server (or other clients).

Docs

Visit https://javelin.games

Packages

Package Description
@javelin/ecs Build games using the ECS pattern
@javelin/net Synchronize @javelin/ecs instances
@javelin/devtool Inspect and manipulate remote and local @javelin/ecs instances
@javelin/hrtime-loop Create a smooth, high-resolution game loop in NodeJS

Examples

Example Description
networking Entity/component synchronization over WebRTC datachannels

Scripts

Script Description
yarn build Build all packages and examples
yarn test Run all unit and integration tests
yarn perf Run all performance tests
yarn example:basic Preview basic ECS capabilities
yarn example:networking An example of synchronizing entities over WebRTC

Development

yarn --ignore-engines
yarn build
yarn example:networking

Note that when developing, changes to code in local, dependent packages will not automatically refresh development apps. Just build the dependent packages and restart the dev server process when you want to test a change.