-
Notifications
You must be signed in to change notification settings - Fork 4
/
todo.txt
145 lines (122 loc) · 5.46 KB
/
todo.txt
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
133
134
135
136
137
138
139
140
141
142
143
144
145
- HTML file is not rebuilt if dependency file is missing
- mention GitHub URL as the most up-to-date one; update hccnet.nl
- -Wpedantic should be -pedantic
- get rid of C++ comments (//)
- test.sh chmod?
- real-time: separate chapter?
- ch20: make isHolding static; it's used in ch20 in turn.c and damage.c, but they are similar; move to misc.c
- hmm, misc.c is already 98 lines
- turn.c includes damage.h; put the common code in damage.c!
+ a chapter about multiplayer
- actorHere is not aware of duplicates yet; maybe let noun.c accept null tag? Or a special tag "person" or "character" or "anyone"?
- ch22: tab does not overwrite/erase characters like space does
- ch19: noun.c is 109 lines
- ch17: do a serious performance test!
- ch10 already mentions ch17 to cover performance
- and mention loops --> getDistance --> overthere loop
- noun.c getPossession: getting/asking from actor or from dead object
- move.c reachableObject: eliminate 'default:'
- ch08: besides n/e/s/w, also up/down, nw, ne, sw, se
- ch15: look <any object in possession>, in dark, gives too much visible detail
- ch17: more about gcov
- ch17: improve test coverage (testscript.txt)
- include makefile; see also ch17 test automation
- ch17: expect is a good alternative
- Q+A in stackoverflow: http://www.linuxquestions.org/questions/programming-9/running-gcov-when-executable-has-command-line-input-options-866269/
- ch13/14: too much repetition of explanation about order of patterns?
- ch14+15 multi-noun; see below (originally move.txt) for ideas
go/look A - any A visible to player
open/close A - any A visible to player
light A - any A visible to player
get A - any A visible to player
get A from B - A must be in B
ask A - (special) any A visible to (or in?) actorHere
ask A from B - (special) any A visible to (or in?) B
drop A - A must be in player
put A in B - A must be in player
give A - A must be in player
give A to B - A must be in player
- order of objects
- ch15: "light lamp"
- ch15: attribute 'light'?
- ch15: you see no south
- ch15: also an example of a light switch
- object.awk: default for tags should be "\" \""
- ch3: use pointers instead of i, and introduce noun.c already
- ch4: calculate endOfObjs
- command 'ask': make a separate function isNiceActor
- ch8: also up, down, north-east...
- ch9: compass directions in the generated map
new chapter 14: multiple arguments
because there is more to it than just the parser:
- order of patterns
- breadth-first distance handling
- difficult semantics; how to respond to "put key in door"?
ch14: you can ask silver from guard when you are in the cave;
you can get gold from box when you are in the field
ch14: 2-param get/put have same impl as ask/give; must refine
change argument for introducing 2-param commands: put gold in box
sort object.txt
copyright/copyleft
ch15: listObjectsAtLocation: make visible light exit in dark location
ch15: cannot see cave exit; can "go <location>" between dark locations
ch15: "turn on lamp" works, "turn lamp on" does not
more chapters:
12. Open and close
- uitleg rugzak, en andere objecten die meeliften met objecten (coin + eagle)
13. A different parser
- case-insensitive, multiple spaces ("silver coin", ch8)
- something about distUnknownObject (see ch7)
- new struct: object, tag, distance, isDuplicate, passage?
- yacc!
14. light+dark
- a typical feature for games that involve dungeon exploration (Adventure/Zork)
- an attribute 'light' that is set in 2 objects: field + torch
- can only 'look' if there is any lit object with distance < distOverthere
- same for other commands (go, get) - maybe increase distance of objects?
- distanceTo: swap 3rd and 4th test, and put 'light' check in between
(checking whether obj->location is lit, or contains a lit object)
- commands 'light' and 'dim' (?); only work on torch --> swapLocation like ch12
- the lamp gets exhausted; this is a sense of 'time'!
15. Savegame
http://en.wikipedia.org/wiki/Saved_game
- save the whole objs (+ any other state vars)
- optimization: only save what is subject to change (location, health)
- note that location has been used for the state of doors and light too
- skip pointers, for safety!
- add a checksum to prevent manipulation
- or use checkpointing software like CryoPID
http://en.wikipedia.org/wiki/Application_checkpointing
- alternative: save log instead of state
- or use a test automation tool
16. Abbreviations (n,e,s,w,u,d,inv; x/exam???)
17. Conversations
- http://www.scribd.com/doc/17682546/Dynamic-Conversation-Engine-Concept
18. How simple it is to add commands (push/pull, move x to y) - refer to ch5
- also: combat!
- maybe rather focus on combat in ch18, plus discuss 'time' (turn-based vs real-time)
- discuss random (like dice in RPG); explain problem with log (ch16); solve by logging seed
19. Performance, space (refer to/from ch6)
20. Database (sqlite)
- replace function pointers (ch11) by enums; have object.awk generate a switch
21. Speech
22. Javascript
wanneer objDup? parser?
More docu
- http://www.bbc.co.uk/dna/h2g2/A20600641
---------------------------------------------------------
field
"You are in an open field"
"What a pleasant place to be, with a cool breeze and birds chirping."
"You see "
silver
"a silver coin"
"The silver coin looks nice and shiny."
"It has "
silver_eagle
"an eagle on the obverse"
"The eagle stands proud with spread wings."
silver_wings
"There is nothing special about them."
Look around: 1st time short + long + contents, 2nd time short description
Look field: long + contents