Git Product home page Git Product logo

ams2-career's People

Contributors

abesto avatar allcontributors[bot] avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jota191

ams2-career's Issues

Changelog: store seen version outside game save data

Currently the version last seen is stored as part of the game save data, which means uploading a save from an older version of the app triggers a changelog popup. Not the end of the world, but this shouldn't happen.

The most direct way to fix this is probably to add special-casing in src/store/saveload.ts, in both the save and the load functions, such that the last seen version is pulled / pushed into Redux state on load / save, but is stored in a separate local storage item.

Multi-class races

Let's add a field to the race setup section for "Opponents". By default we'll have "same class". Let's then define a dedicated dataset: a list of multiclass configurations. Each multiclass configuration is a set of classes. Any class may only be part of a single multiclass configuration. Whenever the race is in a class that's part of a multiclass configuration, we'll show the player on the race setup section which classes to set opponents to.

Alternatively, we could define multiclass configurations as:

  • A set of (discipline, class) tuples. This allows a class that exists in multiple categories (say, GT3) to have separate multiclass configurations per discipline, at the cost of having to duplicate the entries for each discipline if we do not want them to be separate
  • A set of (discipline, rank, class) tuples. This allows even more granular control, at the cost of even more duplication for cases where we do not want that control.

Add settings to scale position multiplier

Original request: https://www.racedepartment.com/threads/ams2-career-web-based-app-release.231392/post-3617260

Code pointers:

This should be very similar to the flat XP multiplier.

At first glance, this can take one of two forms:

  • A flat multiplier on top of the current formula
  • Expose 2 (?) knobs to tweak the constants inside the formula

Additional discipline mastery condition

After reaching Grade A, it could be a good idea to complete the grade (i.e. master the discipline) in one of two ways:

  • Collect X more XP points (currently implemented, same as other grades)
  • Achieve N podium finishes

Possibly, we may want this behavior to be toggle-able in Settings - but then again, maybe this is actually too granular a control to be useful for real players.

Optional feature request

Hi,
here is an optional very low priority feature request:
What do you guys think about a switch to enable/disable gaining XP also for other series when recoding a race result of a specific series?

In its currect state, you also gain some amount of XP for series you did not drive, every time a race result is recorded.
As side effect you climb up the ladder of a series, even if you never have driven a single race of this series.

Version info, etc

  • Add version info to bottom right
  • Add GH icon
  • Replace "Wiki" with an icon
  • Add version info to save data
  • Add help icon to re-display welcome message

Generate car and track list from game files

I've spent about an hour spelunking in the game files, and failed to find where the list of user-readable track + car names live.

We'd have to generate the lists "manually", and still ship data with the app as we currently do.

Track / Configuration model doesn't map well to the game UI

The default "Group By Location" in-game actually groups by location / city. Most of the time the city is a prefix of the name of the circuit, but not always. For example under Granja Viana we have both "Copa Sao Paulo Kart Stage 2" (note the complete lack of "Granja Viana" in the track name) and "Granja Viana Kart 101". Unfortunately this means the current Track / Configuration setup we have is basically broken. By "broken" I mean that from "Copa Sao Paulo Kart Stage 2" there's no way in the game to find out that it's hidden under "Granja Viana".

My best idea is to transition to a Location / Configuration setup.

Configure simulator from the app

Having to input each race option into AMS2 is kind of a pain. After about 30 mins of looking around, I think the race setup is stored in %userprofile%\documents\Automobilista 2\savegame\[some numeric id]\automobilista 2\careersaves\.sav, but that's a binary file I failed to analyse.

In practice, this would probably take the shape of "download this file and stick it in the right place"; I don't think AMS2 actually exposes a runtime API.

I guess one could also experiment with faking inputs and setting up the app that way (possibly based on some exported data from the app).

Closed formula for grade-up XP breakpoints

The XP needed to "level up" is currently manually defined for each discipline (in xp_grade_breakpoints.csv). This is somewhat susceptible to human error each time we tweak things, and adds another thing we need to consider when new content is added.
It'd be great if, instead, we had a way to define these breakpoints with a formula that takes simple inputs.

It would definitely need to take as input some "difficulty" measure of the discipline (i.e. a linear function). There's a chance this is the same (or at least closely related to) the "prestige" multiplier, currently stored in xp_prestige.csv. Or maybe, we want / need a second degree component (i.e. x + y*y).

Facelift everything

The current UI is born from a non-designer non-frontend-engineer slapping MUI components on a page. The current UX is the same non-UX person doing his best. Make it better?

Add a Getting Started Splash screen on a new career

Could we add a quick 1 or 2 page tutorial when a career is new or was just reset? I think most of the content could come from the wiki, so someone could at least know what we're doing without the extra step. Here's what it could read:

Page 1
Welcome to the Automobilista 2 Career Simulator!! From here you can record your career through the world of AMS2.

On the Go Racing tab, you can review your list of potential offers. While you start at the lowest levels of each motorsports discipline, you gain XP for each race in which you participate.

The right of the dashboard will display your current progress in the selected discipline as well as the suggested settings to be used in the race.

Note on the AI strength: one of the goals of this simulator is ensuring that you have fun and competitive races. You do not need to win every race at 101 AI level to progress!! (Just pretend your father owns a fertilizer company and helps you move up the ladder...) If you find you need to bump the AI up (or down) to get a fair challenge, then you can log those adjustments into the simulator to ensure that future races are better calibrated. You can apportion that increase (or decrease) to ALL cars, one DISCIPLINE, one CLASS, or one CAR, whichever you think best represents the AI balancing needed.

Also note that the simulator will compare your result to the AI level and adjust it for further balancing in that car. These adjustments are per car, so use the "Global" adjustment to have future offers reflect a better starting AI level.

Go to Enter Results

Page 2

When the race has been completed and the champagne (or tears) has dried from your overalls, enter into the simulator the car your drove and the result achieved.

The model will analyze your performance and the car in which it was achieved and will calculate and apply XP points across all disciplines (but most effectively in the discipline raced).

The Career tab will display your statistics and progress across all disciplines, as well as a full race log for reference.

Also, you can export your career save to protect it against accidental loss. Or to transport to another computer, browser, or device (did we mention this works on tablets and phones!?).

Pro tip: Don't forget to take advantage of AMS2's brilliant weather and day/night progression system by altering the session conditions in game.

Good luck and be safe!

Offer an "Accelerated Career" Option

Maybe when a new career is started, there is an option for enhanced XP earning. Maybe scale up the XP earning values to 1.5X the normal? Allows players to progress a little quicker so they can re-run careers and compare them. (Maybe only I'm that type...) You could call it "Second Generation Driver Mode", since most 2nd gen drivers are spoiled brats who progress more easily than others, IMO. :)

Disabled cross-discipline gains no XP anymore

Describe the bug
When cross-discipline is unchecked, no XP is gained anymore.

To Reproduce
Steps to reproduce the behavior:

  1. Uncheck cross-discipline in settings tab
  2. Record a race. No XP are gained anymore for this discipline.

Expected behavior
XP are gained after recording a race for this discipline, but not for any other disciplines.

AI Adjustment: crowd-sourced corrections

Actual AI strength at the same numeric AI level is known to vary across classes / cars. We could crowd-source collecting adjustments that'd get transparently applied to the recommended AI levels.

Ideally this would be transparent, data would be collected through the app (which assumes that some backend service exists, unlike today)

AI Adjustment: global offset

Add a simple way for players to manually adjust an AI offset (positive or negative) that gets added on top of the AI level calculated based on previous races. Should serve as a baseline "player skill level" adjustment, especially useful when moving between classes.

Add accents to track names

... to the ones that actually have accents in game. Not just at random :D

This is not completely trivial because currently internal track IDs are generated as $trackname-$configuration. This means changing the track name changes the ID, which means we have to either

  • add a migration to update the ID in past races / currently generated races
  • update the logic for generating track IDs to drop accents (preferable)

Progression beyond "Grade A unlocked"

Description:
There seems to be a bug, at least at karting series.
When you record a result in grade A (even it is 1st place) the "A" in the path is not replaced by a checkmark symbol.
Maybe also same behaviour for other series, not tested yet.
Grade A for karting series was unlocked without driving any karting series, but gaining enough XP from driving other series.

Set up a help menu

Including:

  • Overview of basic features, progression
  • Details about save state handling
  • How to report issues
  • How to request / vote on features
  • Link to GH to contribute

Remind user to download save data

After there have been unsaved changes.

  • Maybe once in a while
  • Definitely when leaving the page
  • Definitely when resetting the career

Allow downloading backups

Depends on #4

  • In DropLocalStorageOnErrorBoundary; add text sending people here to report issues with the latest backup attached
  • In the data debugger view

Make Stuff Configurable (by the user)

Including but not limited to

  • Can select car vs. randomly assigned
  • Can regenerate races vs. it is what it is
  • AI strength adjustment (static offset: global, by discipline. maybe by class, maaaaaybe by car)
  • Enable / disable cross-gains (requested in #48)
    • Extra credits: change multipliers
  • XP multiplier (requested in #42)

Maybe

  • XP curves

Update README

  • What even is this
  • How to contribute
  • Credits

Also, licensing

Jacarepagua shows up as karting tracks

Describe the bug
I got given Jacarepagua Kart Three as a karting track, but no such track exists in the game.

Expected behavior
Only valid tracks in the game should be shown

Additional context
I believe from the data files that the tracks should be Interlagos Kart 1-3

Formula Classic G4 Missing

Now that the erstwhile F-Classic G3 has been relabeled to G4 and there is a new G3 class, any chance the Open Wheel career can be updated? Thank you!

Edits to the Post Race pop up

  1. 2 carriage returns betweenXP earned and a promotion notice:
    ""With that result you've earned xxx XP in Vintage.

Congratulations! You have been upgraded to Grade A in Vintage!!""

  1. Or, Could promotions that occur at the same time appear below it so it reads:

""With that result you've earned xxx XP in Vintage.

Congratulations!
You have been upgraded to Grade A in Vintage!!
You have been upgraded to Grade B in Touring!!""

  1. Future enhancement: enter a congratulatory comment based on results from the Achievements tab in the shared workbook. There's commentary there too to accompany Grade promotions in each discipline as well.

Un-confuse XP representation

In code / data, XP figures are 100x lower than what we display on the UI. This kinda happened organically, there's no good reason for it. Let's bump the XP in code / data 100x (taking care to add in a migration for existing careers).

Show milestones in logbook

Since #41 was fixed, we have the machinery needed to show milestones next to each race in the logbook. Currently this is only grade-ups, but later it can include achievements.

Show grade-up message for all applicable disciplines on race result dialog

Currently we only show a grade-up message for the discipline the race was run in. Due to cross-discipline XP gains, it's possible to grade up in multiple disciplines with a single race. Would be nice to show a message for each.

Code pointer: src/app/pages/MainPage/components/RaceResultFeedback.tsx

Badges for achievements

Some badges may be "licenses", others may be hard challenges (like "win X races in discipline Y with AI over 95").

Since achievements are only earned when a race is finished, display a message about newly unlocked achievements on the race result dialog.

Show locked and unlocked badges on the top of the Career page.

Sort out (peer) dependency warnings

  • redux-injectors
warning " > [email protected]" has incorrect peer dependency "react@^16.6.0 || ^17.0.0".
warning " > [email protected]" has incorrect peer dependency "react-dom@^16.6.0 || ^17.0.0".
warning " > [email protected]" has incorrect peer dependency "react-redux@^7.1.0".

Will possibly be resolved in react-boilerplate/redux-injectors#34

warning react-scripts > @svgr/webpack > @svgr/plugin-svgo > [email protected]: This SVGO version is no longer supported. Upgrade to v2.x.x.
  • react-scripts ->workbox-webpack-plugin: didn't find a tracking issue, maybe it'll be bumped with 5.0.1
warning react-scripts > workbox-webpack-plugin > [email protected]: See https://github.com/lydell/source-map-url#deprecated
warning react-scripts > workbox-webpack-plugin > workbox-build > [email protected]: See https://github.com/lydell/source-map-url#deprecated
  • plop
warning plop > liftoff > findup-sync > micromatch > snapdragon > [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
warning plop > liftoff > findup-sync > micromatch > snapdragon > source-map-resolve > [email protected]: https://github.com/lydell/resolve-url#deprecated
warning plop > liftoff > findup-sync > micromatch > snapdragon > source-map-resolve > [email protected]: Please see https://github.com/lydell/urix#deprecated

These are resolved in plop>=3, but .ts there is fairly hard to use. Revisit after plopjs/plop#297 is resolved.

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.