Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- This is a stickied message to explain the motivations behind my latest PP change.
- The purpose of this build is to accomplish three major key ideas.
- 1: Remove the arbitrary nature of object count based length
- 2: Seperate flow aim from the 'speed' skill and create one skill to represent all 'aim', and one skill to represent all 'tap'
- 3: Remove time based decay and instead use an object based decay.
- 1 Explained: The core of #1 stems from logic created by joz, which allows for us to sum each object in a map individually. We create a strain rating for each object, and then sum those objects using a special math function which allows us to set the amount the SR grows multiplicatively with the strain of the objects. For example: if we have two objects both with a strain rating X, then we can calculate their combined strain rating as X * StarsPerDouble. This also works for groups of notes. If you duplicate an entire map, the SR would increase by that same StarsPerDouble constant.
- 2 Explained: The work that was done to aim and speed was to make it so that tap would be its own skill, separate from aiming, and visaversa. The skills rework is divided into two major goals:
- 1: Account for snapAim (jumps), flowAim (streams), and other correlations between these two (hybridAim).
- 2: Account for the difficulty to tap a pattern, which is constituted as both streamSpeed and rhythm complexity.
- 2-1 Explained: By using a prediction algorithm based off the objects strain time, angle, and other factors, we can predict a probability per note that a hitObject will be flowed to, or snapped to. This prediction allows us to treat objects differently depending on their estimated flowiness or snappiness. If a note is likely snap, then we will reward for wide angles. If a note is likely flow, we will reward for acute angles. If there is a transition from snap to flow or visaversa, we can reward this as well. I use a base of Fitt's law for snap, but do not do so for flow.
- 2-2 Explained: Strain for tap is now a function of both the deltaTime of the object, as well as the rhythmic complexity of the pattern of historical notes. This rhythm complexity is fairly complicated, but primarily works by counting 'island' sizes (triplets = 3 notes, quads, 4, doubles 2, etc). We count the number of islands, and sum the geometric average of the deltaTimes of any transitions between these objects, and multiplicatively factor it into our strainValue (the one thats determined by deltaTime).
- 3 Explained: I removed the time based decay system of PPv2, and instead use a per object based decay system similar to delta_t. Whereas before, if you had 4 jumps in 1 second, it would decay at the same rate as having 3 jumps in 1 second, now these decay according to the # of objects. This generally makes it so aim is much more balanced around real velocity and thus "my dt nerfs".
- BONUS: I did this all without any attribute changes or data contract / DB changes. This is a huge restriction and is why there are some things that can't be fixed in this iteration.
Advertisement
Add Comment
Please, Sign In to add comment