[[TOC]] = Idea List for Google Summer of Code 2014 = This list has been culled from GameplayFeatureStatus, GraphicsFeatureStatus, and GamePerformance. == Project Shortlist == ||= Feature =||= Relevant link(s) =||= Difficulty =|| {{{#!tr style="background: DarkSalmon" || Short / Vertex Pathfinder Rewrite || [#pathfinder Detail] #1942 || Hard || }}} {{{#!tr style="background: DarkSalmon" || RewriteAI Rewrite the AI base system in C++ || [#ai Detail] || Hard || }}} {{{#!tr style="background: LightGreen" || Different Game Modes || [#modes Detail] || Easy || }}} {{{#!tr style="background: LightGoldenrodYellow" || Better Threading || [#threading Detail] || Medium || }}} {{{#!tr style="background: LightGoldenrodYellow" || NAT Transversal || [#nat Detail] #2305 || Medium || }}} {{{#!tr style="background: LightGoldenrodYellow" || Realistic Naval Warfare || [#navelwarfare Detail] #940 #305 || Medium || }}} {{{#!tr style="background: LightGreen" || OpenGL ES 2.0 Support || [#gles Detail] || Easy || }}} == Projects == === Short / Vertex Pathfinder Rewrite === #pathfinder ==== Details ==== The current short-range pathfinder in 0 A.D. is one of our greatest bottlenecks and needs to be re-written to work with the new long range pathfinder and our formation system. ==== Expected Result ==== New short-range pathfinder which fits with 0 A.D.'s gameplay and is at least 4 times faster. ==== Required Prerequisites ==== Fluency in C++, familiarity with pathfinding systems, and experience in C++ optimization. ==== Helpful Links ==== Ticket #1942 === Rewrite the AI Base System in C++ === #ai ==== Details ==== The current AI in 0 A.D. runs a lot of very complex calculations all in JavaScript which can become very slow. We would like to see the intensive calculations moved to C++ and merged with existing implementations where possible (for example the current AI has it's own pathfinder in JS!!!). ==== Expected Result ==== New base AI system in C++ and near 10 times AI performance improvement. ==== Required Prerequisites ==== Fluency in C++ and JavaScript. Experience with optimization, AI development, and SpiderMonkey is a plus. ==== Helpful Links ==== This [http://www.wildfiregames.com/forum/index.php?showtopic=16991 forum thread] might be helpful. === Different Game Modes === #modes ==== Details ==== Currently 0 A.D. has only two game mode - conquest or wonder - obliterate your enemies or build a wonder to win. This lacking number is atypical to an RTS and should be expanded upon with game modes like "Regicide", "Deathmatch", "King of the Hill" and, "Treaty". The details of each game mode would be worked out with the project manager, but an example of how the "Regicide" game mode would work should give you an idea of what this would entail. A game started as a Regicide game would initially be identical to a normal game, excepting the fact that each player starts with a powerful "regent" unit. The goal of a Regicide game would also be different. Your opponent's sole goal would be to eliminate your regent at which point you would immediately lose. ==== Expected Result ==== At least one new game mode. ==== Required Prerequisites ==== Experience in C++ and JavaScript. Experience with game (any, not only computer game) development is a plus. ==== Helpful Links ==== ? === Better Threading === #threading ==== Details ==== Right now 0 A.D. has a number of minor threads, but all the major calculations are run in the main thread. We would like to see some of the more intensive loads split into their own threads so as to take better advantage of modern multicore processors. Potential processes to be split out would be the Range Manager, Renderer, or AI (it would be awesome if each AI could get its own thread). ==== Expected Result ==== At least one major computational load being isolated into its own thread. ==== Required Prerequisites ==== Fluency in C++ and experience using pthreads. (Familiarity with SpiderMonkey and JavaScript may also be required depending on the component) ==== Helpful Links ==== ? === NAT Transversal === #nat ==== Details ==== Right now in 0 A.D. we use a primitive UPnP system to implement NAT transversal but this system is unreliable. We'd like to see a better method using UDP Hole Punching instead. The solution would most likely involve interacting with the lobby server to get transversal information. ==== Expected Result ==== Enabling 0 A.D. clients to connect to a host behind any type of NAT. ==== Required Prerequisites ==== Fluency in C++ and understanding of NAT transversal. JavaScript knowledge would also be recommended. (Ability to learn/familiarity with erlang would also be required when dealing with the lobby server) ==== Helpful Links ==== #2305 [https://github.com/JoshuaJB/0ad/tree/lobby Incomplete/failed try at implementation] === Realistic Naval Warfare === #navalwarfare ==== Details ==== As of now, navel battles in 0 A.D. are at best confusion because naval units generally try to behave exactly like land units. Some things which could help with this would be, * Smart/realistic boat movement (so that the boat obstruction sizes can be increased to actually match the model size without horrible movement behavior) * Better battle animation (like make the ram attack actually visible) This area is open to suggestions, so any good idea goes. ==== Expected Result ==== Improved gameplay experience in naval combat. ==== Required Prerequisites ==== Fluency in JavaScript and at least basic C++ experience. Experience with game (any, not only computer game) development is a plus. ==== Helpful Links ==== #940 #305 === OpenGL ES 2.0 Support === #gles ==== Details ==== Right now we have just enough support of OpenGL ES 2.0 to launch an error-ridden game on Android. We would like to be able to transparently support OpenGL ES 2.0. Firstly, everything available in 0 A.D. on normal OpenGL 2.0 hardware should be available in the ES version. Secondly, we should support using OpenGL ES 2.0 in a typical environment with X-windows (might require fighting SDL). ==== Expected Result ==== Ability to play the game in GLSL mode on an OpenGL ES 2.0 system running X-windows. ==== Required Prerequisites ==== Experience with C++ and OpenGL. SDL experience could also be helpful. ==== Helpful Links ==== [http://developer.amd.com/tools-and-sdks/graphics-development/amd-opengl-es-sdk/ AMD OpenGL ES SDK] [https://github.com/historicbruno/0ad/tree/gles-testing Git branch of historicbruno's work towards better GLES support]