REDspace Launches First VR Title

We are so excited to be launching REDspace’s first VR game, Gunball, today! It’s available on Steam for HTC Vive. Over the last six months, our passionate team has been hard at work on this wonderful and crazy sports game, and we couldn’t be more excited to share it with the world. But where did Gunball come from?

To experiment with new technologies and continue to hone our skills, we developed a crazy and unique VR prototype called Gunball. Throughout its development, I had a steady stream of people coming over to my desk to try it out, often repeat visitors. Word of mouth spreads quickly in our office and, as a result, a lot of buzz was generated throughout REDspace.

Because of the overwhelming response we received with the prototype, we thought “why not let other people enjoy this wacky and addicting game?” So over the months that followed, our team collaborated and worked diligently to refine the game and make it into an experience we can be proud of. This took play testing, iteration, and learning a ton about VR design and development along the way.

For those who don’t know what Gunball is, it’s a brand new sport-shooter where players serve balls up with one hand, and blast them into nets using a revolver in their other hand. Talk about hard core, right?  It’s a game that is not only extremely accessible for people who have never played VR, but also has a high skill ceiling so that experienced hardcore players can really dig in and rack up a massive score.

This makes it the perfect game to show to your friends who have never tried VR before, as well as a great experience for those who want to show off their skills and really compete. The game supports local and online leaderboards for each level, allowing you to compete against your friends at home, and everyone else in the world!

During our launch week, we are offering a 35% discount, which brings the price down to $9.75 USD! It’s a great deal, so take advantage of it while you can!

We’re incredibly excited for this release, and we hope to see you all fight for the top spots on the leaderboards! We know we will be.

How Far We’ve Come

We are just a week away from release! In the past week we have been busy squashing bugs left, right, and center.

Since we are on the home stretch, I thought it would be cool to look at some shots from the original prototype and break down what’s different. You can think of this as a followup to my “From Prototype to Product” post a few weeks ago.

First up, we have Coach Ball!

Here he is as he appeared in the prototype:

And here he is in his final form:

He looks roughly the same, however he’s been cleaned up, colorized, and tweaked a bit here and there. His ball shape is also rounder than the rest of the balls in the game, which provides a better surface for his face and differentiates him visually from the other balls.

In the prototype his mouth movements didn’t match up at all with his audio, so his mouth kind of just flapped regardless of what he was or wasn’t saying. In his final iteration, we animate his mouth along with the waveform of his dialogue, creating some more believable voiceovers. It also means that Justin, Coach Ball’s voice actor, can ad-lib lines without the need for custom animations.

… Okay, there’s one bit I lied about. That first image isn’t exactly our first iteration of Coach. Here’s a shot I put together one night to pitch the idea of a talking ball to the team:

Absolutely nightmarish… But it got the point across. By the following morning, Justin (who’s also our art lead) had drawn the face we used in the prototype which in turn drove the final design.

Next, let’s compare gameplay!

Our initial shot is from the prototype:

Here’s a shot from game in it’s current state:

So a lot of the fundamental ideas are the same. You toss balls up, shoot them through nets and score points to land on a leaderboard.

Aside from that, there are some huge differences:

  • Every single programmer art model in the game has been replaced with cleaner looking, and better textured models created by an actual artist.
  • We have a huge and awesome stadium with a crowd that goes nuts and tosses confetti when you score. It really makes those tricky shots rewarding.
  • Tons of other visuals and effects have been tweaked, like the post processing stack so the game doesn’t have so much bloom, and the skyboxes that shift from day to night across our stadium levels.
  • We’ve changed over from a bowling alley style ball return, to chutes that surround you. This enables you to have 360 degrees of movement, and it helps you build spacial awareness in the environment. Skilled players can easily pick up balls from behind them without even looking!
  • Many of the underlying mechanics have been changed heavily. Even the code to throw and shoot balls has been changed a lot to both be more accessible, and give you more chances to show off your skills.
  • The score multiplier system was added to reward players who want to pull off crazy shots by getting some air time. In the gif, I tossed the ball over my head, behind my back, and shot it with a 10x multiplier. It’s one of my favorite shots to pull off in the game at the moment.

Lastly, something that was completely new…

The Rainbow Volcano! This arena has you playing at the heart of an active, and extremely colorful volcano. Each net you shoot through makes the entire arena erupt into a shower of light and color. We had thought of some crazy alternate arena ideas, but this one stuck, and for good reason!

So, that’s it for this week. Next week we launch on Steam with a 35% discount for the first week, making the game only $9.75! Add it to your wishlists now! We can’t wait!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on TwitterFacebook, and Instagram.

The Road to Release

On June 28th, you will be able to play Gunball! This is an exciting time as we continue to push toward our release day. Our current development efforts are now centered around finalizing our audio, and fixing bugs. So instead of focusing in on a cool new feature, I thought it would be interesting to talk about the work we’re doing in this phase of development.

The audio for our game is being edited, balanced, and implemented by Jed; one of our developers, who also is a great audio engineer. Right now he’s removing our placeholder Coach Ball voice over recordings that were quickly recorded using a Snowball microphone, and replacing them with fresh recordings taken using professional equipment.

After that, Jed will be finalizing our sound effects. That means he’ll be adding any remaining sound effects that need to go in the game, and balancing it all so that each action you take has an appropriate sound without overwhelming your senses. After that, audio is done!

For bug fixing I’ve been working with Aaron, another of our developers, on squashing all of the bugs our QA team finds. We’re in the fortunate situation that the game is stable and runs well, so our bugs primarily revolve around covering different use cases that players may encounter.

For example, one bug I tackled recently caused balls to gain score multipliers if you held them while pausing and un-pausing the game. It’s not the sort of thing a developer may encounter while building features and implementing art; but it’s absolutely the sort of thing our awesome QA testers, Keegan and Andrew, catch.

Lastly, there is one tiny feature that was built this week, the last new thing to be made prior to release, and that’s our intro screen! The intro screen is the screen you first see when the game loads, it places you in a field of clouds and displays our REDspace and Gunball logos before putting you into the game. It’s inspired by the beginning of our first trailer.

If it’s your very first time running Gunball, you will be automatically taken to our “practice range” where you will be greeted by Coach Ball and will be taught how to play the game. If you’ve run the game already and know how to play, you will be taken to the main menu after the intro. This lets experienced players just get in and play. If you show the game to your friends at a later time, you can always send them to the practice range by accessing it through the main menu.

As you can probably tell, we’re hard at work ensuring the game is polished and as fun as possible. Our team is unbelievably excited for the game’s release, and we can’t wait to compete against you on the global leaderboards starting June 28th!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

Release Date and Steam Page

In case you missed the initial announcement, Gunball will be releasing on Steam Wednesday, June 28th! We’ll be launching with a 35% discount for the first week, making the game only $9.75!!

Our release date announcement was covered by VR Focus. Expect to see more coverage and excitement as we draw closer to launch.

Also our Steam page went live today. You can check it out here: http://store.steampowered.com/app/632240/Gunball/ Be sure to add it to your wish list so you get notified when it goes on sale!

If you’re familiar with game development, none of this means we are slowing down. We’re currently focused on getting in a few of our final features, squashing bugs, and making sure that the experience is as polished as possible.

It’s a busy time, but we are on track and unbelievably excited for you to start playing!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

The Technology Powering Gunball

Developing a virtual reality game can sound like a scary proposition. It’s a relatively new technology, and it uses complex hardware. Luckily there are engines and tools that make this process very smooth, and that’s what we’ll be covering today!

The technology used to develop Gunball breaks down into three categories: the game engine, the hardware SDK, and the VR control library.

We use Unity as our game engine for Gunball. Unity is an extremely powerful game engine that scales down to simple mobile games all the way up to full blown hardcore PC games. It’s great as a VR engine because it has native support for all of the major VR headsets with little to no setup by developers. It also supports single pass stereo rendering, which renders both the right and left eye at the same time, providing a huge performance boost.

Unity is available for free (with certain restrictions) on their website: https://unity3d.com/

The hardware SDK we work with is Steam VR (also referred to as Open VR). This is an SDK developed by Valve that provides you with easier access to both hardware functions and Steam’s VR functionality. It gives you easy access to controller events, it will automatically provide you with platform relevant controller models if you want (Vive controllers for Vive users, Touch controllers for Oculus users, etc…), and it gives you visible boundaries when either playing in standing mode or room scale.

You can get Steam VR’s Unity plugin for free from the Unity asset store: https://www.assetstore.unity3d.com/en/#!/content/32647

Lastly, it all comes together using our VR control library. We use a library called VR Toolkit (VRTK). It acts as a layer above your hardware SDKs that standardizes the way you interface with them. This allows you to replace your hardware SDK with minimal changes to your game’s code. So for example, if somewhere down the road we wanted to deploy Gunball on the Oculus store, we would be able to replace Steam VR with Oculus’ SDK and only have to make minor code changes for the game to work properly.

Beyond that, VRTK offers a ton of useful functionality for common features you would want to implement in a game. This covers functionality for things like picking up and interacting with virtual objects, interacting with UI, and player locomotion (moving through 3D environments).

Gunball uses VRTK’s object interaction and grab functionality for picking up balls and throwing them in the air. Having functionality like this ready for us means that we can rapidly develop VR content without having to build functionality that is ubiquitous across a large number of VR games already.

You can find out more about VRTK on their GitHub page here: https://github.com/thestonefox/VRTK

There is a very active development community behind it. It’s also extremely well documented, and there is support available through their Slack channel.

Unity, Steam VR, and VRTK all work smoothly together and makes developing for this new medium very painless. The best way to describe it is that the technology we use eliminates most of the technical challenges and lets us focus on just making an awesome game!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

From Prototype to Product

Like most games, Gunball didn’t start out a completely polished and great looking experience. Before committing to the game concept,  we developed a prototype version of the game to validate if the concept was fun and it was a game that fit our team.

Prototypes are lean and fast to produce. You don’t want to spend tons of time on a game concept that may turn out to be not as fun as you thought. This meant that the bulk of the prototype’s art and programming work was done by one person (Me) over two weeks.

Lots happened during those two weeks. The game’s throwing and shooting mechanics were created and iterated on until they were fun. Prototype art was created to get the idea across. Lastly, a simple game loop was made to represent a vertical slice of what the core game would be.

By the end, we had created a prototype that had proved that the concept was fun, and it was something that we could really make into an amazing game.

After production of the full game was greenlit for development, we began assessing the changes we would need to implement in order to take our prototype and turn it into a game that was worthy of putting up on Steam.

There are far too many things to go over each one in detail. Planning the development of a full game is pretty complex, but two areas that changed drastically are the game’s art, and the way you acquired balls to launch.

The game’s art changed pretty significantly. I’m a programmer, and I can make passable 3D models for the sake of prototyping, but they definitely aren’t something good enough for a consumer facing game. It’s kind of like when a kid draws a stick figure dog and hands it to you; it more or less looks like a dog, but it’s not going up in any museum. That’s why we brought on our awesome 3D artist, Jessica to make the game shine.

Every single model, UI element , and effect in the game has been replaced at this point. The best example of this is the stadium, which is the first full environment you experience in the game.

In the prototype we used a stadium model that I like to call “The Bathtub”. It’s a, well, bathtub shaped model that kind of vaguely looks like a stadium if you squint and rub vaseline in your eyes.

One of the first things Jessica worked on when she joined the team was to replace the bathtub with an actual bonafide stadium. She worked with our team’s art lead, Justin to look at real world stadiums to get some measurements and reference materials to work from. They also made some great crowds, joke in-world ads, and cool blimp that flies around. The end result looks pretty fantastic, and makes you really feel like you’re playing a real sport.

Aside from the art changes, another major change from the prototype to the current game was the introduction of ball chutes. Originally you would pick up balls from a bowling alley style ball return. Balls would roll down a rail in a row to your left that you could grab from. Every time you took a ball, a new one would roll down the rail to replace it.

This approach was cool, and had a real world parallel, but it had flaws. Primarily ball returns are HUGE, meaning that they take up a lot of room and limit the playable area you get to have. The other big flaw was that they really didn’t encourage players to look around, they would mostly look forward in the direction that the balls rolled in. It cuts down on the immersive effect of VR when you are subconsciously encouraged to look in only one direction. It’s kind of like instead of being in a world, you still feel as if you’re just staring at a screen like with regular video games.

To fix this, we replaced the ball return with chutes that surround the player and provide them with a ball to throw, regardless of the direction they are facing. This encourages much more active movement, and really goes a long way toward getting players immersed in the game.

These are only a couple examples of how the game has changed since our original prototype. We may cover more changes from the prototype in a future blog post. It’s fun to look back and see how far we’ve come in a short amount of time!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

Personal Identity in VR

One of the most important aspects of Gunball is how inclusive it is to all players. We’ve made very specific design decisions to ensure that the game is friendly to newcomers to VR, and provides enough challenge for VR veterans. We’ve also been mindful of personal comfort to make sure you don’t get sick while playing.

One area that we hadn’t thought of until recently was how important your personal identity is in VR. Virtual reality is an inherently personal experience, you aren’t observing characters on a screen, you are in a world and you interact with it physically. That means it’s important that you either feel like you are playing the role of a character, or you are yourself.

In Gunball you aren’t playing a character. We want it to feel like you personally are the most awesomest Gunballer ever. With that in mind, our project’s lead QA tester, Keegan, made a great observation: The hands you used in the game were caucasian.

Once he pointed this out, we went “Oh crap!”. It wasn’t an intentional choice, we just needed hands for the game. We don’t want to exclude any gender or race from enjoying the game fully, so we redesigned the hands to be Gunball branded sports gloves!

Here’s the before and after:

They’re gender and race neutral now! Good catch, Keegan!

As we’ve stated before, this is a unique medium with many unique design considerations. Having a team with a broad range of viewpoints helps us learn and improve the game. We can’t wait for you to experience everything we’ve learned firsthand! No pun intended there. I swear.

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

Levels and Level Design!

When developing a game, one of the more difficult tasks you’ll run into is making fun and engaging levels. The levels you design are what direct your players’ experience in your game. If they are too easy your players become bored. Too hard and your players get frustrated. Both scenarios result in a bad play experience with players losing interest.

The goal is to strike a balance in difficulty that allows players of all skill levels to have the best experience. In Gunball we try to achieve this by presenting each level with opportunities for all types of players to obtain the highest score possible for their skill range.

So what makes up a level In Gunball? Well to put it bluntly; nets! In Gunball, you shoot balls with a gun through nets.

We break our scoring down to four different net types. Each type of net scores a different amount of points, and get progressively more difficult to hit the higher its point value.

In our early Gunball levels we basically just shotgunned a bunch of different nets into a level and had at it. This worked in some levels, however things felt static and uninteresting. Things needed to move, so we added splines.

Splines allowed us to add life to our levels. Things moved. This introduction gave us a way to add difficulty Gunball. Not only do players have to aim and shoot at a target, they now have to do so at a moving target. We were on the right track.

After we created a few levels, we decided it was time to play test them as a team. This is something we cannot stress enough. No matter what type of game you are making, have other people play your levels. Once we had several sets of eyes playing our Gunball levels, we quickly realized something was missing. Yes, splines worked, however our levels started to feel very cut and paste. With some brainstorming and prototyping we decided we needed to add accent objects.

More specifically, we started to introduce blockers and bounce pads.

Adding blockers to levels allows us to set up nets that are only accessible for short amounts of time throughout the level. In the above example we’ve sped up the blockers to demonstrate how they work. At set intervals throughout levels we can activate and deactivate these blocker objects. This gave us another great tool for designing more interesting and dynamic levels.

Once we had blockers in the game, we felt we needed something to counteract the negative effect of them. So we implemented bounce pads. These objects give your balls a little extra boost when they touch them. This allows players to reach nets that are placed further away.

Bounce pads have a fixed boost trajectory. This means that as long as you can hit it, your balls will be bounced in the direction of that trajectory. This allowed us to set up combos where a bounce pad would shoot a ball through a tunnel of nets. Or allow players to reach nets placed far out in the crowds.

Both the blockers and the bounce pads allowed us to add a whole new dynamic to Gunball. But that’s not all. Now that we had two new behaviours, we wanted to see what would happen if we treated a bounce pad as a blocker.

By combining the blocker and bounce pad behaviours, we are now able to activate and deactivate a bounce pads at set intervals throughout the level. So we wondered; “What else could we do?”

By applying our blocker behaviour to our nets, we were able to script more complex movement than our splines gave us. We now have the ability to have levels temporarily transform for short amounts of time.

Adding two simple behaviours, blockers and bounce pads, we are now able to make Gunball levels feel much more dynamic. Which is AWESOME!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

Solving Small Problems as a Team

Often during game development you encounter an issue with your game design. Luckily you don’t get very far in conceptualizing and creating the game before the big glaring serious issues pop up. Since those problems appear early, you can catch them and address them before it affects your game.

Luckily we’re not talking about a big problem like that today. Gunball isn’t boring! Instead, I wanted to talk about small problems that pop up mid-project and make your team take a moment to figure out a tiny course correction.

A good example of this happened a few weeks ago. Our team was play testing the game and found that it became difficult to tell when they were about to run out of time in a round. They would get so immersed in the game that they would subconsciously ignore the massive countdown timers that are planted in the corner of our arenas.

We discussed various options. This included things like making the countdown timers even bigger, putting big glaring effects to draw the player’s eye to the timers, or having a bunch of audio cues like air horns at specific intervals. None of these are bad ideas, and maybe we’ll implement some of them down the road.

The one idea that really stood out though came from one of our animators, Jacob. He asked “Why don’t we just put a watch on the player’s wrist?”. We all paused for a second and all said “Holy crap, that’s a great idea!”.

So we made a watch and stuck it on the player’s wrist. It’s specifically on the hand that picks up balls and serves them in the air. The watch face slowly turns from green to red over the course of the round, and you have this small visual indicator of the time you have left. You may not always look at the big countdown timers, but you do see the thing on your wrist change colors as you play.

Subtle small changes like this are one of the many reasons why it’s a good idea to solve game design issues as a team. You aren’t going to have all of the answers by yourself, but there’s a good chance that someone on your team will be able to come up with a solution!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.

 

Ignoring the Laws of Physics for a Better Game

During the early prototypes of Gunball, a number of different ways to launch balls were attempted. Oddly enough, a game with a simple concept that just involves shooting a ball with a gun took a surprising amount of thought and iteration. A lot of this was due to programmers overthinking problems… as we tend to do.

Attempt #1 Bullet meets ball

The earliest attempt at this was to simply fire large bullets really fast, and have them smack into balls really hard. This relied entirely on Unity’s physics engine, and was probably the closest we came to a simulation of what it’s really like to shoot a ball with a gun.

This approach was equally fun and frustrating. Just hitting the ball at all was pretty tricky (even with a laser sight), and even when you did make contact, you could never be completely sure what was going to happen. If the bullet made contact with the ball at a strange angle, it could go flying off in a direction you hadn’t anticipated, or barely move at all.

That being said, when you pulled off a shot successfully, you felt like you had climbed Mount Everest and high-fived Superman… Unfortunately making one shot out of a hundred every time you play a game isn’t terribly fun, so we moved onto other approaches.

Attempt #2 Let’s try to be clever

In our next iteration we started to dive into a variety of ways to try and judge the player’s intent when making a shot but still keep some of the craziness of a silly physics game.

This involved taking the direction of the bullet and the ball and trying to judge from both trajectories where the player roughly meant to aim. The idea behind this was that we could still have some slight randomness with shots, but the ball would mostly go where you wanted it to… Mostly. Some of this was inspired by the Rocket League GDC 2016 talk.

We took a couple stabs at this. One way was to reflect the forward facing vector of the ball, and the normal of the ball to create a reflected bounce. Once we figured out where we wanted to move the ball, we would then apply a physics force to it.

That kind of worked, but it was still pretty unpredictable. Next we tried taking the forward movement directions of both the bullet and the ball, averaging them out, and applying a physics force.

This worked better, and allowed players to “put some English” on the ball by catching the edge of the ball like you would in pool. It ultimately didn’t allow for reliable or predictable shots, so even though you could get balls through nets more frequently, it wasn’t always the net you wanted and you still ended up with those Everest/Superman shots.

Attempt #3 Keep it simple, stupid

Eventually we arrived at the most simple possible solution: launch the ball in the direction the player aims. That’s it. This is the solution that we are currently using in the game, and it was the moment that the game clicked for all of us.

Shooting in this way still allows you to pull off trick shots and feel like a pro player, but you don’t get frustrated when the physics don’t play in your favor. When you screw up in Gunball now, it feels like you messed up, not like the game screwed you out of success.

We actually don’t even use the bullets as part of shooting either, the gun does a raycast (also known as hitscanning) to hit the ball. The bullets in the game are purely for effect at this point.

Lessons

Going through all of these iterations led to a realization that we were over analyzing the problem. Programmers often love to come up with extremely complicated and “smart” solutions, but this experience is a good reminder to take a breath and try to not overthink things. If we had done that, we probably could have skipped attempt #2 entirely.

Of course, the most important thing to come from this was an intuitive way to control Gunball. It really does make you feel like a pro!

Be sure to check back next Wednesday to find out more about the game and its development, and be sure to follow us on Twitter, Facebook, and Instagram.