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.