2018/10/25

À conversa com Alberto Simões - autor do livro "Introdução ao Desenvolvimento de Jogos com Unity" da FCA


A FCA deu-nos a oportunidade de conversar um pouco com alguns dos seus autores, e desta vez o escolhido para a rubrica "À conversa com" foi Alberto Simões, autor do livro "Introdução ao Desenvolvimento de Jogos com Unity".


Por que motivo optou pela linguagem C# para o desenvolvimento no livro “Introdução ao Desenvolvimento de Jogos com Unity”?

Embora fosse possível a escolha entre as linguagens C# e UnityScript (uma variante do JavaScript) aquando do início da escrita do livro, já há muito se notava um decréscimo na atenção dada, por parte da Unity, a esta última linguagem. Foi uma linguagem desenvolvida pela Microsoft, a correr sobre .net, inspirada em Java ou JavaScript, mas que nunca teve grande sucesso. A Unity optou por suportá-la inicialmente, dado que seria de mais fácil aprendizagem, uma vez que é uma linguagem não "tipada". Rapidamente surgiram problemas para suportar algumas construções úteis e existentes em C# (como o uso de classes genéricas), o que levou à própria Unity fazer alterações à sintaxe do Java, altura em que passou a ser conhecido por UnityScript. Em todo o caso, recentemente a Unity informou os seus utilizadores de que as novas versões do Unity não suportarão esta
linguagem (algo que já tinha acontecido há anos atrás com a linguagem boo).

Porquê a escolha do motor de jogo em Unity em detrimento de outros motores e quais as suas vantagens?

Sendo que existem vários motores de jogos, as duas principais opções que se encontram disponíveis e com maior número de utilizadores são o Unity e o Unreal. O primeiro é baseado em C# e o segundo em C++, uma linguagem que, embora mais versátil e eficiente, é de aprendizagem mais complicada. Por outro lado, embora o Unreal suporte um modelo de desenvolvimento baseado no conceito de blueprint (uma linguagem visual), o seu uso limita as funcionalidades e potencialidades do motor. Isto leva a que o Unity seja muito mais acessível, quer pelo C# ser uma linguagem de mais alto nível, quer por permitir uma progressão linear, sem necessidade de reaprendizagem.

A quem é dirigido este livro?

O livro foi pensado como uma introdução às funcionalidades do Unity, e não com o objectivo de ensinar a programar. Espera-se que o leitor tenha os conhecimentos básicos de uma linguagem de programação (se possível, da linguagem C#, embora isso não seja um requisito) e que pretenda aventurar-se no mundo dos jogos. Uma vez que o foco é na ferramenta e não na linguagem, será um livro interessante para quem aprende a programar e para quem já programa há vários anos mas que, em ambos os casos, ainda não conseguiu ter um primeiro contacto com o Unity.

A abordagem é baseada num projecto, que será incrementalmente melhorado, e com mecânicas mais complexas, que aos poucos obrigarão a maior complexidade algorítmica. No entanto, todos os extractos de código são comentados e serão fáceis de compreender pelo leitor menos experiente em C#.

Onde e como se pode ter acesso a esta ferramenta?

O Unity é uma ferramenta gratuita e pode ser obtida no sítio web da Unity. Existem versões para Windows e macOS, e está em versão beta uma versão para Linux. A licença do Unity é interessante, já que permite que qualquer programador possa realizar o download da ferramenta, a instale, desenvolva um jogo, e o venda, sem que para isso tenha de ter uma cópia paga do Unity. Apenas quando o jogo criado com o Unity tiver ultrapassado um limite específico de lucro é que o programador é obrigado, legalmente, a adquirir uma cópia. Esta abordagem é interessante para quem se pretende introduzir no mercado dos jogos mas não tem a possibilidade de trabalhar numa empresa: os chamados independent developers ou indie.

Sendo o Unity um motor de jogo genérico, apenas se podem criar jogos simples ou existe também a possibilidade de fazer algo mais complexo?

O Unity é um motor genérico, com suporte para jogos 2D e 3D. As funcionalidades que apresenta são suficientes para a criação da maior parte dos jogos que se encontram no mercado. Mas, havendo necessidade de outras funcionalidades não disponíveis, existe a possibilidade de adicionar plugins ou packages que implementem essas mesmas funcionalidades. Exemplo disso são os Kits de Realidade Virtual ou de Realidade Aumentada, que na sua maioria não são nativamente suportados pelo Unity, mas para os quais existem bibliotecas preparadas para poderem ser incluídas facilmente no Unity. É deveras surpreendente analisar a lista dos jogos desenvolvidos em Unity actualmente no mercado, pela sua diversidade e complexidade. Um exemplo paradigmático é o Cities Skylines, publicado em 2015, altura em que o Unity ainda apresentava vários problemas de eficiência.

Quais são os tipos de jogos mais comuns criados com o Unity?

Não é uma pergunta fácil de responder, por várias razões. Por um lado, porque não existe uma lista exaustiva dos jogos desenvolvidos em Unity, e por outro, porque muitas vezes o tipo de jogo não é dependente da ferramenta, mas do perfil do programador, ou da aposta que a empresa que o desenvolveu pretende realizar. Por outro lado, não é fácil definir o que é um tipo de jogo. Em todo o caso, parece-me que uma grande parte dos jogos criados com Unity são para dispositivos móveis, pela facilidade com que se conseguem distribuir usando as respectivas lojas online.

Uma vez que rapidamente surgem novas versões do Unity, é possível actualizar a ferramenta enquanto se está a meio do processo de criação de um jogo?

É possível actualizar a ferramenta, já que o Unity, automaticamente, faz as actualizações necessárias, quer a nível de código, quer a nível de informação sobre as cenas, objectos, etc. No entanto, nem sempre é uma tarefa fácil. A Unity não tem tido complacência com os seus utilizadores, e realiza alterações à forma de funcionamento do Unity frequentemente. Isto leva a que a documentação nem sempre esteja actualizada, e obriga a que os programadores façam actualizações constantes ao seu código quando actualizam a ferramenta. É uma daquelas situações em que a resposta será “sim, é possível”, mas “não é recomendado”, a não ser que seja mesmo necessário, pelo tempo que se poderá vir a perder a fazer adaptações ao jogo.

Quais são os maiores desafios na utilização desta ferramenta?

Mais que um desafio na utilização do Unity, parece-me que a própria área de desenvolvimento de jogos é muito desafiante. O processo de desenvolvimento de um jogo é complicado desde o início, já que não há uma fórmula mágica que nos permita saber qual o tipo de jogo que terá mais sucesso no mercado. Logo, o processo de encontrar uma ideia original que tenha lugar no mercado é, talvez, o maior desafio.
Um outro desafio é a multidisciplinariedade necessária. Existem diferentes tipos de competências necessárias, desde a apetência para a arte, a programação, a estética, a produção de som, entre outras. Todos os membros de uma destas equipas podem (e devem) utilizar o Unity, já que este permite que cada um possa dedicar-se à sua área. Ora, numa ferramenta assim tão versátil,
o maior desafio será, com certeza, a capacidade de ser multidisciplinar.

E qual será o futuro da ferramenta Unity?

Neste momento o Unity está numa posição dominante, dada a maior dificuldade em aprender a utilizar o Unreal Engine. Existem outras (grandes) empresas a prepararem motores de jogos, como o Lumberyard da Amazon. No entanto, não existe ainda uma comunidade por trás destes novos motores, sendo que para o Unity existem muitos recursos e documentação. Também não me parece que, de um dia para o outro, estas novas opções consigam tirar a posição dominante ao Unity. Poderão servir, e assim espero, à criação de uma sã concorrência, que permita que a cada um dos produtos seja capaz de melhorar.

E é tudo, o nosso obrigado pelo tempo dispensado, e ficamos aguardar pelos seus próximos livros. :)


Sobre o autor:
Alberto Simões - Doutorado em Processamento de Linguagem Natural, tem desenvolvido a sua actividade docente no Instituto Politécnico do Cávado e do Ave, onde lecciona Inteligência Artificial e tecnologias ligadas ao desenvolvimento de jogos digitais.


Para quem chegou até aqui, temos uma surpresa. Temos para oferecer dois exemplares do livro "Introdução ao Desenvolvimento de Jogos com Unity" e para te habilitares a ganhar um deles só tens que participar preenchendo o seguinte formulário:

Passatempo encerrado: os vencedores foram:

  • Paulo Jorge das Neves
  • Gustavo Vieira


Fica atento aos próximos passatempos.

1 comentário: