Contributing - luisbozz/Xenvious GitHub Wiki
- Read Game memory. Most bugs here come from a wrong offset or a write at the wrong time, not from C#.
- Open an issue for anything bigger than a fix, so the approach can be agreed first.
Conventional Commits with a scope when it helps:
feat(copyjob): copy only, copy + save, copy + publish
fix(offsets): dynamic prop count is Global_4980736.f_51387
refactor(ui): split MainWindow into partial files per page
- Subject in English, imperative or descriptive, under ~72 characters.
- The subject says what changes for the user or the code, not how you found it.
- One concern per commit. Offsets changes go in their own commit.
- C# 9 on .NET Framework 4.8. Four-space indentation, braces on their own
lines,
PascalCasefor types and members,camelCasefor locals. - Comments explain why: what the game does, what was measured, what goes
wrong otherwise. The class comments in
CreatorMap,PreciseTemplates,GameVariantandAobCacheare good examples. - Name things after what they do (
GameConnection, notStuff). - Delete dead code instead of commenting it out; git keeps the history.
- New logic without UI goes into
Creator Classes/; new pages into aMainWindow/MainWindow.<Page>.cspartial file. - Every new UI text needs a key in all six languages, see UI and translations.
There is no automated test suite for the app. Test in the game:
- Restart GTA before testing, so bytecode injected by an earlier run is gone, and close Xenvious before rebuilding (the running exe is locked).
- The creator(s) your change affects.
- The edition(s) your change affects (Legacy, Enhanced, or both).
- For anything that writes job data: save the job, reload it, and check the change survived.
Write in the pull request which creator and which edition you tested, and on which game build.
Xenvious is for building and testing creator jobs and improve the overall experience creating jobs.
- Target the default branch, keep PRs focused.
- Describe what a user sees before and after.
- Include screenshots for UI changes.
- Say what you tested (see above) and what you could not test.