Skip to main content

Project Status

This project is in maintenance mode and is considered feature complete. It will continue to receive updates with bugfixes and support for new versions of the game.
The launcher is actively maintained by contributors who keep it up to date with the latest game changes. The project’s future is in the universal launcher which aims to unite all An Anime Team launchers.

Getting Started

Before contributing, make sure you:
  1. Join the Discord server - All project communication happens on Discord
  2. Read the wiki - Check the project wiki for context
  3. Set up your development environment - Follow the building guide
  4. Understand the architecture - Review the architecture documentation

Development Workflow

Setting Up Your Development Environment

1

Fork and clone

Fork the repository on GitHub and clone your fork:
git clone https://github.com/YOUR_USERNAME/an-anime-game-launcher.git
cd an-anime-game-launcher
2

Add upstream remote

Add the original repository as upstream:
git remote add upstream https://github.com/an-anime-team/an-anime-game-launcher.git
3

Install dependencies

Install all required development dependencies as described in the building guide.
4

Test the build

Verify everything works:
cargo build
cargo run

Making Changes

1

Create a feature branch

Always work in a feature branch:
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-description
2

Make your changes

  • Write clean, readable code
  • Follow existing code style and patterns
  • Test your changes thoroughly
  • Update documentation if needed
3

Test your changes

Run the launcher and test affected functionality:
# Run with debug output
cargo run -- --debug

# Test specific scenarios
cargo run -- --session test

# Check code compiles
cargo check
4

Commit your changes

Write clear, descriptive commit messages:
git add .
git commit -m "feat: add support for new game version"
# or
git commit -m "fix: resolve crash on startup with missing config"

Code Style Guidelines

Rust Code Style

The project uses standard Rust formatting. A rustfmt.toml is provided:
# Format your code
cargo fmt

# Check formatting without modifying files
cargo fmt -- --check

Code Organization

  • Modularity: Keep components self-contained and focused
  • Use existing patterns: Follow the Relm4 component architecture used throughout
  • Error handling: Use anyhow::Result for error propagation
  • Logging: Use tracing macros for logging:
    tracing::info!("Starting download");
    tracing::warn!("Configuration may be outdated");
    tracing::error!("Failed to parse response: {}", err);
    

File Organization

Follow the existing structure:
  • UI components in src/ui/
  • Group related functionality in modules
  • Use mod.rs for module coordination
  • Keep business logic separate from UI code

Localization

The launcher supports multiple languages using Fluent:

Adding New Translations

1

Locate language files

Translation files are in assets/locales/:
assets/locales/
├── en/
├── es/
├── fr/
├── zh_cn/
└── ...
2

Add or update translations

Edit the .ftl files for your language:
# Example from en/main.ftl
welcome = Welcome to An Anime Game Launcher
launch-game = Launch Game
downloading = Downloading...
3

Use the fluentscan tool

The project includes fluentscan.py to help manage translations:
python3 fluentscan.py

Submitting Contributions

Pull Request Process

1

Update your branch

Ensure your branch is up to date with upstream:
git fetch upstream
git rebase upstream/main
2

Push to your fork

git push origin feature/your-feature-name
3

Create pull request

  1. Go to the main repository
  2. Click “Pull requests” → “New pull request”
  3. Click “compare across forks”
  4. Select your fork and branch
  5. Fill in the PR template with:
    • Description: What changes you made and why
    • Testing: How you tested the changes
    • Related issues: Link any related issues
4

Respond to feedback

  • Be responsive to review comments
  • Make requested changes promptly
  • Ask questions if anything is unclear

Pull Request Guidelines

Use conventional commit format:
  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • style: - Code style changes (formatting, etc.)
  • refactor: - Code refactoring
  • perf: - Performance improvements
  • test: - Adding or updating tests
  • chore: - Maintenance tasks
Examples:
  • feat: add support for game version 5.0
  • fix: prevent crash when config is corrupted
  • docs: update installation instructions
Good PRs include:
  • Clear description of changes
  • Explanation of why the change is needed
  • Screenshots for UI changes
  • Testing steps you performed
  • Reference to related issues
Avoid:
  • Mixing unrelated changes
  • Large refactors without discussion
  • Changes to code formatting across the entire codebase
  • Adding dependencies without justification

Bug Reports and Issues

Reporting Bugs

Contact the dev directly on Discord for bug reports and questions. GitHub issues may not be monitored as actively.
When reporting issues:
  1. Check existing issues - Your issue may already be reported
  2. Use Discord first - Most questions can be answered quickly there
  3. Provide details:
    • Launcher version (anime-game-launcher --version)
    • Distribution and version
    • Desktop environment (GNOME, KDE, etc.)
    • Steps to reproduce
    • Debug logs from ~/.local/share/anime-game-launcher/debug.log

Running in Debug Mode

Always include debug logs with bug reports:
# Run with debug output
./anime-game-launcher --debug

# Debug log location
~/.local/share/anime-game-launcher/debug.log

Working with anime-launcher-sdk

Many features are implemented in the SDK. If your contribution requires SDK changes:
1

Check if SDK changes are needed

The SDK handles:
  • Game version checking and updates
  • Wine/Proton management
  • DXVK installation
  • Game configuration and state
  • Patch application
2

Coordinate changes

  1. Discuss on Discord first
  2. Submit SDK PR if needed
  3. Wait for SDK changes to be released
  4. Update launcher to use new SDK version
3

Test with local SDK

For development, use a local SDK path:
[dependencies.anime-launcher-sdk]
path = "../anime-launcher-sdk"
features = ["all", "genshin"]
Remember to revert before submitting!

Documentation Contributions

Documentation is as important as code:

Wiki Updates

The project wiki contains installation guides and FAQ. Help keep it up to date!

Code Comments

Well-commented code helps future contributors understand your changes.

README Updates

Keep README.md accurate, especially installation instructions.

CHANGELOG

Significant changes should be noted in CHANGELOG.md

Community Guidelines

Communication

  • Be respectful - Treat all community members with respect
  • Be patient - Maintainers and contributors are volunteers
  • Be constructive - Provide helpful feedback and suggestions
  • Use Discord - Most real-time discussion happens there

What to Contribute

Given the maintenance mode status, focus on:
Welcomed contributions:
  • Bug fixes for crashes or critical issues
  • Compatibility updates for new game versions
  • Translation updates and new languages
  • Documentation improvements
  • Build system fixes
  • Performance optimizations
Discuss first:
  • New features (project is feature-complete)
  • Large refactors
  • Dependency changes
  • UI/UX changes

Package Maintainers

If you maintain a distribution package:
  1. Join Discord - Stay updated on releases
  2. Test pre-releases - Help catch issues before stable release
  3. Report downstream issues - Share problems specific to your distribution
  4. Keep wiki updated - Update installation instructions for your distro
See the README for current package maintainers.

Getting Help

Discord Server

Join for real-time help and discussion

Wiki

FAQ and detailed guides

Repository

Source code and issues

Changelog

See what’s changed over time

License

By contributing to An Anime Game Launcher, you agree that your contributions will be licensed under the GPL-3.0 License.
Thank you for contributing to An Anime Game Launcher! Your efforts help keep the project alive and serve the community.

Build docs developers (and LLMs) love