Here’s a blurb that’s an overview of my work or something. I’m not totally sure what to put here yet but I’m allowing for two lines of text.
Rec Room
Rec Room is a UGC (user-generated content) game platform and social app with a friendly aesthetic and an extremely powerful in-app creation toolset. Play games with friends from all over the world - or create your own! Creation is a social, play-adjacent multiplayer experience that does not require an external editor and can be done from within the game on any platform.
Over the last nine years, I have helped Rec Room grow from a small VR-only minigame collection into a robust multi-platform community with millions of user-created rooms, first as an artist and most recently in design and product roles. During this time the company grew from 14 people to over 300 at its largest. There are very few parts of the game I haven't touched in some capacity, but my main contributions have been in maturing the UGC toolset.
Engine: Unity
Roles: Design, Product Management, Art
Time on project: 8.5 years (of 9.5 total)
Rec Room Circuits
Circuits, sometimes called "CV2," is Rec Room's in-app, node-based programming language, in which "chips" are connected with "wires" to build complex logic in 3D space. As the design lead on the Logic and Building Blocks team, I drove the design of both Circuits and the suite of functional props that Circuits can interface with to create games. Circuits are at the core of my UGC contributions, overlapping into almost every other area by virtue of being the engine that runs it all.
I inherited the design responsibility for Circuits just after its initial release. Under my stewardship, in close partnership with the principal software architect, Circuits has matured from a bare bones scripting system into the power behind not only our millions of UGC experiences, but all of our recent first party experiences as well. I designed and managed countless projects, both large and small, to increase the breadth of what creators can make.
One of my largest challenges in this area was my initial lack of programming experience. While this often made me a good proxy for our user base, I owe a great deal to my architect partner for helping me understand nuances that were crucial in balancing the capabilities of the language with its intuitiveness to a technically-minded amateur.
My role on Circuits included:
As design lead for the team, providing vision and clarity while fostering a sense of autonomy and buy-in
Communicating upward to company stakeholders and laterally to other team leads, ensuring that our work was aligned with company priorities
Designing and overseeing the UX for many new core language features, including new data patterns and logical structures
Designing and overseeing many new "building blocks," Circuit-powered props with gameplay effects
Designing and overseeing many QOL upgrades, including in-app debugging and tools for managing room settings and moderation
Knowledge-sharing across the company, including teaching sessions, standardizing UX patterns, and helping other teams integrate their features with Circuits, with an end result of near company-wide fluency in building with and for Circuits
Working directly with internal game teams to support new experiences with new building blocks and targeted QOL improvements
Unifying circuits functionality across in-app creation surfaces and Rec Room Studio, our advanced creation editor
Leading and managing a small team of other designers, providing feedback and mentorship and seeking out opportunities for their growth
As one of my final projects on the Art team, I designed the visual language of Circuits and created the art assets still used today
I’ve been involved in too many circuits projects to enumerate. Below are a handful of interesting ones.
Language feature - Constants
Problem: Rec Room has many complex or custom data objects that the creator of a room can set up in advance, such as different SKUs for in-room monetization, complex skybox shaders, or imported audio. In early iterations of Circuits, there was no way to reference one of these entities directly, allowing for only very rigid, hard-coded use cases. This was a painful constraint, and we needed to make these things more flexible and easier to use.
Solution: It was apparent that this need would recur over and over again as our UGC capabilities expanded. Therefore, I was hungry for a data pattern that could be easily re-used, maintaining consistent UX and surfacing the right options for each of these custom types without requiring bespoke solutions each time.
The solution we arrived at was a new category of chip called a "Constant," a configurable chip that taps into one of these complex types, allowing creators to select an item from a friendly list and pass a reference into Circuits. Like the real programming concept, this value is set at creation time and remains unchanged during execution. The same pattern could be used for "constant" values of any type.
Being able to get a direct reference in Circuits automatically increases the ways in which a complex type can be used as logic can dynamically switch between multiple constants. It also allows internal teams to make new chips that ingest that type, incrementally expanding its capabilities. Each additional chip requires only a minor amount of dev work, making this an easy addition for any team that wants to integrate their product with UGC tools. This type of multiplicative power is a key principle of Circuits design.