
DevLog — Why I Chose Unity (Without ECS) for a Game With Hundreds of On-Screen Entities
DevLog — Por que escolhi Unity (sem ECS) para um jogo com centenas de entidades na tela
Anyone who’s followed my work knows I’m no stranger to Unity DOTS or ECS. I’ve built complex systems with it, understand its performance advantages, and I know when and how to use it.
Quem acompanha meu trabalho sabe que não sou nenhum estranho no Unity DOTS ou ECS. Já criei sistemas complexos com ele, conheço bem suas vantagens de performance e sei quando (e como) usar.
But during the development of Eternal Survival, a fast-paced 2D solo game with chaotic swarms of enemies on-screen, I made a deliberate choice: I dropped ECS and went back to "regular" Unity.
Mas durante o desenvolvimento de Eternal Survival, um jogo solo 2D frenético com enxames de inimigos na tela, tomei uma decisão consciente: deixei o ECS de lado e voltei pro Unity “clássico”.
Here’s why: Sometimes, the best tool isn’t the one that could perform better — it’s the one that gets you to a playable game faster.
E aqui está o motivo: às vezes, a melhor ferramenta não é a que oferece mais performance, mas sim a que te leva até um jogo jogável mais rápido.
The Project Goal: Gameplay First
O objetivo do projeto: Jogabilidade em primeiro lugar
The mission for Eternal Survival was clear: 2D top-down shooter, hundreds of active enemies, addictive arcade-style gameplay, solo development with fast iteration cycles.
A missão com Eternal Survival era clara: shooter 2D top-down, centenas de inimigos ativos, jogabilidade arcade viciante e desenvolvimento solo com ciclos rápidos de iteração.
I didn’t want a tech demo. I wanted a real, playable game. One where chaos and fun take center stage.
Eu não queria uma tech demo. Queria um jogo de verdade, jogável. Um onde o caos e a diversão fossem o foco.
I Know ECS — But I Also Know When to Let Go
Eu conheço ECS — Mas também sei a hora de largar
With ECS, I had a clean data-oriented foundation. Components were minimal. Systems were jobified. Memory layout? Efficient.
Com ECS, eu tinha uma fundação limpa, orientada a dados. Componentes mínimos. Systems rodando via jobs. Layout de memória? Eficiente.
But then: Adding new features became tedious, debugging took twice the time, and everything needed a system, a job, and careful wiring.
Mas aí: adicionar novas features ficou tedioso, debugar levava o dobro do tempo e tudo precisava de um system, um job e conexões bem planejadas.
Sure, it worked. But it also burned development time on plumbing — not gameplay.
Funcionava, claro. Mas gastava muito tempo de desenvolvimento na infraestrutura — e não na jogabilidade.
And when you’re working solo, momentum is everything.
E quando se trabalha solo, ritmo é tudo.
The Switch to Classic Unity
A volta para o Unity clássico
So I pivoted. Back to MonoBehaviours, prefabs, Update loops, coroutines — the tools I know inside and out. And in just a few days, I had a playable, fun, working game loop.
Então eu mudei. Voltei para MonoBehaviours, prefabs, loops de Update, coroutines — as ferramentas que conheço de ponta a ponta. E em poucos dias, tinha um jogo jogável, divertido e funcional.
But What About Performance?
Mas e a performance?
Valid question. You still need performance when spawning 300+ entities. Instead of solving performance in advance, I tackled issues as they appeared.
Pergunta válida. Ainda é preciso performance ao spawnar 300+ inimigos. Ao invés de otimizar tudo antes, resolvi os problemas conforme apareciam.
Key optimizations: object pooling, timed updates, squared distance checks, active area logic, optimized sprites. No ECS — but still solid FPS and stable gameplay.
Principais otimizações: object pooling, updates temporizados, cálculo de distância ao quadrado, lógica de área ativa e sprites otimizados. Sem ECS — mas com FPS sólido e gameplay estável.
Could I Have Done This in ECS?
Poderia ter feito isso com ECS?
Absolutely. But it would’ve taken a lot longer, for minimal gain at this stage.
Com certeza. Mas teria levado bem mais tempo, pra um ganho mínimo nesse estágio.
What I Gained by Going Simple
O que ganhei indo pelo simples
Fast iteration, less overhead, more time on gameplay feel, a real prototype, better creative momentum — and a game that exists.
Iteração rápida, menos overhead, mais tempo dedicado ao feeling da jogabilidade, um protótipo de verdade, mais ritmo criativo — e um jogo que existe.
Final thought: just because you know ECS, doesn’t mean you have to use it. Especially when you’re building alone, validating an idea, or aiming for fast results.
Conclusão: só porque você conhece ECS, não significa que precise usar. Especialmente se estiver desenvolvendo sozinho, validando uma ideia ou querendo resultado rápido.
