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.
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.
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.
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.
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. 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.
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.
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.
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.
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.
Je veux que vous travailliez avec différentes équipes Slack.
Au fur et à mesure que vous progressez dans le jeu, cela ressemblera à ceci
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.
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