Milton (elementalcode)
miltoncandelero.bsky.social
Milton (elementalcode)
@miltoncandelero.bsky.social
Milton Candelero.
Game Dev and overall pretty chill dude.
🐰 CTO at Killabunnies
⚙️ Unreal Engine shaman
🔥 Hated Unity before it was cool
Have I unlocked a secret, forbidden technique to render a UI shader outside its quad? (in Unreal Engine)

Maybe? 👀

Read more about it on my new, organic, 100% human written blog post.

miltoncandelero.github.io/coloring-out...

(Special thanks to @unreal-garden.com 🌱)
Coloring Outside the Lines (in Unreal Engine UMG Shaders)
Stop me if you’ve heard this one before: your UI artist asks, ‘Hey, can we add stroke, glow, or shadow in the engine, right?’ All of a sudden your head starts racing; you know you only have 2px paddin...
miltoncandelero.github.io
July 23, 2025 at 12:16 AM
Did I spend more time making an iceberg meme than writing my blogpost about how to source control a live game with frequent updates?

Maybe 👀

But hey, at least I can boast that it is a 100% organic, human written article. 😎

miltoncandelero.github.io/iceberg-vers...
May 13, 2025 at 1:56 AM
So... how are we feelin'?
April 24, 2025 at 1:21 PM
In Unreal Engine, when working with c++, If you replace a component, make sure you give it a different name.

Not 100% sure why, also hasn't happened 100% of the time, but the worst corruptions I've got where because of this.

Be esoteric, be paranoid, be safe ❤️
April 22, 2025 at 11:44 PM
Am I the only one that steals (and ports) ideas, concepts and tools from one game engine to another when I jump from project to project?

What do you mean you don't have to jump between 3 different engines on the same week?!?!
April 22, 2025 at 12:30 PM
I don't know why people don't use the Facade + Strategy pattern

Use Facade to create a simple API like Data.Write("stuff")

Use Strategy to swap the actual implementation under the hood: send it to your server or write on toilet paper, the rest of your game will never know!
April 22, 2025 at 2:16 AM
Unreal constructors don’t run when you spawn an actor.

Spawning is just cloning the Class Default Object (CDO)

The constructor already ran once when the class loaded.

Want to set up logic? Use BeginPlay().
Constructor is for defaults only.
April 20, 2025 at 1:55 PM
Never compare floats directly.
Use the function that your engine gave you, or use an epsilon (nerd name for "a kinda small number).

Unity: Mathf.Approximately(a, b)

Unreal: FMath::IsNearlyEqual(a, b)

With an epsilon: abs(a - b) < 0.0001
April 18, 2025 at 6:56 PM
Sometimes your game should crash.

If something must exist, don’t write
if (thing == null){
// This should never happen
return;
}

Assert that shit!
Assert(thing != null, "This should never happen because bla bla bla...")
April 17, 2025 at 5:40 PM
Sometimes you don’t need a tween library, an animation controller, or a full timeline.

Sometimes… you just need a spring.
April 17, 2025 at 1:53 AM
Every time I hear "this system is simple" I start sweating.
At this point, "simple" just means "I haven't thought about edge cases yet"
April 16, 2025 at 11:50 AM
The last 10% that takes 90% of the time...
April 16, 2025 at 3:01 AM
Even if the day had 40 hours, I’d still be juggling 5 projects, learning 3 new tools, rewriting a system I just finished, and somehow still not touching that one “quick fix” from 2 weeks ago.

I think I might need another me.
April 15, 2025 at 10:19 PM
Could I hide LLM commands in obfuscated code, so that if somebody tries to de-obfuscate it with AI it just fails/refuses/returns garbage?

🤔
April 15, 2025 at 12:00 PM
While my code was building, I learned:

🤹 Juggling
🃏 Cardistry
✒️ Pen flipping
🪙 Rolling a coin on my knuckles
🔪 Balisong tricks
🔥 Zippo tricks
🪀 Yoyo tricks
🔐 Lockpicking

At this point I'm not a dev, I'm a circus act with good version control.
April 15, 2025 at 12:24 AM
In Unreal, a destroyed object is literally nullptr (black magic involved?).

In Unity, it's not null… it just pretends to be via a custom == operator.

So "if (obj == null)" works,
but "obj is null" or "obj ?? fallback" can silently fail.

Stuff of nightmares, yo.
April 14, 2025 at 9:45 AM
An entire generation of game devs thinks IEnumerator means "do this async" because of Unity.

Those are generator functions, not sleep timers!

I'm all for redlining your tools but please learn the proper use first, then twist it into shape.
April 14, 2025 at 12:25 AM
Always sanitize all user input—including game state messages.

Just because it’s “your own protocol” doesn’t make it safe.

Clients lie. They will send impossible positions, invalid actions, and corrupt packets. Yes, even in mobile games.

Validate everything. Always.
April 13, 2025 at 1:04 PM
"Any number that can be created by fetishistically multiplying 2s by each other, and subtracting the occasional 1, will be instantly recognizable to a hacker."

🔥🔥
March 22, 2025 at 9:56 PM
Pro tip: to increase the chances of your Unity build succeeding, you need to keep a Megaman riding an Unicorn nearby
December 19, 2024 at 7:00 PM
"hooman why you laying in the floor?"
December 14, 2024 at 2:43 PM
What if I use bsky to post cat pictures? 🤔
December 12, 2024 at 11:20 PM