SpringEngineTODO: Difference between revisions

From Spring
Jump to navigationJump to search
Redstar (talk | contribs)
No edit summary
Gajop (talk | contribs)
No edit summary
 
(44 intermediate revisions by 13 users not shown)
Line 1: Line 1:
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, or mail to the mailing list before you add things here.
A collection of ideas which could improve Spring. Before starting anything, please ask in the forum [http://springrts.com/phpbb/viewforum.php?f=60 developement-forum] so that you go in the right direction.  


* 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.  
* Get a '''stable OS X version''' working. Contact the developers on the forums for this, as there are people who build and run it successfully. Still need proper packaging and maintaining,
** Requires: C/C++, CMake and MacOS
** Time: < 1 month
** Level of difficulty: Medium
** More information at http://springrts.com/wiki/Spring_on_MacOSX


* [[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 normaly until the next sync error is detected.
* clean up, sanitize, and implement a '''consistent error handling''' scheme in the engine
* add '''general serializing''' to the engine, which touches the following:
** 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.
*** Requires: C/C++
*** Time: ~3 months
*** Level of difficulty: medium - hard
** [[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.
*** Requires: C/C++, network programming
*** Time: ~3< months
*** Level of difficulty: Hard


* Abstract and improve unit rendering:
* Implement a '''general sensor system''' replacing the radars, as described in http://taspring.clan-sy.com/phpbb/viewtopic.php?t=6105
** Improve the S3O rendering: It doesn't generate nice explosion particles like the 3DO system, and it has other issues with drawing as well (refer to the s3o related threads on the forum for this, or test it and see for yourself).
** Requires: C/C++, 3D/2D math (Lua knowledge not required, but prefered)
** 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).
** Time: ~2 months
** Level of difficulty: Medium


* Improve weapon collision detection with more complex shapes for the bigger units. Giving every model a set of convex collision meshes, saved in the S3O file, could be a solution. This will need a change in the s3o format and upspring editor, so you will need some cooperate with me on that part(jcnossen).
* '''Abstracting the resource system''' to allow more than two resources (metal/energy)
** Requires: C/C++ (Lua knowledge not required, but prefered)
** Time: ~1-3 months
** Level of difficulty: Easy-Medium


* Bind a scripting language to Spring. Fnordia already started on this with lua and luabind, but since luabind does not compile on GCC (so I've heard), it's not an option.
* '''Exposing more Spring functions to the Lua world''' (command AIs, move types) or/and small frameworks
**Binding LUA could be done in other ways too ofcourse.
** Requires: basic C/C++, Lua
**A lightweight and fast language that can call C/C++ directly is AngelScript ([[www.angelcode.com/angelscript]]), class support with inheritance is however not yet supported (WIP), but is already a good choice because it doesn't require wrapper functions.
** Time: ~1-3< months (depends on the goal)
**Squirrel is a more game orientated derivitive of LUA and would be worth looking into.
** Level of difficulty: Easy-medium


* Make more elements of spring data-driven. Explosion bitmaps, trees, etc... A lot of graphics are hardcoded and should be changeable with scripts or config files (FBI/TDF).
* Implement '''MD5 as a model format or add other model formats'''.
** Requires: C/C++, 3D math (Lua knowledge not required, but prefered)
** Time: ~1-3 months
** Level of difficulty: Medium


* 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.
* Add '''p2p/round-robin for hosting''' (so host exit does not stop the game)
** Requires: C/C++, network programming
** Time: ~3< months
** Level of difficulty: Medium


* Get a mac version working. Contact the developers on the mailing list for this, as there are people looking into this already.
* '''Fix bugs'''
 
* Abstract the rendering and add an orthographic renderer for OTA style play on lower end systems.
 
Even though this isn't really about the Spring engine:
 
* Get a working multi platform lobby client capable of joining battles, hosting battles, browsing maps, etc. (everything TASClient [the windows lobby] is capable off). Language/Toolkit doesn't matter. There's omni (Python and WxWidgets) and qspring (C++ and Qt 4) in the works.
 
[[Category:Source development]]

Latest revision as of 05:00, 5 November 2017

A collection of ideas which could improve Spring. Before starting anything, please ask in the forum developement-forum so that you go in the right direction.

  • Get a stable OS X version working. Contact the developers on the forums for this, as there are people who build and run it successfully. Still need proper packaging and maintaining,
  • clean up, sanitize, and implement a consistent error handling scheme in the engine
  • add general serializing to the engine, which touches the following:
    • 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.
      • Requires: C/C++
      • Time: ~3 months
      • Level of difficulty: medium - hard
    • 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.
      • Requires: C/C++, network programming
      • Time: ~3< months
      • Level of difficulty: Hard
  • Abstracting the resource system to allow more than two resources (metal/energy)
    • Requires: C/C++ (Lua knowledge not required, but prefered)
    • Time: ~1-3 months
    • Level of difficulty: Easy-Medium
  • Exposing more Spring functions to the Lua world (command AIs, move types) or/and small frameworks
    • Requires: basic C/C++, Lua
    • Time: ~1-3< months (depends on the goal)
    • Level of difficulty: Easy-medium
  • Implement MD5 as a model format or add other model formats.
    • Requires: C/C++, 3D math (Lua knowledge not required, but prefered)
    • Time: ~1-3 months
    • Level of difficulty: Medium
  • Add p2p/round-robin for hosting (so host exit does not stop the game)
    • Requires: C/C++, network programming
    • Time: ~3< months
    • Level of difficulty: Medium
  • Fix bugs