Giter VIP home page Giter VIP logo

ffxiv-teamcomp's Introduction

FFXIV Teamcomp

The goal of this application is to offer suitable combinations of players for raiding. Based on the jobs they can play and their availability, this app computes all available team setups and orders them by viability (that is the weight score in input data).

Installation

Using Volta is strongly recommended as it simplifies Node.js version handling. Then npm i should provide everything necessary.

Usage

The app uses Vite.js, Vitest. You can find more details in their respective documentation.

You can either run the app in development npm run dev or build and preview npm run build ๐Ÿ‘‰ npm run preview

Example

The simplest way to try the app out is npm run dev and then choosing to import a JSON file (src/core/data/all-import.json would be the best). This will populate the input matrix for you.

Data explained

The data hint explains the data shape in terms of TypeScript types.

But you do not have to understand that at all. You can use the "add player" and set up the whole team. Then "export" and you don't have to worry about understanding the JSON file structure at all.

If you need to modify your saved (JSON) team, you can import it, make modifications, then export it again.

Weight (from 0 to 1, representing a percentage) represents the player's assessment of how well they can play the job compared to their other jobs. E.g. if Tal is able to play SGE and MNK, but feels most comfortable on SGE, they would put 1 in SGE, and e.g. 0.9 in MNK.

Availability is there for ease of use. Let's say Tal can't play too often. Then it makes sense to keep their information, but have them unavailable by default. When you want to include them, you can import the whole team and flip the availability in the table.

Acknowledgements

This app uses adapted version of useSuspenseWebWorker by Sijie Tian. With TypeScript, tweaks due to React's Strict Mode and test coverage.

Limitations

Currently the main limiting factor is the constraints: "one player per job" (i.e. no job can be represented twice)

Firefox doesn't ship with Worker modules. A config flag needs to be enabled in Firefox. Even then, there are times when the module stops loading for no reason. This can usually be fixed by opening the app in new browser tab.

TODO

  • github actions (linting, tests)
  • github pages (hosting)
  • improve test coverage (workers/evaluate-combinations)
  • improve test coverage (data/index)
  • improve test coverage (App)

ffxiv-teamcomp's People

Contributors

kaspicz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.