Skip to content

Generative application for optimal kart/driver configuration for MK8DX based on a genetic algorithm of my own design and a batch of statistical data from the game.

License

Notifications You must be signed in to change notification settings

Romain-Portanguen/mk8dx_optimizer

Repository files navigation

project-logo

MK8DX_OPTIMIZER

Optimise your MK8DX performance

Developed with the software and tools below.


Table of Contents

Overview

The mk8dx_optimizer is a sophisticated and robust web application designed to enhance gameplay for Mario Kart 8 Deluxe fans. It allows users to view driver and race profiles to calculate and display optimal kart configurations using advanced algorithms and information based on in-game data. The application incorporates a user-friendly interface with dynamic components for selecting and viewing vehicle components and overall performance statistics. Using advanced genetic algorithms and a robust scoring system, mk8dx_optimizer helps players make strategic decisions to maximise their in-game performance.


Features

Feature Description
⚙️ Architecture Built with React and TypeScript, utilizes a component-based structure for UI and services for data management.
🔩 Code Quality Code is modular and uses TypeScript for type safety. Follows modern JavaScript practices.
🔌 Integrations Integrates with React libraries and Chart.js for data visualization. Uses Tailwind CSS for styling.
🧩 Modularity High modularity with separation of concerns between UI components and data services.
📦 Dependencies React, TypeScript, Tailwind CSS, Chart.js, Jest, React Testing Library, worker-loader.
🚀 Scalability Designed to be scalable in a frontend context with efficient components and services.

---

##  Repository Structure

```sh
└── mk8dx_optimizer/
    ├── package-lock.json
    ├── package.json
    ├── postcss.config.js
    ├── public
    │   ├── favicon.ico
    │   ├── index.html
    │   ├── manifest.json
    │   └── robots.txt
    ├── src
    │   ├── App.tsx
    │   ├── components
    │   ├── data
    │   ├── index.css
    │   ├── index.tsx
    │   ├── react-app-env.d.ts
    │   ├── services
    │   ├── types
    │   └── utils
    ├── tailwind.config.js
    └── tsconfig.json

Modules

src.types
File Summary
glider.types.ts Defines the Glider interface within the mk8dx_optimizer project, specifying a structure for glider objects that includes a name and associated statistics. This interface is crucial for standardizing data handling across components that manage or display glider attributes in the application.
body.types.ts Defines the Body interface, central to the mk8dx_optimizers architecture, encapsulating vehicle body characteristics in Mario Kart 8 Deluxe, including names and associated statistics. This interface is crucial for data structuring across the application, ensuring consistent handling of vehicle attributes.
driver.types.ts Defines the structure for driver data within the mk8dx_optimizer project, linking driver names and abbreviations to their statistical profiles. This setup is essential for managing and accessing driver-specific statistics efficiently across the applications components and services.
tire.types.ts Defines the Tire interface within the mk8dx_optimizer project, specifying the structure for tire data with properties for name, optional alternative name, and associated statistics, ensuring consistent data handling across components that manage or display tire information in the application.
configuration.types.ts Defines the structure for a racing configuration in the MK8DX Optimizer, linking essential components such as body, driver, tire, and glider. This setup is crucial for ensuring that the application can effectively manage and utilize different racing configurations within its feature set.
statistics.types.ts Defines a TypeScript interface for vehicle statistics in the MK8DX Optimizer, encompassing attributes like speed, handling, and invincibility across different terrains, crucial for optimizing character and vehicle selections based on performance metrics within the applications architecture.
src.utils
File Summary
ResultsDisplay.tsx ResultsDisplay.tsx provides a visual representation of optimal configurations in the mk8dx_optimizer project, displaying stats for vehicle components like body, tire, and glider using a clean, responsive UI with icons for enhanced user comprehension.
StatsDisplay.tsx StatsDisplay.tsx provides a visual representation of statistical data through dynamic progress bars within the mk8dx_optimizer project, enhancing user interface by displaying component performance metrics. It utilizes a responsive design to adaptively showcase statistics, contributing to the overall usability and aesthetic of the application.
src.components
File Summary
CustomSelect.tsx CustomSelect.tsx defines a reusable dropdown component, enhancing user interaction by allowing selection from dynamically provided options. It integrates accessibility features and UI responsiveness, crucial for maintaining consistent design and functionality across the mk8dx_optimizer applications frontend architecture.
src.services
File Summary
configuration-scorer.ts Calculates and caches scores for different racing configurations in the MK8DX Optimizer app, adjusting for driver stats, vehicle components, and race profiles. It employs a sophisticated scoring system that considers individual and combined performance metrics, maximizing strategic gameplay decisions based on statistical analysis.
optimal-configuration-finder.ts OptimalConfigurationFinder in mk8dx_optimizer leverages genetic algorithms to determine the best vehicle configurations for Mario Kart 8 Deluxe, based on driver characteristics and race profiles. It dynamically adapts mutation rates and employs intelligent resets to optimize performance across generations.
json-data-repository.ts JsonDataRepository serves as a centralized data access layer within the mk8dx_optimizer repository, managing and providing access to game-related assets like drivers, bodies, tires, and gliders, ensuring efficient data retrieval and encapsulation consistent with the repositorys architecture for optimizing game configurations.
src.services.interfaces
File Summary
data-repository.requirements.ts Defines the IDataRepository interface essential for accessing Mario Kart 8 Deluxe vehicle components like drivers, bodies, tires, and gliders within the application, ensuring standardized data retrieval methods across the mk8dx_optimizer projects architecture.
configuration-scrorer.requirements.ts Defines the IConfigurationScorer interface, central to evaluating and scoring racing configurations based on driver and vehicle attributes within the mk8dx_optimizer project. It includes methods for calculating a configurations score and determining the maximum possible score for a given race profile.

Getting Started

System Requirements:

  • TypeScript: version x.y.z

Installation

From source

  1. Clone the mk8dx_optimizer repository:
$ git clone https://github.com/Romain-Portanguen/mk8dx_optimizer
  1. Change to the project directory:
$ cd mk8dx_optimizer
  1. Install the dependencies:
$ npm install

Usage

From source

Run mk8dx_optimizer using the command below:

$ npm start

Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/Romain-Portanguen/mk8dx_optimizer
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


License

This project is protected under the MIT License. For more details, refer to the LICENSE file.


About

Generative application for optimal kart/driver configuration for MK8DX based on a genetic algorithm of my own design and a batch of statistical data from the game.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages