26 de maio de 2020

Criando seu próprio jogo no Mega Drive: Instalação e teste.

Olá prezados leitores do blog do Yoz. Me chamo Carlos e pretendo trazer alguns tutoriais e assuntos relacionados ao desenvolvimento de jogos, sobretudo em consoles legados. Conheço o Yoz a anos, e ele me pediu pra fazer parte da sua equipe. Como estava com vontade de levar esse tipo de conteúdo para o maior número de pessoas, foi uma baita oportunidade e fico feliz em fazer parte novamente.  


Antes de começar a passar ao que interessa, segue uma breve introdução sobre mim e o SGDK pra quem se interessa: http://gamerdesconstrutor.blogspot.com/2016/10/megadrive-homebrew-phantasy-star-side-scroller.html. Mas pra quem está com preguiça adianto que o SGDK é um kit de desenvolvimento para auxiliar na criação de jogos para o nosso querido MEGA DRIVE. Então que tal aprender a fazer alguns joguinhos do zero  e de quebra aprender programação de uma forma divertida? É o que pretendo com meus posts.

O SGDK sozinho já é útil, mas em conjunto com outras ferramentas, fica mais ainda. Como boa parte do desenvolvimento é programando, é bastante útil a utilização de um IDE integrado ao kit. Um deles é o Visual Studio Code.

O Visual Studio é um editor de código-fonte desenvolvido pela Microsoft, livre e de código aberto. Possui versão para Windows (óbvio), Linux e macOS. Apesar do SGDK funcionar no Eclipse também (posso postar quem quiser), achei o Visual Studio Code mais leve , mais agradável e com uma bela extensão que facilita a integração com o SGDK. Então acho melhor recomeçarmos com ele.

Instalação no Windows

Como pré requisito baixar a versão atualizada do JRE: https://www.oracle.com/java/technologies/javase-jre8-downloads.html

Primeiro precisamos baixar o próprio SGDK: https://github.com/Stephane-D/SGDK. Clique em "clone or download" e em seguida "Download ZIP".

Dica: Descompacte de preferência no C:/, e sugiro fortemente renomear a pasta principal de "SGDK-master" para apenas "sgdk" (já tive problemas com o "-"). No fim fica apenas "C:/sgdk". Facilita bastante.

Pronto, o coração do dev-kit esta "instalado". Vamos agora para instalação do principal: o Visual Studio Code. É somente acessar https://code.visualstudio.com/, baixar o instalador e instalar.

Com os dois instalados já conseguiríamos a fazer nossos projetos, mas que tal integrarmos-os entre si? 


Ir na seção "Extensions" localizado na barra vertical esquerda ou apertar Ctrl+Shift+X.


Digitar na barra de pesquisa "genesis", clicar na primeira que aparece "Genesis Code" e clicar no botão verde "Install"


Fácil, não? Agora só falta um último passo: alterar as variáveis do ambiente no Windows para que o IDE localize o diretório do SGDK. No Windows, ir em Painel de Controle > Sistema e Segurança > Sistema e clicar em "Configurações avançadas do sistema" e depois "Variáveis de ambiente" na aba "Avançado".



Clicar em "Novo" e digitar no "Nome da variável": "GDK" e "Valor da variável": "C:/sgdk"


Também acrescentar um valor na variável PATH: "C:\sgdk\bin\"


Instalação no Linux

Antes de tudo preciso dizer que o SGDK não foi desenvolvido originalmente para funcionar em Linux, mas como alternativa foi criado um outro projeto chamado GENDEV que encapsula o SGDK e o faz trabalhar no SO do pinguim. Na prática não muda nada, o ponto negativo é que geralmente roda uma versão um pouco desatualizada do SGDK, mas que não deve ter grandes problemas com isso ainda.

Baixe gendev/sgdk no site do projeto https://github.com/kubilus1/gendev. O processo para baixar é igual ao site do projeto do SGDK. Após baixado e descompactado em alguma pasta do seu home, está na hora de instalar alguns pacotes pré requisitos. Abra o terminal do Linux e entre com o comando (para usuários Ubuntu e derivados e para outras distros o gerenciador de pacotes correspondente):
sudo apt-get install texinfo openjdk-8-jdk build-essential git curl wget unzip dos2unix
Após a conclusão, de fato, instalar o GENDEV com o SGDK. Ainda pelo terminal, acesse o diretório onde você descompactou (por exemplo: ~/gendev):
cd ~/gendev
E instala:

sudo make
Agora aguarde, pois esse é um processo bem demorado (~45 minutos). Quando finalizar usa a instrução install do make:
make install
Tudo ok para a instalação do Visual Studio Code. É possível baixa-lo pelo próprio site oficial ou instalando direto na central de programas do próprio SO.
Com o Visual Studio aberto, ir na seção "Extensions" localizado na barra vertical esquerda ou apertar Ctrl+Shift+X. Digite na barra de pesquisa "genesis", clique na primeira que aparece "Genesis Code" e clique no botão verde "Install" (imagens para referência estão na parte da instalação do Windows deste mesmo post).

Assim como no Windows, é preciso configurar as variáveis de ambiente do usuário/sistema e no $PATH. Então, abra o terminal do Linux e digite:
sudo gedit /etc/profile
sudo gedit /etc/bash.bashrc
Com o documento aberto, adicione na última linha os comandos:
export PATH=$PATH:/opt/gendev
export GENDEV=/opt/gendev
Após isso, encerre a sessão do usuário no Linux e entre novamente para que as configurações surjam efeito (ou reinicie). Para conferir se as variáveis estão configuradas, digite no terminal:
echo $GENDEV
deverá retornar "/opt/gendev" e
echo $PATH
que deverá retornar uma série de diretório, entre eles o "/opt/gendev". Com isso, seu ambiente de desenvolvimento estará configurado e pronto para a diversão. 

Testando o ambiente

Com o Visual Studio Code aberto, pressione Ctrl+Shift+P para acessar a pesquisa de comandos. Digite apenas "genesis" (sem apertar o ENTER) e veja o que surge ali:


Vamos iniciar um novo projeto, então execute o "Genesis Code: Create Project" e selecione o diretório onde será criado o projeto. É indicado criar um diretório vazio já com o nome do seu jogo/projeto.


Note que há um campo no lado esquerdo com o nome do seu projeto e alguns diretórios que foram criados automaticamente (depois será explicado melhor a estrutura dos diretórios do projeto), mas por enquanto clique na pasta "src" e logo abra o "main.c" que como o nome diz, é o arquivo principal onde será compilado a ROM. O seguinte código já vai estar presente:

/**
 * Hello World Example
 * Created With Genesis-Code extension for Visual Studio Code
 * Use "Genesis Code: Compile" command to compile this program.
 **/
#include <genesis.h>
int main()
{
 VDP_drawText("Hello Sega!!", 10,13);
 while(1){
 VDP_waitVSync();
 }
return (0);
}
Tirando as 5 primeiras linhas que são comentários, este simples código de 9 linhas já faz uma coisa bem interessante já. Compile através do comando "comando genesis compile" com o Crtl+Shift+P (vai usar muito esse atalho) e depois com um emulador, abra a ROM gerada na pasta "/out" do seu projeto:


Em outro post eu explico o que faz cada linha de comando. Mas já adianto que apenas 1 delas é responsável pelo o que aparece em tela. Se quiser brincar agora, vai alterando o conteúdo do texto entre "aspas" e seus números  no comando VDP_drawText e veja o que acontece (só não esqueça de compilar novamente cada vez que fizer uma alteração no main.c).

Extra: configurando um emulador no Visual Studio Code

Agora  talvez não ache que é necessário configurar mais coisas. Mas vou adiantando que o processo de abrir um emulador e carregar a ROM toda vez que o código é compilado é cansativo a medida que seu conjunto de códigos for ficando cada vez mais complexo e a cada breve alteração devemos ver o resultado. Para isso, a própria extensão do Visual Studio permite configurar um emulador de preferência para que o abra automaticamente após compilar o código. Para isso aperte Crtl+Shift+P e execute o comando "Genesis Code: Set Gens Emulator Command Path" 


Direcione o emulador.exe no Windows ou digite um comando do emulador no Linux. No caso Linux, eu recomendo o multi emulador "Mednaffe" ("baixável" na central de programas do Ubuntu) e no campo acima somente digite "mednafen" (com um f e com o n).

    

14 comentários:

  1. Post bem interessante viu pra quem entende de programar ou tem a curiosidade de conhecer como se faz esse post vale muito pena.

    ResponderExcluir
  2. Eu já tive problema na hora de compilar "+ %GDK%\bin\make -f %GDK%\makefile.gen" dá como objeto não encontrado, eu achei meio confuso na parte de variáveis de ambiente, se você puder me ajudar fico grato

    ResponderExcluir
    Respostas
    1. Olá Dário. O Visual Code não conseguiu "enxergar" suas variáveis. Ao copilar, no shell de comandos do próprio visual studio tenta colocar manualmente: C:\sgdk\bin\make -f C:\sgdk\makefile.gen, ou seja, substituir o %GDK% pelo diretório onde descompactou o SGDK e veja se da certo. Veja também se o Windows encontrou as variáveis, no CMD do Windows coloque "echo %GDK%" e veja se aparece o diretório.

      Excluir
    2. no prompt de comando do windows ele encontra sim o diretório com o comando echo.
      No visual studio digitando ele melhora, só que agora não está aceitando o #include diz que não encontra o genesis.h (se ele é um arquivo eu também não encontrei em nenhuma pasta)

      Excluir
    3. Enquanto busco uma resolução pra este problema com o Visual Studio, como alternativa se quiseres, podes fazer seguinte para compilar a ROM (funcionou aqui comigo):
      - Na variável de ambientes do Windows coloque como variáveis do sistema: GDK com valor C:/sgdk, GDK_WIN com valor C:\sgdk (barra invertida) e na variavel PATH edita e acrescenta %GDK_WIN%\bin.
      - Cria seu projeto normal no Visual Studio;
      - No cmd do próprio Windows, vai até a pasta "scr" no diretório onde está o projeto
      - Digita: %GDK_WIN%\bin\make -f %GDK_WIN%\makefile.gen

      Com isso é para gerar o arquivo "rom.bin" na pasta "out" do seu projeto.

      Espero que funcione.

      Excluir
    4. Assim funcionou mesmo, muito obrigado aí, vou continuar acompanhando suas postagens aqui

      Excluir
  3. Cara, que legal! Seja muito bem vindo, com certeza vou acompanhar os posts!
    Curioso que eu trabalho com programação, aprendi por causa dos videogames, mas mesmo assim eu nunca reservei um tempo pra programar um jogo, sempre começo alguma coisa e paro antes de chegar perto de se tornar algo jogável.
    Muito bacana que vc começou logo com o Mega Drive aqui, meu console favorito. Nunca tentei aprender nada pra ele.
    Vc vai acabar me convencendo a usar o Visual Studio Code finalmente... rs
    Valeu!

    ResponderExcluir
    Respostas
    1. Falta de tempo pra mim é um limitador para fazer algo mais jogável também. Talvez com os posts me anime mais. Obrigado pela força"!

      Excluir
  4. Eai man show seu tutorial, como estão as coisas por ai? Tudo bem com você? Entrei no seu youtube e o canal tá parado, eu entrei com minha conta antiga pra encontrar o pessoal..

    ResponderExcluir
  5. Excelente tutorial, aqui no Linux Mint 20 funcionou tranquilo!

    ResponderExcluir
  6. Obrigado pela postangem. Rodou perfeito no meu Ubuntu e me deu um norte para onde continuar os estudos.
    Tudo de bom pra tu.

    ResponderExcluir