bg-img

Michael Gentry

Technical Designer

About Me

Welcome to my portfolio! I am a passionate Technical Game Designer with a deep love for creating immersive experiences that bring ideas to life. I hold a Bachelor’s Degree in Game Design from Full Sail University, where I was honored for my achievements with the Advanced Achiever Award.

My current focus is on Unreal Engine where I create gameplay loops, implement mechanics, design stunning levels, and build helpful engine tools

I approach each project with a collaborative mindset, a dedication to quality, and a relentless curiosity. Whether it’s programming complex systems, prototyping mechanics, or fine-tuning animations, I bring a meticulous attention to detail and an eagerness to solve challenges.

If you’re a potential collaborator or employer, I’d love the chance to contribute my skills to your team and grow alongside you.

If you don't already have it, feel free to download my resume below to learn more about my journey.

Skills

Blueprints

C++

Confluence

Jira

Perforce

Team Collab

Projects

Project 1

AnyPrint

Project 2

WhisperWinds

Project 3

Deadwood Dominance

Project 4

Coming Soon

Connect

AnyPrint

Introduction

AnyPrint began as a Blueprint Function Library, created to provide an easy way to debug in Unreal Engine. Initially, it included simple print functions like PrintBool, PrintVector, and PrintRotator.

As I continued to develop the tool, I had the idea to move it to C++ and create a more robust log manager by leveraging the power of Editor Utility Widgets. This transition created for a better debugging experience by allowing more access to the information that needed to be printed.

The goal of AnyPrint is to offer a comprehensive logging system that can store any type of output, making it easier to locate specific logs without sifting through the entire output log. Each log entry includes a timestamp and the log output, providing a clear and organized way to track debugging information.

The Foundation

The core of AnyPrint is the SaveLogToFile function. This function takes an input string, adds a timestamp, and saves it to Saved/Logs/LogFile.txt.

Each log entry is stored in a LogEntries array, which is then read by the LogManager. The delegate is called, and the widget updates accordingly.

Log Management

The LogManager is responsible for storing all logs in the LogEntries array. It encapsulates all the unique features and ideas for managing logs.

Currently, the LogManager allows you to change the text size of the logs and clear the log entries. It can store an average of 5000 logs before impacting the editor's performance.

Upcoming Implementations

As the project evolves, I plan to introduce features such as colored text, index support, and various visual enhancements.

Ultimately, I intend to release AnyPrint on the Unreal Engine Marketplace (FAB) for free, making it accessible to anyone who might find it useful.

I hope AnyPrint proves as helpful to others as it has been for me. I'm excited to hear feedback and suggestions for new features from users. Understanding what people find valuable will greatly influence and inspire future projects.

WhisperWinds

Intro

WhisperWinds is a personal project of mine. It's really something I'm working on to test and push my own skills further. I've fallen in love with the project and work on it in my free time. Keep in mind that it is still rough around the edges but progress is being made.

Description

The primary combat weapons are different staff types the player can acquire. Currently, there are 3 types:

Lightning Staff

Water Staff

Fire Staff

All 3 have a unique basic attack, special attack, and Ground UI. The different types deal mitigated or multiplied damage against different enemy types.

Casting & UI

One of the bigger challenges that I presented to myself was casting cancellation and the UI. Making sure the player should cast when they want to, can cancel when they don't want to, and can't when they aren't supposed to.

To begin this, I started with being able to cancel the special ability with Left Click. The player can hold Right Click to draw the UI and prepare for casting. You can Left Click to cancel it or release right click to commit and cast it.

Alternatively, if you try to cast outside the casting range, the UI will vanish, and they player will not be able to cast. Releasing Right Click in this instance will cancel the special ability.

To prevent casting issues, a dot product is calculated to make sure the ground is level where the player intends to cast to ensure the player cannot cast on the sides of building or other vertical object that they shouldn't be able to cast on.

Lastly, the player should not be able to cast indoors. If the player walks into a building, the special cast will cancel. Also, as you can tell in the video, the timers and cooldowns reset on the ability cancellation.

Interact

Detailed description for Project 2 Image 4. You can add multiple paragraphs here to provide more information about the project.

Additional details and insights about the project can be included in this section.

Deadwood Dominance

Intro

Jumping into Deadwood Dominance was my first deep dive into the game development world. I was right there in the trenches, working on the AI - adjusting animations, tinkering with the state machine, implementing mechanics, and synchronizing behaviors of the behavior tree with the animations. It felt like an adventure, every day was a new learning experience.

The process was filled with countless iterations, a lot of trial and error, and a meticulous attention to detail. But the real thrill was seeing our ideas take shape, creating gameplay that kept players on their toes. Although Deadwood Dominance is still in its alpha stage, the journey has been nothing short of amazing. The sense of accomplishment I feel, knowing that I’ve contributed to the game’s immersive gameplay, is something I hold closely.

Health

In Deadwood Dominance, one of the features I take great pride in is the health indicators for our AI. The solution might seem straightforward now, but initially, we were at a crossroads. Some team members suggested floating health bars above the AI, while others proposed a static health bar for the last hit enemy at the top-center of the screen. Both options, however, fell short. Given the hordes of zombies (AI) in our game, neither approach would allow players to accurately gauge a zombie’s health.

So, I got creative. I exported the AI materials and re-colored them three times using Photoshop. As a result, the AI’s mesh changes color based on their health percentage, giving players a clear indication of how close each zombie is to defeat. What makes me proud isn’t the complexity of the solution, but rather its effectiveness in overcoming a challenge.

Knockback

In the development of Deadwood Dominance, one of the most significant mechanics I implemented was the AI knockback ability, also known as impulse. Given the game’s hoard-like zombie setting, it was crucial to equip the player with a defensive mechanism for those moments when they’re swarmed by enemies. While it might seem straightforward on the surface, the inner workings presented quite a challenge.

Initially, I envisioned a ragdoll-like core for this mechanic. However, it quickly became clear that this approach was causing more problems than it was solving. So, it was back to the drawing board for me.

The solution I came up with was the impulse mechanic. Heres how it works: The impulse performs a multi-sphere trace, checking for the AI Base class. For each AI hit, it checks if it’s already in the array. If it isn’t, it gets added; if it is, ’s ignored. Then, each AI has their behavior aborted to initiate the knockback, which triggers the corresponding animation. To prevent the player from getting stuck in the knocked-back AI, the collision is turned off.

After a duration that’s synced with the animation, the collision is turned back on. The animation then transitions to the standing pose and resumes playing. The behavior tree switches to attack/chase mode, and the array is cleared.

Death

The AI characters have two distinct death states, each triggered based on the AI’s current state.

The second state is the ground death state. This state comes into play when the AI character has been knocked back. In this case, the AI plays a ground death animation, depicting a death scenario where the AI character is already on the ground.

This dual-state death mechanic adds a layer of realism to the game, making the AI characters react differently to death based on their current state. It’s these little details that contribute to the immersive gameplay experience in Deadwood Dominance.