Do you use JetBrains IDEs like Rider? They’re pretty great; I use Rider myself daily for Unreal Engine development. In this post, I’m going to assume other JetBrains IDEs function largely the same as Rider in this respect, which I’m pretty sure they do. When I started using Rider, I was surprised to discover that, as far as I’ve seen, JetBrains have the best IDE version control tools in the business.

Read more →

Intro You can do some quite nice text effects with Unreal Engine’s UMG Rich Text Block. Coloured text, outlines, shadows, even embed images in the text. But what if you wanted to do things like this to your text: When I was looking for information on how to do this kind of animated effect, I didn’t find very much. So now I’ve figured it out, here’s the information I wish I’d been able to find.

Read more →

Intro I’ve been experimenting with UE4’s Control Rig recently, in my case in order to be able to do custom skeletal animation in level sequences - this is really handy when you want to animate something in the context of the actual level, instead of just in isolation. I’ve generally found it very useful, if a little under-documented, but that’s understandable since it’s still beta software (but as of 4.27, pretty robust).

Read more →

Sequencer and Gameplay Camera Blending UE4’s most recent tool for making level animations, cutscenes and other cinematics is called Sequencer. I only just started using it this week, and I really like it. However, I had a lot of difficulty at first with a problem I thought would be extremely common: smoothly transitioning from your normal gameplay view into a cutscene, and back out again afterwards. The default is to just jump cut to whatever camera you have in your sequence, which can be a bit jarring.

Read more →

How to add editor visualisation to unselected objects in UE4? I solved a particular problem of mine in Unreal Engine this week, which was this: How do I visualise any custom information I want at edit time (not runtime), even when objects are not selected? I’m talking about information that doesn’t come naturally from things like collision bounds, or other existing components. Custom things specific to my game that I want to see all the time as I pan over the level.

Read more →

Skyboxes are textures that you use to display distant objects and environments in your scene, so that you don’t have to render the universe to an infinite distance. They’re often pre-rendered or captured, although you can start adding layered and dynamic elements to make them fancier. Ultimately they’re an optimisation to the problem of how do you give the impression that the player is in a huge world, even though really it ends a lot closer than it looks.

Read more →

Our Story So Far Just over a year ago, I started the process of learning Unreal Engine 4. I should probably say re-started, because I’d experimented with it before - in fact when the Epic Store launched, I was surprised to have an unexplained store credit, which turned out to be because I paid for UE4 for a while when it was a monthly subscription, and they refunded some of that after they made it free.

Read more →

Tutorial on how to use interfaces defined in C++ in UE4, with some useful practical tips

Read more →

The case for self-hosting VCS For game development, I like hosting my own source code repositories. The reason? They get big really fast. We’re hardly making AAA assets but even so, things adds up very quickly unless you’re doing something low-fi. Big files mean increased storage costs, and slower network transfer speeds if you use remote hosted solutions. If you self-host, storage is much cheaper to add compared to, for example, $5/month per 50GB on GitHub, and you can locate your server closer to your work machines to speed up data transfers.

Read more →

A Problem of Determinism I had a particular problem to solve for our next (so far unannounced) game. I needed deterministic physics. That is, given a certain starting state, I needed to know that if I applied the same forces to that simulation, the same results would always occur. Now, this is extremely hard to do universally, especially across platforms, and even between different binaries on the same platform. So, I limited my definition a little: that given an identical build, on the same platform, the results were deterministic.

Read more →