Boardgame

State Management and Multiplayer Networking for Turn-Based Games

README

SWUbanner

boardgame.io

npm version Build StatusCoverage StatusGitter

Support us:Open CollectiveGitHub Sponsors

Read the Documentation

boardgame.io is an engine for creating turn-based games using JavaScript.


Write simple functions that describe how the game state changes
when a particular move is made. This is automatically converted
into a playable game complete with online multiplayer
features, all without requiring you to write a single line of
networking or storage code.

Features


- State Management: Game state is managed seamlessly across clients, server and storage automatically.
- Multiplayer: Game state is kept in sync in realtime and across platforms.
- AI: Automatically generated bots that can play your game.
- Game Phases: with different game rules and turn orders per phase.
- Lobby: Player matchmaking and game creation.
- Prototyping: Interface to simulate moves even before you render the game.
- Extendable: Plugin system that allows creating new abstractions.
- View-layer Agnostic: Use the vanilla JS client or the bindings for React / React Native.
- Logs: Game logs with the ability to time travel (viewing the board at an earlier state).

Usage


Installation


  1. ```sh
  2. npm install boardgame.io
  3. ```

Documentation


Read our Full Documentation to learn how to
use boardgame.io, and join the community on gitter
to ask your questions!

Running examples in this repository


  1. ```sh
  2. npm install
  3. npm start
  4. ```

The examples can be found in the examples folder.

Using VS Code?


This repository is ready to run in a dev container in VS Code. See the contributing guidelines for details.

Changelog



Get involved


We welcome contributions of all kinds!
Please take a moment to review our Code of Conduct.

🐛 Found a bug?  
Let us know by [creating an issue][new-issue].

Have a question?  
Our [Gitter channel][gitter] and [GitHub Discussions][discussions]
are good places to start.

⚙️ Interested in fixing a [bug][bugs] or adding a [feature][features]?  

📖 Can we improve [our documentation][docs]?  
Pull requests even for small changes can be helpful. Each page in the
docs can be edited by clicking the “Edit on GitHub” link at the top right.

💸 Want to support the project financially?  
We accept donations via [GitHub Sponsors][sponsors] and on [Open Collective][collective].

[new-issue]: https://github.com/boardgameio/boardgame.io/issues/new/choose
[gitter]: https://gitter.im/boardgame-io/General
[discussions]: https://github.com/boardgameio/boardgame.io/discussions
[bugs]: https://github.com/boardgameio/boardgame.io/issues?q=is%3Aissue+is%3Aopen+label%3Abug
[features]: https://github.com/boardgameio/boardgame.io/issues?q=is%3Aissue+is%3Aopen+label%3Afeature
[docs]: https://boardgame.io/documentation/
[sponsors]: https://github.com/sponsors/boardgameio
[collective]: https://opencollective.com/boardgameio#support

License