-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO.txt
171 lines (78 loc) · 3.72 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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# WIP (priority)
TODO: !!! frame rate independent !!!
TODO: rethink network architecture so server is authoritative and checks commands for sanity
-- for each command, think of all the ways it can be abused, and how to detect / prevent that.
TODO: Random spawn pos
TODO: reset keyboard / mouse state when page gets / loses focus
TODO: some players shoot bullets before bullets gone (overwrites bullets)
A 144Hz player had this, so it might have to do with that. Not sure.
TODO: mobile: virtual joystick
TODO: make world bigger
NEEDS: add camera
TODO: cache font (glyph widths)
TODO: volume too loud? mute button? :/
TODO: Modify Software Automatic Mouth to add a gain node.
https://github.com/discordier/sam/blob/master/dist/samjs.js#L69
TODO: Modify jsfxr to add a gain node
https://github.com/chr15m/jsfxr/blob/master/sfxr.js#L831
TODO: build.bat -> build (posix shell) -- ( you currently need Linux/WSL anyway )
TODO: replace swc with esbuild? (swc keeps randomly corrupting output)
edit: I'm an idiot, I had multiple swc watch instances running simultaneously
TODO: Feedback when hit other player (currently only when you are hit)
TODO: CHAT: move chat in-game (eliminate HTML elements)
DONE: CANVAS: auto-resize
DONE: CANVAS: scale in CSS?
DONE: make it so you can't go outside the screen
# META
How to update game while people are playing?
Game client should refresh when websocket disconnects.
Or rather... when websocket *reconnects*. (server back online)
Meanwhile display "loading new version..." message
# BUGS
TODO: respawn can fail if afk ? (need a better respawn system anyway)
TODO: bullets spawn distance is slightly off depending on shot angle
# HACKING
TODO: update bullet spawn command so it uses relative index not absolute (i.e. 0 .. BULLETS_PER_PLAYER-1)
- TODO: make it so bullet commands only accepted if they apply to the player they came from
TODO: detect, prevent and "discourage" hacking
TODO: filter out zalgo text (people spam it to lag the game)
# SERVER
TODO: Figure out what Drain means in uWebSockets ... seemed fairly important
MAYBE: add nginx, http/3 ? I wonder how much difference that makes
MAYBE: ? Add WebTransport ? I don't think Bun supports it yet and supporting both transport types in a single server might be tricky.
# MOBILE
Touch controls ? virtual joy
fix chat on mobile
# GAMEPLAY
Random spawn pos
despawn bullets that hit other players ? ( ideally move collision to server, but might take longer )
prevent player out of bouns
health bar, regen, healing?
DONE: Fix aiming precision
# FEATURES
right click shotgun?
# UX / UI
AUDIO: TOO LOUD: web audio: sounds get queued and play on first interaction
AUDIO: TOO LOUD: prevent "player joined" sound spam on load
TODO: CHAT: make chat scroll backwards
- obsoletes: TODO: autoscroll chat
CHAT: make chat appear over players
CHAT: limit chat buffer size
DONE: preventddefault arrowkeys
TODO: better to just remove scrollbar instead ?
TODO: preventdefault canvas click (but this breaks defocusing chat input...)
TODO: "I can't even tell what my player number is" (add a "YOU JOINED (Player 02)" ?)
# MISC
TODO: favicon
TODO: ghost players? (scrapers?)
TODO: make player stand out? white?
TODO: map, walls, line of sight
TODO: variety?
- TODO: ? weapon pickups ?
TODO: do not randomize other player color on respawn
TODO: better integrate chat into game ui
DONE: Make it so chat doesn't move player
MAYBE: a better protocol could greatly speed up loading
DONE: Run server on port 80 (see server index.ts for instructions)
DONE: Fix load times. (Try wasm-strip and wasm-opt, then gzip) // Note: WASM now unused
DONE: Set up a systemd service