Developing a prototype for Paradigm Shell at the Recurse Center

Game Concept

Paradigm Shell is an experimental game that explores crude oil as a transformative, vibrant, time-condensing form of matter. Players start out left alone on an oil rig on the ocean. While trying to find ways to make contact with the outside world, they learn about the rig’s former inhabitants: A group of researchers who explored the relations between oil and plastics. Not only were the crew members removed by force, but the materials and chemicals on the rig blended. Players encounter highly speculative research and soon realize that the oil and plastics on the rig morph and mutate.

Background

During the last six weeks, I attended the Recurse Center in Brooklyn, New York. RC is a retreat for people who share a passion for programming. Becoming a part of the RC community allowed me to focus on a new project while following my curiosity about areas of coding I hadn’t touched much.

The Prototype

On the rig, players walk around and engage with puzzles in which they open doors, collect information and pick up objects. I’d like to use this mechanic especially in the beginning of the game, and give players time to find out more about the rig and its former inhabitants. I wrote C# scripts in the game engine Unity that I can later attach to different objects during the level design process.

To open doors, turn wheels, levers or anything that rotates, I track one boolean (open). Whenever its state changes because players click on an object, my script softly transitions between the closed and open position of the object.

Quaternion newRotation = Quaternion.AngleAxis(rotation, rotationAxis);
openLerp = Mathf.Clamp(openLerp + (open ? 1f : -1f) * Time.deltaTime / openDuration, 0f, 1f);
transform.localRotation = Quaternion.Lerp(startRotation, newRotation, openLerp);

Here, the usage of a wheel leads to a change in gravity.

In later puzzles, players can use underwater robots to explore the underwater worlds full of fish and micro plastic that surround the rig. They’ll also fix machines and electronic circuits to access rooms or move larger objects.

Some of the game mechanics are currently called speculative because through them, I want to imagine different ways of engaging with plastic. By changing magnetic fields and by interacting with materials and chemicals, players become agents of matter.

Shaders

The relation between plastic as a material often used in/as surfaces and shaders as a technology to generate surfaces makes me particularly curious.

Shaders are scripts that tell a computer’s GPU which pixel to render in which color. In the game engine Unity, 3D objects are rendered with the so called Standard Shader by default. This shader consists of two parts: The first is the vertex shader, in which vertices are (re)calculated. The second is the fragment shader that is fed the (re)calculated vertices and applies color, textures, reflections and more to the surfaces between them. In this shader I am looping a sine wave over time to create a wobbly effect (this tutorial was a good start). In the fragment shader I am moving a texture and a Normal Map over the wobbly sphere to create effects on the surface.

What’s next

I’ll continue working on Paradigm Shell with my studio Topicbird. There are many things I learned at RC that I’d like to be part of my everyday code and design practice such as pair programming. Thanks to Meredith, Gargi, Kalila, Agustin, Dhananjay and Chrissy for cool pair programming experiences on this and/or your projects. Thanks to Jasper for modeling lots of the prototype’s 3D models and architecture.