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