Torus Tuesday #17 – Setting the scene of Act 2

Coming back to the office after the holiday festivities, we started work on Act 2’s story, which starts in a seedy Diner where you meet Alexa, an intelligence officer at the precinct.

Act 2 of The Torus Syndicate will take on a darker tone; To illustrate that, we worked on creating a rainy night time scene that consists of a few distinct elements:

The outside of the Diner is shown above. As we mentioned before about world building, it is important for the player to understand the relationship of the Diner as it pertains to the rest of the world. We put the diner next to the sidewalk, where we show the player glimpses of the outside space through some windows.

To create a believable rainy scene, we added rain particles that collide with the world geometry, bouncing off various objects and people in a realistic manner. We also added cars and pedestrians to create kinetic motion in order to encourage exploration of the outside through those windows. Finally, we added sounds of rain, and dramatic lightning that floods the diner to tie the inside of the diner to the outside.

The inside of the diner is designed to contrast the dark uninviting tones of outside; Warmer colors, and ample lighting, and talking people contribute to the idea of the diner being a safe space, which is similar to the Police briefing room in Act 1. Putting these two areas together creates a scene that invites exploration.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #16 — Physics & Immersive VR

Much of the effort in building The Torus Syndicate went and still goes into making as immersive a world as possible. We noticed that, in doing so, our focus has been particularly drawn to motion. We’ve already talked at length on how we developed the mechanic that players use to move around, Curated Locomotion, and how critical we believe it is to drawing players into our world. The player’s motion, though, hasn’t been the only motion of our concern; the player’s enemies have had their fair share of attention too.

I’m particularly proud of the flying drone, one of our more recent additions to the game. They play a key role in the third, rooftop level, and I think their addition to the new survival mode really added a whole new dimension of fun. The drone is special compared to all its brethren not just in that it flies but also in how it’s modeled: its motion is the product of a realistic physics simulation.

Drones fly and attack the player and then crash.

Enemy drones fly and crash realistically, which is probably of little comfort to the Torus Syndicate thugs operating them.

The drone has real physical properties, such as mass and drag. When the NODE AI Director sets the drone’s destination, its autopilot computes the desired thrust and overall torque that its motors need to produce to push the it there. If the engines stop working (because, say, the player has thoroughly damaged them), the drone, like any of its real-world counterparts would, loses thrust and comes crashing to the ground. What’s particularly cool about this setup is that at the core of the drone’s autopilot lies a PID controller that’s responsible for maintaining the motor’s output so that the drone stays on track. That term might not mean much to anyone who’s not a control system engineer, but PID controllers are used in the real world to run all sorts of systems, including some very real drones. It may not be the first thing on a player’s mind when they’re dodging the bullets coming from an in-game drone, but it’s these small details that add up and help us make the virtual experience of playing The Torus Syndicate feel as real as possible.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #15 – Emotive Response

In our continued exploration of the VR/AR space, it became increasingly evident to us that in many VR applications, the player is spending the majority of their time getting face-to-face with other players or NPCs throughout. As most VR applications use a first person view system, this is more or less expected; The different is, of course, that instead of taking up the space of less then an inch on your monitor, character faces now take up a realistic portion of real estate in the player’s vision.

The players in Rec Room seems to randomly change faces based on a mixture of activities, creating an emergent story that ends up being hilarious.

Invasion! from Baobab Studios uses this expressive bunny to convey the tone of your encounter with the third kind.

Due to this closeness, it becomes painfully evident whenever characters have static, emotionless faces. Immediately, the interactions become robotic, and the illusion of NPCs being real quickly falls away.

Since we are dealing with humans in The Torus Syndicate, we decided that the NPCs the players interact with should have some level of animation. By Extracting the eyes and mouth off our character textures, we converted them to sprite sheets, which was then re-introduced to the character as a series of faces that can be changed programmatically.

The end result makes the NPCs look dramatically more alive. Using the system, we can now create idle states for the NPCs, and have them actually “speak” to the player when they’re talking about something:

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #14 — Sketches, Vignettes, and Seamless Transitions

We’re hard at work on exciting new content for The Torus Syndicate. As we do so — as we’ve done since the project’s start — we need to be mindful of the unique challenges that come with making a virtual reality experience as seamless and immersive as possible. Take, for example, the The Torus Syndicate‘s introduction. It sets the game’s stage by jumping the player through a few different episodes from the life of the protagonist, Lucas Lawson. They visit his home and learn of his motivations for joining the police force. They experience going through the police academy and learn to the play the game. And they graduate alongside the rest of their class, ready to investigate the dramatic underworld of the Torus Syndicate. We wanted the experience to be utterly seamless, to give the player the sense that they were being whisked from vignette to vignette without loading screen or hiccup.

If the game weren’t a VR game, we might be able to whisk the player away simply by building each vignette (or “sketch,” as we call them internally) into its own level. Normally, the game has to load each level just before the player enters it, but each sketch in the introduction isn’t so intense as to require significant loading time. Yes, we might skip a few frames and induce a momentary pause, but not enough to require a loading screen. In a virtual reality headset, though, that momentary pause takes on a whole new look-and-feel. A brief enough pause might cause the game to “tear” a bit, as the video output is no longer completely in sync with the motion of the player’s head. That’s not pleasant, so, if the SteamVR platform detects that the loss of up-to-date video is bad enough, the player will get kicked out for the duration to a static VR environment that the computer can quickly render. The player won’t experience any nausea, but, for the duration, they also won’t experience the game.

Our dev computers use a holodeck as the fallback, static VR environment, but, as cool as it is, we’d rather be playing the game.

To keep them completely in the game without hiccup, we decided to keep all the sketches in the same level so they can all be loaded at once in the very beginning. If you could take a birds-eye view of the introduction, you’d see each sketch near each other. They’re self-contained with their own skyboxes to prevent players from seeing out into another sketch. Each sketch also has a separate transition space; this is where we put the title text that the player sees before they arrive at the next scene. It’s all wired up into the so-called SketchManager. When a player’s ready to move to the next big thing in Lucas’s life, the SketchManager jumps into action. It fades the screen to black and instantaneously moves the player into transition then repeats the process after a short delay to move them into the next sketch. For the player, there’s no loading screens, no tearing, and no pauses. It’s as seamless as teleporting from one place to the next — and, if you’ve read one of my many posts on locomotion in The Torus Syndicate, then you know that makes for an immersive experience.

Lucas Lawson grew up in a strange town. The police academy, with its own sky, is on the right; his home street is in the middle.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #13 – The Proving Grounds

Moving past the hustle of our early access release, the team is now focused on creating new content.

Our biggest goal right now is to extend the replayabilty of The Torus Syndicate, by taking the core mechanic of fighting enemies, taking cover, and moving between areas, and applying different parameters around it to create new modes that deliver more of the core experience.

To that effect, we’re building 2 new modes; Survival, where enemies continuously attack in greater and more advanced numbers until the player loses, and Time Trials, where players complete various challenges to get the best time or the highest score.

We’ll be showcasing more of Survival mode in the coming weeks, but right now, we have a sneak peak of the first Time Trial Level:

 

In this challenge, players will shoot at pop-up targets and compete for the best time.

The new area will come with new achievements and Steam Leaderboard support.

Target positions are randomized each time, requiring quick reflexes over memorization.

This update should be available to play sometime this week. We’re excited to see how quickly our players can complete the course!

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #12 — Adapting to the Player’s Setup and Goals

It’s been about a week since the launch of our first title, The Torus Syndicate. We’ve thoroughly appreciated watching so many people enjoy the game. One of the little details that we think contributed to the positive responses we’ve seen is how the game adapts to the each player’s individual setup and adjusts for each task they’re trying to achieve. Curated Locomotion (the game’s teleportation system, about which I’ve talked about in a series of posts) is a perfect example. It uses the play area’s shape and size to fine-tune each destination so that the player can best take advantage of the environment to accomplish their goal.

When players move into a firefight, Curated Locomotion ensures they’ll have ready access to cover.

When breaching a door, Curated Locomotion ensures that players have plenty of play space in the room ahead.

The fine-tuning mechanism is baked into the process through which we design each level. The process starts out pretty standard with laying out the map and populating it with scenery, much of which our players duck behind as cover while they fight through the world. We also configure the NODE AI Director, giving it an idea of what kind of challenge we want to throw at the player. Each playthrough might be different, but the broad strokes are locked down enough that we can tell which locations provide the most tactical advantages. In fact, that’s exactly what we do. As we install each locomotion site, we place a few different prototype play areas of varying dimensions. When a site becomes available for teleport, the game finds the prototype that best fits the actual play area and adjusts the site accordingly.

Three prototype play areas placed on a street among cover.

For this street fight, prototype play areas are arranged so that small ones don’t waste any space with solid objects, like the phone booth and mailbox, while still providing adequate access to cover.

These adjustments allow us to hand-craft each situation and accommodate a wide range of VR setups. Whether a player is peeking out from behind a car to take down bad guys or breaching a hotel room, we’ve made sure that everything they need is always readily available. And that definitely helps make for a seamless — and frustration-free — experience.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #11 — First Milestone

After 14 weeks of development, the time has finally come to our first milestone; The release of The Torus Syndicate on Steam!

We here at Codeate is incredibly proud of our first shipped title, and hope that it’ll be the precursor to new and exciting things to come! It has been overwhelming to see people around the world trying the game for the first time, and getting their reactions.

The way forward

From this point, the goal of the next update will be focused on rounding out the play-ability of the campaign thus far, as well as introduce a survival mode to provide replay value. This work will form a foundation with which we’ll continue our work on our more ambitious goals, such as co-op multiplayer and character customization. We expect this major update to drop around mid-late December.

One of the coolest things about working in the VR space is discovering and sharing new ways to interact with this new medium. We recently posted this article where we discussed a gaze method we’re calling cone-casting, which makes the gaze system work consistently, independent of the distance that the object is from the eye. We would definitely be continuing along this path of open sharing and inclusion that VR certainly needs right now.

That’s it for now: If you’ve purchased the game, fantastic and thank you for the support, if you have not, we hope you’ll give it a try at some point! In the meantime, check out the following reviews on our game.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #10 — Cone-casting: A more human gaze system

The Torus Syndicate launch is just around the corner! One thing players will notice when they get their hands on a copy is the importance of gaze in the game. A person’s eyes provide a window into their focus and intent; they generally look towards what they want, where they want to go, and with whom they want to speak. Gaze input takes advantage of how people naturally behave and, when done correctly, makes for a truly intuitive and immersive input mechanism.

Doing it correctly, as it often turns out, is easier said then done, and that starts with figuring out exactly at what the player is gazing. The simplest solution — the one we’ve almost exclusively seen in the wild — is to cast a ray forward from the player’s head; when it collides with something, then that’s what the player is looking at. Early versions of The Torus Syndicate used this logic. Early play testers of The Torus Syndicate did not like it.

Play testers had trouble actually triggering the gaze mechanism. That invisible ray would often just miss the side of what they were trying to select, with small or far-away objects exacerbating the situation. Part of the problem lies in that fact that today’s commercially-available VR headsets don’t do eye tracking. They know the position and orientation of the player’s head with sub-millimeter and -degree accuracy, but they know nothing about what their eyes are actually doing. People look with their eyes more so than just their heads, so the VR headsets can only give us a rough approximation about what the players are actually trying to look at. We could instruct players to keep their eyes dead center in their sockets and move only their heads when gazing, but we wanted people to feel like they had actually become our game’s human protagonist. Instead, we were making them feel more like owls.

An owl moves its head, keeping its eyes stationary.

Players shouldn’t have to act like this owl to get the best experience.

Our first attempt at restoring our players’ humanity was to give them bigger targets to hit. We divorced an object’s gaze size from its real size, making them appear larger solely for the purposes of the gaze mechanism. However, we now had the opposite problem: our gaze system, which once thought that players were gazing at nothing special, now thought that the players were gazing at many things special. Sometimes, players would try to talk to someone, but the gaze system would misread them and accidentally teleport them across the map. We quickly realized that we simply weren’t taking into consideration how perspective actually works. As an object gets farther from the player, it appears smaller and becomes harder to hit. So long as our compensation mechanism doesn’t vary depending on an object’s distance, the gaze system would require an inconsistent (and sometimes impossible) level of precision that would be frustrating to the player.

One way to make for a consistent and frustration-free experience is to dynamically change the gaze size of all gazeable objects depending on where the player is. That is, if an object is far away, make it appear larger to the gaze system so that it’s as easy to pick out as a close object. This is an awkward solution, the most problematic aspect of which is that it simply won’t work if there are multiple players. Fortunately, we found another way by imagining the player’s gaze as a cone extending out from their forehead, with everything inside the cone considered to be in the player’s gaze. Up close, the cone only encompasses a small area. Far away, it grows to encompass a larger area. This is really just taking that awkward change-the-size-based-on-the-player’s-position solution we just talked about and flipping it inside out. However, instead of enlarging far-away objects to make them easier to pick out with a thin line, we keep the objects the same size and pick them out with a cone that gets thicker with distance to compensate for the effects of perspective. The results are the same: an even sensitivity independent of where an object is in relation to the player. With a cone, though, we can keep multiplayer on the table.

The green figures animate as the player's gaze passes over them.

The green figures animate as the player’s gaze passes over them.

Unfortunately, cone casting isn’t as commonly supported by commercially-available 3D game engines as ray and sphere casting are. That’s not surprising. The calculations involved in checking if a collision occurs between an object and a ray or sphere are simpler (and computationally less expensive) than between the same object and a cone. The workaround, though, was surprisingly simple, if only in retrospect. We attached a virtual, invisible cone to the player’s forehead. The cone is set to only interact with the special gaze colliders attached to objects ready for player manipulation, which helps to keep resource consumption and spurious physics events to a minimum. As the player looks around, the volume sweeps across space. When an object collides with it, we can be pretty confident that it’s entered the player’s gaze.

Knowing what the player is gazing at has proven indispensable to making our players’ experience as immersive as possible. Each element in the game can sense when they’re looking at it and act accordingly. It’s almost like the world bends to our players’ mere thoughts, and that’s absolutely the kind of world we’ve set out to build.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #9 — A lesson in tossing

Early in the design of The Torus Syndicate, we knew that we wanted some sort of object that the players can throw in the game; This object would provide alternative combat options that required some skill to use, but results in a great payoff if placed/timed right. The goal was to create meaningful choices for the player while they’re playing the game; Whether to use the powers now and risk not having it when a more challenging scenario occurs, or to use it now in order to get past a particularly tough situation.

 

The initial approach we went towards is to simply let the players pick up the object and throw it. It was the intuitive solution; Since the players now have hands; Why not let them actually toss the object? Surely it would increase immersion!

As it turns out, the mechanic was a double-edged sword; While it was certainly awesome to chuck a grenade across the world into the feet of some poor NPC, it was also incredibly hard to do so with any kind of accuracy. After a couple throws, we also found it to be quite tiring if the grenade needed to go somewhere far away. On top of that, it was also really inconvenient to use, requiring the player to do multiple steps in order to actually use the grenades.

 

 

Stepping back from the ledge of bad game mechanics disguised as new immersive experiences, we had to ask ourselves the question; Is it too much? Are we getting what we want?

In the initial goal, we know that a successful player should be able to use this tool in a skillful manner. Having the player toss the grenade introduces a mechanic that is so variable that a skilled player might still fail in their task from time to time, and a novice player has practically no hope of the item doing what the player wanted to do. This isn’t fun, it’s the definition of frustrating.

The example above goes back to one of the earlier topics about mastering the craft; Being a master requires not just knowing what to put in, but what to leave out, as well. A director doesn’t use every type of cut or transition he/she knows simply because it’s a film. Instead, the good director chooses the types of cuts and transitions that best communicate the goal of the movie, which is to deliver a story.

In a similar vein, we realized that we needed a different way to deliver the gameplay we wanted. We eventually repurposed a common teleportation approach in VR; Using the user interface of a parabolic arc teleporter, we had a method to show the player the trajectory and landing location of their grenade using a single button press, and provide real-time feedback to the player on how changes to their controller orientation would affect the trajectory. This fits the design goal of providing timely and effective usage of the tool, it was also accessible to all players (independent of their strength) and saved us significant amounts of time than if we implemented another system. It’s certainly a more game-y design, but we think it’s an appropriate trade-off when we see it through the perspective of usability.

Hurray! The Torus Syndicate is now on Steam.

Check out our store page and buy our game if you’ve been enjoying these posts!

Torus Tuesday #8 — Gameplay Teaser Trailer #1

Happy Torus Tuesday!

We here at Codeate are celebrating our two-month anniversary of the Torus Tuesday Dev Blog. It has been a joy to write about our journey developing for virtual reality as well as share some of our thoughts regarding the interesting interaction problems that generating VR content entails.

We’ve spent the past few weeks talking about the process of developing The Torus Syndicate and the new ideas we intend to introduce through it. For all those pages of texts and brief animations, however, we’ve only given you a few tantalizing glimpses of the actual game. Today will be different, as we’re now presenting our first ever teaser for the game.

The Torus Syndicate is an intense, non-stop arcade rail-shooter built from the ground up for room-scale virtual reality. It follows Lucas Lawson, a rookie cop swept into the dramatic underworld of the Torus Syndicate. Players put their shooting, dodging, and tactical skills to the test as they battle across an urban landscape in a quest for justice.

We’re so excited to be sharing our game with the world in just a few weeks under Steam as an Early Access title. Stay tuned!