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.
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.
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.
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.
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.
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.
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.
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.
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.
The simplest way to explain client prediction
Multiplayer movement looks complicated. It is really three steps: predict, compare, correct.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
2 results
Let's ship the next build together.
Full-time roles, freelance projects or technical consulting — the inbox is always open.