<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Brain+damage</id>
	<title>Spring - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://springrts-wiki.p2004a.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Brain+damage"/>
	<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/wiki/Special:Contributions/Brain_damage"/>
	<updated>2026-11-08T18:32:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7794</id>
		<title>GSoC Reconnect Host change</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7794"/>
		<updated>2010-03-12T15:28:21Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* What */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Reconnect / Host change during a match  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Network links can sometimes be unreliable, being able to overcome temporary issues will improve play experience.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
Spring&#039;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&#039;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.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* General networking knowledge&lt;br /&gt;
* Understanding Spring&#039;s networking model&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* During a drop-out clients can be at diverging points in simulation time (game frame), so any solution would have to determine a common point and bring all players to that to ensure sync.&lt;br /&gt;
* During a server switch extra measures need to be implemented to prevent cheating.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7782</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7782"/>
		<updated>2010-03-12T15:27:47Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* What */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Spring rendering engine includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API &lt;br /&gt;
* Knowledge of GLSL&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium &lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs) while retaining OpenGL 1.4 code path for intel chipsets&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
* OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9659</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9659"/>
		<updated>2010-03-12T15:26:40Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* More AI interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;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.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.&lt;br /&gt;
Some sensors can be jammed, some cannot. Some respect terrain, and some are always circular in coverage.&lt;br /&gt;
&lt;br /&gt;
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 be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.&lt;br /&gt;
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7760</id>
		<title>GSoC More AI interfaces</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7760"/>
		<updated>2010-03-12T15:26:29Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* What */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: More AI interfaces =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring engine is already a popular engine for academic projects to study Artificial Intelligence. This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about AI research.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Understanding of the Spring AI interface&lt;br /&gt;
* Knowledge of C&lt;br /&gt;
* Understanding of the target language/virtual machine&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
The current C AI interface has been structured so it acts as a bridge between the engine and the various AI language wrappers, since automatic wrapper generators have been tried in the past and found infeasible, manual creation is necessary.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7720</id>
		<title>GSoC Ingame lobby</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7720"/>
		<updated>2010-03-12T15:25:12Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* What */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Basic ingame lobby =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible. It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua&lt;br /&gt;
* Knowledge of Lua API/C bindings&lt;br /&gt;
* Knowledge of basic OpenGL programming&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* ensure Spring can clean up properly&lt;br /&gt;
* ensure Spring can change mod during program runtime (requires that some singletons be converted to Spring&#039;s *handler pattern)&lt;br /&gt;
* The lobby API should reuse/be identical to spring&#039;s LuaUI where possible ( GL calls, access to game infos )&lt;br /&gt;
* to prevent Spring &amp;lt;-&amp;gt; lobby crash propagations they should run as separate processes, with lobby overlaying on top of Spring&#039;s UI, the only exception could be made for start screen.&lt;br /&gt;
* create a new Lua context or initalize current context earlier in the code and rewrite Spring&#039;s start interface using Lua scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7719</id>
		<title>GSoC Ingame lobby</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7719"/>
		<updated>2010-03-12T15:24:43Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Why */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Basic ingame lobby =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable, lobby should be implemented with customization and control in mind, possibly integrated with spring codebase and/or running as a separate process overlaying the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua&lt;br /&gt;
* Knowledge of Lua API/C bindings&lt;br /&gt;
* Knowledge of basic OpenGL programming&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* ensure Spring can clean up properly&lt;br /&gt;
* ensure Spring can change mod during program runtime (requires that some singletons be converted to Spring&#039;s *handler pattern)&lt;br /&gt;
* The lobby API should reuse/be identical to spring&#039;s LuaUI where possible ( GL calls, access to game infos )&lt;br /&gt;
* to prevent Spring &amp;lt;-&amp;gt; lobby crash propagations they should run as separate processes, with lobby overlaying on top of Spring&#039;s UI, the only exception could be made for start screen.&lt;br /&gt;
* create a new Lua context or initalize current context earlier in the code and rewrite Spring&#039;s start interface using Lua scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7709</id>
		<title>GSoC Engine resource abstraction</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7709"/>
		<updated>2010-03-12T15:23:31Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* What */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Engine level abstraction of resources =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current hardcoded resource system generates defects and can produce effects which are hard to workaround for game designers which aren&#039;t willing to use it.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system and new calls will have to be added to modify its state.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* The new system should completely supersede the current&lt;br /&gt;
* Sync check should be adapted to hash the new resource system&lt;br /&gt;
* Hardcoded assumptions such as cost-based targeting should be removed completely&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7708</id>
		<title>GSoC Engine resource abstraction</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7708"/>
		<updated>2010-03-12T15:23:08Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Why */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Engine level abstraction of resources =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current hardcoded resource system generates defects and can produce effects which are hard to workaround for game designers which aren&#039;t willing to use it.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone. While this intent has been dropped quite some time ago, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system and new calls will have to be added to modify its state.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* The new system should completely supersede the current&lt;br /&gt;
* Sync check should be adapted to hash the new resource system&lt;br /&gt;
* Hardcoded assumptions such as cost-based targeting should be removed completely&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7807</id>
		<title>GSoC Sensor handling redesign</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7807"/>
		<updated>2010-03-12T15:20:57Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* What */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Sensor handling redesign / simplification  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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 be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Bachelor level algorithmics knowledge&lt;br /&gt;
* Bachelor level software engineering knowledge&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* It should be possible to specify different behaviours for sensors of either type: is it based on e.g. simple 2d or 3d distance check or terrain raycast (i.e. LOS).&lt;br /&gt;
* It should be possible to use multiple different types of radar in one game (possibly current seismic sensors system could be a type of radar too, internally).&lt;br /&gt;
* It should be possible to use &amp;quot;reversed LOS&amp;quot; for the sensor (instead of sight distance, detection distance is used - like cloak now).&lt;br /&gt;
* There should be a generic mechanism for jamming (removing coverage of an area) and stealth (only this unit is not detectable using this sensor) for each type of sensor.&lt;br /&gt;
* There should be support for Lua defined areas that block sensors operating in that area, hide units in that area for certain sensors, or block the rays of terrain-raycasting sensors.&lt;br /&gt;
* There should be support for creating false positives and false negatives using Lua.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7793</id>
		<title>GSoC Reconnect Host change</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7793"/>
		<updated>2010-03-12T15:19:18Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Reconnect / Host change during a match  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Network links can sometimes be unreliable, being able to overcome temporary issues will improve play experience.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
Spring&#039;s network model implies the existance of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* General networking knowledge&lt;br /&gt;
* Understanding Spring&#039;s networking model&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* During a drop-out clients can be at diverging points in simulation time (game frame), so any solution would have to determine a common point and bring all players to that to ensure sync.&lt;br /&gt;
* During a server switch extra measures need to be implemented to prevent cheating.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7781</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7781"/>
		<updated>2010-03-12T15:18:22Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Spring rendering engine includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either through direct loading or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API &lt;br /&gt;
* Knowledge of GLSL&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium &lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs) while retaining OpenGL 1.4 code path for intel chipsets&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
* OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7759</id>
		<title>GSoC More AI interfaces</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7759"/>
		<updated>2010-03-12T15:17:49Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: More AI interfaces =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring engine is already a popular engine for academic projects to study Artificial Intelligence. This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about AI research.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Understanding of the Spring AI interface&lt;br /&gt;
* Knowledge of C&lt;br /&gt;
* Understanding of the target language/virtual machine&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
The current C AI interface has been structured so it acts as a bridge between the engine and the various AI language wrappers, since automatic wrapper generators have been tried in the past and found infeasible, manual creation is necessary.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Smarter_pathfinder&amp;diff=7815</id>
		<title>GSoC Smarter pathfinder</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Smarter_pathfinder&amp;diff=7815"/>
		<updated>2010-03-12T15:17:02Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Smarter pathfinder =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current pathfinder is rather inflexible and inefficient.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
Spring&#039;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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.)&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features. &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of graphs and pathfinding (particularly navigation graphs)&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua API/C bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
The pathfinder is one of the better encapsulated subsystems in spring; generally, there will only be minor changes required in the rest of the engine, if any. There&#039;s a lot of algorithmic work to do under the hood, though:&lt;br /&gt;
* Cooperative pathfinding exists in a very scant form and could be greatly improved&lt;br /&gt;
* Navigation mesh could be introduced for better paths and faster searches - at the cost of generating the mesh and updating it online due to terrain modification&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7718</id>
		<title>GSoC Ingame lobby</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7718"/>
		<updated>2010-03-12T15:15:52Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Basic ingame lobby =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
External lobby programs are powerful but confusing. There&#039;s a need for a simple lobby client that works in-game and to launch spring.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable, lobby should be implemented with customization and control in mind, possibly integrated with spring codebase and/or running as a separate process overlaying the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua&lt;br /&gt;
* Knowledge of Lua API/C bindings&lt;br /&gt;
* Knowledge of basic OpenGL programming&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* ensure Spring can clean up properly&lt;br /&gt;
* ensure Spring can change mod during program runtime (requires that some singletons be converted to Spring&#039;s *handler pattern)&lt;br /&gt;
* The lobby API should reuse/be identical to spring&#039;s LuaUI where possible ( GL calls, access to game infos )&lt;br /&gt;
* to prevent Spring &amp;lt;-&amp;gt; lobby crash propagations they should run as separate processes, with lobby overlaying on top of Spring&#039;s UI, the only exception could be made for start screen.&lt;br /&gt;
* create a new Lua context or initalize current context earlier in the code and rewrite Spring&#039;s start interface using Lua scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7707</id>
		<title>GSoC Engine resource abstraction</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7707"/>
		<updated>2010-03-12T15:13:33Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Engine level abstraction of resources =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
So game designers can reuse engine resource system and avoid all weird behaviours caused by the hardcoded assumptions all over the place.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone. While this intent has been dropped quite some time ago, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system and new calls will have to be added to modify its state.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* The new system should completely supersede the current&lt;br /&gt;
* Sync check should be adapted to hash the new resource system&lt;br /&gt;
* Hardcoded assumptions such as cost-based targeting should be removed completely&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7806</id>
		<title>GSoC Sensor handling redesign</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7806"/>
		<updated>2010-03-12T15:12:48Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Sensor handling redesign / simplification  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, Seismic. Some can be jammed, some can not. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce the amount of code per functionality and eventually add additional features which would then become available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably all this should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Bachelor level algorithmics knowledge&lt;br /&gt;
* Bachelor level software engineering knowledge&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* It should be possible to specify different behaviours for sensors of either type: is it based on e.g. simple 2d or 3d distance check or terrain raycast (i.e. LOS).&lt;br /&gt;
* It should be possible to use multiple different types of radar in one game (possibly current seismic sensors system could be a type of radar too, internally).&lt;br /&gt;
* It should be possible to use &amp;quot;reversed LOS&amp;quot; for the sensor (instead of sight distance, detection distance is used - like cloak now).&lt;br /&gt;
* There should be a generic mechanism for jamming (removing coverage of an area) and stealth (only this unit is not detectable using this sensor) for each type of sensor.&lt;br /&gt;
* There should be support for Lua defined areas that block sensors operating in that area, hide units in that area for certain sensors, or block the rays of terrain-raycasting sensors.&lt;br /&gt;
* There should be support for creating false positives and false negatives using Lua.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7748</id>
		<title>GSoC Limited play area</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7748"/>
		<updated>2010-03-12T15:12:01Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Limited play area =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current spring map formats have a harcoded rectangle geometry. They also provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++ a&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
Most of the current code is based on the assumption that the map&#039;s top left is always at (0, 0) and bottom right at (width, height). The most difficult part will be identifying all places that check for point-in-map condition and determining whether they should be converted to the new limited map area or left as-is (e.g. for drawing).&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7747</id>
		<title>GSoC Limited play area</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7747"/>
		<updated>2010-03-12T15:10:58Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: Background -&amp;gt; what, splitted difficulty from technical details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Limited play area =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current spring map formats have a harcoded rectangle geometry. They also provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
== What ==&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++ a&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
Most of the current code is based on the assumption that the map&#039;s top left is always at (0, 0) and bottom right at (width, height). The most difficult part will be identifying all places that check for point-in-map condition and determining whether they should be converted to the new limited map area or left as-is (e.g. for drawing).&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7792</id>
		<title>GSoC Reconnect Host change</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7792"/>
		<updated>2010-03-12T15:09:23Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Reconnect / Host change during a match  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Network links can sometimes be unreliable, being able to overcome temporary issues will improve play experience.&lt;br /&gt;
== Background ==&lt;br /&gt;
Spring&#039;s network model implies the existance of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* General networking knowledge&lt;br /&gt;
* Understanding Spring&#039;s networking model&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
* During a drop-out clients can be at diverging points in simulation time (game frame), so any solution would have to determine a common point and bring all players to that to ensure sync.&lt;br /&gt;
* During a server switch extra measures need to be implemented to prevent cheating.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7780</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7780"/>
		<updated>2010-03-12T15:08:38Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Spring rendering engine includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either through direct loading or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API &lt;br /&gt;
* Knowledge of GLSL&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium &lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs) while retaining OpenGL 1.4 code path for intel chipsets&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
* OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7758</id>
		<title>GSoC More AI interfaces</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7758"/>
		<updated>2010-03-12T15:06:52Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: More AI interfaces =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring engine is already a popular engine for academic projects to study Artificial Intelligence. This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about AI research.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Understanding of the Spring AI interface&lt;br /&gt;
* Knowledge of C&lt;br /&gt;
* Understanding of the target language/virtual machine&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
The current C AI interface has been structured so it acts as a bridge between the engine and the various AI language wrappers, since automatic wrapper generators have been tried in the past and found infeasible, manual creation is necessary.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Smarter_pathfinder&amp;diff=7814</id>
		<title>GSoC Smarter pathfinder</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Smarter_pathfinder&amp;diff=7814"/>
		<updated>2010-03-12T15:06:09Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Smarter pathfinder =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current pathfinder is rather inflexible and inefficient.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
Spring&#039;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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.)&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features. &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of graphs and pathfinding (particularly navigation graphs)&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua API/C bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
The pathfinder is one of the better encapsulated subsystems in spring; generally, there will only be minor changes required in the rest of the engine, if any. There&#039;s a lot of algorithmic work to do under the hood, though:&lt;br /&gt;
* Cooperative pathfinding exists in a very scant form and could be greatly improved&lt;br /&gt;
* Navigation mesh could be introduced for better paths and faster searches - at the cost of generating the mesh and updating it online due to terrain modification&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7717</id>
		<title>GSoC Ingame lobby</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Ingame_lobby&amp;diff=7717"/>
		<updated>2010-03-12T15:05:12Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Basic ingame lobby =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
External lobby programs are powerful but confusing. There&#039;s a need for a simple lobby client that works in-game and to launch spring.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable, lobby should be implemented with customization and control in mind, possibly integrated with spring codebase and/or running as a separate process overlaying the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua&lt;br /&gt;
* Knowledge of Lua API/C bindings&lt;br /&gt;
* Knowledge of basic OpenGL programming&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
* ensure Spring can clean up properly&lt;br /&gt;
* ensure Spring can change mod during program runtime (requires that some singletons be converted to Spring&#039;s *handler pattern)&lt;br /&gt;
* The lobby API should reuse/be identical to spring&#039;s LuaUI where possible ( GL calls, access to game infos )&lt;br /&gt;
* to prevent Spring &amp;lt;-&amp;gt; lobby crash propagations they should run as separate processes, with lobby overlaying on top of Spring&#039;s UI&lt;br /&gt;
* create a new Lua context or initalize current context earlier in the code during Spring init and script start interface using Lua.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7706</id>
		<title>GSoC Engine resource abstraction</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Engine_resource_abstraction&amp;diff=7706"/>
		<updated>2010-03-12T15:04:02Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardized requirements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Engine level abstraction of resources =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
So game designers can reuse engine resource system and avoid all weird behaviours caused by the hardcoded assumptions all over the place.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone. While this intent has been dropped quite some time ago, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system and new calls will have to be added to modify its state.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
* The new system should completely supersede the current&lt;br /&gt;
* Sync check should be adapted to hash the new resource system&lt;br /&gt;
* Hardcoded assumptions such as cost-based targeting should be removed completely&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7805</id>
		<title>GSoC Sensor handling redesign</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7805"/>
		<updated>2010-03-12T15:02:49Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Sensor handling redesign / simplification  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, Seismic. Some can be jammed, some can not. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce the amount of code per functionality and eventually add additional features which would then become available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably all this should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Bachelor level algorithmics knowledge&lt;br /&gt;
* Bachelor level software engineering knowledge&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
* A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems to reduce amount of code per functionality.&lt;br /&gt;
* It should be possible to specify different behaviours for sensors of either type: is it based on e.g. simple 2d or 3d distance check or terrain raycast (i.e. LOS).&lt;br /&gt;
* It should be possible to use multiple different types of radar in one game (possibly current seismic sensors system could be a type of radar too, internally).&lt;br /&gt;
* It should be possible to use &amp;quot;reversed LOS&amp;quot; for the sensor (instead of sight distance, detection distance is used - like cloak now).&lt;br /&gt;
* There should be a generic mechanism for jamming (removing coverage of an area) and stealth (only this unit is not detectable using this sensor) for each type of sensor.&lt;br /&gt;
* There should be support for Lua defined areas that block sensors operating in that area, hide units in that area for certain sensors, or block the rays of terrain-raycasting sensors.&lt;br /&gt;
* There should be support for creating false positives and false negatives using Lua.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7746</id>
		<title>GSoC Limited play area</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7746"/>
		<updated>2010-03-12T15:02:20Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: standardizing requirements format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Limited play area =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current spring map formats have a harcoded rectangle geometry. They also provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++ a&lt;br /&gt;
* Knowledge of Lua/C API bindings&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
Most of the current code is based on the assumption that the map&#039;s top left is always at (0, 0) and bottom right at (width, height). The most difficult part will be identifying all places that check for point-in-map condition and determining whether they should be converted to the new limited map area or left as-is (e.g. for drawing).&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7745</id>
		<title>GSoC Limited play area</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7745"/>
		<updated>2010-03-12T15:01:13Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Why */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Limited play area =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Current spring map formats have a harcoded rectangle geometry. They also provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* C++ and Lua/C api&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
Most of the current code is based on the assumption that the map&#039;s top left is always at (0, 0) and bottom right at (width, height). The most difficult part will be identifying all places that check for point-in-map condition and determining whether they should be converted to the new limited map area or left as-is (e.g. for drawing).&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7744</id>
		<title>GSoC Limited play area</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7744"/>
		<updated>2010-03-12T15:01:05Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Limited play area =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
So the mappers can define which part of the map is designed for gameplay and which for the looks.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* C++ and Lua/C api&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
Most of the current code is based on the assumption that the map&#039;s top left is always at (0, 0) and bottom right at (width, height). The most difficult part will be identifying all places that check for point-in-map condition and determining whether they should be converted to the new limited map area or left as-is (e.g. for drawing).&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7779</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7779"/>
		<updated>2010-03-12T14:59:54Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Spring rendering engine includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either through direct loading or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API and GLSL&lt;br /&gt;
* Understanding Spring&#039;s sync system&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium &lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs) while retaining OpenGL 1.4 code path for intel chipsets&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
* OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9658</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9658"/>
		<updated>2010-03-12T14:59:20Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* New Rendering System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;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.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.&lt;br /&gt;
Some sensors can be jammed, some cannot. Some respect terrain, and some are always circular in coverage.&lt;br /&gt;
&lt;br /&gt;
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 be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.&lt;br /&gt;
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9657</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9657"/>
		<updated>2010-03-12T14:59:13Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* New Rendering System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;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.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.&lt;br /&gt;
Some sensors can be jammed, some cannot. Some respect terrain, and some are always circular in coverage.&lt;br /&gt;
&lt;br /&gt;
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 be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.&lt;br /&gt;
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7804</id>
		<title>GSoC Sensor handling redesign</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Sensor_handling_redesign&amp;diff=7804"/>
		<updated>2010-03-12T14:57:57Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Why */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Sensor handling redesign / simplification  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring Engine is currently capable of significant real-world applications in the area of simulation of certain types of events or situations; a better sensor system could greatly improve Spring&#039;s applicability to an even wider range of projects.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, Seismic. Some can be jammed, some can not. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce the amount of code per functionality and eventually add additional features which would then become available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably all this should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Being able to program in C++&lt;br /&gt;
* Bachelor level algorithmics knowledge&lt;br /&gt;
* Bachelor level software engineering knowledge&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: hard&lt;br /&gt;
&lt;br /&gt;
* A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems to reduce amount of code per functionality.&lt;br /&gt;
* It should be possible to specify different behaviours for sensors of either type: is it based on e.g. simple 2d or 3d distance check or terrain raycast (i.e. LOS).&lt;br /&gt;
* It should be possible to use multiple different types of radar in one game (possibly current seismic sensors system could be a type of radar too, internally).&lt;br /&gt;
* It should be possible to use &amp;quot;reversed LOS&amp;quot; for the sensor (instead of sight distance, detection distance is used - like cloak now).&lt;br /&gt;
* There should be a generic mechanism for jamming (removing coverage of an area) and stealth (only this unit is not detectable using this sensor) for each type of sensor.&lt;br /&gt;
* There should be support for Lua defined areas that block sensors operating in that area, hide units in that area for certain sensors, or block the rays of terrain-raycasting sensors.&lt;br /&gt;
* There should be support for creating false positives and false negatives using Lua.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9656</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9656"/>
		<updated>2010-03-12T14:57:18Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Limited play area */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring uses a finite-world model, where the scene has distinct bounds that all actors must obey.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map&#039;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.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.&lt;br /&gt;
Some sensors can be jammed, some cannot. Some respect terrain, and some are always circular in coverage.&lt;br /&gt;
&lt;br /&gt;
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 be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.&lt;br /&gt;
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9655</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9655"/>
		<updated>2010-03-12T14:54:25Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Sensor handling redesign / simplification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic.&lt;br /&gt;
Some sensors can be jammed, some cannot. Some respect terrain, and some are always circular in coverage.&lt;br /&gt;
&lt;br /&gt;
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 be then available for all types, while improving efficiency where possible.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.&lt;br /&gt;
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7743</id>
		<title>GSoC Limited play area</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Limited_play_area&amp;diff=7743"/>
		<updated>2010-03-12T14:50:49Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: removed grep reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Limited play area =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
So the mappers can define which part of the map is designed for gameplay and which for the looks.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
Current spring map formats have a harcoded rectangle geometry. They also provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* C++ and Lua/C api&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
Most of the current code is based on the assumption that the map&#039;s top left is always at (0, 0) and bottom right at (width, height). The most difficult part will be identifying all places that check for point-in-map condition and determining whether they should be converted to the new limited map area or left as-is (e.g. for drawing).&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9654</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9654"/>
		<updated>2010-03-12T14:49:53Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: more argh imports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in an older Real-Time Strategy title, where only two resources were incorporated into the game design.&lt;br /&gt;
The current resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9653</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9653"/>
		<updated>2010-03-12T14:46:53Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Basic ingame lobby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A new lobby should be implemented with customization and control in mind, using Lua scripting and reusing Spring codebase when possible.&lt;br /&gt;
It should be running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9652</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9652"/>
		<updated>2010-03-12T14:41:52Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Reconnect / Host change during a match */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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. &lt;br /&gt;
A system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9651</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9651"/>
		<updated>2010-03-12T14:39:25Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7778</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7778"/>
		<updated>2010-03-12T14:38:51Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Spring rendering engine includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either through direct loading or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API and GLSL&lt;br /&gt;
* Understanding Spring&#039;s sync system&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium &lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs) while retaining OpenGL 1.4 code path for intel chipsets&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7777</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7777"/>
		<updated>2010-03-12T14:38:08Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* Why */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Spring rendering engine includes many fixed function pipeline OpenGL functions. This rendering system is becoming deprecated and is generally slower and less flexible than more modern approaches.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower than shader usage and less flexible.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either through direct loading or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API and GLSL&lt;br /&gt;
* Understanding Spring&#039;s sync system&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium &lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs) while retaining OpenGL 1.4 code path for intel chipsets&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9650</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9650"/>
		<updated>2010-03-12T14:35:15Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: /* New Rendering System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7757</id>
		<title>GSoC More AI interfaces</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7757"/>
		<updated>2010-03-12T14:31:19Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: A.I. vs AI consistency&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: More AI interfaces =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring engine is already a popular engine for academic projects to study Artificial Intelligence. This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about AI research.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Understanding of the Spring AI interface&lt;br /&gt;
* knowledge of C&lt;br /&gt;
* Understanding of the target language/virtual machine&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
The current C AI interface has been structured so it acts as a bridge between the engine and the various AI language wrappers, since automatic wrapper generators have been tried in the past and found infeasible, manual creation is necessary.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7756</id>
		<title>GSoC More AI interfaces</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_More_AI_interfaces&amp;diff=7756"/>
		<updated>2010-03-12T14:30:55Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: Imported some of Argh&amp;#039;s edits to why&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: More AI interfaces =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
The Spring engine is already a popular engine for academic projects to study Artificial Intelligence. This project could enhance Spring&#039;s attractiveness to developers and teachers wanting to explore or teach about A.I. research.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Understanding of the Spring AI interface&lt;br /&gt;
* knowledge of C&lt;br /&gt;
* Understanding of the target language/virtual machine&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium&lt;br /&gt;
&lt;br /&gt;
The current C AI interface has been structured so it acts as a bridge between the engine and the various AI language wrappers, since automatic wrapper generators have been tried in the past and found infeasible, manual creation is necessary.&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9649</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9649"/>
		<updated>2010-03-12T14:28:16Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: re-applied some of Argh&amp;#039;s formatting edits, THIS IS A SHORT SUMMARY PAGE, NOT FULL DESCRIPTION&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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 shader usage.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: &#039;&#039;&#039;medium to hard&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Details:&#039;&#039;&#039; [[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9648</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9648"/>
		<updated>2010-03-12T14:22:34Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: Reverted edits by Argh (Talk); changed back to last version by Babbles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current Spring map formats have a hardcoded rectangle geometry; also they provide very limited support for defining aesthetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game through the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, and Seismic, some can be jammed, some cannot. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features which would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all 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.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has its roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in mind, possibly integrated with Spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
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 shader usage.&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existence of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9619</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9619"/>
		<updated>2010-03-11T23:25:57Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current spring map formats have an harcoded rectangle geometry, also they provide very limited support for defining aestetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game trough the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, Seismic. Some can be jammed, some can not. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features wich would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has it&#039;s roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be enough flexible to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in the mind, possibly integrated with spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.)&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower than shader usage and less flexible.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either trough direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existance of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9618</id>
		<title>Google Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=Google_Summer_of_Code_2010&amp;diff=9618"/>
		<updated>2010-03-11T23:25:31Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: Only current listed tasks will be submitted to GSoC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC.png]]&lt;br /&gt;
&lt;br /&gt;
= Project proposals =&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Limited play area ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Current spring map formats have an harcoded rectangle geometry, also they provide very limited support for defining aestetics of the surrounding environment outside the play area.&lt;br /&gt;
&lt;br /&gt;
The new system should allow the map to restrict the playable area to a subset of the global area, possibly adding support for multiple shapes and/or non rectangular shape restrictions.&lt;br /&gt;
&lt;br /&gt;
The restriction shapes should be readable and changeable mid-game trough the engine&#039;s Lua API. Proper handling of units which are suddenly off-map needs to be implemented.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Limited_play_area]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sensor handling redesign / simplification ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Currently there are a number of different &amp;quot;sensor&amp;quot; systems in the engine: LineOfSight, Radar, Sonar, Seismic. Some can be jammed, some can not. Some respect terrain, and some are always circular.&lt;br /&gt;
&lt;br /&gt;
A new sensor system should integrate the current LOS, Radar, Sonar, Seismic systems, to reduce amount of code per functionality, and eventually add additional features wich would be then available for all types.&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster than the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Sensor_handling_redesign]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Engine level abstraction of resources ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
The Spring engine has it&#039;s roots in being a Total Annihilation clone; even if such intent has been dropped since quite some time, the TA resource system is largely present in the codebase being hardcoded in a lot of critical places.&lt;br /&gt;
&lt;br /&gt;
The old system needs to be replaced, the new one should be enough flexible to reproduce everything that the old system did and be able to imitate the behaviour of most common RTS game titles.&lt;br /&gt;
&lt;br /&gt;
The engine&#039;s Lua API to fetch resources will have to be adapted to the new system, and new calls will have to be added to edit it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Engine_resource_abstraction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic ingame lobby ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
All existing Spring interfaces (lobbies) are either difficult to customize for game developers or have a different look &#039;n feel from the game itself and require focus switch from the game itself to operate.&lt;br /&gt;
&lt;br /&gt;
A new, Lua scriptable lobby should be implemented with customization and control in the mind, possibly integrated with spring codebase and/or running as a separate process overlaying to the game&#039;s UI.&lt;br /&gt;
&lt;br /&gt;
Optionally, the engine&#039;s start screen should be replaced and integrated with it.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Ingame_lobby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Smarter pathfinder ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s pathfinder uses a 2d grid and is somewhat limited in functionality.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Spring&#039;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.)&lt;br /&gt;
&lt;br /&gt;
Preferably this all should also be faster then the current system, or a compelling argument/experiment should be made that shows there can not be a faster system with the same features.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Smarter_pathfinder]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More AI interfaces ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring engine&#039;s AI interface supports bindings for multiple languages, currently legacy C++, C and java are supported.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
[[GSoC_More_AI_interfaces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New Rendering System ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium&lt;br /&gt;
&lt;br /&gt;
The Spring rendering engine uses a lot of FFP (fixed function pipeline) OpenGL functions. This model is becoming deprecated and is generally slower than shader usage and less flexible.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either trough direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_New_rendering_system]]&lt;br /&gt;
&lt;br /&gt;
== Reconnect / Host change during a match ==&lt;br /&gt;
&lt;br /&gt;
Estimated difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Spring&#039;s network model implies the existance of a server to host a battle. For various reasons the network link between host and clients can die, so a system should be designed to allow manual and/or automatic switching of the game&#039;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.&lt;br /&gt;
&lt;br /&gt;
[[GSoC_Reconnect_Host_change]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7789</id>
		<title>GSoC Reconnect Host change</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_Reconnect_Host_change&amp;diff=7789"/>
		<updated>2010-03-11T21:55:25Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: New page: = GSoC idea: Reconnect / Host change during a match  =  == Why == Network links can sometimes be unreliable, being able to overcome temporary issues will improve play experience. == Backgr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: Reconnect / Host change during a match  =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Network links can sometimes be unreliable, being able to overcome temporary issues will improve play experience.&lt;br /&gt;
== Background ==&lt;br /&gt;
Spring&#039;s network model implies the existance of a server to host a battle, because of various reasons, the network link between host and clients can die, a system should be designed to allow manual and/or automatic switch game 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.&lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* C++&lt;br /&gt;
* General networking knowledge&lt;br /&gt;
* Boost::asio sockets&lt;br /&gt;
* Understanding Spring&#039;s networking&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: medium to hard&lt;br /&gt;
&lt;br /&gt;
* During a drop-out, all clients can have different frame amount, it needs to determine a common point and bring all players to that to ensure sync&lt;br /&gt;
* During a server switch, particular measures should be adopted to prevent cheating&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
	<entry>
		<id>https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7771</id>
		<title>GSoC New rendering system</title>
		<link rel="alternate" type="text/html" href="https://springrts-wiki.p2004a.com/mediawiki/index.php?title=GSoC_New_rendering_system&amp;diff=7771"/>
		<updated>2010-03-11T21:46:28Z</updated>

		<summary type="html">&lt;p&gt;Brain damage: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GSoC idea: New Rendering System =&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Rendering will be faster and more extensible, making it easier to bring in new features and players. It should help prevent Spring&#039;s visuals become &#039;dated&#039; compared to commercial games running DX11 or OpenGL 3.1. It may eliminate some long-standing rendering bugs.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
The Spring rendering engine uses a lot FFP (fixed function pipeline) OpenGL functions, this model is becoming deprecated, it is generally slower than shader usage and less flexible.&lt;br /&gt;
&lt;br /&gt;
The rendering code should get a complete overhaul using modern graphic programming techniques such as shaders, implement load support for more standardized model formats (backwards compatibility with current available formats is mandatory either trough direct load or automatic conversion to the new types) and eventually introduce some graphic enhancing features (bump mapping, normal mapping, multitexturing, etc.)&lt;br /&gt;
&lt;br /&gt;
OpenGL ES 2.0 compatibility should be aimed at where possible. &lt;br /&gt;
&lt;br /&gt;
== Required skills ==&lt;br /&gt;
* Knowledge of C++&lt;br /&gt;
* Knowledge of OpenGL 2.0 API and GLSL&lt;br /&gt;
* Understanding Spring&#039;s sync system&lt;br /&gt;
&lt;br /&gt;
== Difficulty ==&lt;br /&gt;
Estimated: below medium &lt;br /&gt;
&lt;br /&gt;
* Refactor C++ code and classes&lt;br /&gt;
* Create new GLSL shaders and integrate some from Lua scripts&lt;br /&gt;
* Add threading to renderer&lt;br /&gt;
* Remove all direct OpenGL calls from synced (sim) code.&lt;br /&gt;
* Push more work onto GPU and use DMA transfers (VBOs)&lt;br /&gt;
* Reduce/refactor the amount of code paths used for rendering different world objects and model types.&lt;br /&gt;
* Use more class overriding for new rendering code (instead of branching)&lt;br /&gt;
&lt;br /&gt;
== Possible Mentor(s) ==&lt;br /&gt;
&lt;br /&gt;
[http://www.example.com FORUMLINK]&lt;br /&gt;
&lt;br /&gt;
[[Google_Summer_of_Code_2010]]&lt;/div&gt;</summary>
		<author><name>Brain damage</name></author>
	</entry>
</feed>