Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

idea: change leveling to an experience based system #371

Closed
lstebner opened this issue Jan 10, 2023 · 8 comments
Closed

idea: change leveling to an experience based system #371

lstebner opened this issue Jan 10, 2023 · 8 comments
Projects

Comments

@lstebner
Copy link
Collaborator

I shared this idea in discord but wanted to move to an issue for more discussion and potentially building it out.

I would like to explore changing leveling in the game from simply number of items sold to an experience based system. The main benefit would be giving the player experience for performing a variety of activities rather than just selling goods. A secondary benefit would be to help players level up more quickly and get to see more of the games content, which in turn benefits developers so they can build more and more high level content. It seems like right now only power users get to our level 30+ content and we have lots of ideas for things we can add still.

I'm not sure if it's well balanced, but it could go something like this:

  • gain 1 experience point for selling an item
  • gain 1 experience point per item in a recipe for crafting an item
  • gain 1 experience point per ore used in recipe for upgrading a tool
  • gain 1 experience for forging items
  • gain 1 experience point for recycling recipes
  • gain 3 experience for trading a cow
  • gain ? experience for expanding field
  • gain ? experience for expanding cow pen
  • gain 1 experience point per item in request when completing a quest

For legacy players... we could maintain the option of sticking with the # of sales based leveling system. This could be a toggle in the game settings somewhere. Once this experience based system is built we could prompt players with a choice to switch to the new system and explain the difference. If they choose to switch, they will stay the same level they are and just begin earning experience from that point forward. New games could all start with the experience based system.

I would love to hear what others think about a change like this!

@jeremyckahn
Copy link
Owner

This is a great idea! I like what you've got laid out here and I think it would fit well, especially if we can keep it disabled for legacy saves.

The full concept seems like it would be a pretty large effort to implement. What do you think about a scaled-down V1 that we can ship early and iterate on? I'm thinking that we could keep the focus on crafting and forging, and possibly layer on the other experience-giving events in further iterations. But I'm open to other ideas!

@jeremyckahn jeremyckahn added this to Backlog in Todo list via automation Jan 12, 2023
@lstebner
Copy link
Collaborator Author

MVP is a good idea @jeremyckahn . I thought about it a bit and here's what I'm thinking...

milestone 1: add "experience" stat that works exactly like items sold (1 experience point per item sold), and option to stick to legacy system. this milestone would include persisting the data and any reducers we need for the new data.

milestone 2: add experience to recipe crafting. this step would involve figuring out how much experience recipes should give and hooking that up.

milestone 3: add experience to cow related activities

milestone 4: add experience to mining/forging related stuff

milestone 5: add experience for recycling recipes

each of those could be released to players, or at least merged to develop behind a feature flag like we did for the mining feature. that would pretty much cover everything i initially laid out given that the quests aren't yet built. let me know what you think!

@jeremyckahn
Copy link
Owner

I think this progression makes a lot of sense! We may want to hide the legacy toggle in Milestone 1 behind a feature flag until Milestone 2 is shipped. It won't do anything substantial until non-sale actions result in experience points, so we may as well keep the Settings UI a little simpler until that changes.

I think this plan is good to go! 👍️

@lstebner lstebner mentioned this issue Aug 28, 2023
6 tasks
@lstebner
Copy link
Collaborator Author

lstebner commented Aug 28, 2023

wanted to put some ideas out here for experience values to get some feedback. i am currently planning on the amount of experience needed per level to match the number of items sold values because part of my goal with this change is to make leveling up go a bit quicker in hopes that more people get to see more content as a result, but definitely open to feedback there.

ideas:

  • composter acquired = 10 exp
  • cellar acquired = 10 exp
  • cellar expanded (for each tier after the 1st) = 5 exp
  • cow bred = 1 exp
  • cow pen acquired = 10 exp
  • cow pen expanded (for each tier after the 1set) = 5 exp
  • cow traded = 1 exp
  • field expanded = 5 exp
  • item forged = 3 exp
  • item sold = 1 exp
  • loan paid off = 25 exp
  • new year (applied every 366th in-game day) = 5 exp
  • rainbow cow bred = 2 exp
  • recipe crafted = 2 exp
  • smelter acquired = 10 exp

@jeremyckahn
Copy link
Owner

@lstebner These all seem great to me! Just one concern:

loan paid off = 25 exp

I like this, we'll just need to be sure to award the experience only the first time the player pays off the loan to prevent them from abusing the system.

@lstebner
Copy link
Collaborator Author

@lstebner These all seem great to me! Just one concern:

loan paid off = 25 exp

I like this, we'll just need to be sure to award the experience only the first time the player pays off the loan to prevent them from abusing the system.

yeah, good point. that might require adding something else to the persisted state and i'm not entirely sure it's worth it right now... additionally, after our chat about loan amounts yesterday i have a bit of a different perspective on it. i was thinking of it like farmhand go where paying off the debt is a major goal, but in farmhand OG it is more of an assistance program and i'm not sure it needs to have any experience tied to it at all. what do you think @jeremyckahn ?

@jeremyckahn
Copy link
Owner

that might require adding something else to the persisted state and i'm not entirely sure it's worth it right now.

For this particular scenario we could implement the experience reward as an Achievement. The Achievement system already handles one-time events, and as a bonus we would be able to clearly communicate the goal and reward to the player. What do you think of that approach?

i was thinking of it like farmhand go where paying off the debt is a major goal, but in farmhand OG it is more of an assistance program and i'm not sure it needs to have any experience tied to it at all.

Personally I like the idea of rewarding the initial loan payback with experience, but I wouldn't consider that a necessity for this feature. I'll leave it up to you if you'd like to implement that, but if not I might get to it down the road too. 🙂

lstebner added a commit that referenced this issue Aug 30, 2023
The goal of this PR is to lay some groundwork for an experience based level system as outlined in #371 

- add 'experience' to farmhand state
- add 'useLegacyLevelingSystem' to farmhand state and settings screen (only shown when the EXPERIENCE feature is enabled)
- update `levelAchieved` to be more flexible about how level is calculated based on which leveling system is being used
- update all calls to `levelAchieved`
- update utils unit tests for levelAchieved to test both systems
- add 'EXPERIENCE' feature flag
- add reducer for adding experience + unit test
- some utils were moved into their own files to make them easier to work with (mostly to avoid circular dependencies when one util relies on another util) and imports across the codebase were updated
- initialize `experience` value to match number of items sold when loading a saved game
- add 1 experience point per farm item sold (crops, milks, and crafted or forged items)
- items that are not farm items should not reward the player with any experience (seeds, weeds, other supplies)
- importing a save without experience should calculate experience based on items sold
@lstebner lstebner mentioned this issue Sep 1, 2023
4 tasks
@lstebner
Copy link
Collaborator Author

lstebner commented Sep 4, 2023

oops i never responded here even though i implemented it already but i think that's a great idea to use the experience system. thanks for thinking that up @jeremyckahn !

Todo list automation moved this from Backlog to Done Sep 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Todo list
  
Done
Development

No branches or pull requests

2 participants