Wednesday, December 13, 2023

Galactic Horizon

I've worked on a few Unreal Engine 5 projects lately, but due to NDA restrictions, I haven't been able to show as much as I'd like to. That's why I'm really happy to show the Galactic Horizon Demo I helped build with N-Fusion Interactive.

*Turn up the video quality if you watch the embedded video please!
**Skip to 30 seconds if you want to jump past the menus.

In this demo you take on the role of an interstellar traveler investigating various deep space planets. You analyze the atmosphere and local flora and fauna. Ultimately your goal is to determine if the planet is ideal for human colonization, interplanetary trade, or maybe should be avoided.

The demo was made by a small team using early versions of UE5 as they were released. Some things I learned more about along the way:
  • Sequencer (cameras, animation blending, and BP events)
  • UI Animation
  • Media Player/Media Textures
  • More Advanced BP Scripting
  • Ultra Dynamic Sky/Weather
  • Fluid Flux
  • Landscapes
  • Brushify
  • Procedural Foliage Volumes
  • Niagara Mesh Renderer (for flying ships and creatures)
  • Level Streaming
  • Cinematic Layouts
  • Displacement Materials on Nanite Landscapes
  • Manual vs Automatic LODs

After spending so long developing projects in Unity, it's really encouraging to dive back into Unreal and find out how my experience translates into the latest version of the engine. Some things are done the same, some things are done differently, but the underlying methodology is very similar.

But so far, in UE5, everything we make tends to be bigger, faster, and more detailed than what we've done in the past! I am loving this journey.

Image and video credit to N-Fusion Interactive (Jeff Birns, Jason Zisk, & Tyler Munden)

Friday, July 21, 2023

Home Office Webcam: Professional, Practical

When you work fully remote, your webcam presence is your professional presence. But depending on who you work with they may have different expectations on how you should present yourself. Gamedev tends to be more casual. The focus is on what you contribute, and it doesn't have to be a sleek corporate look.

This room is my dedicated office for work. But it's also where I game and socialize online. I try to keep it clean and presentable. And my background contains my personal interests, games, and decorations.

Of primary interest is my retro-gaming shelf. It holds four generations of working Nintendo platforms (NES, SNES, N64, & GameCube) with hundreds of titles (original physical cartridges), and a small CRT that fits perfectly into the shelf.

My walls have movie posters, and framed fan-art graphics for classic games (F-Zero, Star Fox). And behind me is my wife's futon/sofa, which we keep so that the office can be used as a guest room if friends/family want to stay the night.

Lastly is a cat bed and pub chair for my darling cat Izzy. She likes to make an appearance when I'm doing video calls. But she does get banned from the office when she gets too demanding of attention. I pay her back with fish puree later.

Let me know if you think my home office setup is appropriate, or if you have any tips. Thanks! <3

/Lastly: I always use headphones on video meetings to reduce line noise on the call. I suggest everyone do that!

Monday, June 19, 2023

Unreal Engine 5, Animated Billboard Video Solution

The goal was to animate several billboards hanging from a futuristic city tower.

I started out with the building and five signs displaying static images. I copied the signs and arranged them into a 1920x1080 canvas to create a reference texture.

I brought the billboard texture layout into Adobe Premiere, then gathered stock videos to replace each sign.

The stock videos were imported into Adobe Premiere and masked over the static billboard images in the layout texture. A final looping composite video was created (MP4, 1920x1080) as well as an image to be used for UV mapping.

Then I used Maya to apply a single material to all the signs' display screen geometry. UVs were adjusted to optimally display each portion of the video. The signs were exported as FBX and reimported into UE5 with a temp material displaying the static image of the video.

The final task was importing and playing the composite video.

I copied the composite video into the UE5 project's Content/Movies directory.

Then, using UE5's Content Browser I imported the MP4 file into the same directory (Content/Movies) to create a File Media Source, Media Player, and a Media Texture.

  • The File Media Source contains the File Path to the MP4.
  • The Media Player controls the video playback, including Play on Open, Shuffle, Loop etc.
  • And the Media Texture renders the video to a texture, which can then be referenced in a material in the world.

I changed the material the signs were using to render the Media Texture linked to the billboard video.

The final step was using Blueprints scripting to make the Media Player actually play the movie at runtime. There are a variety of ways to achieve this. I did it with a custom event (PlayMedia) and an event tick that checks that the media “Is Ready”, then plays it.

The result is one Media Player being rendered on multiple screens, as if they are each their own video.

*This is a general runthrough of the methods used to achieve this goal. It is not a complete tutorial. There are plenty of existing resources that cover the various techniques used (like the Media Player). If you would like me to expand this article, or if you have specific questions, feel free to contact me!

Tuesday, February 7, 2023


If you're working in the Unreal Engine 5 Editor and you're having trouble getting your textures to stream in, change the texture streaming pool size.

In Cmd type r.Streaming.PoolSize then space and a number.

r.Streaming.PoolSize 3000

Wednesday, July 27, 2022



I used to have a hard time keeping a house plant alive. But now I've embraced a small garden for the hot and sunny time of the year.

Gardening is a great way to balance out the gamedev lifestyle. It forces you out into the sunlight. Requires you to do some physical activity. And gives you valuable time away from screens.

As time marches on, you witness the cumulative change happening before you. Just a little bit of progress each day amounts to major change, and bears fruit in the end! Much like we hope for our gamedev projects.

Thursday, September 30, 2021

Aluna Released, GDEX 2021 Next

It's been a very busy year. After a lot of hard work, it's nice to say that Aluna: Sentinel of the Shards is available on PC/Steam and Nintendo Switch!

Aluna as it appears on Nintendo's eShop

There were many aspects of Aluna's development I found rewarding. Working with established characters and creating a new adventure for them is a special kind of challenge I enjoy. And creating vast top-down worlds for the player to explore was engaging. I had to upgrade my PC just to handle our custom RPG Editor! The streaming engine can be extremely demanding when viewing an entire level at once.

Aluna's chunk-based world editing gave us a lot of options on how to lay out the levels. And I enjoyed creating 3d tile sets that could go in any direction, and rise or descend.

Here you can see a massive ziggurat constructed in our engine:

RPG Editor view of a level from Aluna

Same level zoomed in

And here is what it looks like zoomed in a bit closer. The gameplay camera is even closer in.

Reaction to the game has been positive, here is a review:

My favorite part of a new release is getting to watch players stream their gameplay sessions, either live or archived. People may react to different parts of the game in ways you didn't anticipate. It's exciting to see and provides a lot of late-night viewing when I can't sleep.

I meant to post more about Aluna right at release, but I've been swamped with more work since then. I decided to post now on the eve of GDEX 2021 in case any of my fellow devs are interested in what I've been up to. I plan on attending the con this weekend at the Columbus Convention Center. See you there!

Splash page for GDEX 2021, the local gamedev convention in Columbus, OH