Generic nyan conversion processor
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 14.4k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
Required skills: Python
Difficulty: Hard
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:
- Create the necessary nyan objects
- Extract values for the gameplay mechanic from the Genie data
- Fill in the nyan object's member values using the read values
(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.
Further reading:
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read the converter architecture and workflow documentation first, especially the processor section, then inspect the processors in openage/convert/processor. Identify how current processors create objects, extract Genie values, and fill member values. Done means a generic processor handles creation and member filling while game-specific processors only extract and pass values, without changing existing behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100