############################################################################### ##### PALITO TO-DO LIST ############################################################################### ##### NEW CLIENT / SERVER MODEL: ############################################## basic: network fix: unit velocity on client doesn't drop to zero network fix: units are spawned on client with wrong angle (and aim?) server fix: units geting stuck, unable to receive orders client: stop drawing target of build orders after build has started client: when selecting build place, consider planning units (add planning units to unitArray?) client fix: start centered on YOUR OWN commander :) velocidade angular (melhor interpolacao) repair / guard features: better user input interface and visual feedback for order-redo (patrol) mode game flow: - game start/join control, win/loose - change game speed (+/-) / pause - client pre-game UI (player name/color, server, game parameters,) - server pauses when num_clientes_playing <= 1 (or num_players_playing?) varios tipos de mensagens do servidor (msg, reply, error, warning) visibility (and remove check for visibility on client radar) server: stdin input server: rcon, access control client (server too?): struct CVar { char name[]; char desc[]; // short description char help[]; // long (possibly multiline) help char value[]; char *(*getsetfunc)(char *varname, char *value); // value==NULL is get }; variables to control the level of debug messages intro (what to do with the unit codes? now we only read them when the game starts.. load when referenced?) server sends world/map.palito description to the client numerar pacotes udp pra detectar perda de pacote / mostrar no cliente check protocol version on conection handshake client.ini, server.ini (~/etc/palito:~/.palito:.) optimize: viewport to affect unit update priority per-client bandwidth control interpolate unit variables (visual->real) correctness: network: use only integers, with ntoh* and hton* fix: player_id vai estourar.. ##### BUGS: ################################################################### do flush_get_key_name() right flush:font.c: read width and height from font file (now it's hardcoded 3x3) flush: readline passes the ESC key.. how to differ from normal ESC? fix dashed lines ##### MISSING FEATURES: ####################################################### visual: pass more variables to flush code: $open, $acc_damage, $kills, $accuracy flush/readline: key auto-repeat game: metal mines / metal extractors game: solar power defined in map.palito (or world.palito?) game: spawning points (defined in map.palito) input: clear order on queue when clicking on the order target - identify target on mouseover win32/x11: flush_toggle_fullscreen() x11: loading/blit/scale of bitmaps (terrain display support) ##### FUTURE IMPROVEMENTS: #################################################### game: basic AI for units (automaticaly attack visible enemy, etc) game: splash damage (explosion) game: explosion of units game: copy the proper (vertical) aiming to lateral aiming game: weapon speed and range are reduntant, only one is needed the other should be calculated (spec range, calc speed?) game: real path finding game: visibility affected by the terrain visual: draw fog of war visual: show resource info for units (on mouseover) data: create some more units; tune the units parameters for a ballanced game data: create some free maps ##### LESS-IMPORTANT IMPROVEMENTS: ############################################ input: full keyboard control (VI-like key commands?) - make the game playable using only the keyboard - use the left hand of the alpha keyboard to give commands, right hand to point (like w/ the mouse) using the keypad. auto-switch between keyboard and mouse, each w/ it's own cursor style. - keyboard have preference when pointing? (eg, if mouse is on edge (possibly unwanted), tappind the keypad cancels the mouse panning) visual: use palete on heightfield display input: zoom centered on the cursor input: mouse-on-edge pan more sensitive: pan (very) slowly if cursor is close to the edge, faster if it's on the edge game: shot vs unit colision detection (now it's only shot vs terrain) game: more weapon types (laser, lightning, fire, bullet..) game: fix timing on resource management game: fix resource waste on building (?) game: more unit types (ships, subs, hovercraft, ...) game: try to aim above mountains and obstacles game: wind? (wind generators / affect physics / how to represent visually?) flush: fix y orientation (??) flush: semicircle in sdl and win32 game: use another bitmap for map features (terrain info) HSB: H=terrain type, S=intensity, B=? ex: blue is metal (H), more intense blue=more metal (S) yellow is sand, more yellow = harder to walk through the image is in HSB for better visualization at design-time, but can be converted at load-time to RGB for easier access to the data client: console: pause the game (if capable) and open the console 'fg' close the console and unpause the game 'bg' unpause the game interprets flush (.palito) client: window resizing client: music client/flush: text, bitmap, and flush code cache client: readline: - horizontal scroll (to edit long strings) - ctrl-delete, ctrl-backspace to delete words - auto-repeat (or better, read from X11/Win32) - clipboard - vi mode game: savegames client: animated screenshots (flash?) client: adjust level of detail on interface (console variable) win32: fix: flush_selectFrontBuffer(): o "taking screenshot" nao fica lah desenhado enquanto tah tirando screenshot ##### FAR FUTURE IMPROVEMENTS: ################################################ game: scripting for game events/define trigers/single player missions.. game: (user defineable) scripts for controling the units client: full 3D version (opengl) game: AI (computer-controlled players) game: in-game terrain/heightfield generator -> deformable terrain client: in-game data/unit/map editor game: single player campaign ##### IDEAS: ################################################################## bind pageup = $v_zoom * $v_zoom 1.1 end controle de fps: fazer codigo unico pra ser usado em todos os casos visual/input: - show keyboard functions tooltips (not popup tooltips, fixed) near the windows, and a global commands toolbar - move and scale elements (interactively?) - switch map <-> radar - when tracking selection, track the whole group, maybe even zooming to keep them on the screen game interface: groups (vs selections) hierarchy? [myke] eye candy: unit_draw(Unit *unit) { int age = world->clock - unit->birthtime; if(age < spawn_radar_anim_time) draw_spawn_radar_animation(unit, age/spawn_radar_anim_time); // similar to damage animation (glow green)? // also message_add("building complete"/"under attack"/...); ? } ###############################################################################