segunda-feira, 8 de novembro de 2021

Reflexões sobre o ultimo ciclo de Desenvolvimento

Recentemente concluí o desenvolvimento de meu jogo "O Purgatório de Virgílio" para ZX Spectrum. Vejo as pessoas se referindo a ele como "um pequeno jogo", e eu mesmo tenho essa tendência a falar o mesmo. No Entanto, as restrições do sistema e decisões sobre o tamanho do jogo me fazem voltar á reflexão sobre a duração de um jogo de videogame.

Sem muitos rodeios, hoje em dia eu penso que o crítério de duração de um jogo independente tem muito a ver com a relação de tempo do Jogador. Me colocando como jogador, tempo é o que não tenho. Quando paro para jogar algo, que nem é todo dia, é aquela "sentada" de uma hora de duração. Dado da realidade: eu envelheci, tenho 40 anos, tenho outras pioridades e atividades, não me sombra tempo e nem paciência pra ficar muito tempo jogando. As mãos e os olhos doem se eu ficar tempo demais na frente da tela e com o controle na mão. Dito isso, hoje em dia eu prefiro jogos que pra mim tem uma média duração, e aqui incluo meus jogos. Jogos de "uma sentada".

A indústria do jogo AAA foi pelo caminho de tornar os jogos cada vez mais longos. A lógica é a de "fazer valer" o dinheiro investido em máquinas e jogos caros (não só pro jogador, pois são jogos que precisam de orçamentos bilionários, equipes gigantes e tudo o mais). Se nos anos 80 utilizavam o artifício da dificuldade (as vezes exagerada) pra ter esse efeito, agora utilizam o da duração em horas. Como são as grandes produtoras que definem o mercado, eles ajudaram a mudar a percepção do que é um jogo grande, médio, ou de pequena duração. Pessoalmente pouco me intereça o AAA, do qual fazem anos que perdi genuíno interesse.

Eu prefiro pensar a duração de um jogo nos termos do cinema: 2 horas de duração é um longa metragem, meia hora a 1h são média metragens, e 15 minutos ou menos é um curta. Talvez você possa também pensar num RPG como uma minisérie, algo que você aprecia em capítulos um pouco a cada dia. Me interessa sempre entender o jogo como linguagem, semelhante a outras como o cinema ou quadrinhos, e não por critérios mercadológicos da moda.

O engraçado é que Purgatório de Virgílio, para os padrões do ZX Spectrum, não é um jogo curto. Se você fizer o jogo "correndo", e sem morrer, você deve levar de 25 a 30 minutos de jogo. Ninguém da comunidade de ZX Spectrum usou o adjetivo curto para ele, mas aquele público que descobre agora um jogo de ZX por vezes expressa essa impressão. Nesse ponto também me interessa como fazer um jogo retrô, fugindo da obsolescência programada da indústria, traz limitações técnicas que influenciam na forma estética do jogo. Em Virgil isso aparece o tempo todo, no visual, na música, repetição de telas, e claro, no tempo de Jogo.

O modelo mais comum de ZX Spectrum tinha 48kb de memória ram, sem rolagem de tela ou mesmo sprites via hardware. Uma das limitações da Engine MPAGD, que uso pra desenvolver o jogo, é que o jogo só pode ter no máximo esse tamanho (menos ainda por conta de outras limitações internas e alocações de memória para determinadas áreas do código na engine). Desenvolver o Virgil foi um desafio, na metade eu quase desisti, por conta de estourar a memória e fazer o jogo travar a todo momento, me obrigando a retornar e retirar ou refazer partes do jogo para economizar na contagem de bytes. As vezes um dia de programação adicionando coisas era seguido de outros 2 ou 3 de limpeza de código, ou refazendo as cosias de forma mais "econÔmica". Ao final pude ter um jogo com meia hora, 4 chefes de fase, 4 músicas, variados inimigos, tela de carregamento, e mecânica complexa para um jogo de tal sistema.

Para aqueles que se interessam pela parte técnica faço um resumo do "post mortem" do jogo: O visual dele, preto/vermelho/branco, foi uma escolha em parte para economizar gráfico de cenário. Mais importante, o estilo de usar blocos de 8x8 pixels nos "cenários de fundo", num estilo que lembra o Atari 2600 ou o Odyssey2, foi uam escolha estética guiada também por essa economia de tiles e por conta do "color clash" do ZX Spectrum. O ZX não tem hardware de sprites, ele rederiza tudo num único plano, e os sprites não tem propriedade de cor, eles utilizam a segunda cor do cenário atrás dele (cenário composto de blocos de 8x8 pixels com 2 cores cada).

Tanto no Virgil, quanto no jogo anterior que fiz pra ZX (Devwill Too), o máximo que consegui de telas únicas na memória foram 44 telas. Em ambos as telas elas são planejadas para que certas "entradas" e "saídas" das telas coincídam, de forma que eu possa reutilizar uma mesma tela ao lado de diferentes telas, ampliando o tamanho do cenário e fazendo um mapra maior com estas apenas 44 telas. Reduzi trechos das músicas, refiz loopings, tudo para diminuir elas e economizar bytes. No Virgil's eu utilizei uma programação de "sobrepor telas", onde podia programar para que certas telas rederizassem uma sobre a outra (os tiles transparentes da segudna tela não apagavam a tela que era rederizada antes). Dessa forma pude ter estas 44 telas com cenários de fundo complexos, com detalhes (também é comum ver em jogos de MPAGD cenários de fundo sempre pretos e sem detalhes). Cada inimigo, e principalmente chefes e o próprio avatar do jogador, exigem muitas e mutias linhas de código cada um (no total 5600 linhas de código da minha parte). A cabeça de Virgílio tem uma propramação só dela, cheia de excessões e possíveis situações e diferentes estados do ataque no jogo.

A conclusão é que os limites técnicos influenciaram minhas escolhas estéticas: desde a duração do jogo, o conteúdo em termos de texto e mecânicas. O que tento fazer aqui é pensar e trabalhar conscientemente esses limites à meu favor, por que consciente posso utilziar a linguagem com mais eficácia para conseguir um efeito estético ou outro e, é preciso frisar, falo estética não só como o a parte visual (ou a "aprência",  que o correto seria chamar de "cosmética"), mas compreendida como a articulação entre forma e conteúdo numa linguagem artística. Espero que se você leu até aqui, que pare pra pensar um pouco nos critérios do que definem se um jogo é longo, curto, as demais questões as quais apenas "levantei a bola", e o quanto isso tem ou não a ver com o real conteúdo de um jogo, por que nem sembre horas a fio de jogo significam "mais", se não por muitas vezes uma "encheção de linguiça". O Amigo Pedro paiva sempre diz algo como "meu tempo é precioso demais pra um jogo tomar mais que uma hora de mim". Só posso concordar.

Abaixo algumas imagens do jogo e seu desenvolvimento relacionadas ao texto e com legendas explicativas:


Telas do jogo finalizado, repare na escolha das cores e como a paisagem "de fundo" é montada com grandes blocos de 8x8 pixels.



Todas estas 4 telas aqui sã orederizadas com a sobreposição de uma tela com elementos de colisão sobre uma tela de "paisagem", feita para tornar as primeiras mais ricas visualmente economizando preciosos bytes de memória.



Neste vídeo o primeiro teste que fiz com a programação do "merge screen", onde a tela é rederizada em duas etapas, primeiro a tela 1 onde montei um cneário de fundo e sobre ela a tela 2, 3, etc, que tem os blocos do chão que colidem com as sprites.


Acima a tela do editor de mapa do MPAGD. Repare que algumas telas se repetem, elas foram feitas para isso. As telas de fundo não estão alocadas aqui, elas são carregadas no código da programação que fiz quando necessários (a grosso modo algo como se for a tela X, carrega primeiro a tela Y). Também utilizei uma boa parte do espaço disponível para montar o mapa, que só pode ter no mácimo 16 x 10 telas de largura e altura.



No Editor de telas do programa, esta é a tela 9. Como citado acima, esta tela não está alocada no mapa, ela é carregada manualmente via código antes de certas telas que a complementam.



Se você reparou que a tela 24 repete-se mutias vezes no mapa, agora vai entener: é apenas um céu negro, uma tela para ficar no topo das áreas abertas caso o jogador utilze o pulo duplo e "saia" pelo topo da tela (se não tivesse esta tela acima o sprite retornaria por baixo da tela de onde partiu em looping infinito. Tela feita com economia de tiles pq tava já estourando a quantidade de telas na memória.



Aqui um vídeo e resenha feitos por um jogador e resenhista de jogos de ZX Spectrum. Assistindo eu percebo que ele já tinha jogado antes e estava treinado no jogo, já sabendo por que caminho seguir sem perambular demais pelo purgatório. Ele joga do começo até o final do jogo em meia hora, e deixa de pegar 1 dos 4 corações que ampliam a vitalidade de Virgílio.


Lembrando que você pode adquirir o jogo no itchio, ou em meu site.Brasileiros podem ainda pagar o valor em reais via PIX conforme está no meu site.







4 comentários:

  1. Excelente análise, Paulo! Tuas criações tão no caminho certo: mais refletindo a alma do criador que as necessidades da indústria cultural

    ResponderExcluir
    Respostas
    1. Grande Sanson. Então, ser independente e fazer parte do undergorund do video game é mais ou menos isso: fazer o que quero, e mesmo me esforçando pra vender os jogos, não me guiar por tendencias de mercado ou algo do gênero. Faço jogo pra nicho memso, então, é isso, sempre esbarro naquela uma dúzia que vai curtir meu jogo memso que ele esteja "fora de moda".

      Excluir
  2. Muito bom esse devlog. As curiosidades para alcançar as limitações da plataforma devem por vezes ressaltar o que de fato é importante no design e eliminam tudo que não é essencial. Lembro de já ler das limitações do Atari 2600 e como quase todo jogo ali que não é duas naves e dois tiros e um fundo espelhado na tela é basicamente um hack.

    Sobre a duração dos jogos, tbm penso dessa forma. Não tenho necessariamente um problema com jogos longos mas me incomoda o conteúdo inflado por vezes que existe apenas para passar a ilusão de fartura, técnica que franquias AAA anuais praticam bastante.

    ResponderExcluir
    Respostas
    1. opa,valeu pelo comentário. Sim, jogos longos é mais uma questão pessoal do jogador, eu mesmo ainda gosto de algum JRPG de snes, e eles leval 30 horas. Uma hora vou pensar melhor e escrever algo bem focado no ponto de vista do desenvolvedor também. E sim, dalhe cutscenes nos jogos atuais pra encher linguiça, hehehehe.

      Excluir