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.
Have you ever had problems with textures being blurry when you render to textures in Unreal using a Scene Capture Component 2D? Maybe you’ve searched for the problem, and come across forum threads that give really terrible advice, such as turning off texture streaming, or adding a global boost to all texture LODs? If so, you’re me earlier today. The difference is, I can save you some time and give you a better solution.
You can use Animation montages to play ad-hoc animations on a character. While your animation blueprint is stateful, montages are useful to just do a one-off animation like a reload, a hit reaction, or an emote. But, if you’re making a multiplayer game, calling “PlayAnimMontage” on the character is only going to play it locally. If you want other players to see it, you need to replicate it. Ideally, you want that replication to handle lag, so that animations are mostly synced up across players.
Just a quick post today about a very weird error I encountered while trying to package a project with Unreal 5.3; and because I got zero search hits for it on the web, I figured I’d document how I fixed it to save others in the future. Here’s the error I got while trying to package this UE project, either from the editor or the command line: LogObj: Error: LoadConfig (/Script/BlueprintGraph.
It’s always better to drive your game’s systems from data that’s easily editable. Games require a lot of iteration, and if you can just play with settings on the fly instead of having to change code, you can try things out much faster, and everyone on the team can experiment, not just programmers. A key asset type for this in Unreal is the DataTable. You make a row struct, then fill it with whatever data you like.
Why I Use Note Taking Apps My memory sucks. Partly that’s age, but if I’m honest, it’s never been that good. For years now, whenever I learn something useful, I make sure I put it in a searchable note taking system so that I can find it again later. Sometimes, I even blog about it, and read my own blog later to remind myself of the details 😀 But I always make sure my notes repository has a mention of it & link, so I don’t have to remember whether it’s on my blog, in one of my browser tabs or favourites, or in a 3rd party web saving system like Pocket or whatever.
Just a quick post today about how I replaced our doorbell with a custom Zigbee button and Home Assistant, running on an old Raspberry Pi 2 I had sitting in a drawer, which pings our phones when someone presses the button, instead of ringing a regular chime. If this interests you, read on! Whyyy? Good question! Our cat Harry, who we adopted from the shelter a couple of years ago, is terrified of all humans except us.
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.
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.
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).