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.
✅ 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.
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`);
});
The framework includes comprehensive test suites to ensure reliability and correctness.
# Run all tests
npm test
# Run specific test file
npx jest tests/events/EventBus.test.ts
# Generate test coverage report
npm test -- --coverage
-
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.
This project is licensed under the The Unlicense. See the LICENSE file for details.