blog

Blog

Technical notes on gameplay feel, performance engineering and engine architecture. Most of them started as notes I took while fixing something.

Unreal Engine 5 GAS: building an ability system right

My dash ability fired once on the client and then went silent. The bug was not GAS itself, it was touching an attribute without a GameplayEffect.

28 August 2026 gameplay 12 min read

Unity Profiler: Find the Real Bottleneck, 22 ms to 8 ms

Frame time hit 22 ms and everyone blamed the shaders. The Unity Profiler capture said otherwise; here is how measuring took it down to 8.7 ms.

14 August 2026 performance 10 min read

Coyote time and jump buffering: the twelve lines of a good jump

When players say "the jump doesn't feel good", they usually mean two missing features. Both take half an hour to write.

18 July 2026 gameplay 7 min read

Lag Compensation: Why Your Perfect Shot Did Not Count

How server-side lag compensation is actually built for shooters: the rewind buffer, the numbers that tune it, and the point where the window has to stop.

30 June 2026 network 13 min read

C++ memory management in a game engine: who eats the frame?

Calling new inside the frame produced 13 ms spikes in the profiler; after a frame arena and object pooling the peak dropped to 7.9 ms. Here is how it went.

12 June 2026 engine 11 min read

Unreal Blueprint vs C++: the real cost I measured in ms

The Blueprint VM is invisible in most scenes, but at tens of thousands of nodes per tick it cost us 7 ms. Here is the hybrid split, with numbers.

24 May 2026 engine 9 min read

What I learned after a DOTS/ECS migration

We moved part of a production project to ECS and frame time dropped by 34%. But the win did not come from where we expected.

2 May 2026 performance 11 min read

Draw calls and overdraw: how I found 17 FPS on Android

My tower defense scene sat at 41 FPS on a mid-range Android phone. Here is how measuring draw calls, materials and overdraw took the same scene up to 58 FPS.

16 April 2026 performance 10 min read

A GPU particle system in HLSL: past the million mark

I moved particle state fully onto the GPU with StructuredBuffer and DrawProceduralIndirect, went from 40k to a million, and measured what it cost.

28 March 2026 graphics 12 min read

The simplest way to explain client prediction

Multiplayer movement looks complicated. It is really three steps: predict, compare, correct.

11 March 2026 network 13 min read

Game engine architecture from scratch: six layers, one loop

Writing your own engine starts with getting the layer order right. Notes on subsystem order, fixed timestep simulation, and when to move to a ready engine.

20 February 2026 engine 14 min read

URP vs HDRP: choosing the right Unity render pipeline

Your target platform list may have already decided; I measured HDRP's volumetric and SSR bill, URP's mobile advantage and what a late pipeline switch really costs.

5 February 2026 graphics 9 min read

Stylised lighting: beyond cel shading

Banded shadows are the first step everyone knows. The real character lives in the rim light and in how you pick the shadow colour.

24 January 2026 graphics 9 min read

NavMesh, A* and flow fields: 200 agents without the jam

Why pathfinding jams in a 200-agent siege scene, where the NavMesh quietly lies to you, and exactly where the line between A* and a flow field runs.

8 January 2026 ai 11 min read

Dedicated server architecture: 48 players per container

We split the authoritative game server from the backend, rebuilt matchmaking and room allocation, and measured the real cost per concurrent player.

18 December 2025 network 12 min read

Why Your Character Controller Feels Like It Is Sliding

When players say a character controller feels slippery, they are describing four separate bugs: braking, ground detection, slope handling and interpolation.

2 December 2025 gameplay 10 min read

Behaviour Tree or Utility AI?

Both can be the right answer. What decides it is how many things your enemy has to weigh at once.

9 November 2025 ai 10 min read

Game development CI/CD: why nightly builds change everything

Setting up build automation on a small team took five days; the average lifetime of a broken commit dropped from 2.5 days to 9 hours and release days calmed down.

22 October 2025 tooling 10 min read

Publishing a game on Steam: what to do, and when to do it

On my first game I opened the store page three weeks before launch and shipped with 480 wishlists; on the second I built the calendar backwards.

6 October 2025 career 11 min read

What studios actually look for in a game programmer's portfolio

I have sat on the interviewing side too. A few things repeat in the portfolios that stand out.

15 September 2025 career 8 min read

20 results

contact

Let's ship the next build together.

Full-time roles, freelance projects or technical consulting — the inbox is always open.