This section presents samples of my work building an engineering department and nurturing the studio's culture over the course of 10 years.
Permission to use these on my portfolio was granted by my gracious former business partners.
This was the doc our engineers would have on screen when conducting virtual interviews.
This was the first page a new hire would see when they joined the studio.
I like to avoid mismatched expectations during performance evaluations. I also like to see engineers get promoted.
Includes justification for why each convention exists.
My way of introducing Blueprint scripters with no multiplayer experience into a studio culture that recognized the "multiplayer tax" on every feature that needed to accommodate join-in-progress scenarios.
In a culture where engineers were encouraged to think like designers, we also wanted designers to be able to think like engineers.
Based on an internal doc, this was a public-facing document I used to attract compatible candidates when we were hiring engineers.
I shared my bag of tricks.
Math is my friend.
This was my love letter to the games industry with all of its quirks and foibles.
This was a group presentation in collaboration with various other professionals in Austin presented to a group of professional game developers.
This was my love letter to the city I spent my formative game development years in.
This was a presentation I did at a bar in front of a crowd at Nerd Nite in Austin.
This was a presentation I did for young kids at a summer camp program in order to inspire the next generation to view game design as a goal-driven, problem solving endeavor.
I taught a night class on game programming at Austin Community College.
I've used this on various projects to make ranged attacks more fun.
I've used this on various projects to manage complexity and avoid switch statements inside update functions.
In the old days, you had to write your own object-oriented callback functions.
I used this in The Magic Circle to enable flying creatures that could pathfind on a dynamically generated 3D grid.
In stealth games, you want AI vision cones to be wider than they are tall. This lets you do that without having to compromise squashed vision cones as a rectangular view frustrum.
This is a low cost method that can be used to ensure that line of sight does not result in false positives with entities that are generally represented as bounding boxes.
Thanks to overlapping cloud services, I had a situation in which I had duplicate photo and video files in the same folder. This used binary comparisons to prune the extras.
I wrote this when my music app somehow generated tons of duplicate files during multiple import attempts. It was mainly an excuse to learn Perl over a weekend.