Unity CPU Profiler Window

Fool Me Twice

Nothing’s better than gaining 160ms per frame just by toggling a few checkboxes. Well, maybe gaining 200ms is better, but that’s not the point. In December 2021, I reviewed a first-person shooter mobile game from a well-known franchise. The game is developed for iOS and Android and uses Unity’s new Universal Rendering Pipeline (URP). The game suffered from long frame times on low- and mid-end Android devices; on average, the frame time was 200ms, which translates to 5 frames per second. I have seen PowerPoint presentations that ran faster. Clearly, lots of optimization work was needed, or was it? ...

April 15, 2022 · 4 min
Hugo - New Start

Hugo - New Start

I rebuilt my website from scratch using Hugo instead of using WordPress. On one side, to save some of the hosting costs. On the other side, I wasn’t happy with the limitations imposed on me by WordPress. Don’t get me wrong, if you want to quickly and easily make a website, then WordPress is usually a good choice. But that’s not what I’m after. My personal website consists of static pages, will be updated on a once or twice per month at the most, and does not require any fancy features. This means that I don’t really need all the extra bells and whistles. With Hugo, I have full control over the website content, and I can optimize the pages to only contain what I need. ...

March 24, 2022 · 4 min
The Case of a Million Collision Bodies

The Case of a Million Collision Bodies

Recently I was looking into the performance of a game’s dedicated server, one problematic area was PhysX performance. To get an idea of how it was like, the average PhysX frame time for a 32-players game was around 80ms with spikes of over 400ms. A quick round of removing unneeded meshes helped, but we were still far from calling it a day. Overview To understand the context, the project is an open-world survival game with a large map, containing a lot of meshes with collisions. The game is Memories of Mars, developed by Limbic Entertainment and published by 505 Games. Memories of Mars is a pretty cool game where you can join 64-players games with player-made buildings, the game is more than that so go check out the website 😉 ...

April 17, 2018 · 11 min
Integrating Insomniac Games Unreal Engine 4 Part 2

Integrating Insomniac Games Unreal Engine 4 Part 2

Welcome to the second part of my series on integrating Insomniac Games MemTrace tool to Unreal Engine 4, if you have not read the first part, I recommend you do so here. In today’s post I will be discussing the code changes I did, including the base integration as well extra improvements I added on top, explain how to use MemTrace with UE4, and finally share my suggestions for future improvements. So let’s start! ...

November 23, 2017 · 9 min
Integrating Insomniac Games Unreal Engine 4 Part 1

Integrating Insomniac Games Unreal Engine 4 Part 1

THIS is what I love the most about the game industry, it’s full of talented people who are always willing to share their experiences and tools to help benefit others in the same industry. There is a large amount of similar problems we all run into during game development. Hence, sharing tools and knowledge is useful for the whole community. Overview To summarize, Insomniac Games are sharing IG-MemTrace (their in-house memory tracing tool) with the rest of the world. IG-MemTrace tool is split into two components, a network listener app written in C#, this one you use to record, parse, and analyze traces, and a C++ runtime component which should be integrated with the target code base. ...

November 4, 2017 · 4 min
Beginner Advice How to Get Into the Game Dev Industry

Beginner Advice How to Get Into the Game Dev Industry

Many people have been asking me lately how to get into the game dev industry, so I thought I’d write a blog post about it so hopefully it reaches more people. For entry level positions, game dev experience is not always expected, which is nice if you are just entering the industry. However, there are things you can do to get prepared and show your passion for game development, as well as to get you prepared and give you experience. When applying for a job, you want to show that you have relevant experience to the role you want to apply for. ...

August 16, 2017 · 3 min
Dreadnought is on PlayStation 4

Dreadnought is on PlayStation 4

Today is a special day, it’s just now that I can finally talk publicly about what I have been working on for the past year. Dreadnought is coming to PlayStation 4! Finally announced in PlayStation Experience 2016 event. When I joined the Dreadnought team one year ago my goals were clear, to get Dreadnought up and running on PS4, to deliver the greatest possible gameplay experience to PS4 players, and to get Dreadnought looking yet even more awesome. Step by step, Dreadnought console team was built, and step by step we marched – and continue to march – towards our goals. ...

December 3, 2016 · 2 min
That Debugging Session

That Debugging Session

Disclaimer This post is not about performance optimizations, but I find it… interesting to say the least, and perhaps you’ll agree! What happened? My colleague and I were investigating a bug which started manifesting lately in Dreadnought, where the game would crash as it goes out of GPU memory on start-up. The problem is, this only happened on one specific machine configuration. To make it even more interesting, this only happened when the game used the DX12 renderer, my colleague – who is a graphics programmer – has also figured out that renaming / removing the start-up movies folder circumvents the issue. ...

November 6, 2016 · 3 min

Micro Optimizations Episode 2

How NOT to loop Simple Problem Another optimization I tackled lately was a dynamic system to enable / disable other players’ weapon animation updates, based on distance to local player. To give you a bit of a context, there could be between 100 – 400 active weapons at the same time. I first noticed a problem as our weapon tick function was showing up high on the offenders list, which was interesting because I did not remember anything significant should be going on there. ...

October 17, 2016 · 3 min

Micro Optimizations Episode 1

Since I joined the Dreadnought team, I have been working almost exclusively on performance optimizations. For the PS4 platform, our game is CPU-bound, specifically on the game thread. To give you some background, we use Unreal Engine 4 which has 1 game thread, 1 render thread, plus some helper task graph threads (based on your settings and core-count). Usually it takes days – and perhaps even weeks – to fix one of the worst offenders. However, sometimes I come across low-hanging fruit where the problems / solutions are simple, and have noticeable effects on performance. ...

August 19, 2016 · 5 min