John Campbell

@daddygame.dev

Technical Director @triangularpixels.com #gamedev #indiedev daddygame.dev

I am super happy with the new dynamic collider feature - Jobs and Burst have rapidly become my favourite feature of Unity recently, and it's super satisfying to take blocking work off the main thread. No one likes hitching during gameplay. :)

Triangular Pixels@triangularpixels.com · 2mo ago

🛑Bulky colliders! Need Precision? Performance? Zero Scripting & Authoring Hassle? 🏃‍➡️We built Dynamic Skinned Colliders for Technie! 🚀 🏷️50% OFF! assetstore.unity.com/packages/too... 💬 What's your biggest physics "pet peeve" in game development? #GameDev #Unity3D #IndieDev #MadeWithUnity

It's been a long time coming, but I am *very* happy to get Unseen Diplomacy 2 out of early access and into player's hands. The whole team have been amazing and I'm very proud to get some really unique mechanics out there for everyone to play. :)

Triangular Pixels@triangularpixels.com · 6mo ago

🚨 OUT NOW 🚨 Agents, your mission begins today. Unseen Diplomacy 2 is available now. Meta agents can claim 20% off with code: MISSIONGO-80D364 ⏳ Valid for the next 2 weeks. 🔗 unseendiplomacy2.com 🔗 #MetaQuest #VRGaming #IndieGames #SteamVR #SecretAgent

Developer @triangularpixels.com highlighted accessibility features of their VR title Unseen Diplomacy 2, currently in early access. It includes features to more comfortably play with limited mobility, or with cognitive, audio, and visual accessibility needs. caniplaythat.com/2025/11/04/t...

Triangular Pixels highlights accessibility features of Unseen Diplomacy 2 - Can I Play That?

Triangular Pixels recently highlighted accessibility features in their VR title Unseen Diplomacy 2, which is currently in early access.

caniplaythat.com

I had fun times debugging why a computer terminal unit test was failing, and occasionally going to the wrong screen. Turns out an unrelated button was yeeting itself onto the keyboard mid-test about 50% of the time. And due to unit tests running at x100 speed, it's impossible to spot as it happens.

An attempt at converting an arbitrary normal into a primary axis (for cubemap-alike operations) without branches. Pretty sure there's better ways of doing this but tricky to find online as I'm not sure what the 'proper' name for this op is.

float3 SelectPrimaryAxis(float3 worldNormal)
{
	worldNormal = abs(worldNormal);
	float largest = max(max(worldNormal.x, worldNormal.y), worldNormal.z);
	float epsilon = 0.00001;
	float3 offsetNormal = worldNormal - (largest-epsilon);
	return ceil(offsetNormal);
}

Can anyone identify this component on the #2DS circuit board? The tiny black cube (pink arrow) has fallen off my son's 2ds and it no longer boots, so trying to fix it. I think the RF shield dislodged and knocked this component off, and possibly left a bit of it still attached. (Image from #ifixit)

Pink arrow showing mystery dislodged/cracked component on a 2ds circuit board

Today's scream is brought to you by shader combinatorial explosion, and how adding one extra shader variant to a common cginc is now making every shader in the project time out when compiling. :( Feels like Unity assumes dynamic branching is fast enough now, but that's not great for mobile VR

This week I've been working on a semi-realtime AO baker as an altenative to situations where build-time lightmapping isn't available. Promising results so far from the prototype, which is a coarse voxalization followed by a bunch of raycasts for each voxel to calculate a AO intensity.

Bild

It's easy (and fun!) to complain about tech, especially something you use every day. So I like to celebrate the positives too. In that spirit, Unity suprised me yesterday by having a genuinely useful 3d texture preview, with a bunch of visulisation methods. Super useful for proc gen debugging!

3d texture preview in SDF mode inside Unity3d