UNPKG

shoehive

Version:

WebSocket-based multiplayer game framework for real-time, event-driven gameplay

74 lines (49 loc) โ€ข 3.68 kB
# ๐Ÿ Shoehive - Open Source Multiplayer Game Framework Shoehive is an **extensible, WebSocket-based multiplayer game framework** designed with the goal of providing a simple and easy to understand framework for building multiplayer card games. It boasts a modular design that allows you to extend the game server with a number of different game types. Shoehive is built with TypeScript and is designed to be used with Node.js. **It is currently in active development and is not yet ready for production use.** [![CI Tests](https://github.com/jtay/shoehive/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/jtay/shoehive/actions/workflows/test.yml) [![Version Distribution](https://github.com/jtay/shoehive/actions/workflows/versioning.yml/badge.svg)](https://github.com/jtay/shoehive/actions/workflows/versioning.yml) [![Docs](https://github.com/jtay/shoehive/actions/workflows/docs-deploy.yml/badge.svg?branch=main)](https://github.com/jtay/shoehive/actions/workflows/docs-deploy.yml) #### [**๐Ÿ™ GitHub**](https://github.com/jtay/shoehive)   |   [**๐Ÿ“ฆ Releases**](https://github.com/jtay/shoehive/releases)   |   [**โšก๏ธ Quick Start Guide**](https://shoehive.jtay.co.uk/quick-start)   |   [**๐Ÿ“– Docs**](https://shoehive.jtay.co.uk)   |   [**๐Ÿ” API Reference**](https://shoehive.jtay.co.uk/api/generated)   |   [**๐Ÿค Contributing**](https://github.com/jtay/shoehive/tree/main/CONTRIBUTING.md) ## ๐Ÿš€ Features โœ… **Powered by WebSockets** โ€“ Real-time, low-latency communication. โœ… **Modular Backend Connectivity** โ€“ Implement your own authentication system and register any kind of backend transport protocol. โœ… **Extensible Game Modules** โ€“ Build games like blackjack, baccarat and poker while focusing on just the game logic. โœ… **Multi-Game Server** โ€“ When creating a new game, the player can choose from the registered game modules. โœ… **Designed for Card Games** โ€“ Natively supports card games with a flexible card deck system. โœ… **Built-In Command System** โ€“ Register namespaced commands to send data between the client and server. โœ… **Event-Driven Architecture** โ€“ React to events in the game server with ease using the event bus. โœ… **Free Forever** โ€“ Licensed under the Unlicense, you are free to use it as you please. Commercial or otherwise. ## ๐ŸŒŸ Kickstart Your Game in Minutes ```typescript import * as http from 'http'; import { createGameServer } from 'shoehive'; import { BlackjackGameModule } from "./modules/blackjack"; // Create an HTTP server const server = http.createServer(); // Create the game server const gameServer = createGameServer(server); // Register the game module gameServer.registerGameModule(BlackjackGameModule); // Start the server server.listen(3000, () => { console.log(`Shoehive server running on port 3000`); }); ``` ## ๐Ÿงช Testing The framework includes comprehensive test suites to ensure reliability and correctness. ### Running Tests ```bash # Run all tests npm test # Run specific test file npx jest tests/events/EventBus.test.ts # Generate test coverage report npm test -- --coverage ``` ### Test Structure - `tests/core/` - Tests for core components (Player, Table, etc.) - `tests/events/` - Tests for event handling and message routing - `tests/transport/` - Tests for transport modules - `tests/integration/` - Integration tests for component interactions To add new tests, follow the existing patterns in the test directories. ## ๐Ÿ“„ License This project is licensed under the [The Unlicense](https://unlicense.org/). See the [LICENSE](LICENSE) file for details.