Skip to content

Latest commit

 

History

History
152 lines (113 loc) · 9.34 KB

README.md

File metadata and controls

152 lines (113 loc) · 9.34 KB

League of Legends Client (WPF)

English 中文 한국어

This is a high-quality reproduction project of the League of Legends client using WPF. The project includes various technical implementations of WPF and demonstrates a broad technical approach to the distributed design of large-scale projects.

License: MIT .NET Stars Forks Issues

League of Legends XAML-Based Series:


League of Legends Client (WPF)
League of Legends Client (Uno-Platform)
League of Legends Client (WinUI 3)

Project Introduction

We have been researching and gaining experience with WPF technology since 2008. Over the years, various XAML-based cross-platform technologies such as Xamarin, MAUI, Uno-Platform, AvaloniaUI, and OpenSilver have evolved, opening up possibilities to extend the techniques accumulated in WPF to cross-platform development.

This League of Legends WPF version we are releasing is built on the foundation of XAML-based rich UX, C#'s object-oriented design, and a systematic project structure. It maximizes the powerful features of WPF while considering the potential for future expansion to other XAML-based platforms.

This project demonstrates how to implement large-scale projects in WPF. By implementing complex controls as CustomControls, we aim to provide developers with rich learning materials. It also includes various technical implementation cases of WPF, showing how to utilize WPF's powerful features in real projects.

In particular, this project presents a broad approach to the distributed design of large-scale applications. It shows how to structure and manage complex applications through modularized structures, efficient state management, and scalable architecture.

The Jamesnet.Core framework library is designed based on .NET Standard 2.0 to work identically in WPF and Uno. This library is provided as Jamesnet.Window for WPF and Jamesnet.Uno for Uno-Platform.

This project directly references the actual source code of Jamesnet.Core and Jamesnet.Window, allowing you to learn about the design methods of XAML-based frameworks.

Through this project, we aim to showcase the powerful features of WPF while presenting the possibility of expansion to various XAML-based platforms such as Uno-Platform, MAUI, AvaloniaUI, OpenSilver, and WinUI3 in the future, opening new horizons for cross-platform development.

Core Technology Stack

The repository includes all framework source code.

  • Jamesnet.Core: Cross-platform core library based on .NET Standard 2.0
  • Jamesnet.Windows: Window management and UI framework optimized for WPF

These two libraries can be used identically in both WPF and Uno-Platform, and include all core functionalities necessary for the architectural design of large-scale projects.

Key Features and Implementations

  1. Large-scale Project Architecture

    • Modular and distributed system design
    • Loose coupling through dependency injection
    • Plugin-based extensible structure
  2. Advanced WPF Techniques

    • Implementation of various CustomControls
    • Complex state management using VisualStateManager
    • Data virtualization and UI virtualization techniques
  3. Performance Optimization

    • Efficient resource management and memory usage
    • Application of asynchronous programming patterns
    • Rendering optimization techniques
  4. UI/UX Design

    • Implementation of complex graphics using Geometry Path
    • Custom animations and transition effects
    • Dynamic theme system
  5. Framework Design

    • Event-based communication system
    • Implementation of state management patterns
    • Extensible navigation system

This project comprehensively showcases advanced design patterns and techniques based on Jamesnet.Core and Jamesnet.Window while maximizing the powerful features of WPF. By providing real-world application cases of various technologies and patterns necessary for large-scale application development, it will serve as rich learning material for WPF developers.

We hope this project will inspire WPF developers and serve as a best practice for large-scale desktop application development. Furthermore, we expect that through this project, we can explore code sharing strategies between WPF and Uno-Platform and new possibilities in cross-platform development.

We are planning versions for new platforms such as MAUI, WinUI 3, AvaloniaUI, and OpenSilver in the future.

Technology Stack

  • .NET 8.0
  • WPF (Windows Presentation Foundation)
  • Jamesnet.Core
  • Jamesnet.Windows
  • Jamesnet.Uno

Getting Started

Prerequisites

  • Visual Studio 2022 or later
  • .NET 8.0 SDK
  • Jamesnet.Wpf NuGet package

Installation and Execution

1. Clone the repository:

git clone https://github.com/jamesnet214/leagueoflegends.git

2. Open the solution

  • Visual Studio
  • Visual Studio Code
  • JetBrains Rider

3. Build and Run

  • Set the startup project
  • Press F5 or click the Run button
  • Windows 11 recommended

Learning Opportunities

This project offers valuable insights for WPF developers:

  1. Complex UI Recreation: Learn techniques for recreating sophisticated user interfaces
  2. Custom Control Development: Understand the process of building custom WPF controls
  3. MVVM in Practice: See real-world implementation of MVVM pattern in a complex application
  4. Geometry Path Usage: Master the use of Geometry Path for intricate UI designs
  5. Performance Optimization: Learn strategies for optimizing large-scale WPF applications

Contributing

Contributions to the League of Legends Client (WPF) project are welcome! Feel free to submit issues, create pull requests, or suggest improvements.

License

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

Contact

Experience the power of WPF in recreating complex game interfaces with this League of Legends client recreation!