Google Summer of Code 2010: Difference between revisions

From Spring
Jump to navigationJump to search
Abma (talk | contribs)
No edit summary
Abma (talk | contribs)
Redirected page to Project proposals
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{deprecated}}
#REDIRECT [[Project proposals]]
 
 
[[Image:GSOC.png]]
 
= Project proposals =
 
This is the list of project ideas for students willing to work on the Spring engine during the Google Summer of Code 2010. If you wish, you may read our [[Google_Summer_of_Code_2010_student_application|student application]].
 
== Limited play area ==
 
Estimated difficulty: '''medium'''
 
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.
Current Spring map formats have a hardcoded rectangle boundary geometry; they also provide very limited support for defining aesthetics of the surrounding environment outside the play area.
 
The new system should allow the map's developer to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.
 
The restriction shapes should be readable and changeable mid-game through the engine's Lua API. Proper handling of units which are suddenly off-map needs to be implemented.
 
'''Details:''' [[GSoC_Limited_play_area]]
 
== Sensor handling redesign / simplification ==
 
Estimated difficulty: '''hard'''
 
Currently there are a number of different "sensor" systems in the engine: LineOfSight, Radar, Sonar, and Seismic.
Some sensors can be jammed, some cannot. Some respect terrain, and some are always circular in coverage.
 
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems into a streamlined codebase, to reduce amount of code in each implementation, and it should add additional features which would then be available for all types, while improving efficiency where possible.
 
Preferably all this should also be faster than the current system or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.
 
'''Details:''' [[GSoC_Sensor_handling_redesign]]
 
== Engine level abstraction of resources ==
 
Estimated difficulty: '''medium to hard'''
 
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.
 
The old system needs to be replaced, the new one should be flexible enough to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.
 
The engine's Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to it.
 
'''Details:''' [[GSoC_Engine_resource_abstraction]]
 
== Basic ingame lobby ==
 
Estimated difficulty: '''hard'''
 
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look and feel from the game itself and require focus switch from the game itself to operate.
 
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase where possible.
It should be running as a separate process overlaying the game's UI.
 
Optionally, the engine's start screen should be replaced and integrated with it.
 
'''Details:''' [[GSoC_Ingame_lobby]]
 
== Smarter pathfinder ==
 
Estimated difficulty: '''hard'''
 
Spring's pathfinder uses a 2d grid and is somewhat limited in functionality.
A partial/full rewrite should be introduced to add support for navigating using more than 8 primary directions and selectively ignore certain unit types for performance reasons.
 
Spring's Lua API should be extended to allow game developers to push new nodes/links and be able to alter or delete existing ones (for pathfinder-aware tunnels/teleporting/etc.).
 
Preferably this should all be faster than the current system, or a compelling argument/experiment should be made that shows there cannot be a faster system with the same features.
 
'''Details:''' [[GSoC_Smarter_pathfinder]]
 
== More AI interfaces ==
 
Estimated difficulty: '''medium'''
 
The Spring engine's AI interface supports bindings for multiple languages, currently C++, C and java are supported.
 
Bindings for more languages and/or virtual machines should be added to allow broader AI developing audience (for example: Ruby, Perl, JavaScript, Python, D, Go, Mono, LLVM, Parrot).
 
'''Details:''' [[GSoC_More_AI_interfaces]]
 
== New Rendering System ==
 
Estimated difficulty: '''medium'''
 
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower and less flexible than more modern approaches.
 
Under this proposal, the rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardised model formats (backwards compatibility with current available formats is mandatory either through direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.).
 
'''Details:''' [[GSoC_New_rendering_system]]
 
== Reconnect / Host change during a match ==
 
Estimated difficulty: '''medium to hard'''
 
Spring's network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can be interrupted.
A system should be designed to allow manual and/or automatic switching of the game's host (possibly using an existing player after testing load handling capabilities) and manual and/or automatic reconnection from client side if host remains the same.
 
'''Details:''' [[GSoC_Reconnect_Host_change]]
 
[[Category:GSoC]]
[[Category:Deprecated]]

Latest revision as of 20:18, 2 March 2012

Redirect to: