webgameapi
v1.0.0
Published
Eine TypeScript Library für Web-Games mit Room-Management, Chat und Channels
Maintainers
Readme
WebGameAPI
Eine TypeScript Library für Web-Games mit Room-Management, Chat und generischen Channels über Websockets.
Features
- 🎮 Room-Management: Erstelle und verwalte Spielräume mit maximaler Spieleranzahl
- 💬 Chat-System: Globaler und Room-basierter Chat
- 📡 Channel-System: Generische Channels für beliebigen Datenaustausch
- 👥 Player-Management: Verwaltung von Spielern mit benutzerdefinierten Daten
- 🔌 WebSocket-Support: Basierend auf Socket.IO
- 📝 TypeScript: Vollständig in TypeScript geschrieben mit Typen
Installation
Für die Library selbst
npm install
npm run buildIn einem anderen Projekt verwenden
Es gibt mehrere Möglichkeiten, die Library in einem anderen Projekt zu verwenden:
Option 1: Lokale Verlinkung (empfohlen für Entwicklung)
# Im webgameapi Verzeichnis
npm link
# In deinem Projekt
npm link webgameapiOption 2: Direkter Pfad-Import
In deiner package.json:
{
"dependencies": {
"webgameapi": "file:../pfad/zur/webgameapi"
}
}Option 3: Als npm Package (nach Veröffentlichung)
npm install webgameapiSiehe USAGE.md für detaillierte Anleitung und example-project/ für ein vollständiges Beispiel.
Schnellstart
Server erstellen
import { GameServer } from 'webgameapi';
const server = new GameServer({
port: 3000,
cors: {
origin: '*',
credentials: false,
},
maxRooms: 100,
maxPlayersPerRoom: 10,
});
// Custom Event Handler
server.on('game:move', (data, player) => {
console.log(`Player ${player.id} bewegt sich:`, data);
});
server.start();Client (Browser)
<script src="https://cdn.socket.io/4.7.2/socket.io.min.js"></script>
<script>
const socket = io('http://localhost:3000');
// Player beitreten
socket.emit('player:join', {
playerId: 'player1',
name: 'Spieler 1'
});
// Room erstellen
socket.emit('room:create', {
roomId: 'room1',
name: 'Mein Raum',
maxPlayers: 10
});
// Chat-Nachricht senden
socket.emit('chat:send', {
message: 'Hallo!',
roomId: 'room1' // optional
});
// Channel abonnieren
socket.emit('channel:subscribe', { channel: 'game-updates' });
</script>API Dokumentation
GameServer
Konfiguration
interface ServerConfig {
port?: number; // Port für den Server (Standard: 3000)
cors?: { // CORS-Konfiguration
origin: string | string[];
credentials?: boolean;
};
maxRooms?: number; // Maximale Anzahl von Rooms
maxPlayersPerRoom?: number; // Maximale Spieler pro Room
}Methoden
start(): Startet den Serverstop(): Stoppt den Serveron(event: string, handler: EventHandler): Registriert einen Event-Handleroff(event: string, handler: EventHandler): Entfernt einen Event-HandlergetRoomManager(): Gibt den RoomManager zurückgetChatManager(): Gibt den ChatManager zurückgetChannelManager(): Gibt den ChannelManager zurückgetPlayerManager(): Gibt den PlayerManager zurück
Socket Events (Client → Server)
Player Management
player:join- Player tritt bei{ playerId: string, name?: string, data?: Record<string, any> }
Room Management
room:create- Erstellt einen neuen Room{ roomId: string, name: string, maxPlayers?: number }room:join- Tritt einem Room bei{ roomId: string }room:leave- Verlässt einen Room{ roomId: string }room:list- Listet alle Rooms auf
Chat
chat:send- Sendet eine Chat-Nachricht{ message: string, roomId?: string }chat:history- Ruft Chat-Verlauf ab{ roomId?: string, limit?: number }
Channels
channel:subscribe- Abonniert einen Channel{ channel: string }channel:unsubscribe- Meldet sich von einem Channel ab{ channel: string }channel:broadcast- Sendet eine Nachricht an einen Channel{ channel: string, data: any }
Custom Events
event- Sendet ein benutzerdefiniertes Event{ event: string, payload: any }
Socket Events (Server → Client)
Player Events
player:joined- Bestätigung, dass Player beigetreten istplayer:connected- Anderer Player hat sich verbundenplayer:disconnected- Player hat sich getrennt
Room Events
room:created- Room wurde erstelltroom:joined- Room wurde beigetretenroom:left- Room wurde verlassenroom:list- Liste aller Roomsroom:playerJoined- Spieler ist Room beigetretenroom:playerLeft- Spieler hat Room verlassen
Chat Events
chat:message- Neue Chat-Nachrichtchat:history- Chat-Verlauf
Channel Events
channel:subscribed- Channel wurde abonniertchannel:unsubscribed- Channel wurde abgemeldetchannel:message- Neue Channel-Nachricht
Error Events
error- Fehler aufgetreten{ message: string }
Beispiele
Siehe examples/ Verzeichnis für vollständige Beispiele:
basic-server.ts- Einfacher Server-Setupclient-example.html- Vollständiges Client-Beispiel mit UI
Entwicklung
# TypeScript kompilieren
npm run build
# Watch-Modus für Entwicklung
npm run dev
# Server starten
npm startLizenz
MIT
