Version 8 (modified by elexis, 5 years ago) ( diff )

(Set projects != project ideas)

Idea List for Google Summer of Code 2019

Future students, welcome! On this page, you will find the project ideas we propose for the 2019 edition.

These projects have been specially prepared for you and should bring you the best experience, so we strongly recommend you to take a look at them. However, if you want to propose your own projects, feel free to browse the GameplayFeatureStatus, GraphicsFeatureStatus and GamePerformance pages to find ideas.

Mentors for 2019

Name Role Contact
Itms Project leader, Developer Itms on IRC, forums, Phabricator

Project Ideas for 2019

Feature Relevant link(s) Difficulty Mentor
Continuous Integration Detail Easy Itms

Older Ideas

Feature Relevant link(s) Difficulty Mentor
Short / Vertex Pathfinder Rewrite Detail #1942 Hard Itms
Potential AI architecture improvement Detail Hard
Improved Threading Detail Medium
Realistic Naval Warfare Detail #940 #305 Medium Itms
Terrain texture blending Detail Easy vladislavbelov

Projects

Continuous Integration Improvements

Details

Patches on Phabricator are built and tested through our Jenkins instance. However, we could do a lot more with this system. It would be necessary to test patches on Windows and with clang. Other possible improvements include:

  • adding macOS testing with Travis/CircleCI
  • adding continuous integration on our translations
  • running automated profiling on the game using the AI
  • extending the linter so that small typos can be automatically fixed
  • and much more. See the tentative list linked below for extra ideas about things that could be automatically tested.

Expected Result

Robust continuous integration which allows the development team to be confident when committing patches. At least: consistent testing with MSVC, gcc and clang. We can discuss a bigger main task to complete depending on the student's tastes and skills.

Required Prerequisites

Knowledge in the CI/CD and DevOps areas, familiarity with C++ build systems. Experience with Jenkins would be greatly appreciated.

This old tentative list
Our Jenkins instance

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.
This potentially means finding novel ways of short-term pathfinding, such as crowd movements. Work is already ongoing in that direction, so this area is subject to a lot of cross-team talk.

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

Potential improvements to the AI architecture

Details

The current AI in 0 A.D. runs a lot of very complex calculations all in JavaScript which can become very slow. We have discussed moving intensive calculations to C++, or relying more on the C++ (for pathfinding for example), but this has never proved 100% satisfactory (it is assumed converting data from JS to C++ and vice-versa is too slow). New ideas could be brought to the table, and actual extensive testing is required anyhow.

Expected Result

Improvements in AI efficiency, to which extent is currently hard to tell (this will have to be determined too).

Required Prerequisites

Fluency in C++ and JavaScript. Experience with SpiderMonkey and optimization is a definite plus, having worked with AI and threading could be useful too.

Helpful Links

This forum thread might be helpful.

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

?

Details

As of now, naval 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

Improve Terrain texture blending

Details

This is sort of a subset of the rendering improvement. The terrain texture blending in 0 A.D. is imperfect: it can only blend two textures together, using alpha maps, over one tile only; this leads to uglyness, notably in random maps. Rewriting this system could lay groundwork for other improvements and could significantly improve the look of the game.

Expected Result

Terrain blending should probably support an arbitrary number of textures (or at least several), and should look prettier and be more customizable (both for smoother or less smooth transitions).

Required Prerequisites

Experience with C++, OpenGL, and graphics programming in general would help.

Helpful Links

None really so far.

Note: See TracWiki for help on using the wiki.