The Heavy Light Design Challange
When building Curvature’s Heavy/Light mechanics I took the design goals set forth for each in the GDD, and used those to build the two fields (heavy and light). I then began having others play through and test them. After collecting as much feedback as possible I would tune the fields until I was happy with them again, and repeat the process. After much iteration we finally ended up with fields we were happy with, however there was definitely a lot of work that went on between than first pass and the final product.
I started with the Heavy Field. It was to be the fastest form, could break through things, and accelerated quickly downhill. Given this it seemed likely that the player would spend more time in the heavy form than either of the others! So I looked to our GDD for a starting point, and distilled the goals for the heavy field down to the following:
1. Feel “Heavy”
2. Very High Maximum Velocity
3. Relatively Low Acceleration, but should accelerate very quickly downhill
4. Able to break through some surfaces.
5. Should not bounce much
6. Limited Control (Turning)
For the most part they seemed simple enough, so I made a first pass at implementation. I increased the density (and thereby the weight), adjusted the amount of friction, and the force with which the field could move. Finally I added a downward force to increase the effect of gravity. The ability to break through certain surfaces I handled through the construction of a custom kismet node to allow our level designer to easily test that player’s current state, and use that information to decide whether or not the field should break through an object. I tuned till I was happy with its “feel” and moved on to the Light Field.
|
|
|
I began work on the Light Field the same way as I had with the Heavy Field, pulling the design goals from the feature description in the GDD:
1. Feel “Light”
2. High Upwards Velocity
3. Low Downwards Velocity
4. Bouncy
5. Lower Top Speed than Heavy Field
Again the goals seemed straight forward enough, so I implemented. I added upward force to reduce gravity, lowered density, adjusted friction, and movement force. Again I tuned until I was happy with it. Now it was time to turn others loose on it.
|
|
I organized to have my team, a few mentors, and a couple of instructors test my mechanics out. I quickly realised that something wasn’t right, and the feedback I received after the play sessions confirmed my suspicions. Players were having difficulty telling the two forms apart. The difference in fall speed was dramatic, but there just wasn't enouugh difference between the other attributes for the players to really 'feel' the difference. So I went back and began attempting to tune the fields to create the differentiation I was looking for. However I quickly discoverd the biggest challenge wasn't acutally tuing the Fields, it was decided what testers were trying to tell me, exactly. To solve this I developed a feedback form with a fuzzy logic system to simplify the feedback process, and to allow them to provide more precise feedback (cause man was I sick of hearing, "make it heavier"). Each of the attributes had a rating slider, dead center ment no chnge, move it left to decrease, move it right to increase. Now I had feedback that I could use to tune actual variables. So now I had to actually impliment my feedback! |
|
|
Looking at the two fields together the first thing I realized was that their accelerations from a dead stop were nearly identical, and no amount of tuning values was giving me the differentiation I needed. So I built a “momentum” system in to the heavy field. I took a portion of the player’s current velocity, and applied it as an additional force to the field. This allowed me to lower the amount of force applied to accelerate the heavy field, slowing its acceleration, without compromising its top speed. Now you could really feel that build of momentum in the Heavy Field! Unfortunately lowering its acceleration that much had made it nearly impossible to turn, at high speed. My solution was the speed boost ability. Adding a speed boost that applied in whatever direction the player was pressing on the left control stick, gave the player the ability to turn the Heavy Field at high speed again. It also gave the player a way to quickly recover from hitting an obstacle, and a way to build speed before reaching a jump or ramp. This also made the game quite a bit easier, which was another of our early design challenges. The final step was to give the speed boost a cool down period. This prevented the player from being able to use it constantly to turn the Heavy Field, or to instantly reach top speed. I also tweaked some of the Heavy Fields other physical properties, most notably changing its physics to greatly reduce the amount it bounced. Now I had a Heavy Field which accelerated slowly under its own power, but built to a very high top speed, and while the player did have control over the field, there was a constant danger of being caught without the speed boost, giving a feeling of pushing to the edge of control.
Feel Heavy: check, High Top Speed: Check, Slow Build of Acceleration: Check, Very Little Bounce: Check, Limited Control: Check.
Looking good! |
|
Next I looked to the Light Field, while it had effective low gravity, I was limited on how low I could make it without having the player fly off the top of the map with every jump they hit and they could still build up a lot of speed while falling, it just took a little longer. The players wanted to feel an instant difference between the two fields when switching to light, especially in the air, they wanted to feel more like they were floating. The solution was to give the Light Field a brake that applied only when travelling downwards above a certain velocity threshold.
Similarly to the momentum system on the Heavy Field, this brake is based on the Z-Axis velocity of the Light Field, the faster it’s moving, the stronger the brake. Now when switching to the Light Field, they player get’s a feeling of being buoyed up, and the threshold to engage the brake gave me control over the max fall speed of the Light Field. I then applied a slightly modifed version of this same brake to the horizonal speed of the light field. This allowed me to increase the force moving the field, thus higher acceleration, but still lower top speed than the heavy field. Along with greatly increasing the amount of bounce, the Light Field, now felt light, and the testers felt it too!
Feel Light: Check, High Upwards Velocity: Check,
.Low Downwards Velocity: Check, Bouncy: Check, Lower Top Speed than Heavy Field
|
|
|
Now we had the feeling we wanted from the two fields thanks to tuning, feedback, and iteration! Now it’s time for some best practices!
Lead the Tester!
Ask specific questions to get the answers you need! Feedback forms are especially useful for this! Also simplify questions as much as possible, one of the biggest barriers to effective testing, is just making sure that you and the testers understand each other. Fuzzy logic is a great way to simplify complicated systems to something that can display tuning variables quickly and easily.
Always Code for Tuning!
Remember that nothing works correctly the first time, no matter how perfect you think it is! Always do a little extra work at the beginning to save yourself, a lot more work when you have to come back to tune/modify existing code!
Give Yourself A Solid Base to Tune From!
Once you have a first pass of the system in place, don’t try and tune everything all at once! Just tune one thing at a time! Then make another pass, etc etc. It’s much too easy to change several things and then not know exactly which of them, or which combination, actually solved your challenge. Plus much of the perception of a system is based on comparison. So you could actually be undoing your solution as you do it, by modifying another system at the same time.
|
|