Welcome to MonoGame Extended! We're excited that you want to help expand the MonoGame ecosystem with additional functionality and tools.
MonoGame Extended is a community-driven extension library that adds features like sprite batching, input management, collision detection, content pipeline extensions, and much more to MonoGame. As an extension library, we have different priorities and workflows compared to the core MonoGame framework.
MonoGame Extended is a collection of practical utilities designed to help you prototype quickly and evolve into production without throwing away your work. We're guided by four core principles:
Prototype to Production: Our tools help you manifest early prototypes and evolve them into working games without starting over. We focus on solving present-day pain points rather than anticipating future needs.
Pragmatic, Not Opinionated: We're not an engine or framework - we're decoupled utilities that solve specific game development problems. There's no "one right way" to make games, so we provide flexible tools that adapt to your constraints.
Hardware-Aware: When beneficial, our code leverages platform-specific capabilities rather than abstracting them away. Different hardware has different strengths, and good game development tools should respect that.
Expert-Enabling: We help you become a better game developer by providing well-documented, understandable solutions. Our goal is to save you time and share knowledge, not replace your expertise.
We use a feature branch workflow with two main branches:
main- Stable releases and hotfixesdevelop- Active development and integration
All contributions should target the develop branch.
Found a bug? First, check our existing issues to avoid duplicates. When creating a bug report, our template will guide you through providing:
- Clear description of the problem
- Step-by-step reproduction instructions
- Expected vs actual behavior
- Configuration details (versions, OS, architecture)
- Error messages and stack traces when available
Pro tip: Include a minimal code example or link to a reproduction repo when possible. Text is preferred over screenshots for searchability.
Feature requests require thoughtful consideration since they affect the entire community. Our feature request template asks you to explain:
- Purpose: What problem does this feature solve?
- Motivation: Why is this important for game developers?
Before implementing any new feature:
- Submit a feature request using our template
- Wait for community discussion - feature requests need review and approval
- Consider the scope - ensure it aligns with our utility-focused approach
- Plan for testing - new features need comprehensive test coverage
Help other developers by:
- Improving API documentation
- Creating usage examples
- Writing tutorials or guides
- Updating the wiki
Architecture Principles:
- Follow MonoGame's existing patterns and conventions
- Design for extensibility - other developers should be able to build on your work
- Prefer composition over inheritance where appropriate
- Keep dependencies minimal and well-justified
Code Style:
- Follow C# coding conventions and the existing codebase style
- Use meaningful names that clearly express intent
- Write self-documenting code with appropriate comments for complex logic
- Ensure your code works across MonoGame's supported platforms
Testing Requirements:
- Include unit tests for new functionality
- Test edge cases and error conditions
- Verify cross-platform compatibility when possible
- Update existing tests if your changes affect them
- Fork and branch from
develop - Make focused commits with clear, descriptive messages
- Complete the PR checklist - we won't review incomplete submissions:
- Verify no overlapping PRs exist
- Follow contribution guidelines and code of conduct
- Write a descriptive title
- Provide appropriate test coverage
- Fill out the PR template with:
- Clear description of purpose and problem solved
- Links to related issues (use "closes #123" to auto-close issues)
- High-level overview of technical changes
- Respond to feedback during the review process
PR Best Practices:
- Keep PRs reasonably sized and focused on a single concern
- Include tests that verify your changes work correctly
- Update documentation for any API changes
- Ensure CI passes - our GitHub Actions will verify your build
- Be patient during review - we're all volunteers!
As an extension library, we have special considerations:
Compatibility:
- Don't break existing MonoGame Extended APIs without strong justification
- Consider deprecation paths for necessary breaking changes
- Ensure new features integrate well with existing components
Performance:
- Profile performance-critical code paths
- Consider memory allocation patterns
- Document any performance implications of new features
Platform Support:
- Test on multiple platforms when possible
- Be mindful of platform-specific limitations
- Use conditional compilation when necessary
- Only submit code you wrote personally or that you have explicit permission to contribute
- Never use decompiled code from any source, including XNA, MonoGame, or other game engines
- Respect third-party licenses - if you want to integrate external code, discuss it in an issue first
- Understand licensing - your contributions will be distributed under the MIT License
- Decompiled or reverse-engineered code from any source
- Large PRs that change unrelated parts of the codebase
- Style-only changes without functional improvements
- Features that duplicate core MonoGame functionality
- Breaking changes without prior discussion and approval
Need assistance or have questions?
- Discord: Join our Discord server for real-time discussion
- Issues: Use GitHub issues for bug reports and feature requests
- Discussions: Start conversations about design decisions or general questions
- .NET SDK (check the version in our global.json)
- MonoGame (compatible version specified in our dependencies)
git clone https://github.com/MonoGame-Extended/MonoGame.Extended.git
cd MonoGame.Extended
dotnet restore
dotnet build
dotnet testIf you're working on content pipeline extensions:
- Test your pipeline extensions with sample content
- Document any new content processor parameters
MonoGame Extended follows semantic versioning:
- Major versions for breaking changes
- Minor versions for new features
- Patch versions for bug fixes
We maintain compatibility with the latest stable MonoGame release and typically support one previous major version.
Contributors are recognized in our release notes and README. Significant contributors may be invited to join the maintainer team.
Thank you for helping make MonoGame Extended better for the entire community!
💖 The MonoGame Extended Team