SpringEngineTODO: Difference between revisions

From Spring
Jump to navigationJump to search
No edit summary
Agon (talk | contribs)
updated page + more ideas
Line 1: Line 1:
'''This page is badly out of date. Some of these items have been done, abandoned or replaced with better ideas.'''
A collection of ideas which could improve Spring.
 
Here is a TODO list for anyone interested in developing the spring code. If you are not involved in the development, please contact one of the developers first before you add things here.


* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically.  
* Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically.  


* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync, as suggested by Jesse Schoch in [http://lolut.utbm.info/pipermail/taspring-linux/2006-February/000810.html]. After using rsync on it should be able to continue normally until the next sync error is detected.
* [[Syncing System|Implement re-sync]]. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync. After using rsync on it should be able to continue normally until the next sync error is detected.
 
* Abstract and improve unit rendering:
** 3DO/S3O support is not abstracted, many parts of unit rendering are spread throughout spring and assume 3DO, and the rendering is a messy mixture of 3DO and S3O stuff. Abstracting the model rendering with a sort of IModel and IModelInstance interfaces would allow adding other model formats as well (Such as a skeletal animation format).


* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105
* Implement a general sensor system replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105
Line 14: Line 9:
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of "approximating lights" for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?
* Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of "approximating lights" for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?


* Fix the left-click/right-click thing, preferably make it possible to configure mouse / keyboard settings.
* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.
 
* Extending the resource system to allow more than two resources (metal/energy)


* Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.
* Expand Springs script abilities by adding new languages or extending the available languages. Exposing more Spring functions to the Lua world (command AIs, move types).
 
* Implement MD5 as a model format or add other model formats.
 
* Extend SM3 (map format)
 
* Add p2p/round-robin for hosting (so host exit doesn't stop the game)
 
* Joining the game while it is running
 
* Proper GUI for spring.exe with extended singleplayer abilities, better map/mod browsing, adding Bots (AIs), selecting start positions, choosing color, selecting map/mod options.
 
* Implement a small AI framework for general used functions like gathering nearest and best metal spots, detecting map type (land, land/water, water) or a unit group manager.


Even though this isn't really about the Spring engine:
Even though this isn't really about the Spring engine:

Revision as of 21:14, 9 March 2009

A collection of ideas which could improve Spring.

  • Implement saving/loading. There are a lot of direct LoadSave() functions in the game code, but the easier way would probably to finish the serialization in the class registration type interfaces (rts/System/creg), so everything can be serialized automatically.
  • Implement re-sync. After a sync problem is detected, and a re-sync of the random seed does not fix it the game would pause and use the rsync to adjust game state (current plan if for float3 data) to resync. After using rsync on it should be able to continue normally until the next sync error is detected.
  • Add a dynamic-lighting system: Allow units to have dynamic lights on them that affect lighting of other units and landscape, with sort of "approximating lights" for cases where a lot of units get close together. This is a big thing, but it would improve spring graphics a lot if done well. Or Deferred Lighting/Shading?
  • Get a mac version working. Contact the developers on the forums for this, as there are people looking into this already.
  • Extending the resource system to allow more than two resources (metal/energy)
  • Expand Springs script abilities by adding new languages or extending the available languages. Exposing more Spring functions to the Lua world (command AIs, move types).
  • Implement MD5 as a model format or add other model formats.
  • Extend SM3 (map format)
  • Add p2p/round-robin for hosting (so host exit doesn't stop the game)
  • Joining the game while it is running
  • Proper GUI for spring.exe with extended singleplayer abilities, better map/mod browsing, adding Bots (AIs), selecting start positions, choosing color, selecting map/mod options.
  • Implement a small AI framework for general used functions like gathering nearest and best metal spots, detecting map type (land, land/water, water) or a unit group manager.

Even though this isn't really about the Spring engine:

  • SpringLobby is a cross-platform lobby client, implemented in C++ and wxWidgets. We encourage you to look into our todo list on http://springlobby.info and see what you could do for it.

Lua:

  • Create a Mission Development Kit: ie, do whatever it takes to make it easy to create campaign missions, eg create a gui tool that makes it easy to place units on the map, create triggers, and so on.