File: TODO

package info (click to toggle)
bzflag 2.0.2.20050318
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 20,464 kB
  • ctags: 24,134
  • sloc: cpp: 110,038; ansic: 9,514; sh: 4,105; makefile: 1,922; perl: 280; python: 221; xml: 180; objc: 178; php: 143
file content (318 lines) | stat: -rw-r--r-- 12,584 bytes parent folder | download
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
to do list for BZFlag
---------------------

THESE SHOULD HAPPEN BEFORE THE NEXT RELEASE:

* command line options that have -set <name> <value> equivalents should be
  reviewed and possibly eliminated

THESE ARE LOWER PRIORITY

* Send world weapon 'tilt' info over the wire for saving maps

* look closely at how local and global logins / groups interact:
  - add option for non-public servers to use global logins? (match servers)
  - add option for public-servers to not use global logins?
    (if no passdb, then they only use global logins ie: no /register)

* bzfs should error out if no users or groups have SPAWN

* bzbb login names are used for global authentication. If the user changes
  bzbb login names (which is possible), this can cause problems Another user
  can take up the old name and get that user's permissions. Internal bzbb IDs
  are unique, though, maybe somehow move to those. This would fix some issues
  and create others. All the implications are not quite clear yet. Best
  practice at the moment: Don't change your bzbb login name.

* fix the misalignment between the selected server and the one that
  is joined when the Server List Cache is enabled.

* Teach Roger not to drive into deadly physics drivers.

* need to verify that the anti permissions (e.g. antiban) really do
  prevent the action properly (e.g. you cannot get banned if you have
  antiban -- even from master ban list).

* integrate motd.php into mysql on db

* add language translations for the new flags

* fix the corners and edges on the tabbed panels (corner pixels are
  missing)

* configure should test and enable the fudged acosf atanf asinf

* 1/2 the board split diagonally does not draw the ground for TimRiker
  Debian unstable powerpc with a Radeon 9200. a driver bug

* should only send out and print those objects which are required by
  the map. This could be implemented by added a referenced() member
  function to each type that would be be called during
  ObstacleMgr::makeWorld()  (including materials, physics drivers,
  texture matrices, transforms, and dynamic colors).

* grouping for links (with  relative and absolute names)
  grouping for weapons and entry zones (with transforms)
  grouping for physics drivers (with transforms and copying)
  grouping for texture matrices, dynamic color, xforms, and materials
    (mostly for keeping a clean namespace)

* if libcurl is going to be the path forward:
  * convert to multi from simple
  * use curl_multi_fdset so it's non-blocking
  * implement list server access in curl
  until these are done, TimRiker recommends disabling curl
  on all public builds.

* sdl build does not set the application icon .. kinda important for
  the folks with icons

* improve the mesh collision code (edging)

* incorporate the player's handicap value into the check calculations.

* incorporate physic drivers into the check calculations.

* kill as many "externs" in .cxx files as possible. evil and wrong.

* the players have spoken, and hold-the-flag is wanted

* Iterative octree cell shot collision detection

* instead of kicking laggy players, they should be made observers
  unless there are no observer slots left (then kick).

* ban both the player's name in addition to their IP case insensitively.
  (at least on a poll ban) (might not be relevant with central login)

* keep track of the last messages sent by a player in the last N
  seconds and auto-silence them if they spam any specific message
  within that time frame.

* need to test for AR so that SGI build uses -o instead of cru

* extend player name cycling (like on /kick and /ban) to /poll kick and
  /poll ban

* reject ADDs on list server where players > maxplayers ditto for each team.
  probably want to verify this data in the callback.

* /identify reply should list groups you are in, perhaps global identify too

* Fix the Windows version of bzadmin so that EOF quits the program, like
  the UNIX version (see checkCommand() in StdBothUI.cxx).

* provide the ability to publish a single server to multiple list servers.
  (i.e. multiple -publiclist options)  this is useful for a variety of
  reasons, including testing out a new user-reg'd, karmafied list server,
  without needing to run multiple servers.

* when game is over, autoboot everyone after some time, so server cannot be
  blocked forever by one player just sitting there.

* make tank scene node not use a list per size mode, just use the scale matrix.
  (the disadvange is the speed hits from GL_NORMALIZE or GL_RESCALE)

* server should track last reported player and shot positions (done?)

* Improve server picked spawn locations
  - server needs to track more game state to do this well.
    - shots
    - perform dead reckoning

* remove UDP client setting. code should figure that out now.

* add other db server features
  - see http://bzflag.org/wiki/DbServers
  - karma see http://bzflag.org/wiki/KarmaSystem

* rewrite mac os x display/window code to support app switching,
  resolution mode changes, screen captures, etc.

* make it so keys can be bound to multiple actions, and provide a way
  to do global scoping on key actions

* StateDatabase should probably have min max values for eval values

* split -public <desc> into -public, -description <desc>, and -email <contact>

* require an email contact name for public servers. Perhaps
  unpublished by default. Perhaps a central username, probably without password

* support gameinfo requests as one time udp packets and include all the
  same information that the central list server tracks.  We should allow server
  info, player and score lists over udp from any udp address, not just a
  "connected" player.

* Make bcast traffic and serverlist traffic less blocking. (ie: same select() call)

* listen all the time on udp for bcast game info replies when in Find Servers

* would be nice if LocalPlayer<->Robots wouldn't relayPackets
  (MsgPlayerUpdate) through server. bzflag should be able to act
  as a relay for a local player and the server should know to
  only send one MsgUpdate to the master, who will relay to the
  connected players/bots. This will allow multiple players
  behind one slow net connection to play multiple players
  behind another slow connection. (for example) ie: -relay

* bzflag -relay should attempt to listen and reply on udp, resending server
  info for which ever server it is connected to.  Descriptions should begin
  with "relay:" in this case. -solo <n> should enable this behavior.

* BZDB:
  - rework the BZDB->eval() caching to support expression dependencies - if
    a variable changes, all the expressions that use that variable should be
    updated as well, or at the least, flush the entire cache when a callback
    happens; maybe collapse GlobalDBItem and the extra caching into the same
    class, so all would be auto-cached

  - some bzdb values are stored elsewhere and written to bzdb only on exit.
    these should be stored in bzdb for the entire time; also why are some
    variabels startign with _, while others are not? The distinction between
    the different types of variables stored in BZDB is not quite clear

* make the vertical rico solution more elegant - get rid of
  BoxBuilding::getNormal and fix existing code to do z -
  getNormalRect & the like.

* Create a new MsgThrottle message sent from client to server
  to inform server to throttle MsgPlayerUpdates from other clients
  to X. X is set in bzflag.bzc. Server uses PlayerInfo.lastState to
  batch send PlayerUpdates after throttle time has passed.
  Clients timestamp updates themselves, to catch out of order
  packets, but server restamps timestamps to get consistent
  times for all messages.

* Lag information should be appended to MsgPlayerUpdate packet
  by server, and use half in dead reckoning calculations

* remove all DNS lookups from client when contacting a server IP
  supplied from the list server

* add http proxy support in client for contacting list server. Should follow
  the environment variable http_proxy where a sample might be
  http_proxy=http://user:password@proxy.example.com:8080/

* add http connect proxy support in client and bzadmin for talking tcp to game
  servers.  This would use "HTTP CONNECT" like https clients to get to the tcp
  port on a game server. Note that performance will suck and udp will not be
  available.

* add caching to bzdb for integer/float values, so they don't
  have to be atoi()'ed or eval()'ed all the time. isTrue would
  also be a good one to cache

* document headers with JavaDoc-style comments (for doxygen)

* update doc/guide/NetworkProtocol.xml all descriptors to new format

* bzadmin should build without GL headers installed fails with:
  ../../include/bzfgl.h:35: GL/gl.h: No such file or directory

* build a prototype(4) for bsd, solaris

* fix up irix idb

* encapsulate stuff requiring platform #ifdef's:
   networking API into libNet.a.
   fork/exec (used in menus.cxx) into libPlatform.a
   file system stuff (dir delimiter, etc.)
   user name stuff

* clean up libraries that could be reused by other games

* move robots to separate binaries and allow either the
   client or server to exec them. Have a server option
   to keep n players in the game which auto spawns/kills
   enough bots to do it. Get rid of bot player type
   completely. bots should get all message types.

* smarter robots

* Use TextureMatrix to generate UVs for objects at scale, move all objects into lists, and
  sent to GL card ( perhaps just for "super high" quality ).

* think about combining the texture/quality options to just minimum, low, normal, and high.

* replace stipple shadows with blend shadows. See if there is any reason to keep stipple.

* add type of shot (normal, gm, sw, etc) to killed message

* radio chat:
   allow players to communicate via low-quality audio.
   already some support built into the server for this.

* consider integrating with a real full-fledged sky model like stellarium for
  more realistic skies: http://sourceforge.net/projects/stellarium/
  very cool, but very low priority.

* consider allowing maps to specify image based skyboxes.



THESE NEED TO WAIT FOR THE NEXT PROTOCOL BREAKAGE

* flags should all be nullflags from client view until
  a) you pick one up
  b) you get the identify flag (send updates for all flags?)
  If player drops a flag and it stays, players have it's real ID.

* shorten laser to like 1.25 normal shot
  This is needed for larger maps so we can send sparse player updates.

* server should send less frequent updates for "distant" players

* remove flipz from pyr net code and replace with neg height.

* ipv6 support

* consider using ENet http://enet.cubik.org/ for
   the network protocol

* make the texture manager give out IDs ( wrapered or raw ),
  and have everyone use the ID, not the image pointer, as it can change.

* allow user specified textures for tanks on a per tank basis.

* allow user specified meshes for tank models( this has LOTS of issues )
  on a per tank basis.
   figure out what to do with the shadows.
   figure out what to do with the IDL.
   figure out what to about LOD.
   figure out where to attach the flag.
   figure out how to do the 3 lights on top.
   figure out how to do team colors if a team skin is not provided.

* supply tank/map meshes and textures from the server if client does not have.
   implement resouce cache on client and have server offer
   new resources as needed. (md5 resouces to ensure they are the same??)

* allow client to only choose meshs from the server list

* find some way to limit tank skins to team colors.

* implement one way cross server teleporters

* implement a visual "server list" game server

* pre-game waiting room:
   provide a means for players to gather before and after
   a game.  basic text chat facilities.  allows players
   to wait for enough players for a game and to discuss
   strategy, etc.  could build this into bzfs easily.

* look into doing projected textures for light glows, this would
  get rid of the 8 light limit.

* look into burning global lighting into world, perhaps with lightmaps. Allow map lights.

* look into useing projected textures or some other shadow method that allows for better shadows.

* see if 3dfx/other old hardware limits are still practical.

* break rendering system into separate lib and allow different renderers that are targeted
  to hardware or software..

See the Task Tracker on Sourceforge (http://sourceforge.net/pm/?group_id=3248)
for more todo items and future planning endeavors.