Pular para o conteúdo principal

Desenvolvimento de jogos no Linux, é possível? (Sim!)

Para quem não leu meu outro artigo sobre a possível acensão do Linux como futura plataforma desktop nº 1 para games, aqui está o link. Vale a pena conferir! 

Pois é pessoal! Chegou a hora de falarmos sobre desenvolvimento de jogos no Linux! Como no artigo anterior, não vou tratar muito sobre detalhes mais técnicos de Sistemas Operacionais (apesar de acabar comentando algo), na verdade o foco deste artigo é te mostrar que é possível sim desenvolver jogos no Linux e que você tem todas as ferramentas que precisa para fazer isso, e o melhor de tudo, sem pagar nada! (vale lembrar que nem todo software Open Source é gratuito, mas no geral você não precisa comprar para utilizá-lo)

Caso você ainda não saiba, o Linux já é a plataforma mais utilizada para jogos mundialmente! (Segundo pesquisas da WePC e da AppDeveloperMagazine
Isso aconteceu graças aos dispositivos móveis, principalmente ao tal do "Seu Android" que trouxe consigo uma forte onda de "gênero" conhecida como jogos Casuais.
No Brasil, a situação não é diferente. A PGB (Pesquisa Game Brasil) de 2018, mostra que, desde 2017, o número de brasileiros que jogam videogames vem cada vez mais aumentando, e a plataforma que mais utilizam para isso continua sendo os aparelhos mobiles.
De qualquer forma, é indiscutível que, até então, no quesito desktop o Windows é quem sai largamente na vantagem. Porém, isso não quer dizer que o desenvolvimento de jogos para outras plataformas ou até mesmo para o próprio Windows precise ser feito no sistema do tio Bill!
E pensando no cenário em que mais pessoas vêm migrando para o Linux, por N motivos, e que o crescimento da plataforma em games é evidente, porque não fazer um artigo sobre como desenvolver jogos nos desktops Linux? E é disso que vamos conversar hoje!


Mas, qual sistema Linux devo escolher?

Realmente essa não é uma decisão muito fácil, isso porque atualmente existem centenas de distribuições Linux no mercado! Sem brincadeira. Por isso, se você não sabia que Linux na verdade não é o sistema operacional em si, mas sim o Kernel dele, pode se surpreender com essa quantidade de sistemas. E é basicamente como uma árvore genealógica.
Por exemplo: O Linux deu origem ao: SLS / Slackware, Debian, RedHat, Gentoo, Android e mais alguns outros sistemas. Os três primeiros fazem parte dos mais antigos, são os "avôs" do mundo Linux. Mas justamente por serem sistemas de código aberto/livre, começaram a surgir derivações deles. Então, do Debian, vieram: Libranet, Lindows, Knoppix / Kurumin, Ubuntu, além de diversos outros. Assim, a história vai se repetindo e, pra finalizar, do Ubuntu surgiram: Edubuntu, Kubuntu, Lubuntu, Xubuntu, Mint e mais outra porrada de distribuições. (e nisso não foi nem a metade dos sistemas que existem! hahah)
Isso nos trás à pergunta deste tópico, qual deles devemos escolher?

Na verdade, não existe uma regra, mas o ideal é você escolher sistema Linux que lhe agradar mais e principalmente que atender melhor os seus objetivos. Justamente por esta plataforma possuir uma gama enorme de sistemas, os desenvolvedores de programas/aplicativos, na maioria das vezes, não conseguem dar conta de programá-los para várias distribuições diferentes. É por isso que, por exemplo, Mac e Windows levam uma certa vantagem sobre os sistemas Linux. Já que não possuem diversos sistemas, é muito mais fácil para empresas de terceiros programarem e darem suporte para aqueles dois. Mas não se desespere, como eu disse antes, escolhendo uma distro Linux que lhe atender bem, você não terá muitos problemas.

Agora, como saber se a distribuição me atende bem? Alguns fatores são muito importantes para se levar em conta:
- Base de sistema sólida e estável: Geralmente, sistemas que não possuem uma grande equipe de desenvolvimento por trás, acaba não conseguindo dar conta de deixar o sistema totalmente estável. Com isso podem aparecer diversos bugs de interface ou pior ainda, de kernel. Por esses motivos é sempre bom pesquisar se o sistema possui uma boa equipe por trás, como no caso da Canonical que é responsável pelo Ubuntu. 
- Comunidade grande e ativa: Um dos melhores lados do sistema operacional ser de código aberto é que qualquer pessoa pode acessar o seu código. Isso faz com que várias pessoas, inclusive de fora da empresa responsável, possam testar o sistema e corrigir os bugs que ele apresentar ou reportar esses bugs à empresa. Outro ponto relevante deste item é que sistemas com esse tipo de comunidade possuem muito mais respostas à diversos problemas, então caso você esteja com algum, ao entrar em fóruns sobre o sistema, basta pesquisar se alguém já teve um problema parecido ou pedir ajudar iniciando um novo tópico. Se a comunidade é ativa, certamente não demorará  para alguém lhe responder com alguma possível solução. 
- Popularidade e acervo de apps: Provavelmente o fator chave desta lista. Não adianta você ter todos os requisitos anteriores se o sistema que você escolheu não roda os aplicativos que você precisa para trabalhar! Isso é algo que infelizmente, ou não, deve-se em grande parte à popularidade do sistema. O Ubuntu por exemplo, já foi a distribuição Linux mais utilizada há alguns anos atrás e perdeu pela primeira vez para um de seus "filhos", o Mint. Neste cenário o Ubuntu não sai perdendo, mesmo deixando a posição de 1º lugar, justamente porque o Mint é baseado em Ubuntu, então os aplicativos de terceiros que funcionam no Mint também funcionam no Ubuntu e vice-versa. Desse modo, o Ubuntu, e seus derivados, é um dos alvos principais para o lançamento e otimização de softwares de terceiros. (E para ver quais sistemas estão sendo mais utilizados no momento, confira no site DistroWatch)


Beleza, escolhi o sistema! Agora é só baixar o pacote adobe e começar a trabalhar nos gráficos do meu jogo, certo?

É... antes fosse hahah
Infelizmente a Adobe, Autodesk, entre outras empresas, ainda não desenvolveram versões da maioria seus produtos para o mundo Linux. Escrevi como exemplo os programas para área gráfica, mas isso também vale para as outras áreas... O que é uma pena, com certeza. Porém! Existem vários softwares OpenSource que substituem praticamente todos os softwares que você utiliza no Windows ou Mac, e não apenas substituem como às vezes chegam a ser melhores que os softwares pagos! (Claro que isso é ponto de vista de cada um, mas mesmo assim não deixam de ser excelentes programas!)
Obviamente que, ao encarar um programa novo, na maioria das vezes, requer um aprendizado novo. Mas isso faz parte da evolução, sair da comodidade e não se prender à somente uma ferramenta, afinal nunca se sabe quando uma oportunidade única pode surgir, e se ela tiver como pré-requisito aquela ferramenta que você se recusou a aprender... Aí meu amigo, podes ter perdido a oportunidade de ouro.
Se você se interessou nesse assunto (que a essa altura já deve estar interessado mesmo, afinal já leu até agora hahaha), vou citar aqui algumas ferramentas que podem substituir muito bem os programas do Windows! Começando pelo tópico já citado:

- Gráficos: Essa área podemos separar em 2 partes principais, desenho/pintura e modelagem 3D.
  • Desenho e Pintura (também se inclui os programas para animação): 
    • Bem, a primeira opção (que todos já conhecem) é o Gimp, que apesar de sofrer certo preconceito pelos usuários do Photoshop, é uma ferramenta bem completa. Inclusive, se você é um desses que enxerga o Gimp com maus olhares, existe uma "DLC" feita para ele que o deixa com a aparência e atalhos do Photoshop! Brincadeira a parte, esse patch existe mesmo e se chama PhotoGimp (feito por brasileiros inclusive). Originalmente ele foi desenvolvido para a versão 2.10 do Gimp, onde você precisava ter esta versão instalada além de instalar o patch, porém agora não é mais necessário ter o primeiro programa instalado, apesar de ainda continuar sendo um Gimp com apenas a interface diferente. Para quem está migrando de plataforma, com certeza é uma opção que facilitará bastante essa transição.
    • Em seguida temos o Krita. Uma ferramenta muito boa também, utilizada não somente para ilustrações como também animações! Vale a pena testá-lo!
    • MyPaint, possui uma interface bem minimalista em comparação aos outros programas, porém não deixa de cumprir o seu papel em relação a desenhos e pinturas. Inclusive pode ser uma boa opção se você já está procurando uma ferramenta que não tenha uma interface cheia de menus.
    • Outro programa que todos já conhecem, porém voltado para vetores (substituindo o Corel ou o Illustrator) é o InkEscape. Ainda não utilizei muito essas ferramentas, mas sinceramente não acho que exista muita diferença entre elas. Então fique tranquilo que vetorizar no Linux também é possível.
    • Agora, existe uma ferramenta nessa lista 2D que pode ser uma surpresa para muitos como foi para mim, que é o tão famoso Blender! Sim, Blender também pode ser utilizado para desenhos e animações! Inclusive é uma ferramenta bem completa e poderosa nesse sentido, até porque, por ser um programa de modelagem 3D você pode misturar a sua animação entre um ambiente 2D e 3D, tudo no mesmo programa! Legal, não?
  • Modelagem 3D:
    • Acabamos a lista anterior com ele e vamos começar essa com ele também hahah. Para substituir 3DSMax, Cinema4D, entre outros programas de modelagem, o Blender. De fato essa é uma das ferramentas mais poderosas do time de softwares OpenSource, não há como questionar. Mas, o que pode ser complicado, principalmente no início, é a questão dos atalhos. O Blender possui diversos atalhos e muitos deles são difíceis de lembrar no começo, porém a medida em que você for se acostumado vai notar que a utilização deles agiliza bastante o seu fluxo de trabalho.
    • Outra opção muito conhecida no mercado é o Autodesk Maya! Sim, o Maya possui uma versão para Linux, que ao contrário da grande maioria dos outros softwares, cobra um valor mensal pela utilização do software. O que não é algo errado, pelo contrário, existem diversos programas para Linux que também cobram um valor pela utilização (como disse anteriormente, não é porque um software é OpenSource que ele ou seus programas devem ser graça) e ter o Maya nessa lista é algo muito positivo com certeza.
    • Mais uma possível surpresa para quem não acompanha o mundo Linux, é que existem versões do pacote Substance (Painter, Designer,...) também para a plataforma pinguim! Assim como o Maya, são softwares pagos, mas que provavelmente todos que trabalham na área conhecem ou já ouviram falar desses programas de texturização.
    • Houdini, outro pacote bem completo que não só trás um modelador 3D como também um programa especialista em Visual FX. Não cheguei a verificar muito na questão de licenças, mas a maioria dos programas também são pagos. Existem versões gratuitas, porém provavelmente para uso não comercial.
    • Além disso existem muitos outros softwares de modelagem 3D, incluindo os gratuitos, porém no fim das contas nenhum deles é tão completo quanto o Blender.
- Composição Musical:
  • Sabemos que o programa mais conhecido nessa área para Windows é o FL Studio. Magix e Cubase também possuem sua relevância. Mas como queremos programas para Linux, aí vai algumas opções:
    • LMMS, esta ferramenta, e a próxima, talvez sejam as melhores gratuitas para criação de músicas. O LMMS possui versões para as 3 plataformas, Linux, Windows e Mac, além de ter uma interface amigável e conter vários plug-ins, inclusive os VSTs. Mas, ao que parece, não oferece suporte à exportação de arquivos em formato MIDI.
    • Ardour, como dito na descrição do programa anterior, outra ferramenta gratuita extremamente completa, tanto na questão de recursos quanto na amplitude de plataformas da qual oferece. Infelizmente o suporte a MIDI também parece não estar presente aqui e sua interface é mais bruta se comparada com a do LMMS.
    • Bitwig, possivelmente a interface mais amigável entre todos da lista e possui a implementação de um recurso muito legal e prático que é uma interface modal em blueprint. É um software pago com diferentes licenças e preços. Também conta com versões para Linux, Windows e Mac.
    • Reaper, basicamente tudo o que os outros programas possuem, exceto a interface em bluepint. A versão nativa para Linux, segundo os desenvolvedores, ainda está em fase experimental, mas já vi comentários em fóruns dizendo que funcionou sem problemas. Também é um programa pago.
- IDEs de Programação:
  • IDEs para programação se têm aos montes em qualquer plataforma, para todas as linguagens. Assim, vou citar algumas das mais utilizadas ou completas para o Linux (além das clássicas: CodeBlock, NetBeans, AndroidStudio, etc):
    • Começando pela provável mais famosa na linguagem de CSharp (C#), o Visual Studio Code, uma versão gratuita da IDE da Microsoft. Ela é bem leve, muito mais do que suas irmãs, como a Community, e possibilita a programação não apenas em C# como também C++, CSS, Go, HTML, JAva, JavaScript, JSON, PHP, Python, PoweShell, entre outras. 
    • Geany, uma ferramenta muito leve e com vários recursos. Dentre as linguagens disponíveis temos: C, Java, PHP, HTML, Python, Perl, Pascal, etc.
    • Brackets, voltada para o desenvolvimento web, possui uma interface muito bonita e agradável. 
    • Se você não gosta do Visual Studio para programar em C#, temos no Linux também o MonoDevelop, que suporta os "3 Cs" (C, C++, C#), além de outras linguagens baseadas em .NET . 
    • SublimeText, é a única IDE paga desta lista (até o momento). Possui uma interface bonita e talvez seja a ferramenta com mais linguagens disponíveis, além das já citadas anteriormente nessa lista, também possui suporte a: Haskell, LaTex, Ruby, SQL, XML, Groovy e muito mais.
- Motores de jogos:
  • Esse é com certeza um item extremamente importante, afinal se você gosta de uma engine e ela só está disponível em sistemas Windows ou Mac, a mudança para Linux já fica mais complicada. Mas, existem sim boas engines que possuem sua versão para a plataforma pinguim, como por exemplo:
    • O primeiro dessa lista é um dos mais conhecidos atualmente, o Unity3D, que conta com uma enorme quantidade de tutoriais, assets e suporte em fórum. A linguagem utilizada por ele é o C# e também havia suporte para JavaScript e Boo, mas não sei se as versões mais recentes ainda dão suporte à elas. Uma coisa que posso adiantar aqui, é que não é muito fácil fazer a Unity funcionar 100% no Linux, principalmente em relação aos plug-ins de comandos para o Visual Studio. Outro fator muito chato que também ocorre (até o momento) é que ao instalar uma versão antiga do motor, você não consegue instalar alguns módulos que são necessário para a exportação do jogo através  do Unity Hub, como no caso do NDK, JDK e SDK para Android.
    • Para próxima opção, temos mais uma engine muito popular que é a Unreal. Outro motor que dispensa apresentação e que contém o mesmo nível de excelência em recursos que a Unity, em questões de suporte e material. Sua forma de programação é através da linguagem C++ e/ou pela interface blueprint. Um detalhe é que a instalação do Unreal pode não ser das mais fáceis para quem não conhece muito sobre o terminal do Linux. Infelizmente ainda não foi disponibilizado uma opção de instalação em forma de binário (".appimage",".exe", ".msi"...) para a plataforma, mas tem como você criar um executável manualmente.
    • Um motor que tem ganhado bastante força, justamente por ser OpenSource e 100% gratuito, é o Godot! Com ele é possível você criar jogos tanto em 2D quanto 3D, assim como os anteriores, além de possuir versões para os 3 sistemas (Linux, Windows e Mac). As linguagens suportadas são o C++, GDScript (linguagem própria), C# e Visual Scripting. Um grande ponto, em minha opinião, é que o Godot trás a sua própria IDE que na verdade fica dentro da engine, então não há necessidade de baixar uma outra ferramenta e nem de se preocupar com ter de fazer os plug-ins funcionarem.
    • E por último, mas não menos importante, parece que também é possível instalar o Cocos2D no Linux, mas você precisará instalar outros pacotes junto com ele. É um motor para jogos 2D, como o nome já diz, e suporta as linguagens: C++, C#, Lua e JavaScript. Também pode não ser a instalação mais fácil se você está iniciando agora na plataforma.

Considerações Finais

De qualquer forma, caso algum programa que você utilize seja insubstituível, ou se você não quer experimentar uma nova ferramenta, ainda existe a possibilidade de tentar executar os programas para Windows no seu Linux através do Wine, que é uma espécie de interpretador de códigos da Microsoft.
E se você souber de mais algum programa que ache fundamental entrar nesse artigo, ou deseja compartilhar algum conhecimento, dúvidas e sugestões, fique à vontade para comentar!
Em breve trarei outro artigo ensinando como instalar o Unity3D no Ubuntu! Então fiquem ligados!
 
Referências

HARRIS, Richard. The most popular gaming platform. 2019. App Developer Magazine. Disponível em: https://appdevelopermagazine.com/the-most-popular-gaming-platform,-and-why-cloud-gaming-sucks/. Acesso em: 12 maio 2020.
PENILHAS, Bruna. Pesquisa indica que 75,5% dos brasileiros consomem jogos eletrônicos: mobile permanece como a plataforma mais utilizada. Mobile permanece como a plataforma mais utilizada. 2018. IGN Brasil. Disponível em: https://br.ign.com/brasil/61785/news/pesquisa-indica-que-755-dos-brasileiros-consomem-jogos-eletronicos. Acesso em: 12 maio 2020.
PGB. Pesquisa Games Brasil. 2019. PGB. Disponível em: https://www.pesquisagamebrasil.com.br/. Acesso em: 12 maio 2020.
NEWBIE-TECH. Linux Distro Popularity Rankings [ 2002 - 2019 ]. 2019. Disponível em: https://www.youtube.com/watch?v=LmoAJR-0oas. Acesso em: 12 maio 2020.
WEPC. 2020 Video Game Industry Statistics, Trends & Data: looking for the latest video game industry statistics & trends? we've got you covered.. Looking for the latest video game industry statistics & trends? We've got you covered.. 2020. WePC. Disponível em: https://www.wepc.com/news/video-game-statistics/. Acesso em: 12 maio 2020.

Comentários

Postagens mais visitadas deste blog

O que é Game Dev.?

Game Dev. comumente pode significar duas coisas: Game Developer (Desenvolvedor de Jogo) ou Game Development (Desenvolvimento de Jogo). Claro, o significado deste deve ser interpretado conforme o contexto em que está inserido.  No caso do nome deste blog , "Café com Game Dev.", foi escolhido com o intuito de  transmitir a ideia de um "papo"/"prosa" descontraída sobre desenvolvimento de jogos.  Importante destacar que a palavra  Game Developer não significa a mesma coisa que Game Designer , e que por sua vez, nenhuma das duas significa também o mesmo que Design Gráfico. Farei um outro artigo sobre a moda dos " Design e Designers " que são utilizados para tudo hoje em dia, porém aqui vou me atentar ao Game Dev . Mas, o Game Developer  pode ser qualquer profissional do qual trabalha com desenvolvimento de jogos, não importando a sua área profissional. Ou seja, pode ser o programador, o artista gráfico, artista sonoro, compositor m

O que significa Gameplay e Jogabilidade (Playability)?

Pera aí Rafael, não é a mesma coisa? Na verdade, existem vários estudos sobre este assunto e ainda não se chegou em uma definição concreta, sem brincadeira. Isso quer dizer que cada um pode interpretar o significado destas palavras do jeito que achar melhor. Mas a fim de estabelecer uma opinião conjunta, seria interessante começarmos a pensar da mesma forma, estipular um significado. Para isso, claro, precisamos ter uma base sólida em nossas afirmações. Não estou dizendo que a classificação a seguir é a melhor, mas , acredito que seja interessante a levarmos em consideração. Compartilho em partes com a ideia de Sato e Cardoso¹, Aguiar e Battaiola², e Rouse III³. A partir deles pude formar a ideia de que: Gameplay : resume-se ao jogo em si. Explicando melhor, são todas as partes do jogo (gráficos, programação, música, animação, enredo, etc.) interagindo entre si e todas as partes do jogo interagindo com o jogador. A palavra que fica em destaque aqui é a interação (Rouse II

Unreal Engine 5 vai desbancar a concorrência? - Entenda porque o novo motor da Epic Games está causando Hype entre os desenvolvedores. -

Foto retirada do trailer de apresentação da Unreal 5 Dia 13 de Maio desse ano, a Epic Games surpreendeu muita gente com o trailer de uma demo jogável para o PlayStation 5 . Esse trailer, mostra um pouco sobre os novos recursos da futura engine da empresa e causou um certo alvoroço na comunidade de games . Para entendermos o porquê desse hype , vamos tentar analisar o que é prometido e demonstrado no trailer, e observar o que temos atualmente. Trailer da Unreal5 , publicado no Youtube pelo GameSpot O grande apelo desta nova versão está na parte gráfica, da qual a empresa afirma buscar uma qualidade fotorealística muito próxima do que se vê no cinema. Ou seja, gráficos de cinema com um render em tempo real, será que já é possível mesmo?  Bem, vamos começar falando do seu novo sistema de luz, o Lumen . Este é um sistema similar ao Ray Tracing , que permite o artista criar cenas mais fluidas, como por exemplo alterar o ângulo do sol para uma hora do dia escolhida, influenciando assim a