Dynamic Slope Quantization for VR Comfort

Background

As a preface to this, we will be discussing terms like “smooth movement” (moving the player smoothly throughout the game-world without them having to move in real life), “teleportation” (immediately snapping the player to a virtual destination after a brief “blink” of the camera), and “room-scale” (where a player has enough space in real life to walk around in (like a big room) while playing the VR experience, enabling them to move about in their VR environment as they’d like).

As VR developers, we run into many challenges, least of which is making sure that people who adorn a VR headset remain comfortable while in our experiences. Often, whether or not an experience is comfortable is based on how the user moves or is moved. While moving the player in a smooth way would seem to be more natural (since many of us do that in real life to get around), it will often cause motion sickness in VR, whereas instantaneous movements in VR (like teleportation) can be more comfortable. This VR motion sickness cannot only occur when moving horizontally but also vertically. This leads to many VR experiences having very flat environments to prevent any vertical motion issues.

We have a history of building highly detailed worlds in our games. We’ve been supporting both flat-screen and VR experiences using the same game environments for both. While making flat levels or spaces might work well in a VR-only title, it would be much more scrutinized on a flat-screen where players are much less likely to have motion sickness and often expect a wider breadth of navigation capabilities throughout environments. Also, there are game design advantages to conforming the player movement to the environment, as opposed to locking them onto planes that could potentially not match that same environment.

I’ve developed a technique for allowing players to traverse slopes, stairs, or any amount of reasonable vertical movement in VR by taking advantage of the fact that instantaneous travel has some comfort benefits. It also allows you to keep people in room-scale experiences reasonably close to the floor of the game environment. We’ve been calling it Dynamic Slope Quantization internally.

Our Method

Our VR camera is attached to an in-game object that represents the real-world floor of the player; let’s call it the floor component. That floor component is attached to a capsule, which is our character representation and moves around the in-game environment.

[Graphic courtesy of Derrick Robinson]

As the player walks around their room in VR, we are constantly moving that player capsule to match an equivalent in-world position if possible. When we move that capsule, we have to offset the floor component attached to it by the opposite of the movement of the capsule. This ensures that the VR camera doesn’t compound movements and that the capsule “syncs” up to the player’s real-world position. This also includes offsetting the height that the capsule moves. The effect is that you’re walking on a flat floor. If you didn’t offset the player location, you would have a constant movement effect, the capsule would never truly match the real-world player location, and you’d get a roller coaster feeling when going up and down the in-game environment.

At this point, you’ll want to sum up all the vertical distances that the capsule has moved. Then, you’ll want to figure out a height that you want the resynchronization of the floor and capsule to occur. We chose 20 cm which feels pretty good. Once this distance has been crossed by the capsule, you take the floor component and snap it back into the capsule where it would normally reside. This should be wherever we’d expect the floor to be in-game. That’s all it should take for the effect to work.

Here’s some pseudo-code to give you an idea of what that would look like. This code example uses Unreal Engine 4 structures but should be easy to implement in your environment.


//Code to move capsule to where the HMD is located
//CapsuleTravel is added to over time to keep track of how far
//the capsule has moved over several updates
float CapsuleTravel = 0.f;

//Find the HMD location in the Game World Space
FVector HMDPosition = GetHMDPositionInGameWorld();

//Find the Player Capsule location in the Game World Space
FVector CapsulePosition = GetCapsulePositionInGameWorld();

//Build a game world movement vector to tell the movement component where to move.
//There are probably more efficient ways to do this, but it works for these purposes.
FVector MovementDirection = (HMDPosition - CapsulePosition) * FVector(1,1,0);

//Move the character.
MoveCharacter(MovementDirection);

//AFTER PLAYER HAS MOVED to be where the HMD is located. This ideally would happen before the
//player would see anything.
FVector UpdatedCapsuleLocation = GetCapsulePositionInGameWorld();
//Find the vertical distance the capsule traveled after moving to match the HMD.
float HeightDelta = UpdatedCapsuleLocation.Z - CapsulePosition.Z;

//Accumulate the total vertical distance the capsule has traveled.
CapsuleTravel += HeightDelta;

//If the distance goes over the vertical distance threshold, go ahead and snap the floor component back into it’s default relative location.
if(FMath::Abs(CapsuleTravel) >= VerticalThreshold) // We chose VerticalThreshold to be 20cm.
{
    ResetHMDVerticalHeight();
}
//If we haven’t crossed the vertical distance threshold, we need to offset the floor component
//by the amount the capsule traveled to prevent the player’s HMD from also moving vertically.
//We also want to offset the floor by the amount the player capsule was told to move to make sure it only moved the amount we told it to
//and not double it.
else
{
    FloorComponent.AddWorldOffset(FVector(-MovementDirection.X,-MovementDirection.Y,-HeightDelta));
}

In order to keep the player as close to the floor as possible, you’ll want to sneak in floor height resets when possible and comfortable. For example, I found it worked well to immediately sync the floor height when the player begins to smooth-move and then to not quantize the player’s floor height until the player stops smooth-moving. Upon the player’s execution of teleporting or snap turning is also a good opportunity to reset the player floor height.

While we want to make sure everyone is comfortable playing our games, for our future VR games, we see this feature as a comfort option. We hope this little trick can help VR developers make their environments with fewer compromises, and not have to worry about the consequences for people who are susceptible to motion sickness in VR.

 

-Karl Johnson

Senior Software Engineer

twitter:@smapty

AREA MAN LIVES takes on Boston 

Hey all! Ryan from Cyan Ventures here, and I’m excited to be back from Boston with incredible things to talk about. Since we have returned, the Numinous Team has been actively working on multiple aspects of AREA MAN LIVES. In this post I’ll introduce you to the team and discuss some of the highlights of our trip. Let’s get rolling…

This was my second time in Boston. You might remember a group of us from Cyan travelled to  PAX last year to show Firmament in the Kickstarter Forest and help the Eagre team with ZED. As a person who generally stays on the west coast, let me say, I love Boston. 

Read More

A Window Into Cyan’s R&D Efforts for Firmament

Cyan has a strong history of pushing the boundaries visually with each game we produce, and the work we’re doing with our latest project- Firmament- is no exception. This often means that we have to engage in a fair amount of Research and Development to add functionality to the tools that we use. Here’s a video we recently put together with our Art Director Eric where he shows us some of the behind the scenes work it takes to make the world we’re building look as fantastic as possible!

Cyan's R&D Efforts

Firmament is an entirely new property – the beginning of another exciting new Cyan universe. It is a deeply immersive narrative adventure game for both VR and PC that is delivered using the state-of-the-art power of Unreal Engine 4. Firmament will be designed for VR on the Rift, Vive, PSVR, and Index, but will be completely playable on normal flat monitors on Windows, macOS, and PS4 as well.

As an aside, if you haven’t had a chance to back our campaign to help support the creation of Firmament, it’s not too late! We are still offering everyone a chance to get the game as well as the exclusive backer rewards we offered during the Kickstarter over at Fangamer. These rewards won’t be available once the game is released, and if you’re the sort of person (like us) who digs having a physical boxed version of the game (We see you! We hear you!) this is the ONLY time you’ll be able to get your hands on one!

From the Newsroom – February 2020

realMyst Masterpiece Edition for Nintendo Switch

realMyst: Masterpiece coming to the Nintendo Switch!

Last year we mentioned that realMyst was coming to the Nintendo Switch. Well the time is near and you can order a limited edition, starting February 28th! 

https://limitedrungames.com/products/switch-limited-run-63-realmyst

Remember, this is a Limited offer: Preorders close on Friday, March 27th at 11:59PM Eastern Time.

The e-shop digital release will be available soon. When we have more information on the digital release date, we will let you know. 

Cyan Ventures publishing a new game: AREA MAN LIVES

AREA MAN LIVES Logo

Numinous Games, the award winning studio that created “THAT DRAGON, CANCER”  is creating a new game called “AREA MAN LIVES” based on their previous release of a title named “Untethered.” 

For those unfamiliar with the project, “AREA MAN LIVES” sets the player in the hot seat as a small town radio show DJ. As the game begins, the on-air sign lights up, and the producer reminds the player that they have to speak, out loud, to begin the show. The player continues to interact with their voice, recording commercials and interviewing callers. They play records and pass the time with their odd-duck producer until their shift ends. Only when local townspeople start calling in does the player discover just how strange their coastal community can be. When the stakes are raised, can the player do anything to prevent the death of the area man who insists on saving the day?

Check out the full article, press release  and our merch page

Cyan Ventures will be at PAX East – Indie Megabooth

If you happen to be in Boston this coming weekend, come see us in the  INDIE MEGABOOTH section of PAX EAST!  We will be showing off an early version of AREA MAN LIVES and giving away some really fun items. Hope to see you there!

 

AREA MAN LIVES – A new collaboration between Numinous Games and Cyan Ventures

We announced Cyan Ventures with the belief that now is the time to explore the possibilities in VR storytelling. Our goal is to foster visionary game narratives from independent developers. It is for this reason we are excited to announce our next venture into this space.  

“AREA MAN LIVES” is a collaboration between Numinous Games the award winning studio that created THAT DRAGON, CANCER and Cyan Ventures This is a re-imagining and completion of a former title developed by Numinous Games named Untethered.

For those unfamiliar with the project, AREA MAN LIVES sets the player in the hot seat as a small town radio show DJ. As the game begins, the on-air sign lights up, and the producer reminds the player that they have to speak, out loud, to begin the show. The player continues to interact with their voice, recording commercials and interviewing callers. They play records and pass the time with their odd-duck producer until their shift ends. Only when local townspeople start calling in does the player discover just how strange their coastal community can be. When the stakes are raised, can the player do anything to prevent the death of the area man who insists on saving the day?

AREA MAN LIVES IS SLATED FOR A 2020 RELEASE AND WILL BE AVAILABLE FOR QUEST, RIFT, VIVE, INDEX AND A HANDFUL OF OTHER HEADSETS.

Full press release

Teaser Trailer via You Tube

Wishlist  via Steam

Join the discussion  –  Discord

Like Us  – Facebook

AML Merch 

From the Newsroom – January 2020

Upcoming Changes to the Myst Online Forum and Cyan Forum

Shorah Explorers!

Cyan has been going through a bit of a refresh lately and as a result, we have a few announcements to share with you regarding the future of the Myst Online forums, the Cyan forums, and future community discussions.

Read More

Exploring in the Cyan Vaults #2

Rand recently handed me a stack of papers he thought I might be interested in…

‘You should put this in the newsletter. It’ll blow people’s minds!”

“Old invoices? Really?” I think…

“Not just old invoices. It’s the invoice for the dagger!”

Turns out Cyan commissioned M5 Industries to build the dagger that graces the lobby of Cyan HQ… and the prop itself was built by none other than one of our favorite makers in all the land: Mr. Adam Savage.

Here’s a link to Adam briefly talking about it during a podcast recording! [Very slight Riven ending spoilers by Adam!]

As he mentioned, the original intention was for the final scene of Riven’s “good ending” (where the giant dagger plummets into a newly opened rift) to be filmed live.

The work order contains the plans for not only the dagger, but the rift which was going to be built as 2 tables that could be pulled apart at the proper moment- letting the dagger plunge into the depths while cameras rolled.

In the end it was actually easier to create the final plummet in CG, but you don’t spend $4,000+ on a prop just to throw it away… so the full-sized dagger was re-purposed as a striking greeting for our HQ entryway!

One other bit of esoteric fun that we noticed was that it appears the folks at M5 Industries used a Mac to create their fax cover sheet… that’s very clearly the iconic ‘Chicago‘ font, created by the legendary designer Susan Kare being used. Amazing!

As an aside, this is no longer the location of M5 Industries (and the phone numbers are all disconnected as well), so if you have any notions of making a pilgrimage… please leave the poor folks that currently reside in the location now alone!

Fan Cave: Moiety Jean

Jeff: Welcome to Fan Cave! Where Cyan introduces you to a fan… and their Cave! Today I’d like to introduce you to Jean.

Jean: My name’s Jean, or Moiety Jean among Myst fans. I make costumes, sculpture and jewelry, both original designs and replicas from fantasy worlds of games, film, and tv.
Cyan’s worlds have been a huge inspiration ever since I was in high school. I saw my mom playing Myst on our new computer and gradually became glued to her shoulder to explore the Ages with her. When I started my own game, and needed a hint for a puzzle, her clue was “well, what would happen if you did [sequence] in real life?” and I remember being floored that this game was inviting us to experience it as if we were really there. We got Riven for Christmas the year it came out, and from the first seamless motion video I was completely immersed. I’m not sure whether the visual world-building of these games helped shape my personal aesthetic or just happened to click precisely with it, but here I am 25 years later and still in love with weathered textures and leather-bound books.

Read More

Construction Time Again

Even the fishtank got temporarily relocated to the bathroom.

Ahhh, 1996… 23 years ago.

It was the year that actors Tom Holland, Zendaya, and Hailee Stenfield were born. It was also the year that spawned the Macarena, gave us Jerry Maquire, Independence Day, Fargo, and ushered in the Tickle Me Elmo doll. AOL.com was the biggest destination on the internet with 41% of folks checking the site regularly.

Also? It’s the year Cyan moved into our headquarters just outside of Spokane, Washington. Which, according to our website is: “about 119 trillion miles from the nearest habitable planet.

Read More