Milton (elementalcode)'s Avatar

Milton (elementalcode)

@miltoncandelero

Milton Candelero. Game Dev and overall pretty chill dude. 🐰 CTO at Killabunnies βš™οΈ Unreal Engine shaman πŸ”₯ Hated Unity before it was cool

21
Followers
29
Following
28
Posts
21.10.2024
Joined
Posts Following

Latest posts by Milton (elementalcode) @miltoncandelero

CommonUI Demystified: Focus, Input Routing, and Activatable Widgets We all heard that CommonUI will help you make User Interfaces that are easy to control and navigate with a gamepad, but what is it really doing? and, more importantly, why is it not doing what you thi...

Guess who has a new post on Unreal Engine shenanigans?

miltoncandelero.github.io/focus-naviga...

25.09.2025 21:19 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
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...

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 🌱)

23.07.2025 00:16 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
An Iceberg meme about branches in a live game

An Iceberg meme about branches in a live game

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...

13.05.2025 01:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
What can we learn (and steal) from Unreal Engine GameplayTags If you ever worked long enough with Unreal Engine, you should’ve come across Gameplay Tags. I don’t mean the Name tags that Unreal uses (although those are pretty cool too) but the Damage.Elemental.Fi...

And one day, I wrote again

miltoncandelero.github.io/stealing-unr...

07.05.2025 02:17 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

So... how are we feelin'?

24.04.2025 13:21 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ctrl + P

*Almost* works like a "jump to any file"

23.04.2025 12:59 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

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 ❀️

22.04.2025 23:44 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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?!?!

22.04.2025 12:30 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Bonus points: you get to be pedantic and say

✨ π–‹π–†π–ˆπ–†π–‰π–Š ✨

22.04.2025 02:16 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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!

22.04.2025 02:16 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

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.

20.04.2025 13:55 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

"But what is a good epsilon?", I hear you ask.

Well, first of all, WHERE ARE YOU!? WHY CAN I HEAR YOU!!!?!?

Second, a good epsilon is "just small enough" to make sense.

When in doubt, think your epsilon as 0.0001*max(a,b)

18.04.2025 18:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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

18.04.2025 18:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

A clean, loud crash is better than silently limping forward with broken state.

Unity:
- UnityEngine.Assertions.Assert.IsTrue(...)

Unreal:
- check(...)
- verify(...)
- ensure(...)

Raw JS:
- console.assert(...)

There is no excuse!

17.04.2025 17:40 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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...")

17.04.2025 17:40 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Sometimes you don’t need a tween library, an animation controller, or a full timeline.

Sometimes… you just need a spring.

17.04.2025 01:53 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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"

16.04.2025 11:50 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

The last 10% that takes 90% of the time...

16.04.2025 03:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

15.04.2025 22:19 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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?

πŸ€”

15.04.2025 12:00 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

15.04.2025 00:24 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

14.04.2025 09:45 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

14.04.2025 00:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

13.04.2025 13:04 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

"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."

πŸ”₯πŸ”₯

22.03.2025 21:56 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A Megaman battle network toy riding a Uni the unicorn from dungeons and dragons toy, both protecting a unity game build process

A Megaman battle network toy riding a Uni the unicorn from dungeons and dragons toy, both protecting a unity game build process

Pro tip: to increase the chances of your Unity build succeeding, you need to keep a Megaman riding an Unicorn nearby

19.12.2024 19:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Jester, a beautiful silver cat with a red ribbon looking confused at the human taking the picture

Jester, a beautiful silver cat with a red ribbon looking confused at the human taking the picture

"hooman why you laying in the floor?"

14.12.2024 14:44 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Jester, a beautiful cat with silver hair and white gloves

Jester, a beautiful cat with silver hair and white gloves

What if I use bsky to post cat pictures? πŸ€”

12.12.2024 23:21 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0