Arquitetura do motor Nexus

Como o Nexus funciona

Complexidade plana

A abordagem clássica para jogos gira em torno de sistemas rígidos: cada mecânica é um código separado, cada conexão entre mecânicas é mais um código. Até sandboxes continuam sendo conjuntos de sistemas isolados. A variedade cresce, mas a arquitetura não muda - e a complexidade do desenvolvimento cresce junto.

O Nexus funciona de outra forma. Os elementos básicos do jogo são átomos, a partir dos quais tudo o mais é construído. Adicionar novas mecânicas não aumenta a complexidade arquitetural.

Milhões de elementos, mas a arquitetura não se complica por causa disso. O sistema escala - para mecânicas, regras e mundos de qualquer complexidade.

Rede semântica

O Nexus armazena dados como tripletas (fatos) - afirmações simples no formato "sujeito → predicado → objeto". Num único formato são descritos tanto fatos sobre o mundo quanto regras de mecânicas:

  • Maçã → é → comestível (fato sobre o mundo)
  • Cervo → é → herbívoro (fato sobre o mundo)
  • Golpe → causa dano → 6 (regra de mecânica)
  • Veneno → ignora armadura → sim (modificação de regra)
  • Grama → cresce → quando a umidade supera determinado nível (fato sobre o mundo)
  • Sindicato → controla → bairro da cidade (fato sobre o mundo)

Dados e regras são escritos no mesmo formato, no mesmo grafo. Pelas tripletas se descreve tudo: objetos, propriedades, estados, relações, ações, tecnologias, magia. Essa é a principal diferença das abordagens clássicas, onde dados e lógica vivem separados.

O mundo se sustenta sobre uma grande quantidade de fatos: animais, tecnologias, objetos, construções, eventos históricos - de princípios gerais a detalhes específicos.

Interpretador

O interpretador processa tripletas e extrai consequências dos fatos:

  • Maçã → é → fruta
  • Humano → pode comer → frutas
  • Conclusão: humano pode comer maçãs

A conclusão é construída pela comparação de fatos. As cadeias podem ser longas. Aqui um exemplo mais complexo:

  • Goblin → é → criatura
  • Criatura → tem → saúde
  • Conclusão: o goblin tem saúde
  • Golpe → causa → dano
  • Dano → reduz → saúde
  • Conclusão: um golpe pode causar dano ao goblin

Adicionou veneno com o predicado de dano - ele funciona automaticamente contra todos que tenham saúde.

O interpretador trabalha com consultas formalizadas, não com linguagem natural.

Grafo de conhecimento

Objetos e propriedades do mundo precisam ser descritos de forma flexível, sem hardcode.

Na base estão as entidades: personagens, objetos, animais, organizações, naves, plantas. A cada entidade são vinculados fatos através de predicados.

Cada predicado expressa uma conexão ou uma propriedade:

  • "É" (classificação: goblin → criatura)
  • "Tem" (posse: criatura tem saúde)
  • "Dano" (efeito: golpe causa 6)
  • "Custo" (gasto: golpe custa 3 de mana)
  • "Absorção" (defesa: escudo bloqueia 5)
  • "Relação" (vínculo: goblin odeia humanos)

O golpe tem o predicado Dano = 6. O escudo tem o predicado Absorção = 5. O motor deduz: 6 - 5 = 1 passa para a saúde. Uma única mecânica para qualquer fonte de dano e qualquer defesa - espada, veneno, fogo, feitiço.

As propriedades formam uma rede onde cada elo é um fato. Regras e interações existem como dados, não estão embutidas no código.

Para desempenho, são utilizados cache, índices e detalhamento adaptativo (LOD).

Regras como padrões

Dados e lógica ainda não são um jogo. Para a jogabilidade, é necessária uma camada de regras. No desenvolvimento clássico, regras são código: cada mecânica é escrita por um programador. No Nexus, as regras são descritas pelas mesmas tripletas que os dados.

Na base estão padrões universais, comuns a todos os gêneros. Efeito: espada causa dano à saúde, ferrugem - à durabilidade, inflação - ao poder de compra. Gasto: golpe custa mana, construção - madeira, viagem - combustível. Absorção: escudo bloqueia dano, contra-argumento - acusação, seguro - prejuízo.

O designer descreve o que acontece, não como. "Golpe causa 6 de dano" - uma tripleta. O motor determina sozinho: o dano passa pela absorção, o restante vai para a saúde. A fórmula não é escrita para cada ação - ela decorre do padrão.

Os padrões se combinam livremente. Jogo de cartas usa efeito e absorção. Estratégia - gasto e acúmulo. RPG - combina tudo junto.

Um novo jogo são novas entidades e novas combinações de padrões.

Agentes

Uma entidade pode ser descrita como agente - com estado próprio e regras de comportamento. Essa é uma propriedade opcional. O inimigo num jogo de cartas escolhe sua própria ação. Bárbaros numa estratégia atacam quando as condições permitem. Um comerciante num RPG se desloca entre cidades. O agente:

  • Percebe o mundo dentro dos limites do seu conhecimento
  • Avalia as ações disponíveis
  • Toma decisões com base em objetivos e regras do mundo

O agente é descrito pelas mesmas tripletas que todo o resto. O ferreiro sabe forjar (fato), precisa de minério (fato), o minério está na mina (fato). A partir desses fatos, o interpretador deduz a ação: ir à mina, extrair minério. A mina inundou - o ferreiro não consegue extrair minério - procura um comerciante - compra. O comportamento surgiu de uma cadeia de fatos.

Escala sem perda de lógica

Numa simulação profunda, o mundo pode conter uma enorme quantidade de processos: da migração de animais e crescimento de cidades à dinâmica de sistemas estelares. Recalcular tudo é impossível e desnecessário - o jogador sempre percebe o mundo de forma subjetiva e limitada.

O mundo é organizado como um mapa de hexágonos. Cada hex armazena propriedades da sua escala: no nível planetário - clima e recursos, no regional - cidades e estradas. Clicar num hex revela o próximo nível - dentro dele há um novo mapa com propriedades mais detalhadas. O algoritmo é o mesmo em todos os níveis - do sistema estelar a um edifício individual.

Tempo e espaço

Para períodos longos, o sistema pode usar modelos estatísticos em vez de cálculo passo a passo. É possível se mover no tempo sem simular cada momento. Por exemplo, em mil anos uma floresta pode crescer ou desaparecer, um rio - mudar de curso, um assentamento - se expandir ou ser abandonado. Tendências e conexões se mantêm.

A escala do espaço determina o nível das entidades e processos. Em grande escala - clima, migrações, política. Em escala local - entidades individuais e suas propriedades. A lógica de causa e efeito é a mesma em todos os níveis.

As abstrações comportam um mundo de qualquer escala: aldeia, planeta, galáxia. Detalhes aparecem quando se tornam relevantes. O restante é descrito de forma simplificada, mas mantendo as conexões.

O jogador pode se aprofundar na estrutura do mundo, estudando entidades e navegando por suas propriedades - de forma semelhante à navegação por um sistema de referência.

Materialização do mundo

O mundo é construído conforme é explorado. Enquanto o jogador não visitou um local, ele existe como dados e regras. Objetos aparecem no momento da interação, não são armazenados previamente.

Fora do campo de observação, os eventos são determinados por probabilidade, não por simulação completa. O mundo parece coeso, embora os detalhes sejam criados sob demanda.

Após a interação com um local, seu estado é salvo e não é mais recalculado.

Em intervalos longos de tempo, tendências estatísticas entram em ação. Mil anos após o início, o sistema decide por probabilidade: quais espécies sobrevivem, como o clima muda, onde surgem assentamentos.

Jogo em rede

O jogo em rede funciona pelo mesmo princípio. O servidor armazena dados, regras e o que os jogadores já descobriram.

Se vários jogadores estão na mesma área, o servidor monta o estado compartilhado e o sincroniza entre eles.

Fora da área de jogo, o mundo permanece potencial - regras e tendências, sem detalhes.

A arquitetura básica de rede já funciona: cada jogador recebe uma sessão isolada, à qual outros podem se juntar por código. As ações são sincronizadas em tempo real.

Arquitetura como linguagem

Dados, regras, interface e comportamento dos agentes - tudo num único formato. As entidades não se conhecem, as conexões surgem automaticamente através de predicados comuns.

Como funciona na prática? A floresta é uma entidade com fatos: tem madeira, serve de abrigo, é inflamável. O machado tem o predicado Corte. Corte age sobre madeira. Fogo age sobre inflamável. Seca aumenta a inflamabilidade. Cada fato é uma única linha. A floresta não sabe do machado, o machado não sabe da floresta. A conexão surge automaticamente pelos predicados comuns. Adicionou um cortador a laser com o predicado Corte - ele funciona contra a floresta. Adicionou um bombardeio planetário com o predicado Fogo - a floresta queima.

Se uma situação de jogo pode ser descrita com palavras - ela funciona no Nexus.