Table of contents
[Show/Hide]Commands
CAMPAIGN_REGISTER
GM sends an email to the system asking for a new adventure be created
start@...
- Campaign name
- Language (EN/ES/etc)
PLAYER_REGISTER
The GM registers the players and welcome message
register@...
- Email address
- Character name
PLAYER_AGREES
The players join the game by agreeing with the server policies and the adventure starts
register@...
BLOCK
An email address wishes to never be contacted by the server
unsubscribe@...
abuse@...
DEFINE
The GM defines NPCs
define@...
- The NPC name
- The NPC email
- (Optional) attached resources related to the NPC (character sheet / photo)
COMMUNICATE
The players send emails to the GM and other characters
Character.Name@...
gm@...
- Implicit
REPLY
The GM assembles the replies and sends them back
- IDs of source messages contained in this reply
- Note: Semi-implicit (in regular 1-on-1 messages it is clear, when multiple PCs are in the conversation requires more work)
REQUEST_ROLL
The GM might ask the players to roll dice
- The player
- The roll
ROLL
The players roll dice and the server keeps track of result of the roll
- Implicit
UPDATE
The GM might update the character page
update@...
- The resource ID (or the player in the case of a character sheet)
CONSULT
The players might consult their character page or any other information
consult@...
- Returns all the info to the player, their character sheet, their game time and location
END_PLAYER
The GM or the player itself indicates a player is no longer playing
endplayer@...
leave@...
- Player email
END_CAMPAIGN
The GM determines the game has finished and all the emails are shared among the players
endcampaign@...
end@...
HELP
Returns a help message
help@...
ayuda@...
UPLOAD
Uploading files
upload@...
- The file (attached)
- Returns: File URL
might not be necessary as the GM can just make an email with the links
SHARE
The GM shares files with the players
- The resource ID
might not be necessary as the GM can just make an email with the links
LIST
List all the resources (files) in the server
- Returns URLs with the resources (files)
Classes
- Campaign
- Character
- Human (Human is Player or GM)
- Message
- Note (Message relates to Note)
- Link
- File (for attachments)
- DiceRoll
- MessageID -> MailDir Key
later:
- Player (Player controls Character)
- GM (GM controls Character)
- Fragment (Message has Fragment)
- State (Campaign has State)
Flow
- full log queue + messageid
- gm/player router (no? error log)
- send email to GM
- db upload, off-line queue
Subsystems
Dice Subsystem
The dice rolling is a separate django app. It contains the following classes:
- Roll
- Time
- Campaign
- Human
- Description (3D6 + 5)
- Text
- Characteristic (future)
- Hash
- RollOutcome
- Roll
- Outcome text
- Outcome value (future)
- is successful (future)
The rolls are transformed into dice/roll/ URLS which redirect to the
Development
South
PYTHONPATH=$PWD python webapp/manage.py schemamigration webapp.dice --initial PYTHONPATH=$PWD python webapp/manage.py schemamigration webapp.dice --auto PYTHONPATH=$PWD python webapp/manage.py migrate webapp.dice
TODO
- inter-character emails
Deployment
/usr/sbin/exim_tidydb -t 1m /var/spool/exim4 wait-remote_smtp