Created Roadmap (markdown)

ProjectMoon 2020-11-01 21:49:36 +00:00
parent 48a88e6d36
commit fd79ed33c9
1 changed files with 52 additions and 0 deletions

52
Roadmap.md Normal file

@ -0,0 +1,52 @@
# Roadmap
This is the roadmap for functionality to be added to the dicebot. Features are listed in order of planned implementation, mostly because at this state of development, the bigger features require implementation of less exciting groundwork.
## Immediate
What is currently upcoming.
| Feature | Description | Depends on |
| --------------- | --------------- | --------------- |
| **Room State Management** | Bot keeps track of metadata relating to rooms it's in. | N/A |
| **Private Commands** | Manage all bot functionality from a private room | Room State Management |
### Room State Management
Room state management involves the dice bot keeping track of what rooms it is in and what users are in them. This feature is 100% invisible to the end user, but is a necessary prerequisite for managing the dicebot in a direct message.
* One-time sync of the dicebot's current rooms into the database (sort of a migration, but technically not?)
* When a user joins or leaves a room, add/remove them to/from a users list for the room.
* Probably useful to maintain a two-way relation: room -> list of users, user -> list of rooms.
This feature will be further expanded as necessary.
Database implementation:
* New keyspace: `rooms`.
* `rooms|by_user|<username>` = `list of user's rooms`.
* `rooms|list` = `list of dicebot's rooms`.
### Private Commands
Allow the user to manage the dicebot in a direct message. The user should be able to tell the bot which room to manage, and any commands executed in the direct message would be applied to the given room (until the user switches to another room). Only certain commands would be allowed in the direct message, namely anything involved with creating or modifying data (variables, etc).
This will require some internal changes:
* Dicebot must now be aware of what room a user is managing in a direct message. This may be the first introduction of a proper state struct for users in the database. Possibly new keyspace `state`, with just a key name of username.
## Intermediate
Things that are easier to implement, but not yet scheduled.
| Feature | Description | Depends on |
| --------------- | --------------- | --------------- |
| **Resource Counting** | Creation of counters that can go up and down. System agnostic. | N/A |
| **CofD Game Management** | Management of slightly complex CofD things like health. | N/A |
## Future
Things in the far future that require a lot of groundwork or other features to be finished first.
| Feature | Description | Depends on |
| --------------- | --------------- | --------------- |
| **Character Sheet Integration** | Integrate with an external online character sheet service. | Existence of said service, many dice bot features. |