CleverNucleus/playerex

Advancement based progression

Closed this issue · 3 comments

A known issue with the current levelling system is how easy it is to exploit (primarily through xp farms). I think a feasible solution would be to utilise vanillas advancements rewarding system, instead of giving XP in the vanilla sense, it would give playerex XP (which ought to have a different name). Sadly not every advancement in vanilla gives a reward, nor is there an extensive amount of them ; so I think an improvement upon vanilla advancements would be nice for out of the box use. Although, using third party advancement data packs is also very feasible, and if done right I don't think there even is a need to modify them for playerex usage, assuming they are setup with vanilla XP rewards in mind.

Hi there,
I like this suggestion a lot. However, I think it would likely take a fair amount of effort to implement, so I will have to do some thinking about it.

Regarding the balance issue with xp farms, some other suggestions I have had were to

  • add a config option to disable experience dropping from mobs spawned through a spawner.
  • make experience have some kind of cooldown on how much you can gain in a given space of time (i.e., you'd only be able to gain a maximum of x amount of experience in y minutes, where x and y would be configurable).
  • add experience zoning, where you can only gain a certain amount of experience in a given space (radius?) for a given time (or rather, the experience would stop contributing to your ability to level up past a certain point)
  • make it such that levels have a requirement of what sources the experience came from (i.e., mining) or a combination of sources such that players cannot level up solely from mob farms.

Or any combination of these. I would welcome any feedback or other suggestions on this matter.
Thanks!

What would the main things you'd have to do if you had to sketch the advancement based progression ? I don't think it would be too too much work.

As for balancing the current system, I'm not particularly fond of the first one as many RPG/Adventure modpacks spawn mobs using spawners in their dungeons. The config option wouldn't hurt but I'm not sure it's entirely worth the work & future maintenance.

As for the second, it's not the worst of ideas but breaks up the gameplay a bit imo, maybe instead of outright limiting the total gainable XP in a specific time frame, you could integrate time into the formula so that the more XP you gain, the worse the "absorption" becomes.

The third one is my favourite to be honest, possibly even mixing it with my take on the second one. It doesn't interfere with dungeons and exploring much, makes mob farms virtually obselete for PlayerEX levelling (considering you cannot really move farms). I'm not sure what the best way to go about it would be though, maybe based on coordinates/gradient ? In the sense that the closer to XP hotspots (coordinates where a lot of XP has been gained) you are, the less absorption of xp. Maybe a new data field in chunks "xp gained" (mind you this can be exploited to a degree by placing farms in numerous chunks). I'm sure there's a good way to do this though !

The last one seems to be a mixture of XP and advancements, what worries me about this is I cannot imagine an implementation that isn't too restrictive ; I mean it's whole point is to restrict afterall. Imo it wouldn't encourages particularly "fun" gameplay, I can easily imagine myself wanting to level up and seeing that to do so I must mine, not very fun especially later in the game. At this point I think committing to advancements would be a lot more flexible.

A possible setup which would be really cool is a fully fledged advancement progression and vanilla XP with the 3rd option (and potentially second) for balancing the XP. Not sure how the general ratio would be but I'd prioritise needing to do advancements personally.

As of release 3.2.9 for 1.18.2 and 3.3.9 for 1.19.2, PlayerEx now includes a chunk-based xp system that deals with the issue of mob farms. It is configurable and can be entirely disabled. Some documentation has been written for it here. In short, it is mostly similar to aforementioned suggestion No. 3.

Regarding advancement-based progression, I am unlikely to implement this. However, there is nothing stopping an external developer from creating an addon mod for it.

I am closing this issue now, but will pin it as I still welcome any discussion/input.