The following is a history of my own experience with making a shooter centered around VR technology. It started out as a capstone project, and has become a recurring source of work and experience. This post is about the capstone part, but will be continued with many chapters that go over my (along with some of my team’s) current struggles and accomplishments in continued work on this project.
As we all sit in Capstone class discussing our collective worry about what we could do that might be meaningful, I have no hesitance. I have known what I wanted to accomplish since the day I chose Computer Science as my major – to make a game.
The professor walks in, a large bag in tow. As he unloads packages from the wrappings of a garbage bag, something catches my eye. It is a piece of popular culture I immediately recognize: an Oculus Rift Dev Kit 2. Hot off of being bought out by Facebook, I have some reservations about Oculus’ application with my project ideas, but possibilities keep popping in my head. I’m thinking “What kind of simulations could work well in VR? How about remaking a classic game like the original Star Fox in first-person VR? How reasonable is the overhead with running an application in VR?” and so on.
After discussing all of the new toys and giving us the usual “this is how the real world works” lecture, the professor gives us our assignment for the week: put up an ad on the Blackboard page for the class about what we want to make.
If my memory serves me, I was the first to slap an idea on the discussion board. Before the professor could even finish his sentence, I was scratching a prompt on the message boards: “Let’s make a game using the Oculus Rift.”
It did not take long to catch on either, as I made contact with my first potential group partner within a few hours: Kurt. An enthusiastic IT major with experience in AI and modeling, Kurt is a perfect fit for this project. Better yet, after informing him of my interest, Kurt tells me that he has already recruited the interest of several other candidates: Isaac, who has modeled and animated with Maya, Julia, who has an artistic background with experience in C++, and Sam, a C++ aficionado. Within 48 hours, we already have 5 enthusiastic CS/IT majors with a unified goal of making a VR-capable video game.
This was it. The ball was officially rolling. I, along with my new partners, was about to be a sprouting game designer.
Within a few weeks, our group was up to 6 bright-eyed programmers: myself, Kurt, Isaac, Julia, Sam, and Fernando, who had experience with the Oculus Rift. We had a name, Project Angelis, a story for our game, and a general idea of what we wanted to do.
A space shooter set some time in the next century, your mission is to capture and hold an abandoned space station array above a planet that is prime for colonization. By surviving against waves of enemy-faction mercenaries, you and your crew can establish their place as the prime stockholders of this “Next Earth.” (via our gitHub wiki page)
This was our game idea, and it sounded pretty awesome. We were building a first-person shooter that had one game mode vis a vis Nazi Zombies or Horde Mode (Gears of War), and also had one map, but had a ton of room for added content in the future. Moreover, we were building a VR experience, because we did not think there was enough out there for VR: it was a hot field ripe for exploration.
Here is a log of many of the design ideas we were shoving on paper as fast as our hands could type:
- one mode, one level, increasingly difficult waves (difficulty modifier), more points (money) for player character every level, enemies not harder per AI guidelines but have more health and stronger weapons
- sci-fi setting implies space background, weapons with “energy,” space station area
- VR is going to require some heavy work with HUD
- the idea here is that there is no real HUD, by the sense of the word
- for example, all “energy” for weapons on arm, rotating a STEM peripheral or pressing a button activates this display
- could show energy for each type of weapon (regular, special, heavy, whatever), player health, so on
- VR also requires very high FPS, like 60-70, so we have to optimize for that
- triggers for waves, and also environmental hazards present
- have to handle player seeing through walls using Oculus by making screen dark at certain angles (head tilt)
- support enemy and friendly AI
- pause and menu function integrated
- no effects on player camera (rain, etc.)
- ambient noise and weapon sounds
We had our hands full, meeting 2-4 times a week to discuss the logistics of our game. It was beginning to take shape in impressive fashion, though.
Mid-October – November 2014.
Inevitably, as we proceeded, we began to garner a few road bumps.
Deciding which engine to use was initially a struggle. CryEngine offers incredible graphics, the potential of great performance, a wide kit of physics tools (oh, those water effects are hard to resist), and cross-platform abilities. Unity (which was the only free one at the time) is wonderfully accessible, has a low learning curve, and boasts a huge asset library. Unreal Engine also has a moderate asset library, and it has the potential to show the same graphical fidelity of CryEngine. But where Unreal truly shines is in its helpful ‘VR Mode.’ Ultimately, the high learning curve with CryEngine and Unity’s poor editing capabilities gave a slight push, and we decided to go with Unreal.
Kurt, our self-appointed AI Lead, was working on research for AI methods for our game, and was uncovering the truth about AI – its nearly-insurmountable complexity. Not only was it going to be difficult to script the AI in the first place, but he was going to have to do all of that on a platform he had never developed for. Thankfully, several books proved incredibly helpful, and Kurt was able to get the research he needed done in time to start development (if you are curious about AI, check out Kurt’s favorite author, Matt Buckland: AI Techniques for Game Programming or Programming AI by Example).
Another problem we ran into was the sheer amount of content we were wanting to put in our game. We assumed things would be easy or implied in game design (animations would just be there, guns would automatically fire, and so on). Thankfully, early on in development our professor, who was experienced in game design himself, warned us that we needed to keep it simple. “Don’t sell me too hard on this thing,” he reminded us. And truly, this was some of the most poignant advice he could offer to the beginning game designer, as the most prolific mistake made in the gaming world, possibly the professional world as a whole, is making promises you do not deliver on. We still wanted something special, but realized quickly that we were going to have to cut back.
Despite these problems, the design phase was running along smoothly, and our game was about to be radder than a radroach from the Capital Wasteland.
December 2014 or End of First Term.
Fourteen weeks and 75 pages of design documents later, we handed in our final paper. Angelis was officially in development.
Here is a comprehensive list of our functional requirements up to this point: Oculus, STEM, and Omni integration; User menu enabled; At least one game mode & one level with enemy and friendly AI; Ambient noise and dynamic sound included; Environmental interaction such as weapon and friendly AI shop and score; And, of course, it was to be a first-person shooter wave-survival game. Our non-functional requirements included: High framerate must be maintained to ensure low Oculus disorientation; All elements of the game mode included (how many waves, points, etc.); Game must have a functional economy (point systems included); Many weapons must be usable and animated correctly; Minimize disorientation in any way; And, level must be designed with playability in mind. Of course, many other factors were taken in for our design, but this is a hint at what we had spent a semester discussing and writing about.
As the semester finished, we had solid designs for weapons, our environment, our game mode, story, sound, and the level flow. Overall, it was a huge success, but the hardest part was yet to come.