EchoForge: Mundo Vivo

Um documento de game design premium para Roblox, criado como estudo de mundo vivo, reativo e modular. O projeto transforma ações coletivas dos jogadores em clima, iluminação, eventos, progressão, tensão narrativa e identidade visual do servidor.

Roblox Studio Arquitetura Lua pensada para ServerScriptService, ReplicatedStorage e StarterPlayerScripts.
Mundo reativo O estado global muda conforme conflito, cooperação, exploração e abandono do servidor.
Portfólio técnico Design sistêmico, legibilidade, módulos documentados e visão de produto pronta para apresentação.
harmonia
76%
conflito
41%
eco global
88%

Core concept

Um Roblox onde o servidor lembra dos jogadores.

EchoForge parte de uma pergunta simples: e se o mapa não fosse apenas cenário, mas uma camada de feedback coletivo? Cada sessão deixa rastros. Cada grupo empurra o mundo para uma direção. O servidor vira uma peça viva, disputada entre energia, caos e silêncio.

Objetivo do jogador

Explorar zonas reativas, coletar energia, desbloquear habilidades e influenciar o estado do mundo. O progresso individual importa, mas o resultado coletivo altera a atmosfera para todos.

Impacto coletivo

Ações como cooperar, vencer eventos, ignorar áreas, gastar energia ou provocar conflito alimentam métricas do servidor. Essas métricas definem eventos, cor, clima, efeitos e oportunidades.

Diferencial no Roblox

Em vez de depender apenas de obbies, tycoons ou combate repetitivo, EchoForge usa sistemas persistentes e feedback visual para criar curiosidade: voltar ao jogo significa descobrir como o mundo mudou.

Estados do mundo

Guerra, harmonia e abandono como linguagem sistêmica.

Os estados não são apenas nomes. Eles são presets de experiência: mudam o ritmo, a leitura visual, o som imaginado, a pressão de jogo e o tipo de decisão que parece natural para a comunidade naquele momento.

Guerra01

Quando o servidor entra em tensão.

Surge quando conflito, competição e falhas coletivas dominam. O mapa fica mais agressivo, com luz dura, neblina quente, eventos de risco e recompensas de alto impacto para quem estabilizar zonas críticas.

Harmonia02

Quando cooperação vira vantagem.

Ativado por energia compartilhada, objetivos concluídos em grupo e cuidado com áreas do mapa. A experiência ganha brilho, rotas mais seguras, buffs temporários e uma leitura visual mais limpa.

Abandono03

Quando o mundo sente ausência.

Acontece quando zonas ficam sem interação ou quando o servidor perde fluxo. O cenário escurece, sistemas entram em baixa energia e missões de restauração convidam jogadores a reativar o mapa.

Arquitetura modular

Cada sistema tem uma função clara e conversa por contratos simples.

A proposta técnica evita scripts gigantes e acoplados. O servidor calcula estado, módulos traduzem métricas em efeitos, o cliente renderiza feedback e arquivos compartilhados mantêm enums e configurações consistentes.

BehaviorTrackerConverte comportamento coletivo em métricas.
EnergySystemControla coleta, níveis e desbloqueios.
SkillsConfigDefine thresholds sem espalhar números mágicos.
WorldHeart

Orquestrador central. Lê métricas, resolve estado global, publica sinais e aciona os subsistemas de ambiente, UI e progressão.

EnvironmentEngineAplica iluminação, atmosfera, fog e transições.
UIControllerMostra feedback no HUD sem expor regra sensível.
WorldStateEnum compartilhado entre server e client.
Valor técnico

Manutenção previsível

Cada módulo resolve um problema do domínio. Isso facilita trocar regras, balancear thresholds e adicionar novos estados sem quebrar UI ou ambiente.

Ver exemplos
Escalabilidade

Novas zonas sem reescrever tudo

Zonas podem registrar eventos no BehaviorTracker e receber presets do EnvironmentEngine usando o mesmo contrato de estado.

Ver setup
Portfólio

Clareza para avaliação técnica

O documento mostra intenção de arquitetura, experiência de usuário e visão de produto, não apenas trechos isolados de código.

Ver conclusão

Game loop

Um ciclo de curiosidade, ação e retorno.

O loop foi desenhado para ser simples no primeiro contato e mais profundo quando o jogador percebe que suas ações afetam o servidor. O objetivo não é só ganhar energia, mas participar de uma ecologia coletiva.

01Entrar

O jogador chega em um servidor com estado visível e entende rapidamente se o mundo está estável, tenso ou esquecido.

02Explorar

Zonas, sinais visuais e eventos sugerem onde há energia, conflito, restauração ou oportunidades raras.

03Coletar

Energia alimenta progressão, habilidades e participação em ações de maior impacto no mapa.

04Influenciar

Jogadores cooperam, competem ou abandonam zonas, empurrando métricas globais para novos estados.

05Retornar

A principal recompensa emocional é ver o mundo diferente e sentir que a comunidade deixou marcas reais.

Documentação técnica

Blocos de código com contexto de produto.

Cada exemplo abaixo é apresentado como documentação real: primeiro o problema, depois a solução modular, e por fim o papel do módulo dentro da arquitetura maior.

WorldHeart.lua

Problema resolvido: centralizar a decisão do estado global sem transformar todos os módulos em dependências circulares. O WorldHeart funciona como maestro do servidor.

Depois de calcular o estado, ele publica mudanças para ambiente e UI. Isso mantém a regra crítica no servidor e deixa o cliente responsável apenas por apresentar feedback.
ServerScriptService / WorldHeart.lua
-- Orquestra estado global e notifica subsistemas
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local BehaviorTracker = require(script.Parent.BehaviorTracker)
local EnvironmentEngine = require(script.Parent.EnvironmentEngine)
local WorldState = require(ReplicatedStorage.Modules.WorldState)

local stateChanged = ReplicatedStorage.Remotes.WorldStateChanged
local currentState = WorldState.HARMONY

local function resolveWorldState(metrics)
  if metrics.conflict > 70 then
    return WorldState.WAR
  elseif metrics.activity < 25 then
    return WorldState.ABANDON
  end

  return WorldState.HARMONY
end

local function tickWorld()
  local metrics = BehaviorTracker:GetServerMetrics()
  local nextState = resolveWorldState(metrics)

  if nextState ~= currentState then
    currentState = nextState
    EnvironmentEngine:ApplyState(nextState, metrics)
    stateChanged:FireAllClients(nextState, metrics)
  end
end

while task.wait(12) do
  tickWorld()
end

BehaviorTracker.lua

Problema resolvido: traduzir ações individuais em sinais coletivos, sem deixar cada sistema interpretar eventos do seu próprio jeito.

O tracker é o ponto de entrada para telemetria de gameplay. Sistemas novos podem registrar eventos aqui e influenciar o mundo sem conhecer detalhes de iluminação ou UI.
ServerScriptService / BehaviorTracker.lua
local BehaviorTracker = {}

BehaviorTracker.metrics = {
  activity = 50,
  cooperation = 50,
  conflict = 10,
  restoration = 0
}

local function clamp(value)
  return math.clamp(value, 0, 100)
end

function BehaviorTracker:RegisterAction(actionType, weight)
  if actionType == "Cooperate" then
    self.metrics.cooperation = clamp(self.metrics.cooperation + weight)
  elseif actionType == "Conflict" then
    self.metrics.conflict = clamp(self.metrics.conflict + weight)
  elseif actionType == "RestoreZone" then
    self.metrics.restoration = clamp(self.metrics.restoration + weight)
  end

  self.metrics.activity = clamp(self.metrics.activity + 2)
end

function BehaviorTracker:GetServerMetrics()
  return table.clone(self.metrics)
end

return BehaviorTracker

EnvironmentEngine.lua

Problema resolvido: transformar estado sistêmico em sensação visual. Em Roblox, Lighting e Atmosphere são ferramentas fortes para fazer o jogador sentir mudança sem precisar ler um painel.

O módulo aplica presets gradualmente. Isso evita cortes bruscos, mantém performance e permite que novos estados sejam adicionados como dados, não como blocos de lógica duplicados.
ServerScriptService / EnvironmentEngine.lua
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")

local EnvironmentEngine = {}

local PRESETS = {
  War = {
    Ambient = Color3.fromRGB(85, 28, 42),
    FogColor = Color3.fromRGB(130, 35, 62),
    Brightness = 0.82,
    ClockTime = 18.5
  },
  Harmony = {
    Ambient = Color3.fromRGB(44, 72, 92),
    FogColor = Color3.fromRGB(80, 190, 185),
    Brightness = 1.25,
    ClockTime = 13.2
  },
  Abandon = {
    Ambient = Color3.fromRGB(34, 25, 61),
    FogColor = Color3.fromRGB(44, 35, 78),
    Brightness = 0.55,
    ClockTime = 4.7
  }
}

function EnvironmentEngine:ApplyState(state)
  local preset = PRESETS[state]
  if not preset then return end

  TweenService:Create(
    Lighting,
    TweenInfo.new(4, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut),
    preset
  ):Play()
end

return EnvironmentEngine

EnergySystem.lua e UIController.lua

Problema resolvido: separar progressão e apresentação. O servidor calcula energia e desbloqueios, enquanto o cliente mostra estado, barra, feed e feedback visual.

Essa divisão é importante para segurança e clareza. O jogador recebe uma interface responsiva, mas as regras de evolução continuam protegidas no servidor.
Server + Client / Progressão e HUD
-- EnergySystem.lua
function EnergySystem:AwardEnergy(player, amount, reason)
  local profile = self:GetProfile(player)
  profile.energy += amount
  profile.lastReason = reason

  local unlocked = self:CheckUnlocks(profile.energy)
  self.Remotes.EnergyChanged:FireClient(player, profile.energy, unlocked)
end

-- UIController.lua
EnergyChanged.OnClientEvent:Connect(function(energy, unlocked)
  Hud.EnergyBar:SetAttribute("Value", energy)
  Hud.WorldFeed:AddMessage("Energia sincronizada com o eco do mundo.")

  if unlocked then
    Hud.SkillToast:Show(unlocked.name)
  end
end)

Progressão e valor de produto

Crescimento individual sem quebrar o equilíbrio coletivo.

A progressão usa energia como recurso emocional e sistêmico. Ela recompensa presença, exploração e impacto positivo, mas não substitui habilidade, leitura de mundo ou colaboração.

Progressão por energia

Energia desbloqueia habilidades de mobilidade, restauração, leitura de sinais e participação em eventos maiores. Isso dá ao jogador metas claras sem transformar o jogo em grind vazio.

Monetização ética

Gamepasses e cosméticos devem vender expressão, conveniência visual e identidade, nunca vantagem competitiva decisiva. A confiança da comunidade vale mais que uma conversão agressiva.

Oferta Categoria Valor para o jogador Regra ética
Auras de Resonância Cosmético Visualiza a energia do jogador com efeitos de cor e partículas. Não aumenta dano, velocidade ou coleta.
Trilha do Eco Cosmético Deixa rastros visuais ao explorar zonas reativas. Expressão estética, sem vantagem sistêmica.
Slot extra de loadout Conveniência Permite alternar configurações já desbloqueadas. Não desbloqueia habilidades pagas.
Pacote Temporada 1 Colecionável Inclui aura, animação e título visual da temporada. Compra opcional, transparente e sem pressão predatória.

Setup Roblox Studio

Configuração inicial pensada para produção.

Para funcionar com segurança no Roblox, o projeto precisa de organização previsível. A estrutura separa scripts de servidor, módulos compartilhados, remotes e cliente.

  • Criar `ReplicatedStorage/Modules` para `WorldState.lua` e `SkillsConfig.lua`.
  • Criar `ReplicatedStorage/Remotes` com `WorldStateChanged` e `EnergyChanged`.
  • Manter `WorldHeart`, `BehaviorTracker`, `EnvironmentEngine` e `EnergySystem` no servidor.
  • Usar `StarterPlayerScripts/UIController.lua` para HUD, feed e feedback do jogador.
  • Configurar Lighting com Future, Atmosphere, Bloom e ColorCorrection para transições premium.
Lighting base / Roblox Studio
Lighting.Technology = Enum.Technology.Future
Lighting.GlobalShadows = true
Lighting.Brightness = 1.0

Atmosphere.Density = 0.32
Atmosphere.Haze = 0.82

BloomEffect.Intensity = 0.42
BloomEffect.Threshold = 0.95

ColorCorrection.Contrast = 0.12
ColorCorrection.Saturation = 0.18

EchoForge representa um estudo de sistemas dinâmicos, design de experiência, programação modular e criação de mundos reativos.

Como peça de portfólio, o projeto mostra mais do que uma ideia de jogo. Ele apresenta pensamento sistêmico, sensibilidade visual, documentação técnica, visão de produto e entendimento de como transformar comportamento coletivo em experiência jogável dentro do Roblox.