5 de março de 2026 · Mikhail Vasiliev

Nexus Devlog: o protótipo do motor

Watch on YouTube

Há um mês e meio publiquei no site os planos do estúdio - sobre o motor Nexus: o que é e quais projetos vamos fazer nele, chegando até estratégias e continuações da nossa série egípcia. Lá também havia um roadmap. O motor é complexo, e para reduzir os riscos eu queria montá-lo aos poucos. Mas os jogadores foram diretos nos comentários: montar uma coisa dessas é impossível. Por isso resolvi começar por um protótipo - mostrar que dá, sim, para montar um motor assim. E é ele que vou mostrar.

O menu do protótipo: o motor oferece escolher uma de quatro simulações - Stone Age, Slay the Spire, o gerador de sistemas estelares e Oregon Trail

É assim que o motor está agora. À primeira vista é um aplicativo de console bem primitivo. Mas ele mostra bem o principal - que mecânicas diferentes rodam em um só motor universal.

Por enquanto rodam nele quatro simulações. A primeira é Stone Age, o primeiro jogo do estúdio, de 2013. As outras três são baseadas em projetos de terceiros. Não pretendo copiá-las nem lançá-las, elas estão aqui só para mostrar que mecânicas de jogo completamente diferentes podem rodar em um só motor.

Stone Age

Stone Age foi reproduzido no motor por inteiro. As mesmas características, anos e turnos, população, terras. Você manda os trabalhadores para a floresta, eles coletam comida, a população cresce, surgem tecnologias - você as pesquisa, libera construções e a árvore de evolução, do australopiteco ao Homo habilis e adiante. Eventos, o final - tudo do original está no lugar.

O console do protótipo: Stone Age - características da tribo, terras, o menu de tecnologias e de evolução

Slay the Spire

Em seguida vem Slay the Spire, um ótimo roguelike de cartas, alguns de vocês com certeza já jogaram. No motor está só o combate: o jogador tem cartas, energia e vida, e o inimigo tem a sua intenção. Strike (Golpe) ataca, Defend (Defesa) dá bloqueio. Você gasta energia, encerra o turno, e assim por turnos até alguém vencer.

O mesmo console rodando Slay the Spire - vida, energia, a intenção do inimigo e as cartas na mão

GURPS

A terceira simulação é GURPS, um sistema de mesa, bem complexo. Dele peguei só um módulo, o gerador de sistemas estelares. O curioso é que esse módulo em si nem é um jogo, e sim um gerador complexo. Ele montou um sistema com uma estrela e um monte de propriedades: dez órbitas, com mundos diferentes nelas. O primeiro, pequeno e rochoso, lembra Mercúrio - com sua própria massa, pressão atmosférica e o resto. No total, essa simulação tem mais de seis mil fatos. É um bom teste de estresse: dá para ver quanto dado o motor aguenta.

Um sistema estelar gerado no módulo do GURPS - a estrela, as órbitas e as propriedades do primeiro mundo

Oregon Trail

A quarta é Oregon Trail, um clássico de 1971 e um dos primeiros jogos de computador. É o caminho dos colonos pela América em carroças: antes da estrada você compra suprimentos - bois, comida, munição, roupas - e depois caça, distribui a ração e lida com os eventos. A gente acabou de ser atacado. E assim até o fim da rota.

Oregon Trail no mesmo console: suprimentos - comida, munição, roupas, dinheiro - e a escolha de ações no encontro com os cavaleiros

Os quatro jogos rodam em um só motor, e para nenhum deles foi preciso escrever código.

Edição na hora

Mas o motor não só roda esses jogos - dá para mudá-los na hora, sem mexer no código. Vamos pegar Slay the Spire.

O turno inicial de Slay the Spire no motor: vida, energia, o inimigo e cinco cartas na mão - o dano de Strike (Golpe) ainda é 6

Vou mudar o dano da carta Strike (Golpe), colocar 100:

/set Strike.CalcDamage Value 100

A propriedade mudou de uma vez nas duas cartas iguais, porque a classe delas é a mesma.

Duas cartas Strike (Golpe) na mão, e as duas agora com 100 de dano - a propriedade mudou de uma vez em todas as cartas dessa classe

E dá para adicionar até uma carta totalmente nova, Fireball (Bola de Fogo):

/add Fireball Is DirectDamage
/set Fireball.CostEnergy Value 2
/add Fireball Has CalcDamage
/set Fireball.CalcDamage Value 20
/add Fireball Has ApplyDamage
/add Fireball.ExecutionEffects Has CostEnergy
/add Fireball.ExecutionEffects Has CalcDamage
/add Fireball.ExecutionEffects Has ApplyDamage

Ela não existia, e agora está no jogo - fica na mão, é jogada, causa 20 de dano e vai para a pilha de descarte, como qualquer outra:

Depois das mudanças: as duas cartas Strike (Golpe) agora com 100 de dano, e na mão surgiu uma nova carta Fireball (Bola de Fogo) de 20 de dano

Dá para mudar também as próprias regras, com um único comando. Vou tirar a regra pela qual as cartas jogadas vão para o descarte.

/remove PlayCard Has MovePlayedCard

Agora elas ficam na mão. Joguei Defend (Defesa): o bloqueio subiu, a energia foi gasta, mas a carta ficou.

Depois da mudança de regra: Defend (Defesa) jogado - energia 0/3, bloqueio 5 - mas todas as cartas jogadas continuam na mão, marcadas com [X]

Num jogo comum, escrito numa linguagem de programação, para isso seria preciso mexer no código e recompilar o projeto. Aqui não precisa.

Do mesmo jeito dá para acrescentar ao jogo o que antes não existia nele de jeito nenhum. O ouro, por exemplo - vou criá-lo e descrever como ele é gasto:

/set Player.Gold Value 100
/add CostGold Output Owner.Gold
/add CostGold Math.Subtract.Apply true

Surge uma característica que um instante atrás não existia - o ouro, e logo uma centena inteira.

Na linha de status apareceu ouro - cem de cara, uma característica que o jogo não tinha um instante atrás

Com esse ouro dá para fazer também uma ação nova - Bribe (Suborno). Ela gasta ouro em vez de energia:

/add Bribe Is DirectDamage
/set Bribe.CostEnergy Value 0
/set Bribe.CostGold Value 30
/add Bribe Has CalcDamage
/set Bribe.CalcDamage Value 15
/add Bribe Has ApplyDamage
/add Bribe Has CostGold
/add Bribe.ExecutionEffects Has CostGold
/add Bribe.ExecutionEffects Has CalcDamage
/add Bribe.ExecutionEffects Has ApplyDamage
/create Bribe Player.Hand

Bribe (Suborno) custa trinta de ouro e causa quinze de dano - e já funciona de cara.

Na mão surgiu uma nova ação, Bribe (Suborno): zero de energia, trinta de ouro e quinze de dano

Pode parecer que isso são cheats e que digitar esses comandos é incômodo. Mas não são cheats. É a edição dos fatos lógicos e dos dados que sustentam todo o jogo - seus objetos, propriedades e mecânicas. No fundo é a linguagem em que o jogo está escrito.

Não é obrigatório aprender essa linguagem. Dá para pedir à IA que traduza uma frase comum nos comandos que o Nexus entende. Por exemplo:

give 999 gold

Em português isso é simplesmente "Adiciona 999 de ouro".

Um pedido à IA em palavras comuns - "give 999 gold". O próprio motor encontra o comando certo e o executa

A IA pensa, encontra o comando certo e o executa, e ficamos com 999 de ouro.

Dá para dizer de outro jeito, "ouro 100" - também funciona. "Me faz um deus" - a IA te dá invulnerabilidade. Encerrar o turno, atacar, curar - tudo isso dá para fazer com palavras, o motor entende. E nada disso está roteirizado, tudo funciona de verdade.

Planos

Quero simplificar os comandos. Hoje, para criar aquela mesma Fireball (Bola de Fogo), são necessários cerca de oito comandos, e penso em reduzir para três ou quatro. E no próximo vídeo vou tentar mostrar algo mais visual - um render 2D.

Mais sobre o motor e os planos na seção Nexus.

Ressalva: Stone Age é um jogo do estúdio. Slay the Spire, GURPS e Oregon Trail pertencem aos seus respectivos detentores de direitos e são mostrados apenas como demonstração do motor - essas builds não são distribuídas em lugar nenhum.