Thank you for your interest in contributing! This document provides guidelines and information to help you get started.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Commit Convention
- Style Guidelines
This project follows a Code of Conduct. By participating, you agree to uphold its standards. Please report unacceptable behavior via the channels listed in the Code of Conduct.
Before submitting a bug report, please check the existing issues to avoid duplicates.
When filing a bug report, include:
- Summary — A clear, concise description of the problem.
- Steps to Reproduce — Specific steps to trigger the issue.
- Expected Behavior — What you expected to happen.
- Actual Behavior — What actually happened.
- Environment — OS, architecture, and application version.
- Files — If the issue relates to specific DAT/SPR/OTB/OTBM files, mention the format version and file size.
Feature requests are welcome. Open an issue with the Feature Request template and describe:
- The problem your feature would solve.
- Your proposed solution.
- Any alternatives you've considered.
We welcome pull requests for bug fixes, improvements, and new features. For non-trivial changes, please open an issue first to discuss the approach before investing significant effort.
- .NET 10 SDK
- A C# editor (Visual Studio, VS Code with C# Dev Kit, or JetBrains Rider)
git clone https://github.com/DistTopic/assets-and-map-editor.git
cd assets-and-map-editor
dotnet build src/App/AssetsAndMapEditor.App.csprojdotnet run --project src/App/AssetsAndMapEditor.App.csprojsrc/App/— Main Avalonia application (views, view models, controls, models)src/OTB/— OTB file format parsing library.github/workflows/— CI/CD pipeline definitionsdocs/— Extended documentation
- Fork the repository and create a feature branch from
main. - Write clear commit messages following the Commit Convention.
- Test your changes — ensure the application builds and runs correctly on your platform.
- Update documentation if your change affects user-facing behavior.
- Open a pull request targeting the
mainbranch with a clear description of what and why.
A maintainer will review your PR and may request changes. Once approved, it will be merged.
This project follows Conventional Commits:
<type>(<scope>): <description>
| Type | Usage |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
refactor |
Code change that neither fixes nor adds |
perf |
Performance improvement |
test |
Adding or updating tests |
ci |
CI/CD configuration changes |
chore |
Maintenance tasks (dependencies, tooling) |
Common scopes: map, brush, sprite, otb, dat, session, minimap, ui.
feat(brush): add carpet brush type support
fix(minimap): prevent crash during render pass
docs: update README with build instructions
- Follow the default .NET coding conventions.
- Use
CommunityToolkit.Mvvmattributes ([ObservableProperty],[RelayCommand]) for view model properties and commands. - Prefer async/await for I/O-bound operations.
- Keep view models in
ViewModels/, models inModels/, and custom controls inControls/.
- Use data binding with compiled bindings where possible.
- Follow the existing theme conventions (Catppuccin Mocha dark theme).
- Keep pull requests focused — one logical change per PR.
- Avoid unrelated formatting or refactoring in the same PR.
- Write self-explanatory code; add comments only where the intent is non-obvious.
Thank you for contributing!