Na semana passada, iniciou-se a YRGB 2025, uma competição de desenvolvimento de jogos retro para o computador ZX Spectrum, que ocorrerá entre 7 e 20 de agosto.
Isso resultou em um aumento significativo no número de lançamentos de jogos homebrew para a máquina clássica, com títulos empolgantes como “Asymmetry”, de Manu & Kit, e “Escape from the Twilight Castle”, de Miguelito, agora disponíveis para jogar e baixar gratuitamente.
Um jogo, em particular, tem gerado muito mais conversa do que os demais, com as redes sociais repletas de elogios e, em alguns casos, incredulidade sobre o que o desenvolvedor conseguiu realizar. Estamos falando de “Cubix” — o novo jogo para ZX Spectrum do desenvolvedor indie Gogin, que ousadamente se autodenomina como “o primeiro plataforma 3D já criado” para o popular computador dos anos 80, devido aos seus impressionantes níveis “rotativos” ao estilo Fez.
Cubix pode ser descrito como um plataforma de quebra-cabeça ambientado em seis grandes torres. Os jogadores controlam Bix — uma pequena criatura em forma de quadrado — que deve encontrar um talismã quebrado pelo maligno lord do Caos, Hexatron. Movendo Bix pelo mapa, os jogadores atravessarão um plano 2D, coletando novas habilidades para avançar, enquanto o mapa gira ao alcançar a borda da tela.
Em conversa sobre como surgiu a ideia inicial, Gogin contou que a inspiração veio há dois anos, depois de jogar Fez no PC. Naquele momento, já tinha alguns projetos em andamento, mas a ideia parecia muito nova. Ele pensou que seria interessante tentar implementar algo semelhante no ZX Spectrum, não necessariamente como uma cópia de Fez, mas algo próximo disso.
“Eu nunca havia tentado algo assim antes, mas ganhei alguma experiência em renderização rápida de gráficos quando criei um jogo chamado Nothing em 2021. A grande questão era: o ZX Spectrum conseguiria lidar com isso?”
De acordo com Gogin, embora quisesse começar o projeto imediatamente, levou mais alguns anos, após o primeiro lampejo de inspiração, para pensar em um conceito original que se encaixasse bem nesse tipo de mecânica. Assim, por um tempo, ele simplesmente deixou a ideia em segundo plano.
Entretanto, em março de 2025, ele começou a escrever a primeira linha de código do protótipo do jogo em C#, com o plano de depois portar o código para linguagem de montagem, o que acabou fazendo. Ao todo, levou 4,5 meses desde o início até a conclusão do projeto.
Gogin explica que o jogo utilizaria 128 “ângulos binários” diferentes para rotacionar a torre em 90 graus, já que “menos passos pareceriam ruins, enquanto mais passos não fariam diferença visual”.
Sobre como conseguiu o efeito de “3D” no jogo, ele revelou que é apenas uma ilusão, com os gráficos sendo todos renderizados em tiles 2D, manipulados para dar uma impressão de profundidade.
Conforme ele nos explicou, três grandes tabelas são utilizadas para exibir todos os gráficos que aparecem na tela. A primeira é uma “grade de tiles”, usada para mostrar os tiles “3D”, incluindo o ângulo de rotação e a perspectiva. A segunda é uma “grade de coordenadas”, usada para “calcular as coordenadas aproximadas para exibir imagens planas (incluindo tiles de espinhos e outros sprites do jogo)”. Por fim, a terceira tabela é uma tabela de coordenadas mais “precisas”, que, dependendo do ângulo de rotação e da linha de visão do jogador, pode ser utilizada para “calcular a localização exata dos sprites na tela” para proporcionar um maior nível de precisão.
Os tiles são pré-deslocados e pré-rotacionados assim que o nível do jogo começa. Em tempo real, é feito o cálculo para determinar qual tile/sprite deve ser exibido em qual área da tela e qual procedimento deve ser utilizado para isso (existem cerca de 70 procedimentos no motor responsáveis por exibir os gráficos).
A ideia por trás da implementação desse tipo de motor no ZX Spectrum está baseada em um conceito simples: não fazer o que não é necessário para economizar ciclos de relógio Z80. Portanto, assumi que tudo que poderia ser calculado antecipadamente seria melhor calculado dessa forma.
Isso essencialmente significa que, antes de qualquer rotação ocorrer, todas as informações já estavam pré-calculadas e armazenadas na memória, prontas para serem utilizadas e criar a impressão de que o jogador está se deslocando por um mundo 3D.
“Na clássica ZX Spectrum, apenas o banco de memória superior de 16 KB pode ser trocado”, diz Gogin. “Sendo assim, além de escrever código eficiente, também foi necessário armazenar os dados na memória de uma forma que fosse literalmente ‘acessível’ durante o processo de renderização. Como resultado, no momento de criar uma imagem na tela, quase todo o espaço de endereçamento do processador está ocupado por procedimentos de saída de tela (~16 KB), várias tabelas de otimização (~24 KB) e todos os gráficos (~8 KB).”
Se você quiser experimentar Cubix, pode baixá-lo agora mesmo. É possível jogá-lo em um emulador ou em hardware real usando um ZX Spectrum 128K ou outra máquina compatível.