Code-Contibutions
TazUO Code Contribution Guide
Section titled “TazUO Code Contribution Guide”Welcome to TazUO! We appreciate your interest in contributing to our custom Ultima Online client. TazUO is a C# FNA-based game that utilizes SDL2, originally forked from ClassicUO but now maintained as an independent project focused on quality-of-life improvements for players.
🌳 Branch Structure & Targeting
Section titled “🌳 Branch Structure & Targeting”IMPORTANT: Please read this section carefully to ensure your contributions go to the right place.
Target Branches
Section titled “Target Branches”legacy
- Target this branch for .NET Framework 4.7.2 code contributionsdev
- Target this branch for .NET 9 code contributions (actively maintained)main
- DO NOT TARGET - This is the stable release branch
Development Focus
Section titled “Development Focus”- Primary Development: Most active development happens on the
.NET 9
version (dev
branch) - Legacy Version: We also maintain a
.NET 472
version (legacy
branch) for plugin compatibility
🚀 Getting Started
Section titled “🚀 Getting Started”Prerequisites
Section titled “Prerequisites”- .Net installed.
- Git for version control
- Basic understanding of C#, FNA framework, and SDL2
Repository Setup
Section titled “Repository Setup”- Fork the repository from https://github.com/PlayTazUO/TazUO
- Due to using an older FNA version, you need to run this:
Terminal window git config --global url."https://".insteadOf git:// - Clone your fork locally:
Terminal window git clone https://github.com/YOUR_USERNAME/TazUO.gitcd TazUO - Set up the upstream remote:
Terminal window git remote add upstream https://github.com/PlayTazUO/TazUO.git
Choosing Your Target Branch
Section titled “Choosing Your Target Branch”Before starting any work, decide which version you want to contribute to:
-
Contributing to .NET 4.7.2 (legacy):
Terminal window git checkout legacygit pull upstream legacygit checkout -b your-feature-name -
Contributing to .NET 9 (dev):
Terminal window git checkout devgit pull upstream devgit checkout -b your-feature-name
📋 Contribution Guidelines
Section titled “📋 Contribution Guidelines”Code Standards
Section titled “Code Standards”- Follow C# naming conventions and coding standards
- Maintain consistency with existing codebase style
- Add appropriate comments for complex logic
- Test your changes before submitting a PR
🔄 Pull Request Process
Section titled “🔄 Pull Request Process”Before Submitting
Section titled “Before Submitting”- Test thoroughly - Ensure your changes work in various scenarios
- Check compatibility - Test with different UO server configurations if applicable
- Update documentation - Add or update relevant documentation
- Follow branch targeting - Ensure you’re targeting the correct branch (
legacy
ordev
)
Submitting Your PR
Section titled “Submitting Your PR”- Push your feature branch to your fork
- Create a Pull Request against the appropriate upstream branch:
- For .NET 4.7.2 features: Target
legacy
branch - For .NET 9 features: Target
dev
branch
- For .NET 4.7.2 features: Target
- Never target
main
- This will be rejected
PR Description Template
Section titled “PR Description Template”## DescriptionBrief description of the changes made.
## Type of Change- [ ] Bug fix- [ ] New feature- [ ] Performance improvement- [ ] Code refactoring- [ ] Documentation update
## TestingDescribe how you tested these changes.
## Screenshots (if applicable)Add screenshots to help explain your changes.
## Additional NotesAny additional information relevant to the PR.
🐛 Bug Reports & Feature Requests
Section titled “🐛 Bug Reports & Feature Requests”- Bug Reports: Use GitHub Issues with detailed reproduction steps
- Feature Requests: Join our Discord or use GitHub Discussions to propose new features
- Wiki Updates: Check our [wiki](https://github.com/PlayTazUO/TazUO/wiki) for existing feature documentation
💬 Community & Support
Section titled “💬 Community & Support”- Discord: Join our Discord server for real-time discussion and support
- GitHub Discussions: For feature proposals and general discussion
- Wiki: Comprehensive documentation of TazUO features and changes
📝 Important Notes
Section titled “📝 Important Notes”Branch Targeting Reminder
Section titled “Branch Targeting Reminder”- ✅ legacy - .NET Framework 4.7.2 development
- ✅ dev - .NET 9 development
- ❌ main - DO NOT TARGET (stable releases only)
Project Philosophy
Section titled “Project Philosophy”TazUO has evolved beyond its ClassicUO origins. While we monitor ClassicUO for useful updates, we maintain our own roadmap focused on user-requested features and quality-of-life improvements. Our goal is to enhance the Ultima Online experience while maintaining the classic feel players love.
🙏 Recognition
Section titled “🙏 Recognition”All contributors are valued members of the TazUO community. Significant contributions will be recognized in our release notes and project documentation.
Thank you for contributing to TazUO! Your efforts help make Ultima Online more enjoyable for players worldwide.