forked from psilord/option-9
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
160 lines (127 loc) · 4.74 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
An incomplete, unsorted, and overly concise bag of stuff that describes
what is in option-9, and what I'd like to be there.
Plot
- This should stay small and ridiculous.
- "Supreme Commander Snarkill of the Snarlian Empire owes you
9 bucks and has refused to pay. The only response to this affront is
total annihilation of the Snarlian Empire. It commences immediately."
- The last scene in the game is an image of you standing over his bloodied
corpse with him holding 9 dollars in his rictus hand.
Levels [to be implemented]
- Line drawn, or stippled, to preserve the visual style.
- Going from entering an Empire's military borders to the Citadel itself.
- 9 levels with 9 bosses
- Straw man partitions of the levels...
- Level 1: Front Lines
- Level 2: Supply Lines
- Level 3: Asteroid Field
- Level 4: Main Encampment
- Level 5: Warp Gate
- Level 6: Snarlian Homeworld
- Level 7: Royal City
- Level 8: Elite Guard
- Level 9: Citadel
Each level is split into 4 sections:
Section 1 is 3 minutes long
Section 2 is 3 minutes long
Section 3 is 3 minutes long
Section 4 is the boss fight, which takes hoe long it takes.
Total game play, minimum: 81 minutes.
Sound [to be implemented]
- Music
- Effects
Shields
- Current shields
- Shot shield (protect only against shots hitting you)
- Ship shield (protect against shots and ships hitting you)
- To be implemented
- Reflect or bend shots away from ship.
- Multiplayer shield which is stronger the longer players stay together.
- Pick up shrapnel and use it as a physical shield rotating around player.
Weapons
- Shots (discrete objects flung from a muzzle)
- Current Shots
- Varieties
- Simple Shot (slow, low damage)
- Hard Shot (faster, kills bullets and keeps going, stopped by
ships)
- Super Shot (Fastest, kill bullets and other ships, keeps going)
- Can be charged OR rapid fire[tbi], but not at the same time.
- To be implemented
- Missles that can upgrade to target enemies.
- Mines
- Current Mines
- Proximity
- Field
- To be implemented
- Fence mine (need X layed mines that then connect to provide a fence)
- Passive
- Current Passive Weapons
- Tesla Gun
- To be implemented
- Slow time/movement/thinking/etc for other ships/etc in a radius.
- Beam Weapons (to be implemented)
Powerups & related
- A shot can be charged and charged faster
- Get more health
- Get any described weapon and/or increase current one's power.
- Get any described shield and/or increase current one's power.
UI
- Stack-like event handler [Mick]
- Quake-like console [Mick]
- Splash screen
- map controls to actions screen
- tutorial mode?
- demo mode?
- high score screen?
- load/save game at either level boundaries or checkpoints in levels.
- possible inventory screen: select stored powerups (analogous to potions?)
Rendering
- Fullscreen support
- Letterboxing and pillboxing to support multiple aspect ratios
- Postprocessing (FXAA? Retro coloring?)
Input
- Virtual keys/buttons [Mick]
- Logical inputs/events (i.e. Move Up, Move Down, Fire)
- Keybindings (virtual keys -> logical events)
- Rumble
Technical stuff
- Level layout & editing
- Collision detection with level elements
- Recast of matrix lib interface to be more conventional [in progress].
- Inspection of the powerup code and DSL to see if it can be made better.
- Clean up definitions of generic functions, so they are all initialized.
Save System
- Human-readable and editable
- Four slots
Wisdom
- Blender
- To make an object's center of mass the world: cursor to center, center
to mass, selection to cursor
Builds
- Linux and Windows
- Desura?
- SteamOS?
Stats
- What should we track for the player?
Localization
- Hot-swappable translations
- EFIGS font support
Hrm (High level musings)
- Removing Gimbal Lock
The transformation pipeline suffers from gimbal lock:
;; Rotate +90 around X
OPTION-9> (let ((r (mlar (mi) (pvec (/ pi 2d0) 0d0 0d0)))) (ma r (pvec 0d0 1d0 0d0)))
#<[0.0d0 6.123233995736766d-17 1.0d0]>
;; Now, see that an additional PI rotation around Y....
OPTION-9> (let ((r (mlar (mi) (pvec (/ pi 2d0) (* 1d0 pi) 0d0)))) (ma r (pvec 0d0 1d0 0d0)))
#<[0.0d0 6.123233995736766d-17 1.0d0]>
;; OR a PI rotation around Z...
OPTION-9> (let ((r (mlar (mi) (pvec (/ pi 2d0) 0d0 (* 1d0 pi))))) (ma r (pvec 0d0 1d0 0d0)))
#<[-7.498798913309288d-33 -6.123233995736766d-17 1.0d0]>
.. both produced the same point. Hence, gimbal lock.
So, I wonder if I should rip out matricies and do the
{Quaternion, Translation, Scale} rigid body discriptor for each frame
which prevents gimbal lock and also, since the matricies will be recreated
each frame, reduces numerical error in transforms since I'm wouldn't be doing
incremental rotations anymore.