Preface
It has been almost two years since I've written a blog, article, or long form post. Writing like this is a muscle that needs to be exercised and it's one that I've neglected for a time. I have wanted to write but the time since my last post, The Making of Phantoms: Unreal 5, have kept me quite busy. That piece went up in the fall of 2022 and in the six or so months that followed, I had an amazing ride.
- I submitted and was accepted into the Unreal Worldbuilding Fellowship which resulted in this piece.
- I continued as an Art Director with GameTextures.com until the end of 2022.
- To start 2023 I accepted a contract role with Digimancy Entertainment to work as an Art Lead on DLC for a AAA First Person Action Game.
- I continued teaching at Drexel in a full time capacity.
Yes, Fall 2022 to Spring 2023 was an exceptionally busy time for me. In fact, the entire run since starting my full time teaching position in the fall of 2019 and continuing until Spring 2023 has been full of projects and contracts. Starting off with a strong focus on student content and remote teaching during the pandemic and accelerating as I built an academic project for a local non-profit, my outside work also expanded. My long time writer role with GameTextures grew into an Art Director position for outsourcing projects at the end of 2021 and it cumulated in an Art Lead position at Digimancy to start 2023. I had a strong 3 year run that I might not have fully appreciated until this very paragraph was written.
Success comes in many forms and for some, it can last a life time. For me, I find every success fleeting. This run was no different.
My time at Digimancy lasted only three months due to the cancellation of our project.
While I can't speak about this here, or...at all, the end of this project brought the 3 year run of ever greater success to a close. After saying my goodbyes and failing to land any other contracts in the short term (which in hindsight was a warning of what was to come), I decided to rest. Teaching pays the bills, my wife has a fantastic job, and I was absolutely burnt out. I decided to do something I have not done in a long time: game like I was 18. But I didn't completely rest on my laurels. I flexed some non game focused art muscle with the Disposable Hero project which had a strong focus on utilizing Cycles, Blender, and polishing up older Substance Materials I created over the years. Fun fact, this style of project is the basis for my Texturing and Materials focused classes.
This wasn't enough however. I am a game developer at heart, and that will never change. Looking back to the summer of 2020, some of the most fun I had was creating a Third Person Shooter Prototype following this YouTube series from Epic. It's since been hidden due to it's age, but lots of the information in it is evergreen in my opinion. I wanted that feeling again, of learning constantly while making something that could perhaps propel me in some sort of new direction. With the summer of 2023 featuring the rise of AI, the start of industry layoffs, and a cleard calendar, I decided to invest in a cloud Perforce Server and begin work on a prototype. This is the first teaser of said prototype I call Project Outlaw.
Project Outlaw
Outlaw has been the focus of my non teaching work since the summer of 2023. I've done a little art here and there, and much of it has been for this prototype, but I've not spend an appreciable amount of time working on true art pieces. I've thrown myself into the development of the prototype and thanks to how quickly I've picked up Blueprint coding (thanks in no small part to Epic's Unreal Learning site), I have made fantastic progress. I'm further along than I ever expected I'd be at this time.
Outlaw is planned (as of this writing) to be a short, two hour (or so) shooter where the player is sucked into a stylized world of their own mind, and must fight their way out. Fast movement, readable enemies, bosses, and a beautiful world are the key pillars of the project. A core theme started to emerge while I worked; our relationship to technology. I intend to tell the story though play with limited need for cinematics or dialogue of any sort. I am a solo developer after all with a day job and as of last week, a newborn baby. My time is a finite resource.
I am workshopping some changes to my approach to Outlaw as well. I will be sending the current, bug riddled but fully playable build to friends, family, coworkers, and former students. I'm looking for feedback from them on approach, feasibility, and any and all tips on how to build better levels. For anyone interested, you can see the full 13 minute playthrough below.
Process, Generalized
Outlaw first started looking a bit like this. My focus from the beginning was always on building the systems and functionality first. Working was far more important that perfection and systems were more important than art. In this screenshot, I tested all sorts of elements including movement, basic Enemy AI, shooting modes, performance (Sparrow has more polygons and textures than the entire game right now), and how I'd build the world. Initially I hoped to have a seamless world but I also wanted to aim for a constant 60 fps on Steam Deck. To do this right, I have to leverage Light Maps and Baked Lighting, dirty words in 2024 but the easiest way to get clean performance. If I wanted to have a changing time of day or even to just move the sun for better mood, I need to re-bake my lighting.
This led me to test Lighting Scenarios and streaming of said Scenarios from one level to another. On PC I think I'd be able to get it to stream well enough to not be a huge performance hit. But in early testing on Deck (on Unreal 5.3) streaming this data hitches so bad that Digital Foundry would wet their pants. So, I ditched this idea and decided that the world would technically be connected geographically, but each level would be it's own load and unload. Traditional and Boomer Shooters are my main inspirations anyway so this works!
This shot is of my current test level. I use it to test every aspect of the game as it relates to the player, weapons, and even AI. This is part of the current build and is intentionally playable. By default, you cannot access the full arsenal in the main story (although there are menu options allowing "cheats"). Having a test level is invaluable and this level is the default level that the editor opens to when I work. The shot below is full top down view.
The Outlines
Part of my goal for the primary portion of the game is for it to feature a stylized, near Studio Ghibli look. As part of that I intend to leverage some heavy Post Processing work to bring it to life. Since I'm considering the Steam Deck my lead platform, I wanted to test performance right away.
I need to mention that I would not have this shader without the help of DeAngelo Buxton. Formerly a student of mine, one of his last classes at Drexel involved him working heavily off of work from many others in the game dev community to create a complex and detailed Post Process Shader. I am currently using an early version of his work. While I intend to modify it in the future for performance and artistic reasons, today it is the reason the game looks the way it does. Happily, it's performance hit on Steam Deck is small enough that it continues to run above 60 fps.
The terrain featured in this shot is based off of a mix of real world satellite data that I processed though World Machine. I then modified it to work with the game as I needed it to. Combat arenas, long hallways, cliff faces that didn't exist...all that fun stuff. The texture being used is temporary and output from World Machine as well. It's helpful to have some color information in a world that' is mostly cubes or cylinders.
Many of the boxes you see are spawn or blocking volumes. My current floating enemy AI is based on a Plugin that I am able to partly use correctly...and partly not. This is an issue with myself and my limited code understanding, but I've gotten most of the issues ironed out. I think I could remove these blocking volumes at this point. Prior to my most recent passes, floating enemies would have a decent chance of flying off into the ether.
Level 2, seen here, takes place inside of a cave. The level itself has space to grow and expand with more paths, but by the time I started working on this map I had to start juggling a deeper class list and the eventual arrival of my daughter. In terms of functionality and general design though, I find it works well enough.
Future Work
Working on this project has been immensely gratifying and I intend to see it though to a commercial release on Steam (since I'm using Steam Deck as my target platform) and the Epic Store. I have a long way to go before it's there, as you can see. Besides needing, you know, art, I have a number of levels and enemies to create and implement. I have spaces to concept and menus to design. That's all long term, obvious issues that a casual viewer or player will notice and accept.
As the developer though, I have more problems.
This is the "simplified" view of my Character Controller. While this game is simple at its core, some of the implementations I opted for are still too simple. For instance, many of the elements that might be influenced by a Game Mode are stored on the character controller. In fact, if you follow the full playthrough (or even pay close attention to the trailer) you will notice that when I die during my run, the key indicator gets reset on the weapon. This is because of how the variable is used. The Game Mode stores the overall variable and thus the doors always work, but the player stores that value as well. That's how the indicators on the gun know to illuminate or not. When the player dies, they reset. I have loads of little issues like this that make it hard to track specific variables and ultimately lead to some issues with the EMS save system that I implemented into the game. Yes, you can save the game...but how well it works is on a spectrum from "oh this worked OK" to "what the hell happened".
So, much of my future work involves adjusting little issues like this and making the game work in a more intelligent and correct way. Much will still be "wrong" but if it ships with minimal bugs at the performance I'm targeting, I will be very happy.
I am also looking at the structure of the game. I'm considering simplifying the game down even more into a more simple shooter, where the player loads into individual levels and the goal is to beat the level either under specific conditions or to defeat a boss....I'm still workshopping this. This would make the levels not connected on the same piece of terrain and potentially free up resources for more enemy types, game modes, and weapon augments. It removes any narrative blocks I intended to have (it would still exist but be presented strictly though gameplay) and make it easier to take the game to Early Access if I am so inclined. This is a new idea, it needs refinement, and I want outside opinions.
Do I have a ship date? Absolutely not. This is a side project. I have a full time job and a new baby to care for. I fully expect this game to take the next year and change to be in a state where it'd even be early access ready, direction change or not. I am doing this to release a commercial project yes, but more importantly, to engage and expand my mind. I've always considered myself more than just an artist or a teacher and this project is my way of proving it. I am a game developer.
Who knows, if all goes well, I might be able to parlay this little project into an even bigger one in the future.
-Dan