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. ...

April 11, 2025

20-day TapTap Spotlight Challenge 2024

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

April 5, 2025

Unity Modular Inputs with ScriptableObjects

Managing inputs in Unity can quickly become unwieldy, especially when dealing with multiple devices and input schemes. This guide explores a modular approach using ScriptableObjects to manage device-specific icons, decouple input events, and enable dependency injection for flexibility. Goals Ease of Management: Simplify handling device-specific input icons. Decoupling: Avoid relying on a centralized input manager. Flexibility: Use ScriptableObjects for modular and reusable input definitions. Drawbacks InputActionDefinition OnInput returns a CallbackContext that can have any information Subscribers have to assume the CallbackContext has the info they need (ex. a Vector2) Steps Follow these steps to implement this architecture: ...

January 8, 2025

Shadow Detection With Render Textures

I participated in a game jam where we worked on game with the theme surrounding light. If you’re interested, you can check out here. For now, I want to focus on the shadow detection system I developed for the project. The designers originally came to me with the challenge of detecting when something is an light and shadow. That by itself would seem easy enough with some careful usage of raycasts. However it was the second requirement that made things complicated. ...

October 28, 2024

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. ...

July 12, 2024

Responsive Melee Combat

What is Responsive Combat Whether it’s an attack, dodge, or block, responsive combat ensures each feels immediate and with appropriate feedback. Games like Hades got this nailed down to a tee. Attacks feel punchy with minimal delay and the player rarely feels like their fighting with the controls to get the game to do what they want. By providing precise control over the character’s abilities, responsive combat enhances the sense of agency and satisfaction, leading to more intense and rewarding gameplay experiences. ...

June 5, 2024

Unity Custom Passes with URP

I’m documenting some of my adventures looking into the Scriptable Render Pipelines in Unity. I have the goal of creating a stylized 3D pixel-art render pipeline heavily inspired by t3ssel8r. What is URP Cel-Shading Rendering To an Intermediate Texture During rendering passes, it’s common to store information by rendering to a texture instead of immediately rendering to the screen. For example, if you want to just do a pass to collect depth information, you can draw that information in memory and hold on to it to reference for later usage. You probably wouldn’t want to draw normals on the screen directly and mess with the rest of your render passes. ...

May 7, 2024

Handling Normals from Unity to Blender

While trying to import a plane from Blender to Unity, I ran into the issue of the normals facing the wrong direction once imported into Unity. This was particularly an issue when it came to vertex shaders as any vertex transform performed incorrectly. This crux of the issue is that Blender considers the z-axis to be the vertical axis while unity considers the y-axis to be. So, for a plane in Blender, the normals would face towards the positive z-axis but when imported to Unity, they remain so which to Unity is actually along the horizontal plane. Oddly, the actual model imports in the correct orientation, it’s just the normals that don’t adjust after import (which creates the mismatch problem of normals not facing the right direction. If the whole mesh and normals rotated equally, that’d be fine). ...

May 15, 2023

Introduction to Unity Shaders

Shaders are programs used to describe how pixels should be arranged, colored, and transformed on the screen. The simple definition extends to so many applications especially in 3D graphics in movies and games. Every computer generated prop placed in a scene is carefully designed to look a certain way, all with the help of shaders. Shader’s make use of the GPU to constantly run concurrent calculation on every pixel and you can decide what those calculations do through programming with languages such as HLSL and GLSL. You can decide that very pixel should be moved slightly to the left, or that they should be slightly more saturated under certain conditions, or even that they have follow the movement of a sine curve and create waves like an animation. You might start to realize that there is a lot a math involved and there is. Specifically, the way you want to arrange pixels makes heavy use of linear algebra to orient points in space as well as creative calculus to take advantage of functions when wanting to create tailored movements and patterns. ...

May 6, 2023

3D Character Unity Setup

I followed this tutorial https://www.youtube.com/watch?v=bXNFxQpp2qk&list=PLwyUzJb_FNeQrIxCEjj5AMPwawsw5beAy&index=3 Adding a 3D Character Animation States Unity has it’s own skeleton rigging system called Mecanim. To add animations to a character, you first need to add an animator component to your character model and then create a character controller object and link it to the component. Double clicking the controller will then open up a panel to handle state transitions between animations. There you can add each of the states you want to transition your model to and from. I set idle to be the default state which is self-explanatory. From there, I connect transition arrows between each of the states and set a condition for each of the transitions to occur. ...

May 3, 2023