Tem uma fase de todo projeto em que você olha para algo que já funciona e começa a pensar:
“Tá bom… mas dá para fazer melhor.”
Foi mais ou menos assim que começou uma das maiores mudanças que já fizemos no Marrs Ride.
Estamos reconstruindo o jogo na Unity.
E quando digo reconstruindo, não é força de expressão.
O Marrs Ride nasceu usando tecnologias que conheço muito bem. Three.js, WebGL, React e toda uma estrutura baseada em web que foi crescendo junto com o projeto.
E essa base fez um trabalho incrível.
Foi com ela que criamos o gameplay, construímos as primeiras pistas, testamos física, partículas, interfaces, levamos o jogo para desktop e mobile e, principalmente, descobrimos o que o Marrs Ride realmente deveria ser.
Não estou migrando porque aquilo deu errado.
Muito pelo contrário.
Aquela versão foi justamente o que nos permitiu chegar até aqui.
Só que o jogo começou a pedir mais.
Quando a ideia começa a ficar maior que a tecnologia
Com o tempo fomos querendo melhorar iluminação, partículas, materiais, colisões, efeitos, desempenho e várias outras coisas.
Sempre dava para fazer mais alguma coisa.
Mais um shader.
Mais uma otimização.
Mais um efeito.
Mais um ajuste no mobile.
Mas começou a ficar claro que estávamos gastando uma energia enorme tentando transformar uma estrutura web em algo cada vez mais próximo de uma engine tradicional de jogos.
Em algum momento você precisa decidir se continua adaptando ou se muda a fundação.
Escolhemos a segunda opção.
Unity.
A parte divertida: praticamente nada vem pronto
Talvez alguém imagine uma migração dessas como abrir o projeto antigo, importar algumas coisas e seguir trabalhando.
Seria ótimo. 😅
Na prática, estamos refazendo uma parte enorme do jogo.
Movimentação da nave, câmera, controles, regras de gameplay, colisões, partículas, interfaces e uma quantidade considerável de pequenas coisas que você só lembra que existem quando elas param de existir.
É curioso porque sistemas que estavam “resolvidos” há muito tempo voltam para a mesa.
E isso acaba sendo uma oportunidade muito boa.
Já que precisamos reconstruir, por que não reconstruir melhor?
A física já mudou bastante
Um dos pontos que mais queríamos melhorar era a colisão.
No Marrs Ride isso é especialmente importante porque estamos falando de uma nave se movimentando em alta velocidade, passando muito perto de estruturas e reagindo ao cenário o tempo inteiro.
Na nova versão estamos trabalhando com um sistema de colisões muito mais preciso.
Isso muda bastante a sensação do jogo.
Pequenos detalhes de física têm um impacto enorme quando tudo está acontecendo rápido na tela.
A nave começa a parecer mais presente no ambiente.
E isso é exatamente o tipo de coisa que queríamos melhorar.
Partículas. Muitas partículas.
Essa parte confesso que tem sido divertida.
A Unity abriu muito espaço para trabalhar melhor os efeitos do jogo.
Propulsores, impactos, poeira, explosões, energia e vários efeitos ambientais estão sendo refeitos.
Não é simplesmente colocar mais partículas na tela.
O objetivo é fazer as coisas terem mais impacto.
Quando a nave acelera, você precisa sentir que ela acelerou.
Quando alguma coisa explode perto de você, aquilo precisa ter peso.
Quando você passa muito rápido próximo de uma estrutura, o jogo precisa conseguir transmitir velocidade.
São detalhes que ajudam muito a transformar uma cena bonita em uma experiência realmente gostosa de jogar.
Também estamos mexendo bastante na iluminação
Outra diferença que começou a aparecer rápido foi a iluminação.
Agora temos muito mais controle sobre materiais, luzes, emissivos, shaders e pós-processamento.
E isso está permitindo aproximar bastante o visual do Marrs Ride daquela estética que sempre tivemos na cabeça.
Marte precisa ter atmosfera.
As naves precisam conversar com a iluminação do cenário.
Os propulsores precisam iluminar aquilo que está próximo.
Uma explosão não pode simplesmente aparecer na tela. Ela precisa afetar visualmente o ambiente ao redor.
São essas pequenas coisas que estamos começando a construir.
E ainda estamos bem no começo.
A HUD também começou do zero
Já que estávamos refazendo tanta coisa, resolvemos mexer em outra parte que sempre quis melhorar: a HUD.
A interface anterior funcionava.
Mas eu queria que ela tivesse mais personalidade.
Agora estamos redesenhando toda a experiência pensando primeiro no gameplay.
A informação precisa aparecer quando é necessária, ser fácil de entender e desaparecer quando não importa.
Ao mesmo tempo, ela precisa parecer parte daquele universo.
Não quero simplesmente barras, números e ícones colocados sobre a tela.
A ideia é que você tenha a sensação de estar olhando para sistemas da própria nave.
Ainda estamos ajustando bastante isso, mas já está ficando muito mais próximo do que imaginávamos originalmente.
E o mobile?
Esse foi outro motivo importante para a mudança.
A versão anterior precisava conviver com navegador, WebGL, WebView e várias diferenças entre dispositivos.
Isso nos ensinou muita coisa sobre otimização.
Talvez até mais do que eu gostaria. 😂
Com a Unity passamos a ter muito mais controle sobre como o jogo conversa com cada plataforma.
Isso não significa que otimização deixou de ser um problema.
Longe disso.
Mas agora temos ferramentas melhores para lidar com ela.
Podemos adaptar iluminação, partículas, resolução, sombras e diversos outros recursos dependendo do dispositivo, sem necessariamente destruir a experiência visual inteira.
Esse é um ponto que quero explorar bastante.
Também estou reaprendendo muita coisa
Essa talvez seja uma das partes que mais tenho curtido nessa mudança.
Eu venho de muitos anos trabalhando com desenvolvimento web, interfaces, sistemas e produtos digitais.
Entrar mais profundamente em uma engine como Unity faz você mudar um pouco a forma de pensar.
Tem problema que eu resolveria de um jeito na web e que simplesmente não faz sentido resolver daquela forma dentro de um jogo.
Tem coisa que antes dava trabalho e agora ficou absurdamente simples.
E tem coisa que eu achava simples e descobri que pode virar uma pequena aventura.
Faz parte.
Na verdade, acho que isso é uma das coisas legais de continuar construindo depois de tantos anos trabalhando com tecnologia.
Sempre aparece alguma coisa capaz de fazer você se sentir iniciante de novo.
E eu gosto disso.
O Marrs Ride continua sendo o Marrs Ride
Mesmo com toda essa reconstrução, a intenção nunca foi fazer outro jogo.
Estamos preservando aquilo que já funciona.
O feeling da nave.
A velocidade.
A identidade visual.
Os personagens.
O universo que fomos criando.
As ideias para os próximos modos de jogo.
O que estamos mudando é a estrutura que sustenta tudo isso.
Queremos uma base que permita continuar aumentando o Marrs Ride sem precisar lutar contra a própria tecnologia a cada nova ideia.
Ainda temos bastante trabalho pela frente.
Tem sistema sendo refeito, coisa quebrando, coisa melhorando, efeito que parece incrível e no dia seguinte alguém decide que ficou exagerado.
Desenvolvimento de jogo, basicamente. 😅
Mas a nova versão já começou a mostrar por que valeu a pena tomar essa decisão.
E provavelmente vou compartilhar mais dessa construção por aqui conforme as coisas forem ficando interessantes.
Porque, no fim das contas, uma parte enorme da diversão está justamente em descobrir como fazer tudo isso funcionar.