[PYTHON] Comment créer un jeu d'action multijoueur en ligne avec Slack

Cet article est le 8ème jour du Calendrier de l'Avent Dwango. Hier, @ mokumoku a déclaré: "L'histoire de la gestion d'une page Web sur Swift côté serveur. " était. En fait, j'écris aussi Swift au travail (côté client), et Swift est l'une de mes langues préférées. Je n'ai pas encore écrit Swift côté serveur, j'ai donc décidé de lire l'article et de l'essayer. L'histoire d'aujourd'hui concerne Slack, Bot et Python, qui n'a rien à voir avec Swift.

Histoire d'une bonne nuit

Un jour, alors que je regardais notre produit Niko Niko Video, je suis tombé sur Funny Video. Quand j'ai vu un commentateur intéressant faire, jouer et commenter un jeu qui utilise des bombes, je me suis senti comme ça. "Ah, je joue à un jeu où je pose aussi des bombes et me bats contre des ennemis ~~" Mais à ce moment-là, je regrette de ne pouvoir le faire sans avoir une machine de jeu.

L'introduction a été allongée, mais c'est l'histoire de la façon dont j'ai eu un jeu de placement de bombes qui fonctionnent sur plusieurs plates-formes indépendantes de l'environnement.

Plateforme appelée Slack

J'ai écrit dans Quand j'ai implémenté Shogi sur Slack avant que Slack soit une très bonne plate-forme. Slack est une très bonne plateforme qui vous permet de créer des jeux comme le dernier Shogi, ainsi que Bot comme nouvelle interface sur vos messages, comme vous pouvez le voir dans les récents ChatOps. Je trouve que la plate-forme qui permet à Bot qui fonctionne comme une interface avec d'autres services, à Bot qui fonctionne comme l'intelligence artificielle comme Siri, et aux membres de l'équipe et de la communauté de communiquer entre eux est très merveilleuse. Parmi eux, Slack a une excellente interface utilisateur et la facilité de création de Bot _ (et une API légèrement excentrique) _, et je veux mettre quelque chose de nouveau sur la plate-forme de messagerie maintenant! Je pense que c'est le meilleur produit pour ceux qui réfléchissent.

Cette fois aussi, nous avons adopté Slack comme plateforme de mise en œuvre du jeu.

Comment créer un jeu en ligne sur Slack

Graphique

Bien sûr, Slack n'est pas un moteur de jeu, vous ne pouvez donc pas dessiner des pixels ou rendre des images ou des polygones arbitraires. Dans Shogi j'ai fait la dernière fois, j'ai affiché un tableau compliqué d'une manière facile à comprendre en enregistrant mes propres pictogrammes.

Jetons un coup d'œil à l'écran que nous voulons implémenter cette fois. Cette image est une scène de la vidéo précédente. Screen Shot 2016-12-01 at 1.29.33 AM.png

C'est une carte générale à deux dimensions. Il semble qu'une puce de carte puisse être représentée par un pictogramme. De plus, les puces nécessaires sont des murs, des blocs, des bombes, etc., et il semble que tout puisse être exprimé avec uniquement des pictogrammes standard Unicode. Il semble que vous n'ayez pas besoin d'enregistrer votre propre pictogramme. Voici une carte créée en disposant réellement des pictogrammes. Screen Shot 2016-12-01 at 1.38.51 AM.png Ouais, ça fait du bien. Ceci est rendu en publiant un texte comme celui-ci sur Slack.

Aussi, si l'état du jeu change, il sera nécessaire de redessiner l'écran. Ce problème peut être résolu en utilisant [l'API chat.update] de Slack (https://api.slack.com/methods/chat.update). Il est également écrit dans Slack as a Game platform, qui est une bible pour créer des jeux avec Slack, mais si vous appelez trop l'API, vous serez pris dans la limite de l'API. Veuillez noter que cela finira.

Comment accepter les entrées du lecteur

Comme un programme typique, le jeu prend des entrées, les traite selon la logique du jeu, puis les sort à plusieurs reprises. J'ai mentionné la partie sortie sur Slack plus tôt, mais que dois-je faire avec l'entrée? Vous pouvez obtenir des informations depuis le contrôleur dans les jeux généraux, ou directement depuis le clavier dans les jeux PC, mais ce n'est pas possible sur Slack. Il existe plusieurs options pour y parvenir.

  1. Recevoir des entrées via le chat
  2. Recevoir des commentaires en utilisant la réaction
  3. Préparez un mécanisme pour accepter les entrées en dehors de la plate-forme Slack, par exemple sur le Web

Pour les jeux qui nécessitent des performances en temps réel comme celui-ci, la méthode d'utilisation de 2 réactions ou la méthode d'acceptation d'une entrée en dehors de la plate-forme Slack de 3 convient. Cette fois, je veux tout terminer sur Slack, je vais donc adopter la méthode d'utilisation de la réaction de 2.

Ce jeu peut être réalisé avec 5 boutons d'un bouton pour se déplacer vers le haut, le bas, la gauche et la droite et placer une bombe. En plaçant un bouton de réaction sur la carte que le Bot lui-même peut entrer, il indique à l'utilisateur qu'il peut être entré en utilisant la réaction. Screen Shot 2016-12-04 at 8.51.17 PM.png

En utilisant [RTM (Real Time Messaging) API] de Slack (https://api.slack.com/rtm), la réaction Add et Vous pouvez recevoir le message Supprimer (https://api.slack.com/events/reaction_removed). Cela signifie à la fois que le bouton a été enfoncé. Lorsque vous recevez l'un de ces messages, vous pouvez fournir une interface utilisateur facile à utiliser sur Slack en saisissant l'utilisateur qui a ajouté (ou supprimé) la réaction et en la reflétant dans la logique du jeu.

J'ai essayé de mettre en œuvre

Jusqu'à présent, nous avons vu comment créer un jeu d'action en ligne sur Slack, divisé en sortie et entrée. Voici le jeu qui a été réellement implémenté en utilisant la méthode présentée ici. https://github.com/setokinto/slack-bomber

Ceux qui souhaitent l'utiliser peuvent facilement l'essayer en utilisant Docker. Sur un PC avec Docker installé docker run --env API_TOKEN="<Your Slack Bot Token>" setokinto/slack-bomber Veuillez remplacer API_TOKEN par le Bot Token réellement obtenu de Slack avant de l'exécuter. Sur le canal où se trouve le bot @ bot-name commence par @ username (username est le nom d'utilisateur que vous souhaitez associer) Commencer avec. Screen Shot 2016-12-05 at 12.21.32 AM.png Je veux que vous travailliez avec différentes équipes Slack.

Au fur et à mesure que vous progressez dans le jeu, cela ressemblera à ceci Screen Shot 2016-12-05 at 12.34.55 AM.png

En exécution

Lorsque vous créez un jeu en ligne avec Slack, Slack prend en charge toute la partie réseau, vous pouvez donc vous concentrer sur la logique du jeu et la développer très facilement. La méthode de création est presque la même que pour un jeu général, mais vous devez faire attention uniquement à ce que les performances de dessin soient extrêmement faibles. Dans un jeu typique, il est normal de mettre à jour l'écran 30 ou 60 fois par seconde, mais ce n'est pas possible avec Slack. Cette fois, l'écran est mis à jour environ une fois toutes les 0,6 seconde ou 0,7 seconde. Parce que, comme je l'ai écrit dans la section graphique, il existe une limite d'API. Seule cette partie doit être soigneusement codée et conçue.

De plus, en raison des faibles fps, les erreurs d'opération se produisent fréquemment, et si cela explose une fois comme PAUVRE MAN, si le jeu se termine, il se terminera avant le début de la bataille, nous avons donc introduit un système de vie.

Si vous avez lu cet article et que vous souhaitez créer un jeu en ligne sur Slack, c'est une bonne idée de réfléchir aux fonctionnalités de Slack et aux fonctionnalités uniques à Slack et faciles à utiliser.

Résumé

Slack est une excellente plateforme pour discuter et jouer à des jeux. De plus, comme l'API est largement ouverte au public, le développement est possible, et je sens un bel avenir dans le futur où diverses fonctions et services seront intégrés dans le logiciel utilisé par tout le monde appelé messages. De nombreux autres services de messagerie exposent également leurs API. On s'attend à ce que la plate-forme Bot soit chaude en 2017, alors faisons beaucoup de choses. Parmi divers services, Slack est particulièrement ouvert aux ingénieurs et dispose d'une API riche. L'API est un peu bizarre, mais elle a suffisamment de fonctionnalités, alors pourquoi ne pas essayer de créer quelque chose que vous aimez en utilisant Slack comme plate-forme?

Recommended Posts

Comment créer un jeu d'action multijoueur en ligne avec Slack
Comment créer un bot slack
Comment faire un jeu de tir avec toio (partie 1)
Comment créer un robot - Avancé
Comment créer une fonction récursive
Comment faire un simple jeu Flappy Bird avec Pygame
[Blender] Comment créer un plug-in Blender
Comment créer un robot - Basic
Comment créer une bibliothèque .dylib à partir d'une bibliothèque .a avec OSX (El Capitan)
[Python] Comment rendre une classe itérable
Comment créer un indicateur personnalisé Backtrader
Comment tester sur une page authentifiée par Django
Comment créer un plan de site Pelican
Comment créer un système de dialogue dédié aux débutants
Comment rendre plusieurs noyaux sélectionnables sur Jupyter
Comment créer un dictionnaire avec une structure hiérarchique.
Je veux faire un jeu avec Python
Comment créer un plug-in QGIS (génération de package)
J'ai lu "Comment créer un laboratoire de piratage"
Comment vivre une vie décente avec Windows 2017
J'ai créé un jeu ○ ✕ avec TensorFlow
LINUX: Comment faire correspondre les touches fléchées à 2,4,6,8 sur des notes sans dix touches
Faisons un jeu de squash
Créez un jeu à la Tetris!
Comment déployer une application Django dans le cloud Alibaba
Comment installer Linux sur un PC UEFI 32 bits
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Comment créer un environnement Django (python) sur Docker
Comment créer un package Python à l'aide de VS Code
Bases de PyTorch (2) -Comment créer un réseau de neurones-
Comment exécuter Django sur IIS sur un serveur Windows
Comment créer un environnement Python sur Amazon Linux 2
Comment utiliser GitHub sur un serveur multi-personnes sans mot de passe
Comment utiliser Fujifilm X-T3 comme webcam sur Ubuntu 20.04
Comment exécuter un modèle de transformateur entraîné localement sur CloudTPU
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Comment créer un nouvel environnement virtuel Python sur Ubuntu
Comment appeler une fonction
Comment créer un laboratoire de piratage - Kali Linux (2020.1) VirtualBox 64 bits Partie 2-
Comment monter un répertoire Windows 10 sur Ubuntu-Server 20.04 sur VMware Workstation 15.
Comment s'inscrire auprès de pypi
Comment créer un laboratoire de piratage - Kali Linux (2020.1) VirtualBox 64-bit edition -
Comment créer un package Python (écrit pour un stagiaire)
Remarques sur la façon de charger un environnement virtuel avec PyCharm
Comment pirater un terminal
Comment enregistrer un package dans PyPI (à partir de septembre 2017)
Comment faire coexister Python 3.x et 2.x sur Mac (j'ai également inclus opencv en bonus)
Comment créer des couches AWS Lambda lors de l'exécution de sélénium × chrome sur AWS Lambda
Comment transformer une chaîne en tableau ou un tableau en chaîne en Python
Un jeu pour partir à l'aventure en mode interactif de python
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Comment personnaliser U-Boot avec une carte personnalisée pour OSD335X (Remarque)
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
[Langage C] Comment créer, éviter et créer un processus zombie
Spigot (Paper) Introduction à la création d'un plug-in pour 2020 # 01 (Construction de l'environnement)
Comment faire un test unitaire Part.1 Modèle de conception pour l'introduction