Minecraft, O Software

por Danilo Viana

Minecraft é um sucesso completo no reino Indie e um fenômeno de vendas. O jogo criado por Markus Persson hoje é sinônimo de sandbox e prova que uma boa idéia — mesmo uma não original — quando bem implementada pode render não dois, mas centenas de milhares de minutos de fama.

Para os dois de vocês que sequer ouviram falar do jogo, Minecraft é um jogo tipo sandbox onde, utilizando cubos, é possível moldar completamente um mundo infinito, totalmente seu. É dado ao jogador total liberdade para destruir, recriar e reposicionar tais blocos criando praticamente qualquer coisa. Além disso, é possível criar centenas de itens — picaretas, espadas, cercas, portas — tudo a partir de materiais minerados no ambiente do próprio jogo e um curioso sistema de construção (chamado de Crafting) que é fácil de entender e divertidíssimo de experimentar.

O jogo começou a ser desenvolvido em 2009, tendo sua primeira versão “final” em 18 de novembro de 2011. Escrevo “final” entre aspas porque Minecraft é jogado por milhões de pessoas desde sua primeira versão preliminar, tendo faturado milhões antes mesmo de ser oficialmente lançado.

Para entender melhor do que se trata, vale uma espiada no vídeo que apresenta o trailer oficial. Tem apenas um minutinho e é bem bonito.

Verdade seja dita: existem milhões de sites e blogs que escrevem sobre Minecraft, apresentando reviews, dicas, guias, mods e pacotes de texturas. Com o objetivo de agregar algo novo para o leitor do Cosmic Effect, gostaria de trazer a ótica de um desenvolvedor de sistemas nesta abordagem. Se você não tem o mínimo interesse em programação e nenhuma curiosidade para saber como jogos funcionam, talvez essa leitura não seja para você — mesmo assim convido todos a me acompanharem nesta análise um pouquinho mais técnica, pois tenho certeza que encontrarão algo interessante para refletirmos juntos.

Um verdadeiro Sandbox

Esqueça GTA, Assassin’s Creed ou qualquer outro “sandbox” por aí. Em Minecraft você pode REALMENTE fazer o que quiser. A premissa do jogo chega a ser ridícula quando você diz em voz alta: um jogo sem objetivos, sem missões e sem NPCs (eles até existem, mas são meramente decorativos). Os inimigos estão lá apenas para criar um desafio, você não precisa enfrentá-los e se nem quiser vê-los existe um “modo criativo”, sem a presença de oponentes. O único objetivo fixo do é minerar e construir o que você deseja, tudo isso no tal mundo infinito — não é “virtualmente” infinito, como em “é tão grande que poucos acham o final” — é realmente infinito pois se você tomar uma direção e sair andando o jogo vai criando mais terreno eternamente, até literalmente o espaço em seu disco rígido acabar.

Ao refletir um pouco mais profundamente esta premissa, pode-se concluir que Minecraft tem um paralelo no mundo real: Lego. Não estou falando dos Legos atuais, temáticos e praticamente sem necessidade de montar nada; lembre-se do Lego tradicional, um balde de peças encaixáveis onde você constrói o que quiser e tiver tempo (e peças) para fazer. A diferença é que neste jogo virtual as peças são infinitas; você só precisa de tempo.

Como isto é possível? Jogos como Battlefield 3 e Skyrim criaram mundos gigantes, mas eles esbarram na barreira do espaço de armazenamento, memória; como um “joguinho” com download de 200 KB e que depois de instalado ocupa “só” 100MB consegue ter um mundo infinito? A resposta é simples: use blocos.

A primeira vez que vi Minecraft os gráficos chamaram a atenção: exatamente o que imaginava se de uma versão FPS de Final Fantasy (o primeirão, de NES), com seu cenário quadrado e construções apenas com ângulos de 90 graus. Bacana o estilo, como um tapa na cara de todos os fanáticos por gráficos, mostrando mais uma vez que eles não são tudo.

Ao jogá-lo mais um pouco, percebi que não se tratava apenas do estilo gráfico. Claro, cada textura tem apenas 16 pixels de altura e o programador poderia ter feito melhor se assim desejasse — de fato existem mods que permitem trocar as texturas por versões de 32, 64 e até 128 pixels — mas a ideia aqui não era apenas seguir um estilo gráfico. Era o nascimento da receita para mundos infinitos.

Cada vez que se inicia um novo mundo em Minecraft, um algoritmo estabelece um mundo aleatório, mas relativamente coeso. Existem zonas com florestas, outras com lagoas e após uma certa profundidade são encontradas cavernas e até algumas vilas de NPCs. Claro, o algoritmo comete alguns erros: vilas com casas cujas portas dão para a parede, mas como você pode mudar tudo, não é nada que um pouco de boa vontade e trabalho não conserte rapidamente.

Para que esse algoritmo funcione, os blocos são fundamentais. Já que o mundo é apenas um bando de cubos reunidos, tudo que se precisa é de um conhecimento prévio acerca das regras de cada bloco — blocos de grama e areia vão na superfície, blocos de água preenchem buracos nos de grama, blocos de pedra e minério vão no subsolo — e o mundo infinito está pronto para ser criado.

É uma ideia simples que define todo o estilo de Minecraft — aqui não existem fases ou mapas que necessitem de um level designer, tampouco houve necessidade de visitar locais icônicos para capturar texturas realistas. Ao tornar o mundo um conjunto de blocos com uma função simples, todo o trabalho de moldá-lo foi entregue ao jogador e chamado de gameplay. E ele agradece por isso.

Minecraft, o software de computador

Algo que, particularmente havia me surpreendido em Minecraft é o fato de ter sido desenvolvido na linguagem de programação Java. Para os não iniciados, a curiosidade está no fato de que Java nunca realmente emplacou como linguagem de programação para jogos eletrônicos. Os fantásticos títulos para consoles e PCs em sua gigantesca maioria são criados na linguagem C++ e , mais recentemente, a Microsoft conseguiu emplacar o C# (pronuncia-se Cê Sharp) através de seu framework XNA e o Xbox 360.

Java sempre foi uma daquelas linguagens que alguns tentavam provar que servia para jogos, mas ninguém dava a mínima — quando algo um pouco mais audacioso era criado, o programador gritava aos quatro ventos que usou Java e isso acabava servindo mais para desmotivar do que para promover. (Nota para os amigos da área: estou ignorando que os jogos para Android são em Java; para todos os efeitos, refiro-me ao Java que rodam nos computadores pessoais).

Eis que Minecraft surge e ninguém faz alarde algum acerca de como ele foi criado. Você faz o download, executa-o como faria com qualquer outro programa e, na remota possibilidade de você não ter o Java instalado, ele reclama e te direciona à instalação. Até esta reclamação é discreta, como se esse tal de Java fosse uma coisa que você deveria ter, como o DirectX que é embutido no Windows. Em momento algum o jogo informa que é um aplicativo em Java, você nem lembrará disso depois.

Esta sutil postura da rotina de instalação despertou meu interesse de imediato. Sabe quando você oferece uma lanche a amigo e somente depois comenta que é feito de repolho, a coisa que ele mais odeia no mundo? Mesma coisa.

E o que fica diferente por Minecraft ser feito em Java? Fora o fato que ele roda em qualquer plataforma que tenha a máquina virtual Java, absolutamente nada. Trata-se de um jogo muito bem construído e de ótima performance, inclusive com muitos mods que melhoram gráficos, adicionam recursos e até novos inimigos. Pois bem: para todos aqueles que defendiam a inabilidade da linguagem em alcançar o desempenho de jogos desenvolvidos em outras linguagens, Minecraft é um verdadeiro tapa com luva de pelica.

O ciclo de desenvolvimento também é bastante interessante. Nas palavras do próprio autor:

(…) my only true design decision is to keep it fun and accessible. There’s no design document, but there are two lists; one for bugs, and one for features I want to add but think I might forget.”

Em uma tradução livre, significa que ao invés de vastos documentos e incontáveis artes conceituais, o autor dá um passo de cada vez e adiciona apenas aquilo que acha interessante e divertido, ou que conserta eventuais bugs. Se após implementar algo, ele (ou os jogadores nos fóruns) achar algo sem graça, simplesmente vai lá e remove. Esta decisão significa que a equipe de desenvolvimento não tem medo de tentar um novo recurso que possa parecer interessante. Eles tentam; e removem em seguida caso não funcione bem. Não , você não precisa comprar DLC nem pagar assinatura; se você tiver comprado o jogo uma vez, terá eternamente a versão mais nova.

Jogo de criança… NOT

Minecraft é um jogo sobre coleta de recursos e construção utilizando estes recursos. À primeira vista, parece que a “construção” é meramente o reposicionamento dos blocos em uma forma diferente — como seria com Lego — mas o jogo conta com um recurso mais poderoso: a obtenção de novos itens combinando matérias primas.

Quer uma espada? Combine duas barras de ferro com uma vara de madeira; um machado ou uma picareta? Use três barras de ferro, ao invés de duas.

Como faço para diferenciar um machado de uma picareta, dois itens que usam os mesmos materiais e na mesma quantidade? Mantendo a filosofia da construção por blocos, Minecraft conta com um sistema de construção onde você “desenha” o item que quer; para obter uma espada, não basta fornecer duas unidades de ferro e uma de madeira: é preciso posicioná-los na tela de construção, na posição correta para formar uma espada. Imagine comigo: duas barras de ferro, uma abaixo da outra na vertical; logo abaixo, a peça de madeira.

A construção do mundo, a criação de itens montando a matéria prima… tudo isso torna Minecraft uma experiência recomendadíssima para crianças. Nada de violência e o aspecto de construção estimula muito a imaginação, não precisa nem dizer. Mesmo assim, é incrível o número de adolescentes e adultos jogando. Incontáveis vídeos, fóruns, páginas de wiki e blogs — todos com pessoas crescidas mostrando suas criações.

E como elas são fantásticas. Desde casas simples mas bem decoradas até reproduções fiéis de monumentos mundiais, como o Coliseu e a Estátua da Liberdade.

Além disso, o jogo conta com um interessante material chamado Redstone. Ele serve de fonte de energia elétrica no mundo do jogo. Esta fonte de energia pode ser combinada com pisos móveis, alavancas, portas lógicas, trilhos de trem e outros materiais, tornando possível a construção de verdadeiras masmorras, com direito a armadilhas, sistemas de defesas e até golens ativados apenas quando inimigos entram no recinto.

Jogadores criativos utilizam estes recursos para criar sistemas totalmente auto-suficientes, com carros de mineração que levam recursos minerados para casa do jogador e voltam com ferramentas novas (as ferramentas em Minecraft têm duração limitada), otimizando ao máximo a coleta de matéria prima.

Com todos estes elementos, Minecraft tem se tornado o símbolo do jogo para todas as idades. Qualquer um vai encontrar algo que gosta, seja a criança que quer apenas brincar com a montagem de blocos, passando pelo jogador casual que quer investir em seu pequeno “mundo tamagochi” um pouco a cada dia até os hardcores que implementam sistemas autômatos e mundos coesos dignos de MMORPGs.

Com isso, voltamos ao princípio básico de desenvolvimento de Minecraft — sem documentos, apenas desenvolvendo algo em cima da premissa “se for divertido”. É incrível ver como um método simples e até “desorganizado” como este gerou um jogo muito mais completo que produções multi-milionárias como Skyrim, World of Warcraft ou Call of Duty: jogos que seguiram modelos mais tradicionais de desenvolvimentos e que gastaram pelo menos metade de seu ciclo sem digitar uma única linha de código, apenas criando documentos para determinar ainda seria criado.

E finalmente concluímos

Minecraft não é para todos — o jogador que gosta de ser guiado e sente-se perdido na ausência de objetivos claros, provavelmente não vai gostar do título. Viciados em gráficos podem também achá-lo difícil de digerir, já será necessária  uma dose de imaginação talvez rivalizada apenas por jogos da era Atari. Mesmo assim, Minecraft é um dos jogos atuais que melhor representa o ato de jogar videogame. Desprender-se da realidade e interagir com um mundo fictício, tudo em nome da diversão.

Uma idéia como esta, alguns anos atrás, poderia causar risos na sala de reunião ou até a demissão de alguém. Um cético diria que não temos poder computacional suficiente para representar um mundo tão rico e dinâmico. Tudo que bastou foi um programador solitário e criativo se perguntar “e se os gráficos não precisarem ser bons? E se o jogador aceita-los até mesmo… terríveis?”. O que o levou à ideia básica: “e se usarmos blocos? Lego fez isso por anos, por que em um computador não daria certo?”

O sucesso de Minecraft é prova suficiente que, pensar fora da caixa, pode trazer excelentes resultados… 

* * *

Projeto Parallax – Engine Em Java Para Jogos 2D

Por Michel Montenegro

Olá turma do Cosmic Effect! Mais um fanático pelos jogos em 2D por aqui desejando compartilhar um pequeno projeto com vocês. Bom, uma rápida apresentação: sou daqueles que não deixa passar nenhum Final Fantasy, Pokémon e Chrono Trigger, tornando-me mais um enfeitiçado por estes títulos clássicos — mas não somente pelos jogos em si.

Sem conseguir desgrudar da estética dos retrogames em duas dimensões, tenho me deliciado com jogos online atuais que seguem aquele estilo visual, como o “épico e cômico” Dofus, o conhecido Tibia e mais recentemente o Club Penguin — este, um MMO em flash sob o selo de qualidade Disney, portanto, imaginem a qualidade da arte 2D.

Somando a paixão pelos velhos sprites com a mecânica do RPG old-school, comecei a ter um sonho recorrente: fazer o meu próprio MMORPG. Bom, já cheguei a administrar servidores com até 1000 pessoas online, através da utilização de um projeto de servidor open source em Java, o L2J. Tudo isso me motivou a uma pergunta: “será que é possível um MMORPG em 2D, recuperando o estilo de jogo clássico”?

Daí nasceu um pequeno projeto que havia batizado de “JMMORPG”. Após algum tempo aprendendo com este primeiro modelo que havia desenvolvido, caindo e levantando muito… nasceu o Projeto Parallax, que supera de longe seu antecessor e que gostaria de lhes apresentar neste pequeno artigo.

Uma engine em Java para RPGs em 2D

Percebi que não existem engines em java para desenvolver jogos: há somente o JMonkeyEngine, porém direcionado à confecção de jogos 3D. Existem muitas bibliotecas, mas nada que possa ser descrito como uma engine totalmente funcional. Então, por que não me ajudar e, no processo, ajudar também outras pessoas? Será que é possível conseguir contribuições e, como um projeto mútuo, ter seu desenvolvimento acelerado? Como diz o ditado, “em solo fértil, um povo unido não passa fome”. Pois bem, respirei Projeto Parallax nos últimos dois anos e no site http://www.einformacao.com.br/parallax/ você pode encontrar em que pé a engine está neste momento.

Um relato rápido: no início, alguns profissionais da área de TI/desenvolvimento de jogos até me desmotivaram com relação a esta ideia, por conta da existência do XNA (framework de jogos para PC/X360 e Windows Phone), o GameMaker e até mesmo o próprio HTML5. Dei uma espiada nelas e pude concluir que, para o meu objetivo, Java continuou como a opção mais interessante.

Enfim, o objetivo do projeto é criar uma engine que possibilite a criação de jogos 2D sem que haja a necessidade de digitar uma única linha de código por parte do desenvolvedor, assim como acontece com o RPG Maker, porém com as seguintes vantagens:

  • Projeto open source. O usúario da engine poderá, se assim desejar, fazer alterações personalizadas.
  • Compatibilidade. Possibilidade de rodar em qualquer sistema operacional que tenha uma JVM (Máquina Virtual Java) desde que atenda os padrões mínimos de hardware.
  • Sem programação. Não ter a necessidade de conhecer nenhuma linguagem de programação, apenas conceitos básicos de operação em qualquer sistema operacional.
  • Expansivo. Inicialmente, oferecer a capacidade de gerar jogos no mesmo estilo do RPG Maker para então expandir para outros modos. O Projeto Parallax é totalmente modular.
  • Offline e online. Oferecer suporte online, possibilitando MMOG ou MMORPG. Importante lembrar que o JMMORPG, protótipo do Parallax, obteve sucesso neste aspecto e suas estruturas estão sendo aproveitadas.
  • Custo zero. O Projeto Parallax somente faz uso de tecnologias 100% livres e de código aberto em sua construção.
  • Padronização no código e na criação final do produto. Utilização de técnicas modernas durante o desenvolvimento, garantindo compatibilidade com conceitos e tecnologias atuais.
  • Porta aberta para todos. Para quem deseja entrar na área de desenvolvimento de jogos, principalmente em Java, nosso projeto pode ser uma excelente escola.
  • Qualidade e simplicidade. Se for para qualquer um poder criar, não pode ser complexo. Procuro manter o código-fonte o mais objetivo, enxuto e padronizado possível.

Que tipo de apoio o Projeto Parallax precisa

  1. Designer/artista gráfico. Para desenhar as telas do jogo, personagens, etc.  Sei que podem ficar mais bonitas visualmente. Do ponto de vista operacional, é bem fácil, pois as telas funcionam no conceito de skin/template. A tela é composta por painéis, um dentro do outro. Os painéis têm uma imagem de fundo. Os botões carregam a imagem pré-estabelecida, se mudar a skin da imagem, muda no projeto. Fazer arte/design na engine é bem fácil, pode acreditar. Há um vídeo planejado para ser feito somente para desmistificar qualquer possível complexidade que por ventura o projeto possa passar no que se refere aos gráficos.
    .
  2. Desenvolvedor (para o database do projeto). Por exemplo, estou usando XML para os dados e isto deve se manter assim para os dados estáticos e de baixo volume baixo que fiquem no cliente (Um desenvolvedor só para fazer a tela de “cadastro e edição destes dados”). Como o projeto tem vários “flancos” a serem projetados e estou focado no código da engine, um outro desenvolvedor que possa cuidar dessa parte seria de grande ajuda. Futuramente, certamente haverá a necessidade para um banco de dados em um formato “X” (MySql, DBD ou outro…).
    .
  3. Desenvolvedor (Java): Ajudaria bastante para dividir as tarefas comigo, acelerando a parte da engine mesmo.
    .
  4. Music Composer: Alguém para compor músicas e sons, seria de grande ajuda. [Nota: o Eric Fraga “Cosmonal” já estará contribuindo conosco com game music e efeitos sonoros!]
    .
  5. Map Designer: Seria ótimo ter alguém para desenhar os mapas.

Para quem tiver curiosidade, dá uma olhadinha no vídeo que apresenta a engine funcionando, com o jogo “As Crônicas Do Aventureiro”.

O Projeto Parallax já incentivou outros a pensarem em fazer engines para Android e Symbian, uma outra vertente que gostaria de ver nossa engine se expandindo no futuro. Espero que gostem do trabalho e acreditem: foram 2 anos e “uns quebrados” de muito estudo e pretendo levar a frente, de verdade.

Peço que divulguem este artigo o máximo que puderem para seus amigos nas redes sociais e onde mais acharem relevante. Estarei contando o progresso da engine aqui no Cosmic Effect para vocês ( ^^ ) um abraço a todos e obrigado!

* * *

Torion 2 (PC)

Por Euler Vicente

O amigo que acompanha o Cosmic Effect lembra que, no post sobre Zanac, citei um jogo que havia desenvolvido em homenagem ao meu game de nave favorito. Acredito que algumas pessoas ficaram curiosas em conhecê-lo, saber como se deu o processo de desenvolvimento, minhas dificuldades e inspirações. Como Torion 2 é 100% retrô, acredito que possa render uma curiosa leitura para os nossos amigos. Afinal de contas, quem joga videogame sempre teve vontade de fazer seu próprio jogo, não é mesmo?

Quer saber como funciona um shooter 2D? Então, continue conosco!

Como tudo começou: o campeonato da UniDev!

Sempre tive como um hobby pessoal a programação de computadores. Desde o MSX, já codificava algumas coisas simples. Obviamente, como nesta época programava para me divertir (sim, isso é possível!), não me interessava em aprender a fazer aplicações sérias; só queria saber de fazer jogos, gráficos legais. À medida em que o conhecimento técnico foi progredindo, o sonho de fazer um shooter como Zanac tornava-se cada vez mais factível.

Até que um dia, um site brasileiro muito legal de desenvolvimento de jogos, o UniDev – Programação de Jogos, lançou um concurso para os leitores, em 2003. A proposta era de apresentar um projeto de um jogo (ou demo) dentro de de 6 meses. Não lembro qual era o prêmio, ou mesmo se era relevante para mim: só sei que aquilo havia me deixado animado a seguir em frente. Tinha chegado o momento de produzir o meu Zanac!

Lembro que os projetos iam surgindo em profusão no site, diversos bem mirabolantes (risos). Um beat’em up à la Streets of Rage; tinha até uma turma que pretendia desenvolver um RPG cheio de detalhes. pensava com meus botões: esses caras vão conseguir realmente fazer isso tudo em 6 meses?

Pelo prazo proposto pelo site, não quis me arriscar a começar algo que não conseguiria terminar. Pela experiência que já obtive através do desenvolvimento de dois outros jogos autorais menores (Torion e Meteoros), acreditava que jogos de nave seriam mais fáceis de produzir: não precisamos nos preocupar com física, as colisões são mais simples… e era o gênero que eu mais gostava!

Então, inscrição no site realizada e mãos à obra, Euler!

Hello World!

Minha base de programação sempre foi a linguagem Visual Basic. Foi a ferramenta que me acompanhou durante boa parte da minha vida profissional e, com o tempo, fiquei bem experiente na dita-cuja (fiz 90% na prova de certificação da Microsoft). Meu contato inicial com o DirectX foi, inclusive, através do próprio VB.

Observem que, em tese, qualquer jogo pode ser produzido em Visual Basic pois, na realidade, quem renderiza os gráficos, efeitos sonoros e entrada de dados é a extensão DirectX, não a linguagem de programação. Ela somente representa a interface para acessarmos a API do DirectX – precisa apenas fornecer suporte para tal. Por exemplo, já vi ótimos projetos em Delphi – outra linguagem “atípica” no desenvolvimento de games – para dar uma idéia para vocês.

Porém, eu andava entediado com o VB. Não seria uma boa oportunidade para aprender outra linguagem de programação? Que tal C++ para arrebentar de vez? Não é ela a tal linguagem de programação usada nos projetos profissionais? Decidi encarar o desafio.

É importante ressaltar que, apesar de boa parte do jogo ser de responsabilidade do DirectX, a lógica de programação, cálculos matemáticos e iterações (os loops) são confeccionadas na linguagem de programação. E, neste aspecto, o C++ faz toda a diferença do mundo. É muito mais rápido do que o VB, Java ou o Delphi. Por isso a predileção do C++ em situações mais profissionais. Eles poderiam fazer um Half-Life 2 em Visual Basic, mas ficaria tão lento…

O que me trouxe bastante confiança em começar meu projeto numa linguagem de programação que nunca tinha visto na vida foi um engine que havia encontrado: o CDX. Gratuita, com o código fonte disponível, lotada de exemplos práticos e altamente didáticos. Com um pouco de estudo, pude assimilar sem maiores dificuldades.

E, então, iniciei meu primeiro programa em C++. Normalmente quando começamos a aprender uma nova linguagem de programação, fazemos um programinha bem simples que imprime na tela os dizeres: “Hello World!”. Isso é uma espécie de tradição no mundo da informática. No meu caso, meu “Hello World!” foi logo Torion 2! (risos)

Gráficos & trilha sonora: quem aí pode me ajudar com isso?

Uma coisa que aprendi: jogos são projetos multi-disciplinares. Não é possível somente um indivíduo cuidar de tudo. Até mesmo porque as pessoas são diferentes, têm aptidões diferentes e, no meu caso, definitivamente não levo jeito para a parte artística da coisa.

A tal questão artística representava um grande limitador ao projeto. Por vezes, tinha uma boa idéia, sabia como implementá-la tecnicamente falando, mas… do que adiante se não tinha os sprites corretos? A coisa foi tão séria para mim no começo que o projeto foi tomando outro rumo: normalmente se planeja o gameplay, são esboçados os cenários e personagens e, somente depois, a equipe artística realiza o que foi imaginado. Em Torion 2 foi ao contrário! (risos) Fuçava sprites na Internet, efeitos sonoros, músicas, até achar algo que pudesse aproveitar. Daí, desenvolvia o gameplay em cima dos recursos artísticos encontrados. Acham que queria colocar aquela arma do bumerangue do Knightmare no jogo? Eu tive de aproveitá-la, pois o sprite estava lá disponível, todo arrumadinho esperando que eu pensasse em algo… (mais risos)

Para terem uma idéia do meu desespero, a nave Torion foi produzida a partir de um mesh (modelo 3D) feito para o 3D Studio. Baixei o modelo de um daqueles sites especializados em 3D Studio, abri o software e renderizei em 2D a nave vista de cima. Depois, inclinei-a para a direita e tirei outra foto. Fiz o mesmo para a esquerda e pronto: meu sprite da Torion estava lindo! A nave da abertura é o mesmo modelo renderizado, só que de frente! (risos)

E o que falar dos efeitos sonoros e música? A música, como podem notar pelos créditos, é de autoria de um sujeito chamado Wagner Carvalho. Ele era integrante de uma empresa nacional de desenvolvimento de jogos na época, a GreenLand Studios. No site deles, havia o portifólio com as músicas e eu tinha gostado de uma delas, casava com o tipo de jogo que eu queria fazer. Fiz contato com o Wagner, pedindo autorização para usá-la em Torion 2. Comentei que era para um projeto sem fins lucrativos, que seria divulgado em vários sites especializados. Acabei convencendo-o de que seria uma boa oportunidade de divulgação do trabalho dele que, então, permitiu a utilização da sua música.

Catei uns efeitos sonoros na rede, nem sabia a quem dar crédito. Até a música do boss de Streets of Rage usei ao chegar nos chefes de fase! (risos)

Com o passar do tempo o projeto foi ganhando forma, tornando-se bem interessante. Tinha o hábito de sempre atualizá-lo no site para que as pessoas pudessem acompanhar o andamento. Nisso, dois rapazes se ofereceram para contribuir. Acredito terem notado que o projeto era algo sério, que eu não estava para brincadeira. As aptidões deles casaram com minhas necessidades e eu os aceitei de bom grado. O Márcio Rogério fez uns sprites bem legais para o jogo. Sabe os chefes de fase? São dele. O Roberto Radke era bom em fazer músicas, então encomendei algumas composições. Aquela música executada ao passar de fase é dele. Muito obrigado rapazes!

Mas, a parte artística mais complexa do jogo foi, de longe, o mapa. Lembram que eu falei sobre tilling no post sobre Zanac, sobre o trabalhão que dá fazer aquilo? Pois bem, um grande companheiro de faculdade, Andrey Santana (não é o do Cosmic Effect) deu uma ajuda e tanto. No CDX, havia uma amostra de como fazer tilling, inclusive com um mapa pronto que exibia até mesmo parallax vertical. Tudo que precisava estava lá, naquele exemplo.

Então, Andrey pediu que eu lhe explicasse o funcionamento do editor de mapas, como isso funcionaria dentro do jogo e voilà: em poucas semanas ele produziu um mapa com cenário urbano que ficou de cair o queixo. Abusei: pedi para colocar um estádio no cenário, como aquele estádio de beisebol do Tokyo (Scramble Formation). Sempre babava com aquilo quando ia ao fliperama! Sabe o que ele fez? Pegou uma foto de satélite do Estádio Olímpico de Sydney e colocou no mapa (em tempos pré-Google Earth). Putz, esse cara é bom ou não é?

As armas… as armas!!!

Foi muito interessante programar essa parte. Quem já jogou Zanac percebeu que Torion 2 tem armas parecidas. Os tiros simples (até 3 no máximo) e as armas extras estão aqui! Isso foi descaradamente baseado em Zanac (risos)! Vou falar um pouco sobre elas:

– A arma do bumerangue. A mais chata do jogo e só a deixei ficar por não ter encontrado sprites melhores na Internet. Fiz a programação para que fosse e voltasse ao ponto inicial, dando até um efeito legal. Ficou parecido com Knightmare?

– As esferas que giram ao redor da nave. Era minha arma extra favorita em Zanac, não podia faltar em Torion 2. Fiz um upgrade baseado no que eu tinha visto em Super Aleste do SNES. Desta vez, as esferas giram em sentidos diferentes, em órbitas elípticas. Gostaram? Posteriormente, percebi que a arma era poderosa demais, tornando o jogo fácil. Então, implementei um sistema que descresce a força das esferas à medida em que ela colidia com os inimigos ou seus tiros. Percebem que elas vão clareando até desaparecer por completo? O nome deste efeito é alpha blending e o CDX já trazia de bandeja para nós.

– O laser. Foi o Andrey quem me cobrou esta. Todo jogo de nave precisa de uma arma laser destruidora. Por sorte, achei um sprite perfeito para os meus propósitos, foi só implementar.

– Os robôs que seguem a nave. Baseado numa arma que adorava no Super Aleste. Achava incrível a maneira como se movimentava, seguindo os passos da nave principal. Esta aqui foi a mais trabalhosa de implementar, mas a que trouxe mais satisfação pessoal quando pronta. Lembro que escrevi a lógica num pedaço de papel, depois de muito quebrar a cabeça. Mas, a lógica ficou tão boa que quando fui programar o que havia pensado, funcionou logo de primeira. Dei um pulo de alegria naquele instante, como se tivesse vencido um boss bem difícil!

A matemática está em toda parte.

Eu detestava matemática na escola. Pode parecer estranho para alguém que citou tudo isso sobre lógica, mas não suportava a disciplina. Inclui até uma recuperação no meu histórico escolar.

Quando comecei a programar Torion 2, percebi que não havia escolha, a matemática estava em todo lugar. Através da trigonometria, pude posicionar as esferas e fazê-las girar ao redor da nave. Calculando ângulos, fiz os tiros dos inimigos inteligentes. Eles sempre miram na nossa direção, não atiram de qualquer maneira.

Comecei até a gostar da “coisa” depois que vi uma utilidade prática. Ah, se a matemática fosse ensinada desta maneira nas escolas…

Colisões: o pesadelo!

Sabe quando a tela de um jogo torna-se cheia de inimigos e notamos um frame drop e vira aquela lerdeza? Não é o fato da tela estar cheia de sprites que torna o jogo mais lento, são os cálculos das colisões! O código testa o tempo inteiro se nossos tiros atingiram os inimigos, se os tiros inimigos nos atingiram, se as naves inimigas nos atingiram… imaginem que, se um jogo roda a 60 FPS, testamos 60 vezes em um segundo por todo tipo de colisão que possa ocorrer. O C++ faz isso mais rápido que as outras linguagens, por isso jogos feitos nessa linguagem costumam ter melhor desempenho. Games que rodam numa taxa de quadros estável normalmente tem um bom sistema de colisão.

Um dos motivos de um shoot’em up ser mais simples que um jogo de plataforma é o fato de não precisarmos testar as colisões com os cenários. Num plataforma isso é realizado o tempo inteiro, além das colisões com os inimigos. Isso não ocorre num shmup 2D.

Existem algumas técnicas de detecção de colisões. Em Torion 2, foram utilizadas dois tipos: colisão por sobreposição de retângulos e colisão pixel por pixel. Uma breve explicação:

– Sobreposição de retângulos. Um sprite é sempre retangular. Quando a figura é não-retangular, definimos uma cor no sprite como cor de transparência. Assim, quando o sprite é renderizado, aquela cor que definimos com cor de transparência não é exibida na tela. A detecção de colisão por sobreposição de retângulos testa apenas se 2 retângulos se sobrepuseram. É uma técnica pouco precisa, mas muito rápida.

– Pixel por pixel. É a técnica mais precisa, porém custosa em termos de processamento. Aqui, quando dois retângulos de sprites se sobrepõem, pegamos a área de interseção dos retângulos e testamos pixel por pixel se um determinado pixel é não transparente nos dois sprites em colisão. Complicado, não é? Mas é para isso que serve o engine: para nos livrar destas dores de cabeça!

Percebi que não dava para detectar todas as colisões do jogo usando pixel por pixel, isso tornaria Torion 2 lento. Na época, os PCs não eram tão potentes quanto os atuais, ainda tínhamos de espremer recursos. Optei em usar pixel por pixel apenas nas colisões em cima da minha nave, já que se eu usasse a sobreposição de retângulos, corria o risco de um tiro nem passar perto da nossa nave e nos matar. As colisões dos inimigos foram feitas com retângulos mesmo, pois se torna altamente aceitável para quem joga (risos).

Gameplay: a parte mais complexa!

Esta foi, disparadamente, a pior parte do projeto. Vocês não imaginam o trabalho que é fazer 30 segundos de jogo! Precisa realmente de gente especializada, não tinha mais dúvidas acerca disso.

Fazer um jogo que seja interessante, que não frustre o jogador, que o estimule pensar estratégias de combate; com a dificuldade progressiva… é uma arte. Percebi não ter o perfil para isso, pois a minha paciência é quase zero (risos).

Para que outra pessoa possa fazer o gameplay do jogo (tarefa que sobrou para o colega de faculdade Andrey), desenvolvi um layout para um arquivo em texto simples. O jogo estava pré-programado para ler esses TXTs. Bastava seguir o layout à rigor que o jogo se comportaria conforme desejado, dispensando recompilações. Então, foi só jogar a bomba nas mãos do Andrey (risos).

Lembro de um acontecimento engraçado. Ainda durante a implementação, pedi para uns amigos o testarem. Um colega de trabalho comentou ter um sobrinho vidrado em jogos. Ele, então, levou Torion 2 para o guri testar. No outro dia, trouxe o veredito do garoto: “o jogo é bom, tio, mas é fácil demais!”

Como assim “fácil demais”? Putz… podia começar meu dia sem essa, não é? Ferido no meu orgulho, disse para ele que iria dar um jeito nisso. Comecei a editar os TXTs, aumentando todos os valores, enchendo a tela de inimigos: queria ver aquele guri falar alguma coisa agora… Bom, só sei que o jogo ficou tão difícil que nem eu mesmo consigo terminar (risos)!

Conclusão: atingi meus objetivos?

Apesar de nunca ter terminado o jogo (só tem 2 fases), acho que fiquei satisfeito com o resultado. Torion 2 não ficou tão dinâmico quanto eu pretendia, o gameplay precisa de sérias melhorias, mas fiquei com a sensação de que poderia fazer qualquer jogo deste estilo, caso desejasse. A parte técnica está lá, bastava mais dedicação, experiência e as pessoas certas nos momentos certos do projeto.

Nunca mais vi os jogos 2D da mesma forma depois que participei deste projeto. A gente passa a ver as coisas com outros olhos, sabe?

E vocês? O que acharam de Torion 2?

Ah! E o resultado do concurso? Sei lá… o que eu queria, já havia conseguido!

[Nota do Cosmonal: Capturei o gameplay completo do Torion 2 para quem desejar vê-lo em ação (vídeo abaixo). Quem quiser, o jogo completo está disponível para download – link logo após o vídeo!]

Download Torion 2!
(Windows XP/7)

Basta descomprimir o arquivo baixado em qualquer pasta e executar “Torion2.exe”.
Iniciará automaticamente, em 640 x 480. Não há necessidade de nenhuma configuração.

* * *

Primeira Edição Do Joga Brasil – Entrevista com “SLotman”

Joga Brasil mostrará no Rio os games feitos no país

Nos próximos dias 28 e 29 deste mês, acontece, no Rio de Janeiro, a primeira edição do Joga Brasil, evento dedicado aos games desenvolvidos no país. Além de conhecer as produções atuais feitas por estúdios brasileiros, os visitantes também poderão mergulhar em um túnel do tempo e conhecer clássicos criados no Brasil, como o adventure Amazônia, feito para o MSX.

O nosso retro repórter Mario Cavalcanti conversou brevemente com José Lucio Mattos da Gama, o SLotman, responsável pela empresa de desenvolvimento de jogos Icon Games e organizador do Joga Brasil. SLotman adiantou um pouco do que o público encontrará no evento. Acompanhem abaixo e anotem na agenda, pois o encontro é imperdível – e o Cosmic Effect estará por lá realizando aquela cobertura cósmica em vídeo que vocês já conhecem! ;-)

Cosmic Effect – Como surgiu a ideia de fazer um evento para divulgar a produção nacional de games e quais foram seus principais motivadores?

SLotman – Eu estou desde 2003 no mercado de jogos – com a Icon Games – e uma coisa que notei com o passar dos anos é que muita gente desconhece que sequer existe a produção de jogos no país. As empresas brasileiras na realidade atual, se querem sobreviver, têm duas saídas: trabalhar com advergames ou então fazer jogos voltados para exportação. Em certos casos, algo curioso acontece: um jogo brasileiro é distribuído por um publisher estrangeiro, e chega “de volta” no país através de portais; os brasileiros compram sem sequer se dar conta que o jogo foi desenvolvido no país. Para iniciar uma reversão nesse quadro, foi criado o Joga Brasil, onde a ideia é divulgar os jogos que foram ou são desenvolvidos no país.

Cosmic Effect – Quais as expectativas para esta primeira edição? O que o público pode esperar como atrações?

SLotman – As expectativas são grandes. Apesar de ser o primeiro evento somente com produtoras brasileiras, conseguimos reunir uma gama bem diversificada de expositores, com projetos de todos os portes. O público com certeza poderá experimentar estes jogos e até mesmo conversar com os próprios desenvolvedores por trás dessas produções; mas além disso, temos outras atrações: palestras e mesas redondas (quem é do ramo, estudantes e interessados podem assistir a palestras no evento, que falarão de diversos tópicos relacionados ao mercado e ao processo de desenvolvimento de jogos); exposição da história dos jogos brasileiros (uma exposição que mostrará jogos desenvolvidos desde os anos 80, em diversas plataformas, como Odyssey, MSX, Amiga, Master System, Mega Drive, PC etc., até produções mais atuais – mostrando a evolução do desenvolvimento de jogos no país).

Um convidado especial, o Renato Degiovani (autor do primeiro jogo 100% nacional – o Amazônia) fará uma “palestra interativa”, um bate papo informal sobre o mercado de jogos no passado e no presente. E teremos também uma parte voltada para reunião de negócios, onde empresas que não estão expondo no evento poderão se reunir, com hora marcada com as empresas expositoras. A parte de divulgação do evento é muito importante, mas tão importante quanto é a geração de novas parcerias para que as empresas possam criar produtos cada vez melhores e de maior valor agregado. A ideia geral é propiciar ao mercado de jogos, o mesmo que ocorreu com o mercado de filmes nacionais, que antes eram mal vistos por boa parte da população, mas que atualmente conseguem inclusive superar bilheteria de produções estrangeiras.

Cosmic Effect – Como você enxerga o atual cenário nacional de desenvolvimento de games?

SLotman – É um cenário promissor. O Brasil está despontando como uma nova potência no mundo, está atraindo as atenções do mercado mundial, e além disso, o povo brasileiro já possui uma cultura “gamer” enraizada. Tem-se um potencial enorme ainda não aproveitado neste país, e uma enorme quantidade de gente que simplesmente não tem acesso a jogos. Grandes empresas como a Microsoft, Sony, Nintendo, Blizzard, Ubisoft já se deram conta disso; e cada vez mais teremos a presença dessas empresas estrangeiras em solo nacional. É importante, neste momento, um evento como o Joga Brasil, para mostrar à população que existem jogos feitos no país, e que todos os envolvidos nesse mercado têm um profundo desejo de não só fazer jogos aqui, mas também de fazer jogos voltados para a realidade nacional. E isso não necessariamente quer dizer fazer um jogo que tenha o Pão de Açúcar como cenário, ou que tenha um Saci Pererê, mas sim que se use o jeito brasileiro, a cultura e a diversificação desse país para se criar algo que a pessoa ao jogar se identifique.

Cosmic Effect – Como já dito, entre as atrações estará uma exposição sobre produções nacionais antigas, que mostrará clássicos como o jogo Amazônia, para o MSX, e adaptações como Mônica e o Castelo do Dragão, para Master System. Na prática, como será essa área de exposição? Especificamente em termos de retrogames, o que mais o público poderá conhecer de perto?

SLotman – Teremos cartazes explicativos demonstrando vários jogos, em ordem cronológica, mas teremos também na exposição máquinas rodando alguns destes jogos. Além dos citados, teremos Em Busca dos Tesouros (TK-85), Zorax (MSX), Barravento (Amiga), Didi na Mina Encantada (Odyssey – esse apenas uma adaptação), Incidente em Varginha (PC – não muito retrogamer, mas antigo e importante do mesmo jeito), entre outros. É algo muito interessante, pois vendo jogo a jogo dá para entender a evolução do mercado nacional ao passar dos anos.

Cosmic Effect – Que mensagem você gostaria de passar para os visitantes ou pessoas que pensam em ingressar de alguma forma no mercado de games?

SLotman – Acho que melhor que qualquer mensagem, seja dar um conselho: venham ao Joga Brasil! Não existe oportunidade melhor para se conhecer quem já está no mercado, trocar experiências e ver de perto a realidade do desenvolvimento de jogos no país. Tanto nas palestras, como nas mesas redondas ou mesmo na área dos expositores – todo o evento é focado na realidade brasileira, coisa inédita até então.

SERVIÇO

Joga Brasil

Data: 28 e 29 de janeiro de 2012

Local: Faculdade CCAA

Horário: a partir das 10h

Endereço: Av. Marechal Rondon 1460 – Riachuelo – Rio de Janeiro, RJ

Site oficial: http://www.jogabrasil.com.br

Entrada franca!

* * *