Charles Lesser

Hello! I'm an undergraduate studying Computer Science Game Design at UC Santa Cruz. I specialize in game design and Unity based development. Currently, I am a research assistant at the Social Emotional Technology Lab where I prototype novel VR interfaces.

In my free time, if I'm not working on a game or playing one, I run a Dungeons and Dragons campaign, and play water polo.

I'm currently looking for opportunities in game design and development, including internships and contract work. Reach me by email or LinkedIn.

Research

AR River Project (In Development)

This project is developed in the SET Lab at UCSC, under the direction of Postdoc Resarcher Linda Hirsch and Dr. Katherine Isbister. The project is in development as an AR solution to spread climate awareness of flooding in the Santa Cruz area. On this project, I am responsible for developing the map, location, data persistance, and leaderboard systems, as well as serving as a Unity consultant when recommendation is taken. I have also developed several functions for the two minigames.

Language: C#
Engine used: Unity, MapBox, AR Foundation

Northern Elephant Seal Migration in VR (2025)

This project was developed in the SET Lab at UCSC, under the direction of PHD student Samir Ghosh and Dr. Katherine Isbister. The project was a multi-user VR experience that tracked the migration of northern elephant seals around monterey, California. It used the THREE.js library, and simulated the seals' movements as they slept, ate, and migrated. My primary role on the team was developing the time system used in the wildfire evacuation project, as this project was based on the previous. I also contributed to the graphical design of the paper.

Language used: JavaScript
Libraries used: THREE.js, Node.js, WebXR

Wildfire Evacuation in VR (2025)

This project was developed in the SET Lab at UCSC, under the direction of PHD student Samir Ghosh and Dr. Katherine Isbister. Working with civil engineers at UC Berkeley, we developed a multi-user VR experience to track how people evacuate during a wildfire in Inverness, California. It simulates the cars movements, and can show where the bottlenecks are in an evacuation. My primary role on the team was developing the timescrubber, ensuring that multiple users could interact with the same timeline. I worked on frontend-backend communication as well as user interaction, working wtih the THREE.js library.

Language used: JavaScript
Libraries used: THREE.js, Node.js, WebXR

Colocated XR physiological signals (2024)

For PhysioCHI '24, our team explored how passthrough head mounted displays could let us use physiological signals to enhance collocated movements. We wrote about how these interfaces may change for one-to-one, one-to-many, and mutual training circumstances. I specifically worked on the ideation and graphic design of the paper.

Eye Ball: Gazing as a Dilemma in a Competitive Virtual Reality Game (2024)

For PhysioCHI '24, I worked with Dr. Michael Lankes to develop a prototype dodgeball-like game for virtual reality, where closing one's eyes created a shield. This was intended to study whether this mechanic is viable in virtual reality. It was submitted and accepted to the 2024 CHI conference as a late-breaking work.

Language used: C#
Engines used: Unity, Photon, OpenXR

Programming Projects

To Sharpshot Or Not To Sharpshot (2025)

TSONTS is a tool I created in three days to assist with statistical calculations for Dungeons and Dragons 5th Edition. It simulates dice rolls based on user specification and outputs whether or not using risky abilities is worth the gamble. It handles a wide variety of abilities and probabilities. This tool is implemented in C++ using the DearImgui Library, but I had to learn OpenGL as well.

Language used: C++, DearImgui, OpenGL

Chess AI (In Development)

This chess AI implements the minimax algorithm same as the connect4 AI, but has a much more advanced heuristic for determining board evaluation. Additionally, it implements bitboards to allow for rapid data transfer between minimax calls. It is being programmed in C++ with DearImgui for visuals. The framework code was forked from Graeme Devine of UCSC.

Language used: C++, DearImgui

Connect4 AI (2025)

This connect 4 AI implements the minimax algorithm, looking ahead 8 steps. It was programmed in C++ with DearImgui as practice for the chess algorithm. The framework code was forked from Graeme Devine of UCSC.

Language used: C++, DearImgui

Game Projects

Shattered Wake (In Development)

Shattered Wake is my current game development project. It is a strategy RPG that allows you to create skeletons out of any bone combination desired. Stronger bones are collected by destroying stronger enemies. It also implements random dungeon generation and a fluid combat loop, while maintaining data persistance in a lightweight storage system.

Language used: C#
Engine used: Unity

Maizecraft (2025)

Maizecraft was developed in a week using the Phaser library. It is a lighthearted tower defense game where a corn farmer must summon heroes and upgrade them with runes to save his corn crops from invading orcs. This project heavily utilizes kenney asset packs, featuring voice acting from myself and my teammates. I contributed the equation used to govern enemy stats and spawning, almost all logic involving interaction between the turrets and the enemies, upgrade integration, resource handling, and much more.

Language used: Javascript, HTML, css
Library used: Phaser

Arcana (2024)

Arcana is a card-battler that uses tarot cards to play. It was originally made for a college project, but ended up as a very solid game by the end of its development. This project used everything I knew about Unity so far, but I took it one step further to make sure that each of the features were coded via C# script and in such a way that it is replicable over many different maps, enemy types, dungeons, etc.

Language used: C#
Engine used: Unity

Tavernkeep (2024)

Tavernkeep is a text-based Twine game originally made for college, but evolved into much more. It utilizes an immense amount of branches to tell the story of a small business owner in a fantasy world, and the challenges that come with it. This project was a narrative powerhouse, and helped me refine my creative writing in games.

Engine used: Twine

The "Islands" Series

My tool for learning new systems - I create the next installment in this simple series when I want to learn a new system. It doubles as a joke and a project-based learning tool where I create the same game in different engines. It is also abandoned once I feel comfortable with the system, so most are unfinished.

Islands VR (2023)

The SET Lab at UCSC required me to learn oculus VR development in Unity, as well as the photon multiplayer service. These two completely changed how the engine worked, so I had to relearn from scratch. This resulted in the very incomplete Islands VR, which helped me work with the multiplayer data stream, VR interaction, and PunEvents.

Language used: C#
Engines used: Unity, OpenXR

Islands 2 (2021)

Islands 2 wasn't my first foray into Unity, but it marked the most dedicated and complete. I took everything I had made in Islands 1 and completely recreated it in Unity. This time, I added more graphics and animations. As a result, I gained a good understanding of Unity as an engine.

Language used: C#
Engine used: Unity

Islands (2019)

Islands was created in my freshman year of high school to help learn Java for AP CSA. It was a button based clicker, accumilating resources to then spend on various things, including going to the next island. It helped me master Java, and by extension, C-based languages.

Language used: Java
Library used: Swift