Version 7 (modified by 5 years ago) ( diff ) | ,
---|
Table of Contents
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 |
Main Projects 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.
Helpful Links
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
?
Realistic Naval Warfare
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
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.