Difference between revisions of "Roadmap"
From SfzWiki
								
												
				 (→General)  | 
				 (→Central info server)  | 
				||
| Line 103: | Line 103: | ||
== Central info server ==  | == Central info server ==  | ||
| − | * http lib for lua  | + | * <strike>http lib for lua</strike>  | 
* get and display message of the day  | * get and display message of the day  | ||
| − | * option to announce game in internet when hosting  | + | * <strike>option to announce game in internet when hosting</strike>  | 
| − | * list announced games  | + | * <strike>list announced games</strike>  | 
* version check  | * version check  | ||
* usernames  | * usernames  | ||
| − | * lobby chat  | + | * <strike>lobby chat</strike>  | 
| − | * irc lib ? announce opened games in irc  | + | * <strike>irc lib ? announce opened games in irc</strike>  | 
* host game : max player limit  | * host game : max player limit  | ||
* host game : description text  | * host game : description text  | ||
Revision as of 01:55, 9 September 2007
see also the now obsolete OldRoadmap2006
see also Notes
Contents
Simple multiplayer
Target : just fly around together, blowing up asteroids and each other.
-  
load ships saved in editor as nodegroups -  
extend cRobRenderOp::ConvertToMesh in robrenderable.cpp to add submeshes to existing meshes -  
(load ships saved in editor as mesh) - (generate LOD meshes for ships)
 -  
remove inner faces of ships -  
server : open tcp listen socket (net_L.cpp : NetListen, PopAccepted) -  
client : open connection to server socket (net_L.cpp : NetConnect) -  
send simple tcp messages : e.g. chatline (main.lua:232:SendChat , net_L.cpp NetReadAndWrite) -  
server : send spawn-messages for stuff created after join to client -  
server : send spawn-messages for world on playerjoin -  
server : send-resync-stuff (prepared in in location_L.cpp : SendResyncs) -  
client : receive-resync-stuff (prepared in in resyncreceiver_L.cpp) -  
client : send mouse/rotation/turn quaternion to server (udp) -  
client : send key-changes to server (tcp, accelerate, fire weapon) -  
server : receive player turn and keys -  
server : send effects (laserbeam on weapon) to server -  
server : ray/sphere hit detection : laser destroys ship or asteroids -  
server : respawn killed clients when space key is pressed - server : detect and handle create-listener error
 - client : detect and handle connect error
 - server : detect and handle client-disconnect
 -  
select shiptype and reselect shiptype for respawn - enter name before join (?)
 -  
sounds effects - maybe http://jamendo.com background- and mainmenu-music
 -  
third person cam ingame - weapon icons with range and damage indicators, and recharge indicators
 - gui : target lists
 -  
gui : select targets with mouse click directly - tactical hud elements indicating weapon range
 - powerups/health packs in asteroids ?
 - design decision : newton physics or not ? not might be better for combat
 
Coop multiplayer
- (to be planned) defending a space station
 - (to be planned) enemies arriving in waves
 - (to be planned) buying/salvaging equipment and ships between waves
 
Spaceship interior
-  
draw inverted ship mesh as interior background -  
switch between inside and outside view -  
tile-based walking inside ship -  meshes and textures for indoor stuff
-  
couch - chair
 -  
cockpit seat -  
multi-part-engine -  
engine -  
grate -  
ladders - stairs
 -  
handrail -  
computer consoles -  
table -  
flowers -  
door -  
locker -  
soda machine -  
refrigerator - lamps (wall, ceiling, floor)
 - elevator (=door + moving platform)
 
 -  
 -  
menu for placing items inside ship - save items inside ship to file (ingame save and/or mapedit save)
 - shipeditor : toggle between inside/outside
 - interior : align cam to outside cam on switch
 
General
gui : nicer dialog frame (white text on black background, corners a bit round, buttons different from dialog frame)gui : nicer menu look- gui : generic list dialog (for cargo, shop, etc...)
 buy weapons and equipment- missions : delivery (special cargo, jettison fails mission (or not possible?), mission dialog)
 - namen vor dem login
 - savegames : collective property : everything in mothership, not individual players
 - transfer cargo from fighters to mothership on docking
 - collective money ? avoid if possible to avoid grinding, rather rewards for missions, like gather 100 iron to get weapon.
 - return-to/approach mothership button for fighter/space-suit
 - pickup jettison box
 - missions : navpoint displayed in hud
 - missions : objectives displayed in hud
 - pickup jettison box content
 - pirates : the whole group should counterattack if one of them is attacked (requires group system)
 - auto generate doxygen for sfz and lugre (cronjob or commit hook)
 - toaster name changes to floating ghost toaster if placed above a table
 
GUI widgets
- excel table (autosort on header click, updatable, cellrenderers, see java,gtk,cegui,qt,win32api, has scrollpane?)
 - treeview (hierachies : trade categories like vegastrike ?)
 - tabpane
 - scrollpane
 - scrollbar
 - cliprect of parent also affects childs
 - table layout html like, starts as hack with proper interface
 
Central info server
-  
http lib for lua - get and display message of the day
 -  
option to announce game in internet when hosting -  
list announced games - version check
 - usernames
 -  
lobby chat -  
irc lib ? announce opened games in irc - host game : max player limit
 - host game : description text
 
Interstellar travel (jump)
- load system from file
 - list of all systems
 - jump to other system
 - limit to adjacted systems
 - map displaying system positions graphically (debug:display coordinates under mouse)
 
Interplanetary travel (space-folding)
requires large scale systems, e.g. distances between planets in a somewhat realistic scale. this will require some form of space-folding-travel mode to remain playable, we'll keep that for later, other things are more important first.
- gui : hud : distance display, on mouse over : name, type
 - larger system, spec travel
 - 2d system layout (orbits, but not moving)
 - gui : system map (render to texture, mousepick, click selects planet, planet has stuff orbiting, hierarchial)
 
Tutorial/Story
maybe a small story as intro/tutorial to game :
- deliver something to a nearby station/planet (basic controls) (problem : 1 player ?)
 - targetting practice : shoot some debris/junk(Aquanox) /Astreroids/ old-junk-space-ship(EV)
 - destroy some drones that have run amok (hacker,FOF-malfunction,...)
 - bounty hunt : destroy some pirates , reward : jump-drive
 - sientist sensor tutorial : search for right materials, reward : construction plans (weapons, shields...)
 - asteroid mining tutorial
 - crafting tutorial
 - explore mission ? (nearby systems, some other sientist needs help, delivery..)
 - capture some animals on planet, planet personal weapons tutorial
 
Bugs
-  
you can zoom out with no limit, you can even see the skybox. - when you are in writing mode you cant zoom in/out only move the camera
 - you can shoot yourself writing your name in select/by name and shooting.
 - keyboard input does not work in fullscreen on some machines...
 - bad situation in editor : click new, rightclick , problem (last block gone)
 -  
trac-bugtracker is currently unusable (permission denied) - the sun can be clicked from within the spaceship ? (check click detection for cross location stuff)
 - hudmarkers (edges) and name display is totally broken (related to location system)
 - changing ship and going inside should close cargo dialog
 -  w-a-s-d accelleration is not very intuitive, should not only add to current velocity, but also try to redirect the movement into the pressed direction
- e.g. currently wrong : when going forward it goes right diagonally, not directly
 
 - sun, additive blending z-sorting bug
 - shipeditor culling is broken if not started with -se commandline option
 - i can resize the window! but when i do it. the chat bar and the interface dont move! i should not be able to resize
 
Install help
These problems should be automatically detected (see also troubleshooting in INSTALL)
- check if scons is available in makefile
 - scons : check ogre version (1.2 leads to LINKER errors, see sfz thread in free gamer forum)
 - scons : dpkg info for ogre version? 1.4.0 or later
 - scons : check lua version, 5.1 leads to errors
 - scons : plugins_linux.cfg : "locate libOgreMain | grep .so" folder + OGRE/ for plugins
 - scons : detect fmod or openal automatically
 - scons : openal esd trick/warning if alsa
 - scons : /etc/ld.so.conf : add a line with "/usr/local/lib" (where ogre is) and run /sbin/ldconfig
 - scons : check all libs, vorbisfile, with pkg ? etc..
 - check runtime shared object files : libfmodex.so libOgreMain.so