Skip to content

bluemryld/ALGAE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ALGAE - Advanced Launcher for Games and Associated Executables

A modern, Material Design-based WPF application for managing and launching your game library with a clean, professional interface.

๐ŸŽฎ Features

Current Features

  • Modern UI: Clean Material Design interface with intuitive navigation
  • Game Library Management: Add, edit, and organize your game collection with full CRUD operations
  • Advanced Game Launch System:
    • Comprehensive game validation before launch
    • Support for custom launch arguments and working directories
    • Profile-based launching with companion applications
    • Launch history tracking with performance metrics
    • Real-time launcher window with progress monitoring
  • Automatic Game Detection:
    • Comprehensive game signatures database with 500+ games
    • Intelligent game scanning with configurable search paths
    • Game verification and duplicate detection
    • Progress tracking during scan operations
  • Game Signatures Management:
    • Built-in database of popular games with metadata
    • Custom signature creation and management
    • Signature-based automatic game identification
    • Import/export signature functionality
  • Companion Applications:
    • Launch supporting applications alongside games
    • Companion app management and configuration
    • Integration with game profiles for automated launching
  • Multiple Navigation Options:
    • Enhanced sidebar with Signatures and Companions views
    • Top menu bar with keyboard shortcuts
    • Keyboard shortcuts (Ctrl+1 for Home, Ctrl+2 for Games, Ctrl+3 for Signatures, Ctrl+4 for Companions, Ctrl+5 for Launcher, F5 for Refresh)
  • Add/Edit Game Dialog:
    • Form validation with real-time feedback
    • Auto-generation of short names
    • Browse functionality for game folders and executables
    • Keyboard shortcuts for quick actions
  • Games View:
    • Professional card-based game display
    • Advanced search and filtering capabilities
    • Launch, edit, and delete game actions
    • Empty state guidance for new users
    • Loading states with progress indicators
  • Launcher Window (Opens automatically on game launch):
    • Real-time monitoring of running games
    • Process performance statistics (CPU, memory usage)
    • Game session tracking with play time
    • Window management controls (minimize, bring to front, stop)
    • Recent sessions history
    • Separate window for better monitoring experience
  • Profile System:
    • Create custom launch profiles with specific arguments
    • Companion application support (launch related tools with games)
    • Profile-specific game configurations
  • Launch History & Analytics:
    • Comprehensive tracking of all game launches
    • Success/failure logging with detailed error messages
    • Performance metrics (memory usage, session duration)
    • Launch statistics and trends

Planned Features

  • Game Categories & Tags: Organize games with custom categories
  • Custom Game Icons: Support for custom game artwork
  • Import/Export: Backup and restore your game library
  • Steam Integration: Import games from Steam library
  • Enhanced Analytics: Advanced play time statistics and trends
  • Cloud Sync: Synchronize game library across devices

๐Ÿ› ๏ธ Technology Stack

  • Framework: .NET 8.0 with WPF
  • UI Framework: Material Design In XAML Toolkit
  • Architecture: MVVM pattern with CommunityToolkit.Mvvm
  • Database: SQLite with Entity Framework Core
  • Dependency Injection: Microsoft.Extensions.Hosting
  • Logging: Serilog

๐Ÿ“‹ Prerequisites

  • .NET 8.0 SDK or later
  • Windows 10/11 (WPF requirement)
  • Visual Studio 2022 or JetBrains Rider (recommended for development)

๐Ÿš€ Getting Started

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd ALGAE
  2. Restore dependencies:

    dotnet restore
  3. Build the application:

    dotnet build
  4. Run the application:

    dotnet run --project ALGAE

First Time Setup

  1. Launch the application
  2. Click "Add Game" to start building your library
  3. Use the browse buttons to select game folders and executables
  4. Fill in game details (name, publisher, version, description)
  5. Save and launch your games!

๐Ÿ“ Project Structure

ALGAE/
โ”œโ”€โ”€ ALGAE/                          # Main WPF application
โ”‚   โ”œโ”€โ”€ Views/                      # XAML views and code-behind
โ”‚   โ”‚   โ”œโ”€โ”€ MainWindow.xaml         # Main application window
โ”‚   โ”‚   โ”œโ”€โ”€ HomeView.xaml           # Home/dashboard view
โ”‚   โ”‚   โ”œโ”€โ”€ GamesView.xaml          # Games library view
โ”‚   โ”‚   โ”œโ”€โ”€ GameSignaturesView.xaml # Game signatures management
โ”‚   โ”‚   โ”œโ”€โ”€ CompanionsView.xaml     # Companion applications management
โ”‚   โ”‚   โ”œโ”€โ”€ LauncherView.xaml       # Game launcher/monitor view
โ”‚   โ”‚   โ”œโ”€โ”€ LauncherWindow.xaml     # Separate launcher window
โ”‚   โ”‚   โ”œโ”€โ”€ GameScanProgressDialog.xaml # Game scanning progress
โ”‚   โ”‚   โ”œโ”€โ”€ GameVerificationDialog.xaml # Game verification results
โ”‚   โ”‚   โ””โ”€โ”€ AddEditGameDialog.xaml  # Add/edit game dialog
โ”‚   โ”œโ”€โ”€ ViewModels/                 # MVVM view models
โ”‚   โ”‚   โ”œโ”€โ”€ MainViewModel.cs        # Main navigation logic
โ”‚   โ”‚   โ”œโ”€โ”€ HomeViewModel.cs        # Home view logic
โ”‚   โ”‚   โ”œโ”€โ”€ GamesViewModel.cs       # Games management logic
โ”‚   โ”‚   โ”œโ”€โ”€ GameSignaturesViewModel.cs # Game signatures management
โ”‚   โ”‚   โ”œโ”€โ”€ CompanionsViewModel.cs  # Companion applications logic
โ”‚   โ”‚   โ”œโ”€โ”€ GameScanProgressViewModel.cs # Game scanning progress
โ”‚   โ”‚   โ”œโ”€โ”€ GameVerificationViewModel.cs # Game verification logic
โ”‚   โ”‚   โ”œโ”€โ”€ LauncherViewModel.cs    # Game launcher/monitor logic
โ”‚   โ”‚   โ””โ”€โ”€ GameDetailViewModel.cs  # Game details and profiles
โ”‚   โ”œโ”€โ”€ Services/                   # Application services
โ”‚   โ”‚   โ”œโ”€โ”€ IGameLaunchService.cs   # Game launching interface
โ”‚   โ”‚   โ”œโ”€โ”€ GameLaunchService.cs    # Game launching implementation
โ”‚   โ”‚   โ”œโ”€โ”€ IGameDetectionService.cs # Game detection interface
โ”‚   โ”‚   โ”œโ”€โ”€ GameDetectionService.cs # Automatic game detection
โ”‚   โ”‚   โ”œโ”€โ”€ IGameSignatureService.cs # Game signatures interface
โ”‚   โ”‚   โ”œโ”€โ”€ GameSignatureService.cs # Game signature management
โ”‚   โ”‚   โ”œโ”€โ”€ GameProcessMonitorService.cs # Process monitoring
โ”‚   โ”‚   โ”œโ”€โ”€ LauncherWindowManager.cs # Launcher window management
โ”‚   โ”‚   โ””โ”€โ”€ NotificationService.cs  # UI notifications
โ”‚   โ”œโ”€โ”€ Converters/                 # XAML value converters
โ”‚   โ””โ”€โ”€ App.xaml                    # Application resources and startup
โ”œโ”€โ”€ ALGAE.Core/                     # Core business logic
โ”œโ”€โ”€ ALGAE.DAL/                      # Data access layer
โ”‚   โ”œโ”€โ”€ Models/                     # Entity models
โ”‚   โ”‚   โ”œโ”€โ”€ Game.cs                 # Game entity
โ”‚   โ”‚   โ”œโ”€โ”€ GameSignature.cs        # Game signature entity
โ”‚   โ”‚   โ”œโ”€โ”€ SearchPath.cs           # Search path configuration
โ”‚   โ”‚   โ”œโ”€โ”€ Profile.cs              # Launch profile entity
โ”‚   โ”‚   โ”œโ”€โ”€ Companion.cs            # Companion app entity
โ”‚   โ”‚   โ””โ”€โ”€ LaunchHistory.cs        # Launch tracking entity
โ”‚   โ”œโ”€โ”€ Repositories/               # Data repositories
โ”‚   โ”‚   โ”œโ”€โ”€ IGameRepository.cs      # Game data interface
โ”‚   โ”‚   โ”œโ”€โ”€ ILaunchHistoryRepository.cs # Launch history interface
โ”‚   โ”‚   โ””โ”€โ”€ [Other repositories]    # Additional data access
โ”‚   โ””โ”€โ”€ DatabaseContext.cs         # EF Core context
โ”œโ”€โ”€ ALGAE.Tests/                    # Unit and integration tests
โ””โ”€โ”€ README.md                       # This file

๐Ÿงช Testing

ALGAE includes comprehensive unit tests covering critical business logic:

  • 24 unit tests covering game launch validation, ViewModel logic, and services
  • Test data builders for consistent test setup
  • Mock-based testing with AutoMocker for dependency isolation
  • Arrange-Act-Assert pattern for readable tests

Running Tests

# Run all tests
dotnet test ALGAE.Tests

# Run with detailed output
dotnet test ALGAE.Tests --logger console --verbosity normal

Test Coverage

โœ… Current Coverage (24 Tests)

  • GameLaunchService (validation, file system, launch logic)
  • GamesViewModel (data loading, search, launch commands)
  • Test data builders and mock infrastructure
  • Service layer integration testing

๐Ÿ“‹ Planned Coverage

  • Additional ViewModels (GameDetailViewModel, LauncherViewModel, GameSignaturesViewModel)
  • Repository integration tests
  • Game detection and signature services
  • Companion application services

For detailed testing information, see TESTING.md.

๐Ÿ”ง Configuration

Database

The application automatically creates a SQLite database:

  • Development: ALGAE-dev.db in the project folder
  • Production: %AppData%/AlgaeApp/Database/ALGAE.db

Logging

Logs are stored in:

  • Development: logs/development-log.txt in the project folder
  • Production: %AppData%/AlgaeApp/Logs/ALGAE-Log.txt

โŒจ๏ธ Keyboard Shortcuts

  • Ctrl+1 - Navigate to Home
  • Ctrl+2 - Navigate to Games
  • Ctrl+3 - Navigate to Signatures
  • Ctrl+4 - Navigate to Companions
  • Ctrl+5 - Navigate to Launcher
  • F5 - Refresh current view
  • Ctrl+N - Add new game (in Games view)
  • Enter - Save (in dialogs)
  • Escape - Cancel (in dialogs)

๐Ÿ—๏ธ Development

Building from Source

  1. Ensure you have .NET 8.0 SDK installed
  2. Clone the repository
  3. Open in Visual Studio or your preferred IDE
  4. Build and run the solution

Architecture Overview

The application follows MVVM (Model-View-ViewModel) architecture:

  • Models: Located in ALGAE.DAL, represent data entities
  • Views: XAML files defining the UI layout
  • ViewModels: Handle UI logic and data binding
  • Services: Business logic and data access (in ALGAE.Core and ALGAE.DAL)

Key Dependencies

  • MaterialDesignThemes.Wpf - Material Design UI components
  • CommunityToolkit.Mvvm - MVVM helpers and source generators
  • Microsoft.EntityFrameworkCore.Sqlite - Database access
  • Serilog - Logging framework

๐Ÿ› Troubleshooting

Common Issues

Application won't start

  • Ensure .NET 8.0 runtime is installed
  • Check for missing dependencies with dotnet restore

Games view not showing

  • This was a known issue caused by missing value converters, now resolved

Database errors

  • Delete the database file to reset (will lose all data)
  • Check write permissions in the application data folder

Logging

Check the log files for detailed error information:

  • Development: logs/development-log.txt
  • Production: %AppData%/AlgaeApp/Logs/ALGAE-Log.txt

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

Development Guidelines

  1. Follow MVVM pattern for new features
  2. Use Material Design components where possible
  3. Add appropriate logging for new functionality
  4. Include XML documentation for public methods
  5. Test thoroughly before submitting PRs

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™‹โ€โ™‚๏ธ Support

If you encounter any issues or have questions:

  1. Check the troubleshooting section above
  2. Look through existing GitHub issues
  3. Create a new issue with detailed information about the problem

๐Ÿ—บ๏ธ Roadmap

  • Steam library integration
  • Automatic game detection and scanning
  • Custom game categories and tagging
  • Game statistics and analytics
  • Custom themes and appearance options
  • Export/import functionality
  • Multi-language support

ALGAE - Making game management simple and beautiful! ๐ŸŽฎโœจ

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors