[PYTHON] Wie erstelle ich ein Multiplayer-Online-Actionspiel mit Slack?

Dieser Artikel ist der 8. Tag von Dwango Adventskalender. Gestern sagte @ mokumoku: "Die Geschichte, eine Webseite auf serverseitigem Swift zu betreiben. " war. Eigentlich schreibe ich Swift auch bei der Arbeit (auf der Client-Seite) und Swift ist eine meiner Lieblingssprachen. Ich habe Swift noch nicht serverseitig geschrieben, daher habe ich beschlossen, den Artikel zu lesen und auszuprobieren. Die heutige Geschichte handelt von Slack, Bot und Python, was nichts mit Swift zu tun hat.

Geschichte einer guten Nacht

Als ich eines Tages unser Produkt Niko Niko Video sah, stieß ich auf Funny Video. Als ich einen interessanten Kommentator sah, der ein Spiel mit Bomben machte, spielte und kommentierte, fühlte ich mich so. "Ah, ich spiele ein Spiel, in dem ich auch Bomben lege und gegen Feinde kämpfe ~~" Aber zu dieser Zeit bedauere ich, dass ich es ohne einen Spielautomaten nicht schaffen konnte.

Die Einführung wurde verlängert, aber dies ist die Geschichte, wie ich das Spiel dazu gebracht habe, Bomben auf plattformunabhängigen Multi-Plattformen zu platzieren.

Plattform namens Slack

Ich schrieb in Als ich Shogi auf Slack implementiert habe, bevor Slack eine sehr gute Plattform ist. Slack ist eine sehr gute Plattform, mit der Sie Spiele wie das letzte Mal erstellen können, sowie Bot als neue Oberfläche für Ihre Nachrichten, wie Sie in den letzten ChatOps sehen können. Ich finde die Plattform, die es Bot ermöglicht, als Schnittstelle zu anderen Diensten zu fungieren, Bot, der als künstliche Intelligenz wie Siri fungiert, und Teammitgliedern und Community-Mitgliedern, miteinander zu kommunizieren, sehr wunderbar. Unter ihnen hat Slack eine großartige Benutzeroberfläche und die einfache Erstellung von Bot (und eine etwas eigenartige API), und ich möchte jetzt etwas Neues auf die Nachrichtenplattform stellen! Ich denke, dass es das beste Produkt für diejenigen ist, die denken.

Auch dieses Mal haben wir Slack als Plattform für die Implementierung des Spiels übernommen.

Wie erstelle ich ein Online-Spiel auf Slack?

Grafik

Natürlich ist Slack keine Spiel-Engine, daher können Sie keine Pixel zeichnen oder beliebige Bilder oder Polygone rendern. In Shogi, das ich zuletzt gemacht habe habe ich eine komplizierte Tafel auf leicht verständliche Weise angezeigt, indem ich meine eigenen Piktogramme registriert habe.

Werfen wir einen Blick auf den Bildschirm, den wir dieses Mal implementieren möchten. Dieses Bild ist eine Szene aus dem vorherigen Video. Screen Shot 2016-12-01 at 1.29.33 AM.png

Es ist eine allgemeine zweidimensionale Karte. Es scheint, dass ein Kartenchip durch ein Piktogramm dargestellt werden kann. Außerdem sind die erforderlichen Chips Wände, Blöcke, Bomben usw., und es scheint, dass alle nur mit Unicode-Standardpiktogrammen ausgedrückt werden können. Es scheint, dass Sie kein eigenes Piktogramm registrieren müssen. Hier ist eine Karte, die durch Anordnen von Piktogrammen erstellt wurde. Screen Shot 2016-12-01 at 1.38.51 AM.png Ja, es fühlt sich gut an. Dies wird gerendert, indem Text wie dieser an Slack gesendet wird.

Wenn sich der Status des Spiels ändert, muss der Bildschirm neu gezeichnet werden. Dies kann mithilfe der [chat.update API] von Slack (https://api.slack.com/methods/chat.update) behoben werden. Es ist auch in Slack als Spielplattform geschrieben, einer Bibel zum Erstellen von Spielen mit Slack. Wenn Sie die API jedoch zu oft aufrufen, werden Sie vom API-Limit erfasst. Bitte beachten Sie, dass es enden wird.

So akzeptieren Sie Eingaben vom Player

Wie ein typisches Programm nimmt das Spiel Eingaben entgegen, verarbeitet sie gemäß der Spiellogik und gibt sie dann wiederholt aus. Ich habe den Ausgabeteil auf Slack bereits erwähnt, aber was soll ich mit der Eingabe tun? Sie können in allgemeinen Spielen Eingaben vom Controller oder in PC-Spielen direkt von der Tastatur erhalten, dies ist jedoch bei Slack nicht möglich. Hierfür gibt es mehrere Möglichkeiten.

  1. Empfangen Sie Eingaben per Chat
  2. Erhalten Sie Eingaben über die Reaktion
  3. Bereiten Sie einen Mechanismus vor, um Eingaben außerhalb der Slack-Plattform zu akzeptieren, z. B. im Web

Für Spiele, die eine Echtzeitleistung wie diese erfordern, ist die Methode zur Verwendung von 2 Reaktionen oder die Methode zum Akzeptieren von Eingaben außerhalb der Slack-Plattform von 3 geeignet. Dieses Mal möchte ich alles auf Slack abschließen, also werde ich die Methode anwenden, die Reaktion von 2 zu verwenden.

Dieses Spiel kann mit 5 Tasten der A-Taste realisiert werden, um sich nach oben, unten, links und rechts zu bewegen und eine Bombe zu platzieren. Durch Platzieren einer Reaktionsschaltfläche auf der Karte, die der Bot selbst eingeben kann, wird dem Benutzer angezeigt, dass er mithilfe der Reaktion eingegeben werden kann. Screen Shot 2016-12-04 at 8.51.17 PM.png

Mithilfe der [RTM (Real Time Messaging) API] von Slack (https://api.slack.com/rtm) können Sie eine Reaktion hinzufügen (https://api.slack.com/events/reaction_added). Sie erhalten eine Nachricht zum Löschen (https://api.slack.com/events/reaction_removed). Dies bedeutet, dass die Taste gedrückt wurde. Wenn Sie eine dieser Nachrichten erhalten, können Sie eine benutzerfreundliche Benutzeroberfläche für Slack bereitstellen, indem Sie den Benutzer eingeben, der die Reaktion hinzugefügt (oder gelöscht) hat, und sie in der Spielelogik wiedergeben.

Ich habe versucht zu implementieren

Bisher haben wir gesehen, wie man ein Online-Actionspiel auf Slack erstellt, das in Ausgabe und Eingabe aufgeteilt ist. Hier ist das Spiel, das tatsächlich mit der hier vorgestellten Methode implementiert wurde. https://github.com/setokinto/slack-bomber

Diejenigen, die es tatsächlich verwenden möchten, können es einfach mit Docker ausprobieren. Auf einem PC mit installiertem Docker docker run --env API_TOKEN="<Your Slack Bot Token>" setokinto/slack-bomber Bitte ersetzen Sie API_TOKEN vor der Ausführung durch das tatsächlich von Slack erhaltene Bot-Token. Auf dem Kanal, auf dem sich der Bot befindet @ bot-name begin with @ username (Benutzername ist der Benutzername, den Sie zusammenfügen möchten) Beginnen mit. Screen Shot 2016-12-05 at 12.21.32 AM.png Ich möchte, dass Sie mit verschiedenen Slack-Teams zusammenarbeiten.

Im Laufe des Spiels wird es so aussehen Screen Shot 2016-12-05 at 12.34.55 AM.png

In Umsetzung

Wenn Sie ein Online-Spiel mit Slack erstellen, übernimmt Slack den gesamten Netzwerkteil, sodass Sie sich auf die Spiellogik konzentrieren und diese sehr einfach entwickeln können. Die Herstellungsmethode ist fast die gleiche wie bei einem allgemeinen Spiel, aber Sie müssen nur darauf achten, dass die Zeichenleistung extrem niedrig ist. In einem typischen Spiel ist es normal, den Bildschirm 30 oder 60 Mal pro Sekunde zu aktualisieren, aber das ist mit Slack nicht möglich. Dieses Mal wird der Bildschirm ungefähr alle 0,6 Sekunden oder 0,7 Sekunden aktualisiert. Denn wie ich im Grafikabschnitt geschrieben habe, gibt es ein API-Limit. Nur dieser Teil muss sorgfältig codiert und entworfen werden.

Aufgrund der niedrigen fps treten häufig Betriebsfehler auf. Wenn es einmal wie POOR MAN explodiert, endet es vor Beginn des Kampfes, wenn das Spiel endet. Deshalb haben wir ein Lebenssystem eingeführt.

Wenn Sie diesen Artikel gelesen haben und ein Online-Spiel auf Slack erstellen möchten, sollten Sie über die Funktionen von Slack und die Funktionen nachdenken, die nur Slack bietet.

Zusammenfassung

Slack ist eine großartige Plattform zum Chatten und Spielen. Da die API für die Öffentlichkeit weit verbreitet ist, ist eine Entwicklung möglich, und ich sehe eine große Zukunft in der Zukunft, wenn verschiedene Funktionen und Dienste in die Software integriert werden, die von allen als Nachrichten bezeichneten Personen verwendet wird. Viele andere Nachrichtendienste stellen auch ihre APIs zur Verfügung. Die Bot-Plattform wird voraussichtlich auch 2017 heiß sein, also lasst uns eine Menge Dinge machen. Unter den verschiedenen Diensten ist Slack besonders offen für Ingenieure und verfügt über eine umfangreiche API. Die API ist etwas eigenartig, hat aber genügend Funktionen. Warum also nicht versuchen, mit Slack als Plattform etwas zu erstellen, das Ihnen gefällt?

Recommended Posts

Wie erstelle ich ein Multiplayer-Online-Actionspiel mit Slack?
Wie man einen lockeren Bot macht
Wie man ein Schießspiel mit toio macht (Teil 1)
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich einen Crawler?
So erstellen Sie eine .dylib-Bibliothek aus einer .a-Bibliothek mit OSX (El Capitan)
[Python] Wie man eine Klasse iterierbar macht
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
So testen Sie auf einer von Django authentifizierten Seite
Wie erstelle ich eine Pelican Site Map?
Wie man ein Dialogsystem für Anfänger erstellt
So machen Sie mehrere Kernel auf Jupyter auswählbar
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Ich möchte ein Spiel mit Python machen
So erstellen Sie ein QGIS-Plug-In (Paketerzeugung)
Ich las "Wie man ein Hacking Lab macht"
Wie man mit 2017 Windows ein anständiges Leben führt
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
LINUX: Wie man Pfeiltasten macht, entspricht 2,4,6,8 auf Noten ohne zehn Tasten
Lass uns ein Squashspiel machen
Mach ein Spiel im Tetris-Stil!
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
So installieren Sie Linux auf einem 32-Bit-UEFI-PC
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
So erstellen Sie eine Django (Python) -Umgebung auf Docker
So erstellen Sie ein Python-Paket mit VS Code
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
So führen Sie Django unter IIS auf einem Windows-Server aus
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Verwendung von GitHub auf einem Server für mehrere Personen ohne Kennwort
Verwendung von Fujifilm X-T3 als Webcam unter Ubuntu 20.04
So führen Sie ein geschultes Transformatormodell lokal auf CloudTPU aus
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
So rufen Sie eine Funktion auf
So erstellen Sie ein Hacking-Labor - Kali Linux (2020.1) VirtualBox 64-Bit Teil 2-
So mounten Sie ein Windows 10-Verzeichnis unter Ubuntu-Server 20.04 auf VMware Workstation 15.
So registrieren Sie sich bei pypi
So erstellen Sie ein Hacking-Labor - Kali Linux (2020.1) VirtualBox 64-Bit-Edition -
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Wie man ein Terminal hackt
So registrieren Sie ein Paket in PyPI (Stand September 2017)
Wie man Python 3.x und 2.x auf einem Mac koexistiert (ich habe auch opencv als Bonus hinzugefügt)
So erstellen Sie AWS Lambda-Schichten, wenn Selen × Chrom auf AWS Lambda ausgeführt wird
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
Ein Spiel für ein Abenteuer im interaktiven Python-Modus
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
So passen Sie U-Boot mit einer benutzerdefinierten Karte für OSD335X an (Hinweis)
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
[C-Sprache] So erstellen, vermeiden und erstellen Sie einen Zombie-Prozess
Spigot (Papier) Einführung in die Erstellung eines Plug-Ins für 2020 # 01 (Umgebungskonstruktion)
So führen Sie einen Komponententest durch Teil 1 Entwurfsmuster zur Einführung