You're a tiny grasshopper with big ol' legs, trying to make a living at the bottom of the food chain. Leap over vast distances, avoid predators, zip between individual blades of grass, and bloom each of the seeds hidden in the environment!
• Fast & Kinetic controls, based around quick launches and precise landings • Climbable, physically simulated blades of grass that sway in the wind • A thriving ecosystem full of friendly and not-so-friendly bugs • Two distinct regions ‒ Stump Zone, and Glow Worm Cave ‒ bursting with carefully hidden flowers
Grassdancer: Launch Trailer
Planet Zoom was an in-house prototype I created while an intern at PBS Kids Digital. Over 8 weeks, my partner Benjamin Lopez Barba and I worked together to build a fully-functional tablet game for children 5 to 7, about exploring a tiny planet and navigating different levels of zoom.
As the main programmer on the project, I authored most of the game's codebase. Every few weeks, we'd perform formal playtests on children in our age demographic, and then iterate on what we learned. When all was said and done, we ended up with a project that a 6 year-old could pick up, fully understand, and get a kick out of -- and as anybody who's developed for kids that age can tell you, that's no easy feat!
ElemenTerra is a virtual reality game in which players transform a barren planet into a thriving ecosystem, shaping the earth like clay and pulling forests out of the ground. The environments they build gradually become home to a diverse array of fauna, ranging from humble mice and birds to the mysterious 'Taopi' spirits.
As a technical designer on ElemenTerra, I undertook the roles that require both an engineer's skillset and a designer's perspective. During pre-production, this manifested in a rapid prototyping role, during which I'd weekly create Unity mockups of things like our plant growth system, our behavior system for the Taopi creatures, our aerial character controls, and various tools related to earth sculpting.
Once we hit full-swing production, my role transitioned to directly implementing the Taopi in the final codebase. Every week, I'd code and test new behaviors, always with the philosophy that AIs are most interesting when their actions are readable but not predictable. It's important for players to feel like the AI is responsive and that they can directly influence its behavior, but a dash of inconsistency gives these creatures the capacity to surprise the player.
Miralab is a 3D puzzle game about discovering an underwater ecosystem as the Turritopsis dohrnii, or immortal jellyfish. Each of the game's many creatures -- boxfish, ribbon eels, anemones, and more -- function both as as puzzle components, and as ecosystemic actors that hunt, eat, and migrate. In this way, the world of Miralab is simultaneously a series of discrete and solvable challenges, but also a live ecosystem simulation.
I joined the Miralab team as a systems and level designer. Early in production, my duties entailed speccing out new creatures and working with engineers to implement them. Later that semester, however, my role transitioned to that of a full-time level designer. I was in charge of 2 spaces, together representing 30 minutes of this hour-long game. The first of these was our cave level, which featured a chain of isolated "puzzle rooms" designed to teach players about each creature's behaviors. Players becoming stuck on puzzles was a persistent concern, and so my process of designing the caves depended heavily upon a loop of user-testing and iteration. The other area was our Valley Level, where players had to take the lessons they learned in the caves and use them to manipulate one integrated ecosystem. This required a different set of muscles -- because users had already been tutorialized, I was able to make puzzles that incorporated the game's more interesting but less obvious interactions between actors.
Spit It Out is a narrative-driven speech impediment simulator. Using a visual novel-esque presentation, the game runs players through a day in the life of a stutterer.
Whenever the protagonist needs to speak, players must type out the corresponding word or words -- but without carefully controlling the rate of their input, the character will halt and stutter on different syllables. Stuttering once begets a higher chance of stuttering again, causing seemingly simple sentences to devolve into grueling challenges.
Spit it Out Indiecade footage
The video I submitted for IndieCade
The Prinsse's Demands
"The Prinsse" is an AI character that combines a smartphone face with a real, physical body and head of hair. Most of the interaction takes place through onscreen dialogue and some simple user inputs, but at two points in the game, things get a little bit more physical, and The Prinsse demands both that the user kiss them to make them feel better, and that they give the Prinsse a little piggyback ride.
The goal of this project was to give a bratty physical/digital character a sense of personhood. My strategy was to first make the user underestimate the "realness" of the character, by establishing a rather limited scope of interaction (read text & tap on dialogue choices). These boundaries are then shattered when the users are tasked with intimate physical interactions like kissing and horsey-riding, and have their performances meaningfully evaluated by the Prinsse. This creates a sense of surprise and unpredictability -- The Prinsse might ask anything of you, and will hold your performace accountable -- thus coloring the The Prinsse with a sense of life and agency.
"Give me a little kiss"
As prompted by the game, my professor Peter Lu gives the Prinsse a little kiss on her smartphone lips. Once he lets go, the Prinsse interprets the touchscreen data over the course of the period and rates the kiss. The Prinsse becomes upset if the user's chin or nose interferes with the kiss ("Too mushy!"), or if the user doesn't fully connect with their lips ("What a worthless, weak little kiss!").
"Put me on your back, piggy!"
At one point in the experience, the Prinsse asks to be put upon the user's back for a ride. Once they're satisfied with the ride, the Prinsse makes a sound and interprets accelerometer data over the course of the event to evaluate the ride. If the user moves too slowly (or doesn't move the Prinsse at all!) the Prinsse criticizes their lack of commitment, but dropping the Prinsse will result in dire consequences.
The Prinsse's Body and Digital Face
Funky Truck Ascension
I worked on Funky Truck Ascension throughout high school. This game is a standard 'Shmup' with a small twist -- the player's vehicle is vertically locked to the ground, and they can only fly for limited periods of time by gathering a pickup. While the game has long since been eclipsed in scope by my other work, for a while it was the biggest undertaking of my career! Looking back on it, I think there were some really neat ideas in the game; the ground-sky diametric kept players flipping back and forth between anxiety and security, and its stacking system of powerups made defeating enemies really satisfying.
While I did all the code and art myself, this was the first project where I collaborated with others. I worked for a long time with my friend Tessa Berry, who drew the game's super-slick cinematics. I also started a small build-testing group on Facebook, where people would log bugs and give gameplay feedback. And at the end of my senior year, a few friends and I built a wooden arcade cabinet to display FTA in for my school's art festival.
Looking at Funky Truck Ascension today, many things stick out at me as feeling amateurish -- even a little clumsy -- but I think it'll always have a special place in my heart as my first little 'magnum opus.' This is the game that got me to where I am now, and all I can remember now is how excited it used to make me feel