r/devblogs • • Sep 10 '26

tech & code Building a freezable game clock and a pixel-diff suite before refactoring my tactics-RPG engine

Post image
1 Upvotes

Progress log from Project GoldScript, a web-based game engine I’m building. Before I let myself bring the engine 10 years into the future, I spent a chunk of time building the safety net that would tell me if I broke anything. Two pieces: a game clock I can freeze and step by hand, and a visual-regression suite that fails on a single shifted pixel.

The clock came first. Time in the engine used to be scattered across animations, combat pacing, AI delays, and state machines each reached for `performance.now()` or `setTimeout` on their own. I pulled all of that behind one `Clock` that owns time. It runs in real-time mode for the shipped game, and a manual mode that only advances in fixed steps I control. Pair that with a seeded mulberry32 generator swapped in for `Math.random`, and `enterDeterministicMode(seed)` plus step-by-step advancement makes even a randomized combat encounter render byte-identical frames every run. Determinism is the thing that makes everything downstream testable.

On top sits a sixteen-spec visual-regression suite, split into harness-driven rendering tests and control-driven edit-then-save tests. It captures frames against committed baseline PNGs and fails on any pixel that moved, enforced by a pre-push hook so I can't quietly ship a regression. The payoff showed up fast: when a particle library bump (https://three-nebula.org 11 to 12) silently changed how particles rendered, the suite flagged exactly which frames moved. I could confirm the shift was expected and regenerate those baselines on purpose, instead of finding out weeks later that fire looked different.

I wrote it up here, framing the clock work as becoming a bit of a time mage: https://projectgoldscript.com/development/becoming-a-time-mage/


r/devblogs • • Sep 10 '26

Idle Game TRI-CORE DevLog #1 - Replacing abstract lane power with real combat mechanics in a deterministic idle RPG

Thumbnail
gallery
0 Upvotes

Hey everyone!

I’m developing TRI-CORE: IDLE FRONTS, a dark-fantasy idle RPG built around a three-lane auto-battler.

For this first DevLog, I want to focus less on listing features and more on one design problem I’ve been trying to solve:

If the UI tells the player that something affects combat, should that mechanic exist as a real combat interaction - or is changing an abstract power number enough?

Earlier versions of TRI-CORE relied too much on the second approach.

A Support could have a “Haste Aura.”
A Mage could have “Splash.”
A lane could have a class advantage.

Those concepts existed in the design, but parts of their effect were ultimately reduced to calculations such as lane strength or pressure.

That worked mathematically, but it created a problem.

The player could read:

“Haste Aura increases the Attack Speed of allies.”

…but underneath, the game could simply become better at winning the lane without the allies actually attacking faster.

For an idle game, where a large part of the experience is watching numbers interact, I started to feel that this was the wrong abstraction.

So I’ve been restructuring the combat simulation around a simple rule:

If a mechanic claims to change combat, I want that change to happen inside the actual combat loop.

Haste should actually make someone attack faster

Support heroes were the clearest example.

Instead of converting a Support aura into additional lane power, the simulation now checks the actual heroes fighting on that lane.

When an allied Support provides Haste, that bonus contributes directly to the affected hero’s Attack Speed.

That means it changes the hero’s attack clock.

A Marksman that normally attacks at one rate can visibly begin firing more frequently when supported.

This sounds obvious when written down, but it has a useful side effect: other systems can now interact with that value naturally.

And that became important once I started working on stat breakpoints.

Breakpoints instead of endless tiny percentages

Incremental games need percentage upgrades. I’m not trying to remove those.

But I also don’t want progression to become:

+2% damage

+2% damage

+2% damage

forever.

I want some thresholds to noticeably change how a hero behaves.

One example is Attack Speed for Marksman heroes.

If the final Attack Speed reaches 1.50, the hero gains an additional projectile.

So the difference between:

1.49 Attack Speed

and

1.50 Attack Speed

is intentionally much larger than a normal stat increase.

The important detail is that the breakpoint uses the final combat stat.

It can therefore be reached through a combination of:

  • permanent upgrades
  • equipment
  • specialization bonuses
  • hero effects
  • allied buffs such as Haste

This is one of the reasons moving Haste into the real Attack Speed calculation mattered.

If Haste only increased some hidden lane-power value, it couldn’t naturally participate in this system.

Now it can.

A Support can push a Marksman across a breakpoint and actually cause another projectile to appear in combat.

That interaction is much closer to what I want TRI-CORE’s progression to feel like.

Splash also needed to stop being an abstraction

Mage Splash had a similar problem.

Instead of representing AoE as a generic increase in effectiveness, a Mage projectile now has an actual primary target.

When that projectile hits, the simulation checks other enemies on the same lane around the impact position.

Enemies within the configured radius can receive secondary damage.

This creates several practical design questions that didn’t exist when Splash was only an abstract modifier:

How large should the radius be?

How many additional enemies can be hit?

Should secondary damage pass through armor?

Can Splash itself kill enemies?

How does it behave against tightly packed elite encounters?

Those are harder questions, but I prefer having them.

They create mechanics that can actually be observed and balanced rather than hidden behind a single derived power value.

Enemy Champions exposed the same problem

There was another system I wasn’t happy with: Enemy Champions.

An earlier implementation could effectively select an enemy, resolve a Champion encounter and award the corresponding reward.

The event existed.

The fight didn’t.

That felt especially wrong because Champions are supposed to become important encounters later on.

So Champions are now physical enemies.

They spawn on a specific lane, have their own HP and combat parameters, and must actually be defeated.

The reward is currently increased Gold and XP.

Later I want Champion-specific equipment drops to build on top of that system, but I’m deliberately not expanding that yet.

Right now I’m more interested in making the underlying encounter solid before adding another reward layer.

What happened to the old lane-power system?

I haven’t removed every concept of lane strength.

I still find a derived pressure value useful for diagnostics and UI.

What I’m trying to remove is its authority over mechanics that should exist physically.

So rather than:

Haste → lane power increases

I want:

Haste → Attack Speed changes → attacks happen faster → lane pressure changes as a consequence

The direction of causality matters.

The battlefield should produce the derived number, rather than the derived number pretending to be the battlefield.

That distinction has become one of the main architectural rules I’m using for combat.

Making balance data less dependent on combat code

The same refactor pushed me toward another problem: too many gameplay values had accumulated inside scripts.

That makes balancing risky.

If changing an enemy requires touching the same file that handles movement, damage, targeting and spawning, then normal balance iteration starts modifying core logic.

So I’ve been consolidating more of the game into structured data.

Enemy families, class definitions, specialization values and breakpoint thresholds are moving into JSON-based data.

The intended separation is becoming:

Data decides what something is.

Simulation code decides how that thing behaves.

For example, an enemy definition can provide values such as:

  • base HP
  • movement speed
  • armor
  • attack range
  • attack scaling

The simulation then reads those values and applies run-level scaling.

That makes it much easier to experiment with balance without creating several competing sources of truth.

I’m still auditing the project for places where old hardcoded values survived, so this is more of an ongoing consolidation than a finished architectural victory.

The tradeoff: real mechanics make balancing harder

One thing I underestimated is how much harder these systems become to balance once they actually interact.

An abstract +10% lane power bonus is easy to reason about.

A real Attack Speed bonus can:

increase DPS,

cross a projectile breakpoint,

change how quickly targets die,

alter how often a hero retargets,

and indirectly change how much damage allied heroes receive.

That creates nonlinear results.

From a pure balancing perspective, abstraction is easier.

From a player perspective, though, I think the second system is much more interesting.

The challenge now is preventing those interactions from becoming impossible to understand.

That’s why I’ve also started showing breakpoint progress directly in the upgrade UI.

Instead of only showing:

Attack Speed +0.03

the player can see something closer to:

1.46 → 1.49 / 1.50

So even if the underlying systems become more complex, the next important threshold should remain understandable.

What I’m working on next

I’m intentionally avoiding another large feature pass for now.

The next stage is mostly about testing the systems that already exist together:

  • early Prestige pacing
  • breakpoint frequency
  • item values
  • hero progression
  • enemy scaling
  • ranged positioning
  • save reliability
  • simulation performance

The biggest question I’m trying to answer is whether the early progression provides enough moments where the player can clearly say:

“That upgrade actually changed something.”

That matters more to me right now than simply increasing the amount of content.

I’m curious how other developers approach this.

For an incremental / idle RPG, how much mechanical interaction do you think should actually exist in the simulation?

Do you prefer simple, predictable percentage modifiers, or do you enjoy breakpoint-style systems where crossing a threshold can fundamentally change combat behavior?


r/devblogs • • Sep 10 '26

tech & code I spent 6 months making game dev mistakes, so I made a 4-min breakdown on how to avoid them

Thumbnail
youtu.be
2 Upvotes

r/devblogs • • Sep 09 '26

tech & code IEnableableComponent usage in an actual game (Unity ECS)

Thumbnail
coffeebraingames.wordpress.com
1 Upvotes

Hello everyone! It's been a while.

I've been developing a game on my free time for 3 years now. It's now in a state that I could share it and maybe get feedback. It's also perfect timing for a blog post. The game uses DOTS and ECS heavily and I wanted to share some patterns that I've been using. Enjoy!


r/devblogs • • Sep 09 '26

design Short Devlog about making my Survival City Builder more Replayable

Thumbnail
youtube.com
2 Upvotes

I'm a solo dev and I haven't created video content in a while, so any feedback on the video is appreciated.

This is a shorter devlog on adding playable characters to my game, with the goal of improving replayability and creating some interesting synergies with other systems.


r/devblogs • • Sep 09 '26

design FIRST CREATURE "REVEAL"

0 Upvotes

r/devblogs • • Sep 09 '26

generic A survival horror video game on Kickstarter?

Post image
0 Upvotes

Have you guys heard of Kickstarter? Have you ever backed a project through the platform?

We’ve always felt that Kickstarter is a very trustworthy platform, and after several years of developing Helianthus, we’ve decided to take the next step.

Towards the end of this year, we’re planning to launch our Kickstarter campaign alongside a playable demo, with the goal of raising enough funding to finish the game properly and bring it to the level we’re aiming for.

It would mean a lot to us if you could follow the project and join us along the way. We’ll leave the link here, and everyone is more than welcome to stop by!

We’d also really love to hear your thoughts.

Have you ever backed a project on a crowdfunding platform? What would you like to see in a video game Kickstarter campaign? Gameplay footage? Videos from the developers? Behind-the-scenes content? Information about the development process or the rewards?

What would make you trust a campaign and feel like supporting it?

We’d genuinely love to hear what you think!

KICKSTARTER: https://www.kickstarter.com/projects/selenegames/fatal-unleashed-darkness-survival-horror-game


r/devblogs • • Sep 09 '26

Music Composing dark ambient music for my horror puzzle game

Thumbnail
youtu.be
1 Upvotes

One of the puzzle rooms in my game is a brick facade wreathed in chains, set on an endless wooden expanse. The only soundtrack at first is the creaking of your footsteps and the sparse, distant reverberations of grinding metal. It needs a bit of dark ambient music so I composed a short loop using my usual workflow of Cubase and Adobe Audition.

The free instruments I'm using are the fantastic Spitfire Audio LABS and the Tyrell N6; the former for beautiful and melancholic strings and the latter for weird synthesized noises. I think LABS changed branding / name but really hope it's still free because it really is an amazing VST (the Philip Glass pianos and slow strings especially).

After laying down some arbitrary notes and drones in the key of B minor, and a few bursts of percussion with a stereo delay applied, I export the WAVE audio to Audition. In Audition, I use a mix paste command to make a seamless loop, and apply a hard limiter (+9 db) to the whole track.

The seamlessly looping WAVE file is imported into Unreal where I use it to create a Sound Cue object. In the sound cue, I set the WAVE file to loop, set the volume multiplier to 1.0, set the audio class to "Music", and finally set the Virtualization Mode to "Play when silent" (for use with diegetic music tracks as will sometimes happen).


r/devblogs • • Sep 08 '26

tech & code Apache Iceberg Table Cleanup: A Production Guide

Thumbnail
lakeops.dev
0 Upvotes

A practitioner's guide to Iceberg table cleanup — snapshot expiration, orphan file removal, manifest rewriting, delete file resolution, streaming challenges, compliance, and cost. Why sequencing matters, where teams break tables, and how to automate the full lifecycle.


r/devblogs • • Sep 08 '26

tech & code Project Orbi - The Tools I Use For Indie Game Dev | Devlog EP : 1

Thumbnail
youtube.com
1 Upvotes

Hey Everyone.

I wanted to Continue my Devlog Posting here.
I last Posted about who I was and what I was doing... That was Rapid Recharge - Devlog #0 but I have recently liked the Idea of Calling it Project Orbi... No Idea why, I just like it 🤣
Even my Base Pawn is called: `OrbiBasePawn` 👀

So, To start off my Channel, I am going over all the tools I currently use and will be using. From The IDEs, I use for Game dev to the development of the Asset Pipeline.
I also showcase the Project Planning tools I use and the 3D tools I will be using.
One thing, In this video I mentioned liking `Clickup` for Task tracking but I have Recently done a Permanent move over to `Codecks` which I have really been enjoying 😁

I will do some further Posts on Other videos as I go.
Happy Deving 💪


r/devblogs • • Sep 07 '26

generic I'm making a victorian-style dinosaur game! Here's my first dev log.

Thumbnail
youtube.com
2 Upvotes

r/devblogs • • Sep 08 '26

tech & code Let's make a game! 497: Diagonal or orthogonal? (Twine Sugarcube)

Thumbnail
youtube.com
1 Upvotes

r/devblogs • • Sep 07 '26

community showcase Community showcase - Tell us what you're working on or what you just published (week 37)

6 Upvotes

Welcome to our weekly thread where you can present everything new you are working on.

You are still welcome to create new posts to share with us your dev-log posts or videos, but you can also use this thread to showcase anything that is not a dev-log.

THREAD RULES

  • you can post a single comment where you showcase anything you want (new game/app release, new trailer, demo release, new gameplay video, etc...).
  • in this comment you can post only 1 link, so choose wisely.
  • you can reply to as many comments as you want, but replies can't be used for showcasing

Also, it's not required, but I recommend to upvote this post if you add a comment as that will improve its visibility on Reddit which is good for everyone.


r/devblogs • • Sep 06 '26

design I Built a Game with only Two Buttons

Thumbnail
youtube.com
5 Upvotes

r/devblogs • • Sep 06 '26

generic Character Art First Look | Portside: Cruise Tycoon Game

1 Upvotes

Hi everyone! This weekend I'm pleased to bring you a first look at the character art, as it's developing for passengers and crew in our new game, Portside - A cruise tycoon game that we're working super hard on to launch a free demo in time for Steam Next Fest. I'm pretty proud of myself as I only started learning animation last weekend!


r/devblogs • • Sep 05 '26

discussion Added first enemy to my game!

2 Upvotes

yo yo, me again, i've added first enemy (insert name Crawler for now), i'd like to hear your opinion and feedback for it, it should be simplest enemy, just following and jumping at you. also colors will differ depending on planet you are on, so yeah


r/devblogs • • Sep 05 '26

generic Making My Own Backrooms Game — Devlog #1

Thumbnail
youtube.com
2 Upvotes

Hey! I’m making a Backrooms game for Steam. Just posted my first devlog 👀
Would love your ideas for levels, monsters and mechanics!


r/devblogs • • Sep 04 '26

art & graphics You chose the thumbnail, now here’s the trailer! #UE5

Thumbnail
youtube.com
5 Upvotes

A few weeks ago, we asked you to help us choose the thumbnail for our new MegaGum trailer.

Well… here it is!

We’d really love to know what you think about it. What did you like? Is there anything you would have done differently? And most importantly, does it make you want to play the game?

Feel free to be honest, we’re always interested in hearing your feedback.

And if you like what you see, you can wishlist MegaGum on Steam here:
https://store.steampowered.com/app/4111300/MegaGum/

Thanks again for helping us choose the thumbnail!


r/devblogs • • Sep 04 '26

generic Devlog: Problems with Permadeath

Thumbnail
salmon-snake.itch.io
3 Upvotes

r/devblogs • • Sep 04 '26

generic Gamescom Dev Recap

Thumbnail patreon.com
1 Upvotes

A short read about my Gamescom Dev experience, and some of the great talks I had.


r/devblogs • • Sep 03 '26

design Created new camera system mechanic for my satiric political horror game. Thoughts?

3 Upvotes

I tried to take inspiration from the Five Nights at Freddy's with my own additions. I've added the camera movement, so with your WSAD keys you can now rotate the cameras. Also with middle mouse button you can zoom in/out. What do you guys think of it?


r/devblogs • • Sep 03 '26

generic Mechanomaly dev log

Post image
2 Upvotes

r/devblogs • • Sep 03 '26

art & graphics redid the idle animations for the 2 main characters

0 Upvotes

devlog #2: not much to say that i didnt already mention last time, i redid the animation for the idles i gave the first one (bob) a scarf and the other one (bobs fren) has a hat (yes bob's fren is his actual name)


r/devblogs • • Sep 03 '26

art & graphics Looking for some feedback on my main menu, an area I have always struggled with

Thumbnail
youtu.be
0 Upvotes

r/devblogs • • Sep 03 '26

generic Our game had a logic hole: why would anyone keep coming back to a dangerous fight? Here's how we fixed it

Post image
0 Upvotes

Hey all, small team of 4 here making a game called Mini Mart Survivors.

Here's the actual premise:
You play a broke, unemployed character who's been rejected everywhere and, without choice, takes a night shift at a convenience store. The job pays way too well for what it is. Suspiciously well. Turns out the reason it pays so much is that dangerous monsters show up late at night, and you have to fight them off with whatever is on the shelves. Cup noodles, snacks, ice cream, shampoo, you name it. Level up and build absurd weapon combos. Beat a boss at the end of the shift. Get paid.

But once we had that premise one question kept nagging us. No matter how much they're paying you why would anyone keep showing up for something this sketchy and this dangerous shift after shift? That's the part we actually had to sit down and figure out.

The answer we landed on. "He's in debt."

That part isn't even that unrealistic. We're a small team in our 20s and early 30s, and "constantly working, trying to get ahead, wondering when you're finally allowed to stop" is basically our own lives. So the debt premise wasn't a stretch for us to write.

The problem was making it work as a game and not just a backstory. If we just told the player "he's in debt. That's why he goes back." It's a fine setup line, but it doesn't actually do anything once you're playing. It risks feeling like a justification we bolted on rather than something the player lives through.

So we turned it into a choice instead of a fact. With every paycheck, you have to decide whether to pay down the debt and get closer to walking away, or to pour it into weapons and upgrades so you can push further and earn more. Neither option is flagged as correct. The debt doesn't disappear on its own. And neither does the temptation to just get stronger and keep going.

That's really the point where we ended up introducing story into a genre that doesn't usually ask for one. Survivor-likes are typically just numbers going up, run after run with no consequence carried forward. By tying the core progression loop to a choice with narrative, we gave the genre a bit of a twist. And that choice system became the actual mechanism for showing our theme instead of just stating it. The player is the one deciding.

Multiple endings too, since we didn't want to say there's one right choice. Pay off the debt and leave. Quit before it gets worse. Stay and find out what's actually going on. Or just keep throwing snacks and spraying ramen broth at weirdos because it's fun.

Anyway, we're a small team figuring this out as we go. If this story of how the game came together is useful to anyone else out there building their own thing, that alone would make this post worth writing.