game programmer and technical artist

Currently working on...

GRASS Using a technique known as shell texturing! Stay tuned! In the meantime, check out the blurbs below of other stuff I've been dabbling in.

last updated: 01/10/2024

Creating Quests

For Alchemist's Ascension Worked with the other programmers on my team to bring our questing system to life. I had written out and UML'd the designs that we programmed, down here is us showcasing the dialogue for each stage, which we set up with enums.

We made heavy use of Primary Data Assets, Structs, and Data Tables here to work on what we have so bar.

More to come soon!

Optimizing With Object Pooling

Boom is a game where you control a tank, and fire at turrets and armored cars. So naturally it needed there are a ton of explosions, bullets on the screen, and particle effects. For this project, I wanted to really try to learn object pooling to save a little performance in the game.

Object pooling is an optimization technique, where use reusable objects instead of constantly instantiating the object. So we use it here for projectiles in our game, but we have to set up these objects, so here we grab each one, set it's attributes, and set it up in the queue.

Here we actually pop the queued object, set it active, then rotate to the proper position. Pretty easy stuff, but you just have to be mindful about stopping motion before the bullet gets called back!

Building Explosions with Scriptable Objects

Boom is a game where you control a tank, and fire at turrets and armored cars. So naturally it needed to have a ton of explosions, some applying just force, some with certain VFX, most with dealing damage. Since every explosion needed to have different parameters, I wanted to ensure my designers had access to everything from radius to force to VFX.

The first thing was to create the scriptable object. I ensured all the tooltips here actually showed some useful information for my designers, just in a parameter wasn't clear. Now all designers had to do was right click, create a new Scriptable Object, then apply it to the explosion script.

And behind the scenes, I just handled the variables, pretty standard stuff here, grabbing all GameObjects and placing them into a foreach loop helped a lot with organizing what to do with each individual GameObject affected by explosions.