Version 3 (modified by Josh, 10 years ago) ( diff )

Initial bit on improved model culling

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
Short / Vertex Pathfinder Rewrite Detail #1942 Hard
Rewrite the AI base system in C++ Detail Hard
Different Game Modes Detail Easy
Improved Threading Detail Medium
NAT Transversal Detail #2305 Medium
Realistic Naval Warfare Detail #940 #305 Medium
OpenGL ES 2.0 Support Detail Easy
Improved Model Culling Detail #2337 Medium

Projects

Short / Vertex Pathfinder Rewrite

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.

Ticket #1942

Rewrite the AI Base System in C++

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 forum thread might be helpful.

Different Game 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

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

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 Incomplete/failed try at implementation

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

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

AMD OpenGL ES SDK Git branch of historicbruno's work towards better GLES support

Improved Model Culling

Details

TODO

Expected Result

TODO

Required Prerequisites

Experience with C++, OpenGL, and graphics programming.

Helpful Links

#2337

Note: See TracWiki for help on using the wiki.