Devlog

Devlog #3 · O mundo começa a ter espaço

O servidor precisa responder uma pergunta o tempo todo: quem está perto de quem?

Parece simples. Em escala, não é. Num mundo com dezenas de milhares de entidades, responder "quem está perto do ponto X?" varrendo o mundo inteiro é inviável. Toda consulta de AOI, todo sistema de replicação, toda IA de monstro e todo cálculo de combate dependem dessa resposta sendo rápida.

Grade espacial em camadas

O sistema espacial funciona com uma grade fina para consultas locais e uma macro-grade para visão regional. Entidades são organizadas em células. Quando o servidor pergunta "quem está na área X?", ele olha as células relevantes — não o mundo inteiro.

A fila de reorganização controla como entidades migram entre células: de forma incremental e previsível, sem criar picos quando muitos objetos se movem ao mesmo tempo.

Por que isso importa

Esse sistema é a fundação de quase tudo: replicação usa ele para saber o que enviar, IA usa ele para encontrar alvos, sistemas de território usam ele para detectar conflito. Uma cidade cheia ou um spot com muitos jogadores só é possível porque o servidor não paga custo linear para responder "quem está perto?".

Sem um sistema espacial eficiente, cada novo jogador e cada nova criatura tornam tudo um pouco mais lento. Com ele, a escala é sublinear.

Bench / validação
— Consulta de área próxima: p50 200 ns para busca em 3×3 células
— AOI p99: 100 ns (vs 4.1 µs da abordagem anterior — 41× mais rápido)
— Reorganização de 100k entidades: p50 ~62 µs
— Remoção de entidade em célula densa: 56.1 µs → 2.7 µs (−95.2%)
— Movimento entre células: 175 µs → 97.1 µs (−44.5%)
— MacroGrid incremental: 2.0 µs → 283 ns (−85.8%)

Próximo: interest management — quem precisa saber de quem.