gamedev

UE: NPC navigation through destructible geometry

The Problem Our game Minermancers involves a handful of silly wizards going mining together. They dig through rock to get to minerals, and that has its own challenges for navmesh updates, but until recently the standard UE navmesh facilities worked fine. However, a tricky problem I had recently is: what if I want NPCs to dig through rock to get to where they need to go, if there isn’t a good open path already?

Read more →

Creating an in-game map with Unreal Runtime Virtual Textures

In-Game Map: The Requirements I wanted to make an in-game map screen. My requirements were: Generated from world geometry My levels are procedural and modifiable so I couldn’t just manually draw it once Stylistic I wanted it to look a bit like an old-skool TTRPG map, not just an overhead game render Here’s the final result, which is basically what I was looking for: You can see that the map looks hugely different from the in-game render (you don’t usually play the game from that camera angle, I’ve just moved it to roughly match for comparison).

Read more →

Creating Distance Field Fonts in Unreal Engine 5

development gamedev ue5 unreal

There are 2 types of font in Unreal - regular runtime fonts, and “offline” distance field fonts. The former is what you’ll use for UI widgets and such, but for in-world Text Render Components you need Distance Field Fonts. The engine only comes with one, “RobotoDistanceField”, and there isn’t very much information online on how to create new ones. I’ve figured it out so I thought I’d post it here for both me in future, and everyone else.

Read more →

UE 5.5 Skeletal Animation / LastRenderTime bug

development gamedev ue5 unreal

A quick one today to hopefully help someone else who is scratching their head about very weird LastRenderTime results in UE 5.5! TL;DR In Unreal 5.5 if you disable Occlusion Queries, LastRenderTime on most Primitive Components will not be updated correctly. This will cause Skeletal Animations not to play even though a skeletal mesh is definitely within the camera frustum, and any other effects that rely on LastRenderTime will be erratic.

Read more →

Problems With Unreal Network Saturation

development gamedev ue5 unreal

The Problem Disclaimer: I am not a netcode specialist, in Unreal Engine or otherwise. I’m just going to tell you how I solved a gnarly problem I had, and why I think it happened. I may well be wrong about any of this, so I welcome all feedback about any nuances or specifics I might have missed or misunderstood, you can find me at Mastodon (preferable) and Bluesky. We’re working on a multiplayer game in UE5, and last week something weird started happening.

Read more →

Agent Player Avoidance in UE

development gamedev ue5 unreal

Unreal has some exising documentation on Agent Navigation Avoidance, which works fine if you only want your agents to avoid each other. What if you have friendly / neutral agents that should avoid bumping into the player? There’s basically no documentation on this, and all the advice I could find on the forums was either incorrect or incomplete as of UE 5.4+. So here’s how you actually do it. Agent Setup We’re going to use Detour Crowd Avoidance, not RVO avoidance.

Read more →

Doing Unreal Camera Calculations Right

development gamedev ue5 unreal

What’s The Problem? Sometimes you want to do some calculations based on the current view, such as a ray/plane intersection to figure out where the player is looking. A lot of information online will immediately tell you to “get the camera component and…”. ⛔ NO! ⛔ If you do this you’ll get some weird edge cases where the results that gives you are just plain wrong. The transform of the camera component on your pawn is NOT the current player view; even when it’s the camera you’re posessing right now.

Read more →

Niagara Particles: Setting Positions Manually

The Requirement Niagara is great for simulated particle systems, but its renderers seem pretty useful for non-simulated things as well. What if I just want to give Niagara a set of points, and tell it to use those as particles? My use case was a “throwing arc” visualisation, for when you’re aiming a thrown projectile. UE provides you with helper functions to generate a list of points from a given start position and velocity (see the “Predict Projectile Path” suite of functions), and I want to display that in the world to preview where I’m throwing it.

Read more →

Unreal Asset Validation

development gamedev ue5 unreal

Why? With all the assets that make up a game, it’s easy to forget a setting or two sometimes. One of our most common mistakes is forgetting to set up Sound Attenuation for a given sound wave / cue. If you forget to assign attenuation settings for a sound, it’ll always play at full volume regardless of where it is in the world in relation to a player. In a multipplayer game like ours, it can be even easier to miss because if the sounds are made by the player, you don’t notice that they’re not being attenuated.

Read more →

Unreal Network Prediction for Projectiles

development gamedev ue5 unreal

Making multiplayer games is hard. Keeping things responsive for the local client, while still keeping everything consistent on the server which controls it all, which is always a non-zero number of milliseconds of network traffic away, is a tough problem. Unreal Engine has your back for the most part, its in-built replication and multiplayer support is pretty robust. Character controllers automatically let you control your own character responsively, while keeping it in sync for everyone else.

Read more →