Giter Club home page Giter Club logo

genshin-optimizer's Introduction

Website-link Discord GitHub Github-last-commit GitHub-license

Genshin Optimizer is a helper website for the online action-rpg gacha game Genshin Impact. It is intended to assist players with optimizing artifacts to max-min their characters, while providing a clean, structured UI, and provide real-time results.

WE NEED HELP!

Are you a web developer who is looking to contribute to the most over-engineered Genshin website ever made? Can you distinguish which one of the following is a pokemon?

React MaterialUI nx ekans GraphQL git metapod NextJS discord.js vite nodeJS emotion prisma Agumon tessract.js typescript bun sawk webpack next-auth jest

If you have knowledge in some(or any) of those techonology mentioned above, or are hoping to learn in an actively-developed app with thousands of users, please join our Discord! We'd love to work with you.

Genshin Optimizer Roadmap

  • New characters and content will continue to be added as Genshin updates
  • Artifact upgrade damage probability calculator - Q1 2024
  • Teams + Loadouts - Q2 2024
  • Optimal substat solver for TC mode - Q2 2024

GO-next

  • A full-stack GO solution with a backend and database
  • User login, saving artifacts/data in the backend
    • Easily sharing character builds (URL)
    • Easily sharing multi-targets
  • New calculation Engine - Pando
    • Allow for weapon optimization
  • Teams + Loadouts
    • Calculate team damage
    • Sharable loadouts
  • Coming Q4 2024

Somnia-bot

  • Access your GO builds from a discord bot
  • Coming Q2 2024

SRO - GO but Star Rail

  • We need more devs! Please help us!
  • Coming Q3 2024

Code structure

GO is hosted as a monorepo. The Applications are in /apps The dependencies to the apps are in /libs

Applications

frontend - The main GO website - static website built using React with MUI, using the now deprecated Waverider calculation engine.

sr-frontend - WIP Star Rail optimizer - static website built using React with MUI, using the Pando calculation engine.

gi-frontend-next - WIP GO frontend - website built using NextJS, MUI, next-auth, using the Pando calculation engine.

gi-backend - WIP GO backend - supporting gi-frontend-next, using nestJS, prisma, GraphQL, and mongoDB.

somnia-bot - WIP discord bot - built using discord.js, using the Pando Calculation engine.

Notable Libs

gi-good - Interface for the Genshin Open Object Description (GOOD). An import format for Genshin scanners.

sr-srod - Interface for the Star Rail Object Description (SROD). An import format for Star Rail scanners.

pando - The new Optimizer calculation engine.

gi-formula - The Genshin implementation of Pando.

sr-formula - The Star Rail implementation of Pando.

gi-stats - Extracted Genshin numbers and values from the datamine, using Optimizer pipeline.

sr-stats - Extracted Star Rail numbers and values from the datamine, using Optimizer pipeline.

Basic Setup

Install yarn (link).

Run yarn to install dependencies.

Development server

Run yarn run nx serve {frontend | sr-frontend} for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Understand this workspace

Run yarn run nx graph to see a diagram of the dependencies of the projects.

Acknowledgments

✨ The tesseract model used was trained and provided by the creator of Inventory Kamera.

✨ The creator of Silly Wisher has granted us permission to incorporate their artwork into Silly Optimizer. Silly Wisher discord, App store, Google Play

✨ This workspace has been generated by Nx, a Smart, fast and extensible build system.

genshin-optimizer's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

genshin-optimizer's Issues

Albedo -- Split Scaling

Since Albedo's damage comes from DEF for his skill and ATK for his burst, someone might want to sort artifact sets by some weighted combination of the two. I wonder if this calculator might be of inspiration? (Linked from this guide.)

Xiao Burst infusion in optimizer

As the title suggests, there is no way (or I cannot find a way) to optimize Xiao for damage during his burst uptime. Closest I can get is either:

  • Plunge damage, but this is considered physical (and there's no infusion option for Anemo)
  • Elemental Skill damage, obviously this isn't his burst nor plunge so it's not as efficient.

Theorycraft mode feature - minmaxing

When I do min-maxing, I want to get the best of all stats possible disregarding the bonus from the set bonus because if we select any set bonus, all the rest that can't complete the set won't be shown, but some of those may have god roll on it.
So it would be great if there is an option that ignores the set bonus from owned artifacts but is still able to choose the set bonus,
then we can just build from only sub stat and main stat.
Even though we don't really have those artifacts on the correct set, the result of the best ratio possible will be more accurate.
I request this for Theorycrafting mode

Inconsistent teammate placeholder

When you dont have a full team the placeholder team mate icon is not full height below the constellations, but it is full height on the character card.

image

image

Build page accessibility

Personally I find the new icon-only artifact cards and main stat filters significantly harder to parse than the previous text labels.

Could you add an option to revert back to the old build page layout?

Export and import functionality, or some other way of backup

I'd like to contribute to your project, and the first functionality I'd like to work on, would be a export to json, and an import from json feature.

If I understand correctly you're currently using localStorage to store "the database", so it would be a matter of transforming localStorage into a json and downloading it.
And for importing, it would be a matter of parsing a json file, and setting localStorage to it.

Do you have any suggestions on how you'd like this to look from an interface perspective?

GO Export mainStatVal not always used

Hi

This is more of a feature request per say than a bug report (since I suspect this behavior is intended). I added the ability to parse GO exports to my combat sim and I been noticing that GO sometimes will export the mainStatVal and sometimes not. I guess GO probably uses the lvl to recalculate that main stat as opposed to relying on this value?

Would it be possible to consistently export this value instead or alternatively never export this value at all? I find there are some cases where you have a lvl 20 feather for example but only 47 attack.

Missing Character [Yun Jin]

thanks a bunch for the awesome tool! <3
I noticed that Yun Jin was missing from the characters list. I am new here so i am not sure if this is the right place to mention it.

p.s.: she is missing from the optimizer (manual add) but recognized by scanners, upon import it says 1 invalid character and shows her data.

Add hit mode toggle buttons back above the build preview

  • In the Great UI Update of 2022 the hit mode / infusion buttons got moved to the top of the page to be consistent with the entire character page. However it was useful to have them directly above the build preview so you could toggle between avg / non / crit to see how your dmg changed compared to your current build.

Many times even though your avg dmg is increased, your non-crit and crit-hits may decrease and that might not be acceptable in certain circumstances.

  • Have them with the clear / new / compare buttons or maybe within each individual build preview for those who generate more than 1 build at a time?

image

Mini Weapon/Artifact card rearrangement idea

  • Since the mini cards deviate from how they look in-game quite significantly now - does the gradient really need to be horizonal anymore?
  • Changing the gradient to vertical allows users to read the stats vertically which keeps to how we're used to on the larger cards and how we read stats in-game.
  • It also fixes the issue of the mini weapon card horizontal gradient being a different height to the artifact card.
  • This visual change has the added benefit of making the mini cards look taller even though the dimensions havent changed at all, I felt the current display setup makes the mini cards look a bit 'squashed'.

image

Build Generator

When using the build generator, it won't show the generated builds. Only says the number of builds it generated and the time it took.
I'm not sure if I just missed something, but after looking around the site for a while, and reading the info on the page, I couldn't find anything to point towards me just simply missing something.
I hope this can be fixed.

https://frzyc.github.io/genshin-optimizer/ is not working?

https://frzyc.github.io/genshin-optimizer/#/build seems broken?

It's working on firefox 91.0.2(64bit). It not working on Chrome 92.0.4515.159 (64bit).

The error is related to something on javascript:
You need to enable JavaScript to run this app.

Reading the console:

(warning)Error with Permissions-Policy header: Unrecognized feature: 'interest-cohort'.
(error)createForOfIteratorHelper.js:53 Uncaught TypeError: Cannot read property 'sands' of undefined
at v (validation.ts:193)
at t.value (Database.ts:30)
at new t (Database.ts:17)
at Object.33 (Database.ts:245)
at i ((index):1)
at Module.183 (main.fdd72283.chunk.js:1)
at i ((index):1)
at t ((index):1)
at Array.r [as push] ((index):1)
at main.fdd72283.chunk.js:1

After check a bit of your code, I guess the error appears because the code cannot read the Storage data from my browser. (I checked it, There is data on my browser:

{id: "artifact_1", setKey: "NoblesseOblige", numStars: 5, level: 20, slotKey: "circlet",…}
id: "artifact_1"
level: 20
location: "kaedeharakazuha"
lock: true
mainStatKey: "eleMas"
numStars: 5

And there isn't anyone without the option "mainStatKey" empty.

Transfer artifacts between plateforms

Hey , it would be cool if we could transfer artifacts between platforms . I added all my artifacts on pc but i can't really access my informations on phone or other pcs.
It's great work and keep up really great foe the community.

Roll Probability UI has mainstats without %

" roll probablility dropped the % values. For example, it says ATK, ATK, DEF, DEF, HP, HP. This is opposed to ATK%, ATK, DEF%, DEF, HP%, HP. As far as I can tell, it's a display isssue. "
image

Make manually edited character stats clearer

  • Bring back edited stats being bold so you can quickly see if something has been edited.
    image

  • Rename "Bonus Stats" to something that indicates its source more clearly. Maybe "Manual Stat Overrides" or similar?
    image

Genshin Optimizer- Character Talents

In the website version of this program, when you try to level talents, or it's just me. It will only go up to level two for the basic attack, and level one for the elemental skill/burst.
I tried with various characters and it was still the same result. Everything else works as intended, at least from what I've seen. Thank you if you found time to read this issue ^^

[Feature Request] substat nudging

I think this would be an addition to the "Minimum Final Stat Filter"
but it would be nice if I could choose a substat no minimum amount entered
and the optimizer just tries to make sure its included.
one example of this I found is I like to optimize for atk on jean but I want to have a bit of energy recharge added in there to make the burst happen a bit more often.

Rearrange character page stats

Now that the UI is moving to a 4 column layout change the character base/advanced/bonus stats into 3 seperate column UI elements and order to mimic the in-game stats page.

image
image

[Feature Request] Artifact groups

it would be nice if there was 2 special artifact choices for 2pc "ATK +18%." and "Physical DMG is increased by 25%."
in both cases which artifact set that is chosen doesn't matter.
So letting the optimizer figure out which set has the better damage is easier than having the user needing to select both and make notes as to which produce higher damage.

Allow talent level 11+ (Tartaglia passive talent)

Noticed that the talent levels are 10 at max. I'd like to try Talent Lv11 since I sometimes bring Tartaglia with me on my Xiao teams. I'll try to implement it on my fork when I get the chance!

Edit: I noticed there's a Team tab WiP. Let me know if this specific issue is planned to be implemented on the Team tab instead!

Party Configuration

Has there been any discussion/interest in scraping the four party configurations and what they have equipped? Or even scanning all characters equips and then just scraping the party arrangements. It'd be nice to be able to share your builds outside of the game more easily.

I might be able to take a swing at implementing the scraping, but I also wanted to know if there was interest in adding that data to the GOOD format as well.

Character Lineups

I don't know what's best to name this, so I'm saying "Lineup" of 4 x 2 characters for Abyss, and also the Labyrinth Warriors event (and I suppose Hyakunin Ikki's 2 x 6).

I have setups for both a melt and freeze Ganyu teams (likewise Raiden National vs. hypercarry, or taser team, etc.) and I switch depending on which one is more valuable on the current floor. The problem that arises is that my artifacts are stored for just one state -- and my Ganyu sets are wildly different artifacts for both playstyles. If I want to look at kitting out a differ 4 + 4 lineup, currently I would need to remove all of my current artifacts, then and start over without a great way to revert and hold onto my previous setup when I move back that team for the next floor or a new setup. The ability to save artifacts per lineup would be super useful since almost every account needs to share the few good artifacts. Just as much, a lot of people might just want to experiment with specific team for a showcase while holding on to the previous states.


I would envision a UI where I could arrange and delete many nameable lineups for side a and b.

Lineup 1: 2021-11-11 Abyss floor 11
Team A: Raiden National Team B: Morgana
Raiden Ganyu
Bennett Venti
Xiangling Mona
Xingqui Diona
Lineup 2: 2021-11-11 Abyss floor 12
Team A: Raiden Hyper Team B: Ganyu Melt
Raiden Ganyu
Kujou Sara Bennett
Mona Xiangling
Sucrose Zhongli

etc. with the ability to make 2 x 6 teams and other arbitrary sizes for the future content. Selecting would be like switching browser tabs and a selected lineup works as the current window does now -- but with another layer to reassociate the artifact IDs to new characters.

Site not loading - JS error

Not sure if this is due to a recent update, or if it's due to a quick shutdown corrupting the local storage database on my end. If I load in an incognito window the site opens fine, but of course my database isn't there. My last download of the JSON is a bit out of date, otherwise I'd just clear and restore.

Uncaught TypeError: Cannot read property 'mainStatKeys' of undefined
at migration.ts:138
at v (migration.ts:18)
at new t (Database.ts:18)
at Object.43 (Database.ts:247)
at i ((index):1)
at Module.181 (main.f08f5797.chunk.js:1)
at i ((index):1)
at t ((index):1)
at Array.r [as push] ((index):1)
at main.f08f5797.chunk.js:1

Localization support?

Hi, hope to support localization for other language. Translations can be done by community.

Incorrect Elemental Resistance calculation when VV shred is configured through team buffs

When configuring a team that consisted of Ganyu and Venti, when adding the VV Shred of Venti in the team buffs section the formula is incorrect leading to a 1.25 multiplier instead of the default 1.15.
image
In particular
( 100% - ( -10% + Enemy Cryo DMG RES (Venti) -40% ) / 2 ) = ( 100% - ( -50% ) / 2 ) = 125%
should be
( 100% - ( 10% + Enemy Cryo DMG RES (Venti) -40% ) / 2 ) = ( 100% - ( -30% ) / 2 ) = 115%
I changed my sheet calcs to consider 1.25 res mult and the damage matched up with GO, so I think this is indeed the issue.

Sync artifact+weapon loadouts data to cloud storage

Hi, I am currently using the site and got some inconvenient on the database.
I need to manually store the data.json file to Google Drive in order to make a database backup and allows me to edit the database on the other device.

Can you make the "Store in Google Drive" or any equivalent solution?

Example website that already implements this feature is https://paimon.moe/. They use Application Data Directory from Google Drive.

If the website allows that, it will helps me (and many others) to sync the database across their device. Pretty much a QOL improvement.

Thanks!

Unable to copy database to clipboard in Chome

When trying to save my DB to the clipboard in this page, I press the button, the alert box comes up saying Copied database to clipboard but nothing is actually saved to the clipboard.

In the console the following error occurs:

Uncaught (in promise) DOMException: Document is not focused.

It works fine in Firefox and Safari, but not Chrome.

I don't understand the error, if I'm pressing the button -> the button is focused -> the document should be focused too no? So what's up?

[Improvement idea] Scrap character data from Hololabs' "Battle Chronicles"

Basically, Mihoyo lets you access parts of your Genshin Impact data from their social media platform.

It's called "Battle Chronicles".

image

We can see:

  • all the characters that we own, as well as their
    • level
    • constellation
    • (roughly) equipped artifacts (without their stats)
    • weapon, its refinement and level

It could be parsed once (per user request), or you could also make this "Battle Chronicles" public, like shown here:
image
If it's public, the user could input a link to their "Battle Chronicles" directly in the UI.

Let me know what you think about that.
Personally it took me quite a lot of time to input all my characters, so a little "speedup" would be a welcome change.

Add build filter based on current build's optimization target value

Many people are optimizing the same target to look for a way to improve their builds. This means that the builds of interests should have optimization targets close to the current build. We can speed up this particular use case significantly if we set prune builds with lower optimization targets assuming the current build is already near-optimal.

We can add a toggle in the build setting to keep only builds with a higher optimization target that the current build. This could translate to "min filter" for the optimization target.

Batch building based on importance

This feature generates the best builds for multiple characters and equips automatically based on order of importance chosen by user, for example Ganyu -> Hu Tao -> Xiangling -> Xingqiu -> Beidou -> etc. I notice that the tool keeps track of the Optimization target, artifact set effects used, min. stat values, etc. for each character so we can use that as the default for building these characters in order. This ensures characters get the best builds possible while making sure that higher priority characters are given more importance.

This feature is extremely useful and shortens the time taken for rebuilding every character when gaining new artifacts (for e.g. new atk% sands on ganyu means old one can be used for some other character of lesser priority).

Also IDK if this is already a feature or not but I think there should be a equip all artifacts option to shorten time equipping artifacts to a specific character (current process is find best artifacts -> click inventory button below each artifact in the window -> select character to equip on, new process can be find best artifacts -> equip all on < character > button)

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.