Dead Bug Creek
Genre: Adventure, Virtual Reality
Platform: Playstation 4 (PSVR)
Language: C#, HLSL
Tools Used: Unity 3D, Adobe CC, Maya, 3DS Max, Zbrush, Xnormal
Team Size: 3
My Role: Team Lead, Creator, Game Designer, Gameplay Programmer, Technical Artist, Concept Artist, 3D Artist, Rigger, Environment & Level Designer, Voice Actor, Location Researcher, UX Designer, Writer, Character Artist
Dead Bug Creek is a character driven VR adventure game with action and exploration mechanics. The project has been in development since early 2015, having sprung from a prototype shown at SIGGRAPH the same year, and has grown as a personal project ever since. As the game's creator, I lead our small team, handle all visuals, story and technical art (from initial design to execution), communicate with contributors and handle project management. The game is being developed and self-published for Playstation VR. Below is a selection of my work for the game, with the exception of some platform specific contributions which are unfortunately under NDA.
Some of my contribution includes:
- Leading a small team
- Creating a custom pipeline for rapid prototyping
- Writing the game's story
- Creative direction for all game assets from concept to execution
- Game mechanics, interaction & UX design
- VFX & technical art using HLSL
- Designing, modeling, texturing, rigging & facial animation for over a dozen characters
- Scripting interaction & front end systems using C#
- Maintaining overall visual quality & performance
- Communicating with outside collaborators and stakeholders
- Timeline and project management
I created over a dozen characters, four distinct environments with individual locations, and a small mountain of props. All began as exploratory sketches, usually in service of an existing story element or mechanic. Many characters and locations were based on my experiences growing up in my hometown of Dewey-Humboldt in central Arizona.
Models & 3D Asset Pipeline
Having a tight iteration loop for environment art and a solid character workflow has been key to building Dead Bug Creek into something larger than we originally imagined. Along with creating all 2D and 3D assets, I also evaluate our budget for a particular model (regarding both time for its creation and technical constraints).
I handle the complete loop for authoring character assets. Usually beginning from concept design, turnarounds, and emotion sheets to final models, textures, custom shaders, rigs, and blendshapes. Once in Unity, I'll configure the model, hook up its animations and evaluate if there are any visual effects or custom shaders the asset will need.
We use a phoneme system paired with emotive blendshapes for our characters, integrated using a powerful package for Unity called LipSync. It has a semi-procedural workflow which breaks down to a series of simple classes we call with our custom AI system. I did modeling, blendshapes, plugin integration, animation timing, and first passes of integrating it with our AI system. Below are a couple examples of the extremes for each phoneme and emotive animation NPCs.
Dead Bug Creek takes my childhood experiences and combines them with stylistic influences from Chuck Jones, the Fleischer Brothers and Ren & Stimpy cartoons. With a background in illustration, it felt natural to pursue a stylized look and feel. We also found saturated color and life-size stylized environments felt more comfortable and accessible in VR than photorealistic art direction.
Color and Light
The game’s nighttime setting allows light to be a driving force in helping the Player navigate the world intuitively. Beacons on the horizon draw the Player towards them, using canned light emanating from doorways and within buildings to indicate areas of interest. Conversely, areas shrouded in darkness signify tension and danger, beckoning the Player to take a risk when entering that area.
Hand Painted Skybox
I painted a custom skybox for the main exterior environment, which ended up being a key piece of tying the illustrative and CG aspects of the game together.
Vignettes & Framing
Dead Bug Creek’s environments have been crafted to elicit the best possible VR experience. When the game begins, the Player sees a sweeping view of the game world from the top of a hill, giving them a moment to view the overall map and acquaint themselves with the world and atmosphere.
The Player will typically not need to turn or lift their head more than 30 degrees to see anything important by making use of the Player’s eye height and field of view as a metric “sweet spot."
Learning From Exhibition & Theme Park Design
Much of the game was influenced by circulation techniques developed for theme park attractions and museum exhibitions. These concepts built the placement and flow of the most important locations of the game.
For example, Dead Bug Creek’s Motel sign serves as a landmark the Player can see from almost anywhere in the game world. It signifies a central hub for players to come back to, with each important area branching from the sign's location.
Shaders & Technical Art
I usually make custom shaders and technical FX to help solve a few different kinds of problems -- always in service of communicating an idea. Usually, I start with a description of the concept, then make a few sketches, develop some different approaches I can take, then balance the art and science to make something which aims to be performant and beautiful.
This space helmet shader uses fresnel on top of a glossy transparent surface with a normal map for a simple, stylized shorthand for glass.
This shader projects UVs in worldspace, blends multiple textures using vertex colors and a mask for soft transitions between them.
One of a few prototypes exploring hair shading. This shader isn't used in the game, as I instead chose to favor shape and contrast over high frequency detail as it was a better fit for headset resolution. Regardless, this was a challenging and enlightening exploration.
Everything interactive receives a highlight pulse when gazed at. This shader plugs into our AI system and works with a Material Property Block for sharing materials across multiple gameObjects.
Using a noise library, I created a shader with procedural static for a broken television.
Animated GUI States
A diffuse shader with an attract animation is used in our GUI to show which states are active with vertex animation and a little displacement in Z
Game Guts and C# Implementation
We've found a healthy amount of challenge in creating a game with fully animated and voiced characters, in building these systems from scratch, and discovering along the way how much it takes to make a great game. We started from zero, prototyping different concepts along the way, ultimately landing on solutions we felt were extensible, communicative and fun to play.
Since Dead Bug Creek uses gamepad input rather than motion controls, we grappled for a long time with whether the Player should have an avatar. Most points of reference I had for first person avatars in VR seemed like they wouldn't map well to a Playstation controller. On the other hand, countless first person 2D games have used avatars, so we spent a few weeks playing with the idea. The design I landed on reduced the Player avatar down to arms only, which ended up presenting the highest level of immersion and suited the delivery method for Dead Bug Creek's mechanics. This solution also mitigates the Player moving outside tracking bounds and becoming detached from their avatar's body, revealing an ugly stump where the head should be. We also tried explorations using IK solving for an avatar's feet, but it felt unnecessary since the game was designed as a seated VR experience.
Interactive Objects & Character Prompts
There will usually be multiple interactive objects within the Player's field of view at a given time, which was the primary driver of our in-world GUI system's design. I wanted GUI prompts to be hidden from a given distance, for interactive objects to be marked in a special way, and to be able to share assets across gameObjects and instances. Some solutions I implemented in response included:
- UX flow and visual design for a GUI system that works with props, collectibles and characters of all sizes
- Interactive objects which use their own set of shaders with a hidden highlight, only activated when the Player looks at them
- The Player can target multiple objects in quick succession and get digestible feedback each time
- Integration with third-party plugins for facial animation and tweening to create a modular system
- Integrated prompts using Material Property Block multiple instances of objects share the same material, yet highlight individually
NPC AI System (Greenroom) & Player Avoidance
Characters in Dead Bug Creek give dialogue, take direction, follow you, and ask you to follow them. Greenroom is a modular system we developed which breathes life into our characters. It functions as an editor extension where we build quests and interactions without spending hours doing per-event programming. We were inspired by Flora, our hero, and her role as both a protagonist and obstacle to the Player when designing it. I filled the role of describing the system we needed and the implementations we could try, and my partner set to building it. We then abstracted Greenroom to support a modular series of characters and quests.
Over the course of development, I began to feel NPCs would need to react with discomfort when the Player moves too closely to them. I ended up adding this to the base Greenroom system my partner was implementing, and it gave a surprising extra layer of perceived intelligence to our characters. It works by triggering a new "too close" state once the Player passes a particular threshold, where we grab two arrays of animations with which the character will discourage the Player from being in their own personal space. The dialogue and animations are chosen from at random from the array, with each piece meant to fit together in any combination.