Python Game Server
Ein Paket für Python 3.6+, das eine spielbereite Client-Server-Architektur und ein UDP-basiertes Netzwerkprotokoll enthält.
Es behandelt Probleme wie Paketverlust oder Netzwerküberlastung, sodass Sie dies nicht tun müssen. Stattdessen erhalten Sie eine High-Level-API zum einfachen Verbinden von Clients und Backends, die einen synchronisierten Spielstatus teilen und Ereignisse austauschen. Das asynchrone Framework hierfür ist Curio, das ich wärmstens empfehlen kann.
PyGaSe ist einfach zu bedienen, leicht, schnell, skalierbar und zuverlässig. Damit können Sie ein rasantes Echtzeit-Onlinespiel erstellen. Wenn Sie möchten, können Sie auch ein groß angelegtes MMO mit Tausenden von Kunden erstellen.
Ich entwickle PyGaSe aktiv im Rahmen mehrerer Indie-Spieleprojekte und teile es gerne.
BREAKING ÄNDERUNG : Version 0.2.0 ist im Grunde eine neue API und ein Update von 0.1.9 oder niedriger führt zu Codefehlern. Es ist außerdem viel stabiler, flexibler und leistungsfähiger. Stellen Sie daher sicher, dass Sie 0.2.0 oder höher verwenden.
pip install pygase
oder noch besser: poetry add pygase
. Im Ernst, verwenden Sie Poesie, es ist eine Offenbarung.
Die API-Dokumentation und einen Abschnitt „Erste Schritte“ finden Sie hier.
Dieses Beispielspiel implementiert ein Online-Fangspiel, bei dem sich die Spieler bewegen können, während einer von ihnen der Verfolger ist, der einen anderen Spieler fangen muss. Ein gefangener Spieler wird zum nächsten Verfolger und kann nach einem 5-sekündigen Schutz-Countdown andere Spieler fangen.
Führen Sie zuerst server.py
und dann client.py
in weiteren Terminalsitzungen aus, um Spieler hinzuzufügen. Verwenden Sie denselben Spielernamen nur einmal.
Sie können das logging
verwenden. Auf der Ebene INFO
erhalten Sie Protokollausgaben für Ereignisse wie Startvorgänge, Herunterfahren, neue Verbindungen oder Verbindungsabbrüche. Auf DEBUG
-Ebene erhalten Sie eine detaillierte Ausgabe bis hin zum Senden, Empfangen und Bearbeiten einzelner Netzwerkpakete.
Debug-Protokolle sind auch eine gute Möglichkeit, das Innenleben von PyGaSe zu verstehen.
logging
hinzugefügtBackend
Klasse hinzugefügt, um serverseitige Boilerplate zu reduzieren