Boardgame
State Management and Multiplayer Networking for Turn-Based Games
README
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
- ```sh
- npm install boardgame.io
- ```
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
- ```sh
- npm install
- npm start
- ```
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
See 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]?
Check out the contributing guidelines
and the project roadmap.
📖 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