Heart

Don’t mind me.

Just coding the worries away.

Projects

Darkstar Showdown (NEXT 2024)

Darkstar Showdown Darkstar Showdown is a 3D turn-based strategy game developed in C++ as an individual submission for the Ubisoft NEXT 2024 competition in the programming category, where it won third place. The game was created in just 3 days using a provided graphics API, and it centered around this year’s theme of “firing projectiles.” C++ opengl ...

Procedural Hex Maps in Inner Alliance

Inner Alliance Inner Alliance is a tabletop turn-based tactical rescue game where players lead a team of specialists through a flooded environment in a top-down, XCOM-style format. Beyond promoting strategy and teamwork, it serves as an educational tool to foster diversity, equity, and inclusion (DEI) within military organizations. By leveraging interactive media, the game engages players in complex decision-making, emphasizing the importance of inclusive collaboration in high-stakes scenarios. I joined the project through the Archipelago of Design to transform the board game into a video game, taking on the full scope of programming. The team later grew to include talented designers and artists, enhancing the project’s development, which remains ongoing with promising progress. ...

Slime Hunter: Action-RPG

Trailer created with Blender by me Slime Hunter Slime Hunter is a 3D Top-Down Action RPG set in the fantasy world of Slimeria, where players hunt cute and dangerous slimes. Featuring comprehensive combat, spell, and inventory systems, diverse enemies, and a beautifully hand-built environment. Slimeria is a fantasy world where Slimes are the primary fauna alongside humans. For mysterious reasons, the slime population has grown significantly while more dangerous breeds wreaking havoc on local towns. You play a lone slime hunter, making their journey through Slimeria to learn about the state of the slime invasion and hopefully find the source. ...

PianoTypes: Virtual Piano

Virtual Piano PianoTypes is a web-based piano that provides a full-range, customizable piano that is fast, visually sleek, and easy-to-use. While there are similar sites out there, PianoTypes tries to stand out by being a fully featured package and replicates most of the fundamental capabilities of a keyboard and more. Svelte JavaScript CSS ...

Bujots: Jot-Based Journals

Bujots - “boo-jots”: /buˈʒɒts/ A portmanteau of bullet journaling and Jots A web-based jot note app to create organized online notes Jot-Based Journals The goal of this project is to capture the joy and satisfaction of writing a beautiful journal entry and apply it to jot notes. Along with the ability to write daily notes organized in a timeline, users can freely customize their notes with stickers, adding personality and charm to each one. ...

Just for Fun

Shadow Detection: Why Render Textures Were a Mistake

During a game jam centered around the theme of light, I worked on a project that required a shadow detection system. You can check out the game here. The challenge was to detect when objects were in light or shadow and identify the closest shadow to an object. Initially, I thought render textures would be an elegant solution, but this approach turned out to be a mistake. Here’s why. The Initial Appeal of Render Textures The idea was to use a camera positioned above the scene to capture light and shadow data into a render texture. This texture could then be sampled to determine if an object was in shadow or to find the nearest shadow by analyzing surrounding pixels. It seemed promising because it provided a dynamic map of the environment, avoiding the performance cost of casting multiple rays while also letting us easily find the closest shadow. ...

20-day TapTap Spotlight Challenge 2024

Lucid Dream | 20-day TapTap Game Jam 2024 unity Unity C# ...

Basics of Shader Fractals

Fractals are built off of a single pattern or formula, repeated constantly with smaller and smaller transformations. In glsl, this idea translates nicely into iterative coding with for loops. How to Make a Fractal I’ll be following kishimisu’s guide on shaders. Create a Shape First off, we can start by creating some base patterns that we want to design our fractal off of. In this case, we can start with a simple circle. ...

3D Matrix Rotations

Intuition of 3x3Matrix Transformations Rotations can be achieved by locking the desired axes of rotation and transforming the rest of the axes by \(sin\) and \(cos\). 3x3 matrices can be used to bend the coordinate space in 3 dimensions, effectively allowing any desired transformations to objects in that space. As the coordinate space is being transformed, it’s helpful breaking up the matrix into its unit vectors $$ \vec{a} = x\begin{bmatrix}1\\0\\0\end{bmatrix} + y\begin{bmatrix}0\\1\\0\end{bmatrix} + z\begin{bmatrix}0\\0\\1\end{bmatrix} $$ ...

Making an Osu Banner

After submitting my last osu fanart, I decided to make my own osu banner. My profile was looking pretty empty without one and I figured after all that work to put together my own rendition of Enchanted Love, might as well put those meshes to more use. I wanted to keep it fairly simple as I know I’m pretty limited in gif size and quality for it to work as a profile banner (otherwise if it’s too large, the auto-compression will convert the image into a static jpeg). ...

Some Casual Art

I’ve been thinking about drawing more casually, inspired by how others seem to sketch just for the joy of it, not tied to contests or big projects. I really admire how they just go with whatever they’re feeling, letting their ideas spill onto the page without worrying about a specific style. I’ve tried a few doodles myself, and it’s kind of neat to see them starting to share a certain look, even if I’m not sure what it means yet. ...