I'm writing a turn-based RPG, and have a small coding dilemma about stats. Specifically, it's about when you need to make temporary changes. Say the player has a speed which is currently 50, and the spell "slow" takes 10 off the speed. So it's reduced to 40, and in a few turns it has 10 added back so it's back at 50. Fine, cool with that.
Now, suppose the speed is 5. I take the 10 off, but aha, can't be < 0, so I set it to 0. A few turns later I restore it, but now it goes back to 10, which is clearly wrong and an exploitable side-effect, so I don't want that to happen.
I have 2 choices as I see it.
1. Allow the speed to be negative, but whenever I use it, I clamp it to the range [0,100] (say). Note that the same goes for if the speed is 95, I allow it to go to 105 if the "fast" spell is used. I need to be very careful when coding this, because if I fail to clamp, things will go quite wrong and it will be a bit unpleasant to track down.
2. Create an undo record that says "only increase by 5 when you put it back". This requires an architecture for storing the changes, but also needs quite a lot of care to ensure consistency and I am not 100% convinced it can be made to be consistent because other things can be messing with the stats inbetween the change and the undo. I rejected the "store the actual speed it goes back to" option for this very reason.
So: am I missing other possibilities, or if not, which of the two appeals and why?
where you need to explore your. app mobile web mobileapp hiredevelopers android ios windowsphone
Monday, July 25, 2016
Rpg Stats - Temporary Changes, Harder Than I Realised!?
Rpg Stats - Temporary Changes, Harder Than I Realised!?
Labels:
and refactoring,
Haste,
slow
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment