Showing posts with label vr. Show all posts
Showing posts with label vr. Show all posts

Sunday, January 21, 2018

VR Fundamentals

There is a common misconception that Virtual Reality began with the Oculus Kickstarter in 2012. Oculus launched the new wave of VR hype, but this was not the first occurrence. In the 1990's there was a boom of VR being integrated into arcades.

Nintendo even released the Virtual Boy as a VR device for home use.


Even before the 190's, VR existed as a concept and has a number of early attempts including the Sensorama in 1962.


In 1830 we had the invention of the first Stereoscope, which allowed the user to view a stereoscopic 3D image.


Virtual Reality has a long and rich history. Today, there are a number of VR devices on the market. At the top we have the Oculus Rift (now owned by Facebook) and the HTC Vive. Both come with a headset that tethers to your PC, hand-tracked controllers, and external tracking devices that allow for positional head-tracking.


The positional head-tracking allows for what we call 6 Degrees of Freedom, meaning x/y/z rotation and x/y/z position. It also allows for Room-Scale VR which is where the user can walk freely around a VR room, about 2 meters in each direction.

Beyond Oculus and HTC, there is also a growing market for mobile VR including the Samsung Gear VR, Merge VR, Google Cardboard, and Google Daydream.


Mobile VR generally involved inserting your smartphone into a headset. It offers 3 Degrees of Freedom (meaning rotation only) but it allows you to escape the tether to a powerful PC. You can put on a mobile headset anywhere - on the bus, at an event, while waiting in line, even in bed...The only thing needed to power mobile VR the smartphone you already carry with you.

With all of these headsets on the market, there is a growing need for developers to create new and exciting content. This is a phenomenal time to get into VR development, because not only are there a ton of hardware options available to the public but there are also a ton of resources being made available to potential developers. The Unity game engine offers built-in VR support that will automatically work with a number of the headsets listed above. The hardware developers also make interfacing with their hardware very straightforward through SDKs that anyone can download.


There has never been a better time to become a VR developer. I've created a tutorial to help you get started on your way: https://www.pluralsight.com/courses/unity-vr-fundamentals




Thanks for reading! If you enjoyed this, please Follow and Subscribe!

Thursday, December 29, 2016

Entrepreneurship, Success, and Impostor Syndrome (and Failure)

A note before reading this post:

I wanted to write an "end of year" post about all of the cool things I got to do this year, but as I started to write it I was filled with doubt...I didn't feel like my accomplishments were worth writing about, or that they should even be labeled as "accomplishments" at all.

So I decided to make this post a combination of my year in review and a look at Impostor Syndrome:

“The beauty of the impostor syndrome is you vacillate between extreme egomania and a complete feeling of: ‘I’m a fraud! Oh God, they’re on to me! I’m a fraud!’ So you just try to ride the egomania when it comes and enjoy it, and then slide through the idea of fraud.” – Tina Fey

Most of my blog includes what I consider to be useful information to the reader, however this post will focus much more on me and my work. I believe that anytime you write something you should consider what value it brings to the reader, so...why should you invest your time to reading about my personal thoughts? Well, first I hope this helps anyone else struggling with the same doubts and fears to know they are not alone, and second it may give you some ideas and inspiration for things you can go out and do. Most likely, everything I did this year is within your reach!

Entrepreneurship, Success, and Impostor Syndrome (and Failure)

Lately I've been tormented with feelings of doubt and uncertainty surrounding my startup ventures as an Indie Dev. In spite of the fact that I started a studio, released a couple of games, and hired a small part-time team, I still don't really feel like an entrepreneur, or even like an indie dev. Is Astire Games even a real studio? Is it a real startup? Am I really a founder? As a hypochondriac, I know with certainty that I have just about any syndrome I read about, but this was particularly true when I learned about Impostor Syndrome. No doubt in my mind, I have Impostor Syndrome.

Impostor Syndrome, for those who don't know, is the nagging feeling that no matter what you accomplish somehow you are faking it, and soon everyone will find out you are a fraud. Even as I reread the description of Impostor Syndrome, I began to wonder if I am even allowed to have it, because the prerequisite to Impostor Syndrome is having accomplished something. What have I even accomplished that would allow me to doubt those accomplishments?!?

I'm sure there are people out there who feel successful, but I am not one of them. There are three possible reasons for this - 1. because I am actually not successful, 2. because I have extremely high standards for success, or 3. because even though I have accomplishments that meet my criteria for success I am in denial of those accomplishments. As a person committed to reason and logic, I am willing to objectively assess the second two possibilities, even though my instinct is to believe the first one.

So, I am going to list out all of the good things that happened in my life in 2016 (in terms of my career) which I would consider accomplishments, or evidence of success, because the only way to objectively assess anything is with evidence. Towards the end, I also want to talk about learning from failure (and some heartbreaking failures I experienced this year and what I learned from it).

Successes of 2016

1. Founded Astire Games
This was just some paperwork and $20 for the DBA, however it felt really good to give a name to the company I was trying to start. The reason I consider this an accomplishment is because it was the first time I really committed to my goal of founding a studio. I said "I am doing this!" and then I signed the papers.

2. Moderated a VR panel at PAX South
I'd had a handful of friends speak on panels at conferences the previous year, and I was envious of their opportunity and bravery, so this year I submitted a VR panel to the PAX South conference and it was accepted in January. That was my first time moderating a panel, and my first time speaking at a major conference in my field (I had previously given a talk at Games for Health, but it was quite a small conference - but a good experience none-the-less). The VR panel was an amazing opportunity and I learned a lot from the experience - how to pick questions based on the audience, the importance of having extra questions separate from the core questions, and how to make sure all of the panelists have topics they are particularly interested in. It also gave me the confidence I needed to keep going out and giving talks.

3. Shipped Slapdash Bones for Android
This was my first self-published title and the first release of Astire Games. Though it was a small mobile game, it gave me the confidence to say "yes, I can publish my own games." It also resulted in Astire Games becoming a register Android developer on Google Play. The process to become a Google Play developer was not particularly complicated, it just took some time and focus to set everything up, and it felt really good when I was done.

4. Shipped Cat Cave for Android
My second self-published title and release of Astire Games, and the first game from Astire to be developed by a team! I rallied some friends - an Artist, Sound Designer, and Programmer - and set about organizing design documents and task lists, setting up version control, and monitoring the quality and giving feedback (as well as all of the level design, Unity integration, and a fair amount of gameplay programming). A lot went into this game, and when it was released I did a big push for promoting on social media, which was a learning experience in itself.

5. Guest lecturer at the DSGA
One of my alma maters, the DSGA at UT, invited me back as a speaker. This was pretty cool because I was actually invited by the students. They had very few non-male speakers throughout the year, so the students set out to find some in the last couple of months (although I do not identify as female, I am gender non-binary so I do identify as "non-male").

6. Accepted to Oculus Launch Pad
I submitted a game concept (very early idea that led to Sundown Arcadia) to the Oculus Launch Pad diversity summit and was accepted. They flew us all out to Facebook HQ for some hands-on training and to give us free hardware (a Gear VR complete with controller and Samsung phone).

7. Panelist on a VR panel at the Texas Women in Games Con
One of my panelists from PAX South recommended me as a speaker on a panel he was moderating. It was similar content, but exciting to hear new perspectives and to have a turn as a panelist instead of a moderator.

8. Shipped Cat Cave for iOS
I decided it was time to go cross-platform and start releasing my mobile games for iOS. Becoming a registered Apple developer was far more complicated (and more expensive) than becoming a Google Play developer, but it allowed me to reach a much larger audience with my game.

9. Cat Cave was reviewed by several Game Reviewers
The first time a game review site approached me and asked about writing a review for Cat Cave, I was over-the-moon with excitement. We ended up getting 3 reviews published on review sites and one video review on Youtube.

10. Left my AAA day-job to run Astire Games full-time
You might be wondering why this is an accomplishment. Well, it takes a lot of courage, confidence, and energy to leave a reasonably well-paying job doing something you enjoy, and it is very scary to leave that job and jump into the unknown. I had no idea what I was getting myself into, and I still don't!

11. Ran a 2-week summer camp for high school kids learning to make games
This was probably my proudest moment in 2016. I had to assemble the curriculum, plan lectures and assignments, and decide how best to approach a topic I am familiar with for an age group I am not familiar with. And then running the camp day-to-day: 8 hours a day for two weeks, watching them create amazing content, taking them to lunch, playing games, trying to keep cliques from forming...It was an incredible and exciting challenge. Then at the end watching them show their games to their parents!

12. Hired contractors to work on Cosmos Arena
My first time paying people to work on my game! Granted, not very much. But still, it was a cool process, and it gave me a chance to step back a little and watch the work come together without being overbearing on every aspect of the project.

13. Was the featured speaker at a Unity Women in Gaming workshop
I was flattered when Unity told me they were coming to Austin to give a workshop and asked if I would like to be the featured speaker. The workshop was for current college students who want to work in games, so I prepared a talk on the different areas within Game Design, and how designers work together and with other disciplines (design is the least-defined discipline in game development).

14. Moderated a VR panel at PAX West
This was the same panel I moderated at PAX South, but for a much larger and more prestigious conference.

15. Sundown Arcadia accepted to the Austin Game Conference Intel Showcase
Intel had an online submission form for indie games, and I submitted my Gear VR game Sundown Arcadia. I was one of the 10 selected to pitch and present a game at the Austin Game Conference.

16. Sundown Arcadia awarded "Most Innovative" by Intel Showcase judges
Of the 10 games pitched at the Austin Games Conference, Sundown Arcadia was one of the 4 chosen for awards. The award it won was for "Most Innovative" because it was completely gaze-based. It also led to me forming a relationship with the Tobii Eye Tracker team, who wanted me to port my game to their platform.

17. Nominated as a faculty "All Star" at the Art Institute where I teach
Every quarter the Art Institute holds nominations for "All Star" students and faculty, and I was honored to be nominated as a Faculty All Star for the Summer Quarter.

18. Pitched Sundown Arcadia to Oculus and Sony reps at IndieCade
I was lucky enough to get an Indie Xchange pass to IndieCade from a friend who wasn't able to go, and that gave me the opportunity to set up meetings with publishers. Oculus and Sony both had reps there, so I set up a meeting with each of them and I got 5 minutes to pitch them my game. It was very intimidating!

19. Credited on two shipped AAA titles (COD: MWR and Mafia III)
In my time at Certain Affinity I worked on two different AAA titles, and both shipped around October this year. Scrolling through the credits and seeing my name really made me feel like my hard work was worth it.

20. Speaker at Unite LA on Interface Design
My first major conference solo talk, and also one of the best talks I think I've ever given. You can watch it here.

21. Hired a team of interns
A few weeks ago I announced to my students that I would be running a small internship program as part of Astire Games, and would publish any reasonably high-quality work created by those interns. Over the past couple of weeks I have been accepting resumes and portfolios, and the review process was pretty tough. I discovered that it was fairly easy to judge artists and designers by their portfolios, but for scripters I needed a little more to work with, so I made a simple scripting test. After reviewing all of the applicants, I selected a team of 6 interns who will start working in January. One thing I felt was really important after reviewing the applicants was giving feedback to the ones I did not choose - this is not very common of job applications, but since many of them are my students I want them to improve on their job application process.

Failures of 2016

Without evil, there can be no good. We do not recognize our happiness until we have felt sadness. And so, to appreciate success we must acknowledge our failures.

1. Cat Cave downloads did not meet expectations
I went into the Cat Cave release with high hopes, and figured that since I went through rigorous social media promotion I could hope to get at least a thousand day-one downloads. Cat Cave total downloads to-date hovers just below 400 (including both Android and iOS). Lesson learned - promotion is not enough to get your game out there. Sadly, I still don't know what is the right approach here. Make a better game I guess?

2. Panels rejected for GDC
After my successes with other VR Panels I thought I would have a good chance to get a VR panel in to the biggest game conference - GDC. That did not pan out, in fact we didn't even make it to the second round of reviews. In case the VR section of GDC was too saturated, I submitted two other talks in other areas, and both of those were rejected as well. I do not think my talks are not high enough quality for GDC, but I do think I need to re-evaluate how I approach the submission process.

3. Not selected (or even reviewed) for Oculus Launch Pad scholarship
This was quite a disappointment since my Sundown Arcadia pitch was doing so well at other places. The Oculus Launch Pad I mentioned earlier offered a scholarship to fund full development of a few of the games in the Launch Pad. There was a complication with my submission - I joined a roller derby over the summer and had a bad injury just a few days before the submission deadline which made it impossible for me to use my right arm (I could not even hold a mouse). I asked for an extension so I could record my video and type up my submission (my playable demo was nearly done at that point, I just needed to finish the submission). They granted my extension, I submitted, I was told it had been included in the submissions for judging, and I thought no more about it for a couple of months. They had some change of staff before announcing the winners, and I decided to ask about my submission. The new people told me that since my submission was late they had removed it from consideration and it had not been reviewed. I told them about the extension, but they either did not believe me or did not think I deserved an extension, because they said they would still not be reviewing it. What I learned from this - don't trust anyone. Just kidding, what I really learned was to get things like that in writing because of the likelihood someone else won't believe it (I also learned that Facebook messenger does not count as "in writing").

4. Unable to find Client Work
I have a handful of contractors working off-and-on with Astire Games, and I would really like to get a client contract project going so that I can have work for my contractors that I can actually pay them for. I've applied quite a few places on Upwork and Unity Connect and have also been asking around people I know in the industry, but so far nothing has panned out.

A Year in Review

2016 was probably my most successful year in terms of my career. The failures I had I believe I can work on and do better next year when I try again. The only real way to fail is to stop trying. Teaching is going well, Astire Games is going strong, and beginning in 2017 I plan to form an LLC. I also think 2017 will be the year I start looking for investors in my studio.




Wednesday, October 26, 2016

Interface Design and Unusual Platforms, Part 3

This is the third and final installment of Interface Design and Unusual Platforms. If you haven't read the first two, please start here.

The first two posts were about the incredible variety of hardware available, and how each one provides a unique source of input from the user. In all of my design work I like to start with answering the question "what is unique about this hardware, and what can I do with it that I couldn't do with any other hardware?"

This post will be focused on what I would argue are the two most common pieces of "unusual" hardware - mobile and VR - and how we as designers need to step away from the mindset of designing for mouse and keyboard.

Not long ago I played a VR hangman game where the user would fill in the hangman letters using a digital keyboard floating out in space, and would reach out with their motion-tracked controller to "click" on the keys using the trigger on the controller. There are many VR experiences that attempted to have the player "click" on things in the world, however this interface fell victim to using BOTH a mouse input and a keyboard input. Now I'm not sure if hangman is the best use of VR, but I am certain there is a better option out there than having the player click on letters from a digital keyboard.

On the complete other end of the spectrum is a game called Fantastic Contraption, which was popular many years ago but recently ported to VR. In this game, every action you can take is about the physical space around you - switching between tools and items happens by reach with the motion-tracked controller to various parts of your body, and this makes it easy to remember where things are - "this tool is always behind my right shoulder." Fantastic Contraption also has an adorable "living" menu in the form of a cat that follows you around in the game. Have a look for yourself:



Another thing to keep in mind with VR is that almost any kind if input from the user's hand has the risk of feeling unnatural. If you are using the motion-tracked controller to place a digital hand over something and then pull the trigger to pick it up, many users feel unnatural because the shape and texture of the object they see does not match the shape and texture they feel in their hand.

One of my games addressed this by not using hands at all - every interaction is completely gaze-based. Not only does this eliminate the unnatural feeling, but it also plays on a common human fantasy of being able to alter the world with your mind - staring at things to make them explode. You can see the demo video:



Mobile games have faced similar mouse-and-keyboard tendencies, and have also come up with some inventive alternatives.

One of the first issues that comes to mind for me is when a game has the user tap on something to select it, and then tap somewhere else to move it there. This is a common interaction with a mouse, but on a touch screen it makes so much more sense to drag it across the screen to the new location, because that is how we would move things in real life.

Another issue on mobile which isn't a problem with mouse-and-keyboard is that if something is on the top-left corner (or top-right corner for left-handed users) then the user's hand will be completely blocking the screen when they try to touch it.

Some of the more intuitive interactions include the two-finger pinch and stretch to zoom in and out, which I believe may have been genius when it was first used. And that one must have taken a fair amount of pondering, because there is no comparable interaction with the mouse and keyboard - it was completely unique to the touch-screen.

Most interactions where you swipe across the screen are also fairly intuitive, especially when you swipe towards the edge of the screen to throw something away. There is a VR equivalent to this which you can see in Job Simulator where the user throws objects toward the edge of the space to discard them.

I think that part of the reason why we end up stuck in the situation of defaulting to mouse-and-keyboard controls is because the majority of games are developed on a computer using the mouse and keyboard regardless of what platform it will end up on, and sometimes it takes a while before the developer is able to test on the target platform, and by that time the developer may have already gotten comfortable with the controls so it is intuitive for them and they don't notice the problem. We might see this improve somewhat when VR developers can start developing their games while inside VR, a solution some of the bigger game engines are releasing.

So, next time you are developing for anything other than mouse-and-keyboard, here is a challenge for you. Before you make any interactions or think about any kind of input, first think about what things are going to happen in the game - what is the in-game player going to do - then imagine yourself using the target hardware, or go and use it with nothing running, and imagine making those in-game interactions. Go ahead and pick up a blank phone or put on a dark VR headset, and close your eyes, and feel the interaction with the hardware.

Thanks for reading! Feel free to leave thoughts and suggestions in the comments - especially if you have examples of interesting interfaces for interesting hardware (both good and bad). Also subscribe and follow :)


Friday, June 10, 2016

Oculus Launch Pad

Last month I had the opportunity to attend an event at Facebook Headquarters called Oculus Launch Pad. This event was intended to promote diversity in the field of VR, and it met those intentions quite well. The program hosted 100 people for a day-long boot camp as a deep dive into developing games, apps, and film for virtual reality. I, along with 99 others who all came from diverse backgrounds and varying ages, genders, races, ethnicities, orientations, etc, spent a fantastic day learning about the technical side of putting a game on the GearVR, tips and tricks for designing "comfortable" VR content, how to keep a project on track and finish on time, and the importance of story and immersion in the VR world. The day concluded with a Q&A with Palmer Lucky and a networking mixer for all of the participants to get to know each other and learn about everyone's interests and projects.

On the technical side, it was great to have an opportunity to go through the process of getting an application from Unity onto the GearVR. I'm outlining the process here for anyone else who may be interested in making something for GearVR:

1. Get the latest version of Unity, and during the initial download be sure to check the box for "Android" from the list of development platforms (if you already downloaded Unity and don't have the Android package you will need to go back to the Unity downloader to get it).

2. Visit the Oculus developer website and download the Oculus SDK and Oculus Unity Utilities, and import the Oculus Unity Utilities package to your Unity project

3. Download and install the Android SDK. It will launch a download manager where you can select different versions. you can download as many versions as you like, but you will at least need API level 19. When you select download, you will need to agree to the terms and whatnot, but it is not super clear from the prompt you need to select "agree" for each of the download items in your selected list, so if you have two items selected you will need to scroll to the bottom to "agree" for the second one.

4. Create an OSIG for your device. This one is a little complicated, here are the details

  • Put your Android Galaxy device into debug mode (go to settings > device and tap the build number a bunch of times)
  • On your Android device go to Developer Settings and check the box for "USB Debugging" then plug it in to your computer
  • Open Command Prompt (or Terminal on a Mac)
  • d. Navigate to the Android SDK Tools folder (use 'cd' to change directories, 'cd ..' takes you up a directory, 'cd Directory_Name' takes you down into specified directory)
  • Use the command 'adb devices' and it will give you a list of IDs for connected devices (you will probably only have one) - if you have trouble with this step you may need to update the drivers on your computer
  • Copy your device ID, then go to developer.oculus.com/osig and enter the ID
  • Download the osig file generated by the Oculus website and copy it into the following directory inside your Unity project - Assets/pluggins/Android/assets
  •  Note that you will need a separate OSIG file for each device you want to test on; you can have as many OSIG files in the assets directory as needed

5. In Unity go to File > Build Settings. Be sure to add the scene you want to build to the list of scenes.

6. Select 'Android' from the list of platforms, then click "Player Settings" at the bottom. You can also hit "Build" right now to check if your SDK is setup properly, it will let you know if it cannot find the Android SDK (it may also prompt you to download the latest JDK which are also needed to run the Android SDK).

7. In the player settings panel which should have opened on the right side of the screen, scroll down to other settings and check the box "Enable VR", then scroll down to "Other Settings" and fill in the bundle identifier (you can use whatever company and product name you want but you need the company and product name at the top to match).

8. Sign your application - under "Publish Settings" check the box for "create new keystore" then click browse and name your keystore file, then give it a password (be sure to remember this password). Then set an alias and password for this keystore (it can be the same password or a different one).

9. Be sure your Android device is still plugged in and the screen is on, then hit "Build and Run" and the game will automatically deploy to the phone.

10. Unplug the phone from the computer. It should prompt you to put it in the GearVR, but if it does not then find your newly made build (it probably has the Unity logo right now) and run it, then when it prompts you put it in the GearVR.

I hope this is helpful to anyone trying to get started in GearVR development.  Feel free to respond with questions if you have any trouble with these steps :)