Discord Bot Beginnings...
Over the past week, we've been experimenting with building interactive experiences in Discord. Given the highly qualified user base and existing networks of players, Discord is a high-priority modality for us to bring our game to.
Our current hypothesis is that interacting with our game through Discord would be most fun if it allowed interactions with NPCs from our game in the servers in solo (DM) and group (Text Channel) contexts via well-defined interaction modes. As is true for any interactive window we open into our game, player interactions in Discord should be authentic, leading to progress and state changes for the player and the game world.
While we work on the exact game interaction design, we wanted to start getting familiar with building for Discord. To this end, we built a simplified Mafia game that a group of users in a Discord server can play together in any of their group text channels. Prototyping a game of Mafia allowed us to express several building blocks that will be core to implementing a Discord mode for our game. These building blocks included:
An NPC implementation as a Discord bot capable of taking the automated actions critical for facilitating gameplay in a server
Figuring out how to do everything needed to facilitate interactions with the game while requiring the minimum possible permissions for the NPC bot from the server administrator
Building a framework where the entire game is server-driven, and the NPC (Discord bot) facilitating the game is simply an intermediary
Building a framework for users to interact with the game and make decisions about actions they want to take
Making all user decisions and actions update the player and world states, for which the game server holds the source of truth
Creating interactive gameplay cycles where players have asymmetric information:
Players take some actions privately in a DM with the NPC
Players receive some information directly from an NPC in their DM
All players receive game-wide updates in a group chat
All players take some actions that are publicly visible in a group chat
All players are incentivized to have conversations amongst themselves in a group channel to piece together information each player holds to achieve game objectives
We built this in Python to prototype quickly. With this proof of concept in place and increased familiarity building for Discord, we'll now implement a proper demo game directly hooked up to StoryEngine, with an AI-powered NPC and gameplay mechanics representing our multimodal RPG, using Go as the programming language.
Comments