-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO.txt
383 lines (260 loc) · 13 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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
* make a video talkthrough of the features
* tweet for new level - ant c
* more colours - at least grey shades - ant c
* make floodfill less expensive
http://www.koders.com/python/fid9CF1238AB348F93F43A98579F7217A642CC0591A.aspx?s=gtk
http://archives.seul.org/pygame/users/Nov-2005/msg00179.html
http://lodev.org/cgtutor/floodfill.html
* make a 'palette' of nice platforms to start with
* first time running offer to go to help and tell them about /help
* tell the player the controls on the help page
* getting started on help page (basic concepts, how to move, how to create a new level and teleport to some good places)
* automatically reverse-link a portal if it does not yet have a portal destination
* add key variables to exception sent - (e.g. level name, character pos, number of other players)
* message/sign object which displays text to the user (JOHN RATKE HAS DONE, MERGE)
* BUG: server bug - connection timed out should be caught and user deleted
*** Reproduce it by backgrounding the game when connected
Traceback (most recent call last):
File "/usr/lib/python2.6/asynchat.py", line 110, in handle_read
data = self.recv (self.ac_in_buffer_size)
File "/usr/lib/python2.6/asyncore.py", line 387, in recv
raise
File "/usr/lib/python2.6/asyncore.py", line 373, in recv
data = self.socket.recv(buffer_size)
error: [Errno 110] Connection timed out
* BUG: connecting to a level with a huge history leaves the screen in a weird state for a bit (until the update starts) - turn off the edit button or show a message or something
--- RELEASE ---
* ability to pan view in edit mode (middle mouse?)
* basic avatar colouring
* avatar colouring next to chat lines
* the player's last level and position should be remembered between sessions and taken back there when they start up
* chatbox mouseover - see last 5 chat lines
--- RELEASE ---
* check out restricted python for in-game scripting
* ant carriero ideas
* pets!
* 8-Bit sound
* animated images
* ability to upload images directly into the game?
* BUG: server bug:
2011-05-25 01:54:25 [1306288465.22] VERSION: Player 53 has ID eaf108e6-8671-11e0-89f1-aa000031490f
Traceback (most recent call last):
File "/usr/lib/python2.6/asyncore.py", line 78, in read
obj.handle_read_event()
File "/usr/lib/python2.6/asyncore.py", line 428, in handle_read_event
self.handle_read()
File "/usr/lib/python2.6/asynchat.py", line 158, in handle_read
self.found_terminator()
File "/home/infinite/Infinite8BitPlatformer/PodSixNet/Channel.py", line 24, in found_terminator
[getattr(self, n)(data) for n in ('Network', 'Network_' + data['action']) if hasattr(self, n)]
File "/home/infinite/Infinite8BitPlatformer/server/I8BPServer.py", line 26, in RequireIDFn
fn(self, data)
File "/home/infinite/Infinite8BitPlatformer/server/I8BPServer.py", line 157, in Network_item
self.SendToNeighbours(self.Level().Collect(data))
File "/home/infinite/Infinite8BitPlatformer/server/I8BPServer.py", line 95, in Level
return self._server.Level(self.level)
File "/home/infinite/Infinite8BitPlatformer/server/I8BPServer.py", line 438, in Level
return self.levels[name]
KeyError: None
2011-05-25 01:54:25 [1306288465.86] EMAIL: server exception sender launched to email 'chrism@infinit
eplatformer.com'
* BUG: (joe) EditLayer.py 515 -> Layer.py 29 -> AttributeError: 'NoneType' object has no attribute 'type'
* BUG: (joe) EditLayer.py 536 -> KeyError: 13
* BUG: teleport to level 'bob' - Tools.py 125 -> Paintable.py 34 -> PodSix/ImagePygame.py 101 -> ImagePygame.py 62 -> IndexError: pixel index out of range
* BUG: ImagePygame.py 61 - pixel index out of range
* BUG: Level unloquer
* BUG: shanon - cannot delete graffiti / spray-over of objects (see email with images)
* BUG: shanon FromScreenCoordinates bug EditLayer.py 23
* BUG: Core.py 110 AttributeError: 'bool' object has no attribute 'id'
* BUG: drawing lines at the same time makes them go all funny (bad redraw)
* BUG: make all line tools hide themselves before any line tool applies itself - store order of application
* BUG: player dying bug is still happening when you join a level and the other player is updating
* BUG: Shannon's USB/bluetooth bug (manifests as gamepad/joystick bug)
* BUG: lockup/memory exhaustion when fill-painting again!
* BUG: level must be named before you can set it as a teleport dest (stored as ints server side)
* add inventory
* don't pick up things unless you are player or the pickup comes from the network
* some way to find other players (arrows pointing to them?)
* display some kind of indicator when someone is typing a message
* play a sound effect for chat
* show progress indicator on background paint
* menu with credits and website link
* do not play the teleport noise if a portal leads nowhere, and post a message
* custom avatar colour?
* implement server-unique player names (the following are john's ideas)
* /find PlayerName - This would tell what level that player is on.
* /join or /meet PlayerName - jump to the same level and platform the other player is on
* mouse over player lets you edit your name or shows other player's name
* a way to move the camera without moving the player around
* unknown command message for slash commands that we do not know
* new clients should appear on a random level with high popularity and not too many users already
* 'like' button lets you like a particular place on a particular level
* 'share' button lets you share a particular location on social media
* pixel collisions after bounding box collisions
* fix collision detection to take into account velocity of players as well as position
* Check out Julian's changes to game over animation
* make chat boxes/speech bubbles avoid eachother
* store items collected server side
* make clients accept the i8bp://levelname/portal and i8bp://levelname/x/y format to launch the game and teleport
* make background fill happen incrementally across frames
* OR: use spinner?
* OR: both?
* network server
* check for data corruption in saved files - e.g. if a PenDown has no matching PenUp yet (someone was mid-draw when the level saved)
* hold a lockfile when writing levels to disk
* special server connection allows full admin access
* WNF: keep a copy of the level server side and make local modifications to it
* WNF: make level downloading work (md5sum, latest edit)
* proper disconnect when finished command (accounts for channel buffer)
+ make settings configurable
* customiseable level sizes
* network client
* make PenMove message be self sufficient (includes start of line too)
* use message 'when' timestamp to not show old messages
* try to auto-reconnect if not connected, every 10 seconds
* WNF: send level md5 and edit info to server and download differing levels
* chat box functionality
* /new command (does the same as new button)
* /quit command
* /back command
* TextInput class (PodSix)
* key repeat
* copy/paste
* up and down arrow should scroll through chat history
+ fix arrow keys to move around in edit box (done - thanks julian!)
* improve dying - fade then zap to last platform
* if there is no last platform, pick one from the level
* if the level has no platforms, create one in the center of the level
* Make player not be white-on-white on light levels
* make notifications 'slots' based instead of counter based
* rollovers for edit buttons
* new prop type that you don't hit for 'foreground' stuff
* edit mode menu
* new things
+ platform
+ portal
+ item
* edit things
+ delete
+ move
+ clone
* graphics things
+ draw
+ fill
+ line
> rectangle
* palette button
* choose color
* select palette
> other
> undo
> zooming
* palettes and palette mapping code
<http://en.wikipedia.org/wiki/8-bit_color>
<http://en.wikipedia.org/wiki/List_of_8-bit_computer_hardware_palettes>
> Apple II
> C-64
> ZX Spectrum
> MSX
> CGA
<http://en.wikipedia.org/wiki/List_of_videogame_consoles_palettes>
* Atari 2600
* NES
> Sega Master System
* splash screen
* animation editor
* character animations
* animated objects
* multiple bounding boxes per frame
* parallax backgrounds
* ability to crouch
Done
----
+ BUG: john - created a portal on that bob level and then shortly after tried to delete it - crash (delete crash, fixed?)
+ ability to teleport to levels that are still just called a number
+ write server launch script (custom named python for ps display)
+ CNR - BUG: drawing an item inside an item and then deleting it crashes (delete crash, fixed?)
+ server console
+ make tooltips appear in the same place every time immediately (top center)
+ server exception emails was not sending
+ EditLayer.py 510 AttributeError: 'NoneType' object has no attribute 'lastplatform'
+ make sure the windows build runs without crashing
+ loading big levels is too slow
+ don't load all levels on startup - load them on demand
+ show how many other players are on the current level
+ BUG: on locked levels do not allow level name change
+ BUG: simultaneous line drawing crash (are things being lost? check protocol)
+ fix join level LastEdit value (use last applied remote, or 0)
+ BUG: editing at the same time is fubar (conflicting edit numbers)
+ catch all server exceptions and email them to admin
+ enable psyco in server
+ set up live server online
+ Put revision number in the crashdump report (create build.json file in build script?)
+ BUG: if level takes a long time for client to build/refresh then the other clients will see them die a million times.
+ BUG: if first action is line draw + drag something funky is going on (crash)
+ BUG: make a new level, do some edits (e.g. lines), go back, teleport to level - edits are doubled up
+ BUG: fill tool (probably others too) pass through back button
+ BUG: receiving one update every single time, say what?
+ BUG: create new level, teleport to the teleporter, one million messages sent to server
+ BUG: are they being sent updates for all levels for some reason?
+ BUG: levels should have transparent backgrounds
+ BUG: permissions error message is wrapped all wrong
+ BUG: clicking lock button without permissions should not cause a permissions error (send nothing)
+ BUG: julian's level crash
+ BUG: whatever tool you have selected when you click on the portal icon, it goes through (set trigger flag?)
+ BUG: cursor position isn't correct on different sized texts e.g. level name change different lengths
+ BUG: in collecting items - network sends collected message of 30 seconds no matter how old
+ automatic crashdump reporting - catch all errors and throw a message screen
+ fix ladder climbing keys - possible to just use up key for climb + jump?
+ fix speech bubble/chat
+ word wrap
+ BUG: on initial connect, send valid current player move (so new connected player isn't invisible)
+ stack chat boxes vertically above players
+ network server
+ keep track of all known player IDs and periodically save them out to disk
+ lock down permissions - only creator can edit own level if locked
+ item collects should be tied to levels
+ disconnect clients who have the wrong version number
+ periodically write level changes list to disk
+ mirror commands to all users on the same level
+ chat events
+ move events
+ level editing events
+ level store
+ accept 'new level' message - generate new level ID
+ network callback to check a level name is not taken
+ network client
+ 'loading' spinner when updating a level
+ save and load unique client ID into local config file
+ send version number to server when connecting (throw special error to message screen if disconnected)
+ throw special message screen if disconnected/unable to connect to the server
+ check whether level name exists already before changing it
+ fix /teleport for levels we do not have
+ fix logic when switching levels if the destination level is completely unknown to us (no portals etc.)
+ check whether new level name is unique over network
+ send 'new level' message to the server - wait for ID
+ send 'collected item' message over the network
+ send 'landed on platform' event over the network
+ send name/object changes over the network
+ item description
+ level name
+ portal destination
+ make server side level modification work
+ send color information over the network
+ make tools work on level background
+ send chat events to the server
+ make the clone tool work over the network
+ don't allow LevelManager commands if not connected
+ send movements to the client
+ make the drag tool work
+ send level editing events to the server
+ make all LevelManager commands be proxied to the server
+ don't allow LevelManager commands if not connected
+ icon shows if a connection is made
+ send movements to the client
+ when a collected item disappears, make the edit layer take it incase the taker has left already
+ add a history to the editing of a level
+ make tooltips appear after a second, not instantly
+ not all local edits should be network re-applied (e.g. create new platform, delete platform)
+ splash screen
+ write *beta* on the splash screen