-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTODO
132 lines (126 loc) · 5.18 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
1.0 blockers: engine
- remove the last vestiges of global state (are there any?)
- remove reference cycles where possible
- entity lifecycle hooks (?)
- I have a reference to this entity, but it was destroyed
- cannot be prevented, but can be reacted to
- Referenced component? alternative to lifecycle hooks?
- when component wants to reference entity, attach Referenced to it?
- on detach, call other components' funcs with arbitrary args?
- fix things that are clunky
- managing __init__.py / magical component registration
- manually register components with the zone on startup
- does this mean the end of `figment run`?
- DisambiguationMode and unique_selection
- Should DisambiguationMode be named ChoiceMode?
- tick needs a dt argument
- figment run needs a -d flag (run as daemon)
- Check out python-daemon on pypi
1.0 blockers: examples
- Continue dogfooding to find parts of API that suck
- current usage of entity.perform assumes the entity is in ActionMode
- engine: need an API for checking the mode of entities
- drop_from?
- put_from_in??
- Weapons and equipment (wield / wear)
- Conversations
- Combat
- Quests
- Simple in-game editing tools
1.0 blockers: docs
- Use Sphinx, autodoc, possibly napoleon
- Simple theme and logo :)
- Sunshiney font is nice (lowercase f)
- Walk through building a simple world (TDD?)
- Writing tests for your world
- How to scale Figment
- Running a frontend (registration, etc.)
- Advanced topics
- Rich message data
- Multiple zones
Crazy ideas for later versions
- Entity 'porting (importing, transporting, teleporting)
- copying a set of entities from one zone to another
- any referenced entities must be contained in the set
- all references must be updated by asking the zone for new IDs
- really, this is the same thing as cloning an entity
- how do we know what data is an entity reference?
- Register/unregister components and modes at runtime
- Script components (Lua?)
- Graphical example
Example: The World Foundry
- Antechamber
- Newbie / private zone
- Created when you register
- Destroyed when you leave
- One-way exit to the foundry
- Some basic items to pick up, examine
- chaos key (to your apartment)
- loopback (use to return to the foundry)
- journal (you can write in it)
- misc junk, boxes, bags
- only opens up when you've picked up the important quest items
- The World Foundry
- A large institution devoted to the study of creating worlds
- Exhibits / classrooms / workshops
- The Inventorium
- Researches items / weapons / equipment
- Lots of little usable gadgets
- The Conversatory
- NPCs you can talk to
- Shopkeepers
- The Herald (an NPC who periodically cries out new topics of discussion)
- The Library
- Readable books / documentation
- Speaking out loud is forbidden (can only whisper to other people)
- The Sparring Grounds
- Train against inanimate objects, monsters, and other players
- Test weapons and spells
- Apeiron Apartments
- Create a personal pocket universe
- Worldbuilding commands are enabled for you within your space
Related projects
- Nice to have, but not blockers...
- Websocket server
- Visual zone editor
- Requires deep knowledge of world, but:
- Websocket client (interprets JSON messages)
- Registration and login server (creates player entities + attaches components)
Notes and ideas
- In Inform 7, there are a few built-in assertion verbs
- to be, to have, to carry, to wear, to contain, and to support
- consider including these in examples
- Combat
- Single letters
- Schedule actions for the next tick (?)
- Conversations
- Modal
- Mutes surroundings (?)
- Broadcasts when engaged / disengaged (?)
- Should be able to leave at any time, Skyrim-style
- Test items
- A key that opens a door
- A keycard bound to a particular owner
- A bomb that, when used, counts down to 0 and explodes, damaging nearby stuff
- Signs, books, walls you can write on/in
- Modes
- Action mode: arbitrary commands
- Disambiguation mode (?)
- Conversation mode: preset convo options
- Combat mode: scheduler based
- or, mostly turn based with 20 sec forfeit?
- Shop mode?
- Instances
- Copies of rooms, NPCs can be created for parties
- Misc concerns for example worlds
- The High Street
- names and capitalization
- chairs, beds, vehicles(?)
- equipment
- holding items
- inventory is a closed container
- held items go in an open container
- "a box, holding: ..."
- doors
- Continuous Coordinates example
- Non-MUD example (turn-based game?)