Skip to main content

Behind the Scenes: Scaling Improvements

Hunter Bobeck | Gameplay Programmer

Hello imaginative players! Today I'm bringing an update on scaling in Imaginarium (our new working title!)...

While playtesting, we have received two complaints related to scale in the game. The first was that the curves being used for shrinking and unshrinking the player during the tower interaction were a bit off. The second was that the proportions of toys on the table felt wrong when the player shrunk themselves down.

We already mentioned the shrinking complaint in the previous update for 1-17-2018, but I'd like to begin by explaining it further. To handle this issue, I first updated my Virtuality Controls plugin (available for anyone to use here on Git Hub) to provide built-in interpolation curve options when performing interpolations. As you may remember from the previous post on Context Changing, interpolation values must be calculated over the course of the shrinking and unshrinking interactions to both reposition the player and scale the environment. I had been hardcoding interpolation values previously, based on the formulas explained on Robert Utter's post. Now the different curve options have been modularized into settings to be made available in the Unity inspector:

The actual change, then, was straightforward (although it required some testing):
  • Quadratic curve implemented for shrinking (unshrinking is still using smootherstep).

Here's the before:
And here's the after:
If you're still looking for the difference (it's much easier to notice when you're flying there in VR), pay attention to how the new shrinking curve results in a more comfortable easing toward the end of the shrinking event. This better maps symmetrically over time to the unshrinking that will occur afterward, which is still using the smootherstep curve instead of a quadratic curve.

To approach the second complaint, of toy proportions feeling off when the player is shrunk, I had to first determine the source of the problem. The toy proportions look fine and toylike at the room scale, but only once you shrink in to the table scale do they feel disproportionate. I figured this was because toys are often made to be smaller than they should be – particularly, the larger objects such as towers, castles, and trees. There are exceptions, of course, like Legos with their block-by-block metrics, but in many cases toys will look smaller than they would be for real. Here are Google's examples of this (notice how the structures are often way smaller than they would be in an actual fantasy world, in comparison to the characters). Short of having all of the toys in our game work like Legos, which is not an intention of ours, Alex and I came up with a solution to scale certain toys differently relative to the environment when the player shrinks. That way, when you go into the imaginary table world, the trees and towers will actually "tower" over much shorter goblins like they would in an actual fantasy world. This feels right to the player because we are compensating for the arbitrary scales that toys tend to come out of the box with. Then, when you leave the table scale imaginary world, your toys will be toy-proportionate again. This way, you get the best of both worlds. See the video below to get a feel for how some toys now scale uniquely relative to the other objects on the table. (You may have noticed this with the trees in the new gif above already.)