Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.


Required skills: Python
Difficulty: Medium
Converting data from Genie games into our nyan API format happens in so-called conversion processors. A conversion processor basically consists of a bunch of functions that are associated with converting a specific gameplay mechanic. These currently have the following tasks:
(more explanation in the docs)
Every game has its own conversion processor, but most of the functions of the default conversion processor are reused if the gameplay mechanics are the same. At the moment, the default conversion processor is the one implemented for AoC.
This code sharing system works fine, but it nevertheless could be improved. One downside of having the AoC conversion processor as default is that, if another game has made a tiny gameplay change, the whole associated function has to be reimplemented. This also includes the creation of associated objects, which are usually the same across every Genie game. The main idea behind having a generic conversion processor is to let it handle object creation (1.) and filling in member values (3.), while the conversion processors for specific games only extract values from the Genie data (2.) and pass it to the generic conversion processor.
The generic conversion processor's functions should work exactly the same as the conversion processors implemented right now, except that they should not extract any data and instead get passed a dict with values. All other conversion processors should have their functions updated to use the generic function for object creation and filling member values.