$
pwd

Índice

Que tal criar um jogo?

Recentemente um amigo meu começou a fazer um curso de Unity e durante uma conversa nós ficamos muito empolgados em criar um jogo.

Eu fiquei muito empolgado em criar um jogo em C, ele (Rafael) quer desenvolver o jogo em Unity, eu não o julgo muito por isso, mas eu não sou muito familiar com C#, portanto não eu gostaria de seguir com o Unity.

Plano

O meu plano é aprender como um jogo funciona, todos os passos da criação, enfim, TUDO.

Não só isso, mas gostaria de criar um jogo 100% FOSS (Free and Open Source Software).

Engines

Após algumas pesquisas a respeito de engines eu não obtive tanto sucesso quanto eu gostaria.

Eu encontrei algumas engines Open Source como a Source, utilizada pela Valve para criar Counter Strike, Portal e Half-Life.

Também encontrei a engine chamada Godot, escrita em C++, mas utilizam uma sintaxe própria para desenvolver os jogos, chamada GDNative.

Portanto, eu decidi seguir por conta própria, irei criar o meu jogo do ZERO criando em paralelo a engine.

DIY

Há algumas vantagens em criar a sua própria engine, listarei algumas abaixo:

Enfim, TOTAL CONTROLE DE TUDO, até das falhas.

E eu também estou ciente que este "Controle total" pode ser uma desvantagem também, pois terei que estudar tudo a respeito de jogos como gerenciamento de entidades, colisões, câmera, gerenciamento de diálogos e outras coisas.

Mas como o meu foco é aprender como um jogo funciona, esta desvantagem se torna uma dolorosa vantagem.

SDL2

Após mais pesquisas, assisti no Youtube a palestra Game Development with SDL 2.0 (Steam Dev Days 2014) e descobri ser possível desenvolver jogos utilizado a biblioteca SDL2, que eu já havia utilizado para simular a biblioteca gráfica para sistemas embarcadas chamada LVGL.

Com a SDL2 eu criava um display virtual para poder demonstrar os elementos gráficos, sem a necessidade de ter que gravar o firmware no dispositivo toda vez que eu fizesse uma alteração.

A primeira coisa que me passou pela cabeça é: porque não criar um jogo do zero utilizando a biblioteca SDL2?

E é daqui que eu partirei.

Que jogo?

Mas aí me veio a pergunta: que jogo? Como eu posso criar um jogo, se eu não faço nem ideia do que eu quero construir.

E conversando com o meus amigos que estabelecemos algumas "restrições" para a ideia do jogo. São elas:

Com isso eu ainda tive a ideia de adicionar elementos naturais da fauna e flora brasileira. Como as árvores, plantas e animais comuns no Brasil (não necessariamente nativos).

Ferramentas de desenvolvimento

Abaixo listarei algumas ferramentas que pretendo utilizar durante o desenvolvimento do jogo.

Gráficos

Utilizarei a biblioteca SDL2 - Simple DirectMedia Layer.

Linguagem de programação

Será utilizado a linguagem de programação C. Porém, usarei Python e Shell Script para escrever algumas ferramentas, ou quando for conveniente.

Análise estática de código

Como programarei o jogo em C, e utilizarei o compilador gcc, irei utilizar a flag -fanalyzer para realizar a análise estática do código.

Detalhes de como a funciona a análise estática do gcc pode ser vista em: Static analysis in GCC 10 | Red Hat Developer.

Descrições completas sobre os códigos de error/warning podem ser encontradas no site https://cwe.mitre.org.

Informações a respeito de como utilizar a flag -fanalyzer está no site da documentação do GNU/gcc;

UI

Para gerar a UI do jogo eu irei utilizar a biblioteca Nuklear.

Outros links:

Cronograma

Não existe um cronograma, eu tenho apenas uma vaga ideia do que quero fazer. A única coisa que eu tenho certeza é que tenho tempo de mudar de ideia.

Neste blog eu registrarei as minhas aventuras no mundo do desenvolvimento de jogos.

Até logo!!!

Updates