A joint MonoGame engine effort
- Target unit test code coverage: 75%
- Custom attributes are allowed under the following conditions:
- The same effect can be achieved at runtime with a dedicated fluent API
- When applicable, custom code analyzers will keep attribute usage in check
- Embrace DI (preferably Autofac) and avoid global values
- Embrace mock git/open source traditions
- Work on feature branches, require PRs to merge into main
- Require issues for all PRs and commits into main (squash?)
- Learn how to setup automated workflows for unit tests
- Work together to decide if a feature belongs in the engine or is too specific and belongs in a game
- No copy/pasting code. All code must be hand written even if sourced from elsewhere
- Keep code well documented, easy to read, and simple
- Avoid unnecessary complexity even if its 'cool'.
- If, for whatever reason, complexity is unavoidable (reflection, IL, ect) create a local readme to document in detail what is going on and why
- Embrace existing libraries where possible. No need to re-invent the wheel
- Prioritize complex libraries (physics engines, networking, monogame, ect)
- Avoid just adding libraries out of lazyness
- Use submodules when possible - having local source code makes debugging easier