Posts tagged: unity

início do meu projeto de jogo para TCC

Este ano irei terminar a minha pós-graduação em Games: Produção e Programação no SENAC, e tenho que fazer o meu Trabalho de Conclusão de Curso (TCC), quer será uma versão demo de um jogo. O projeto do TCC começou ano passado, quando fiz um Game Design Document (GDD) sobre uma idéia de jogo que tive, porém descartei esta idéia e este ano comecei a trabalhar em outra mais simples.

Embora eu não tenha finalizado o novo GDD, defini algumas coisas importantes para o início do meu projeto: o tipo de jogo que pretendo fazer, qual público-alvo desejo atingir e em qual plataforma irei focar. A idéia inicial era fazer um jogo em 3D, porém após pensar muito, decidi fazer um jogo de plataforma 2D para PC, com elementos de aventura e puzzles, focado no público de jogadores hardcore, porém também atendendo aos jogadores casuais (como jogos de plataforma geralmente fazem). Porém, para chegar nesta definição eu precisei passar por alguns meses pesquisando tecnologias.

Em outro post irei comentar mais sobre o processo de criação de um GDD,  além de detalhar mais o que estou fazendo. Neste post irei focar a primeira etapa que um desenvolvedor tem que definir, após ter conhecimento da idéia inicial do jogo: que tecnologia utilizar para programar o jogo. Abaixo estão algumas tecnologias que pensei em utilizar, porém por algum motivo desisti, até chegar à que realmente irei utilizar para o meu projeto de TCC:

  • Unity: Uma poderosa Game Engine que tornou-se gratuita no final do ano passado, possibilitando que desenvolvedores independentes tivessem acesso a uma ferramenta de desenvolvimento de jogos profissionais. Em meu post sobre a Unity fica bem claro que é uma excelente Game Engine, inclusive quando escrevi aquele post estava pensando em utilizá-la no meu TCC, porém desisti. O motivo: a Unity é incrível, porém para fazer um bom jogo nela eu iria precisar de um modelador 3D desde o início do projeto, e eu estou fazendo o projeto sozinho e não sou modelador.
  • C++/SDL/OpenGL: Após desistir de uma Game Engine, parti para uma das opções mais voltadas para programação, decidi tentar a combinação da linguagem de programação C++ com SDL, que eu aprendi na pós, e OpenGL para os gráficos 3D. Esta combinação possui vantagens, como a possibilidade de compilar para Windows e Linux. C++ é uma das linguagens mais utilizadas para programação de jogos, e OpenGL é muito utilizado em programação de jogos para consoles. Eu havia escolhido estas tecnologias por que eu iria aprender muito do que eu preciso para desenvolver jogos profissionais, porém desisti por um simples motivo: no momento eu não tenho muito tempo disponível para aprender a trabalhar com OpenGL, e eu não quero fazer algo mal feito.
  • C++/DirectX: Aprender OpenGL era complicado e iria exigir muito tempo, então resolvi tentar utilizar C++ com DirectX, pois assim eu ainda estaria aprendendo mais sobre C++, além de eu já ter feito algumas coisas com DirectX na pós-graduação. Comecei a planejar o desenvolvimento de pesquisar as coisas seriam necessárias para o desenvolvimento de um game em 3D. Utilizando DirectX eu ficaria preso ao desenvolvimento para PC, porém não considerei este um problema, já que é um mercado bem amplo. Porém, comecei a ficar um pouco preocupado ao pensar em um simples detalhe: e os modelos 3D? Comecei a pesquisar alguns sites que possuem modelos gratuitos e pagos, eu até estava disposto a comprar modelos não muito caros, porém acabei desistindo de vez de fazer um jogo 3D, pois embora eu estivesse com uma tecnologia que eu conheço um pouco melhor, eu voltei ao problema que me fez desistir da Unity: pode ser que eu termine a programação do jogo, mas não tenha modelos 3D legais para utilizar.
  • XNA: Desde o início eu pensei: se eu ficar desesperado, largo tudo e faço com XNA, pois tenho 2 jogos feitos com XNA em meu portfólio, além de participar de um projeto com XNA na Octopus Team. Depois de pensar muito sobre o meu jogo, sobre a verdadeira razão pela qual eu quero fazê-lo, eu decidi optar por algo que eu conheço bem e é simples de utilizar, para poder focar em fazer um jogo bom, ao invés de gastar muito tempo aprendendo uma tecnologia. Eu poderia até conseguir fazer algo com as tecnologias anteriores, e iria aprender coisas novas, porém não acho que o jogo iria ficar bom. Este motivo também me fez optar por utilizar gráficos 2D e fazer um jogo de plataforma, pois desenhos mais simples eu consigo fazer ou encontrar alguém para fazer.

Todo este processo de decisão de qual tecnologia eu iria adotar para o meu projeto custou caro: cerca de 3 meses de pesquisa e nenhum desenvolvimento. Embora eu tenha perdido todo este tempo, sendo que se eu tivesse pensado em utilizar XNA desde o início hoje eu já estaria bem adiantado no desenvolvimento, isto serviu para aprender diversas coisas em relação ao que priorizar em um projeto.

No início eu queria fazer um jogo para meu portfólio, por isso escolhi tecnologias que eu não conheço e acho importantes para eu aprender, porém agora estou com outra visão: não quero apenas mais um trabalho no meu portfólio, eu quero criar um produto que tenha chances reais de ser publicado e comercializado, e que talvez isto seja o início para eu abrir uma empresa.

Embora eu tenha escolhido uma tecnologia simples, e um modelo de jogo simples, vou focar no que realmente importa: divertir e entreter os jogadores com um jogo muito bom! Portanto, neste projeto o Game Design vai ser muito importante. Devido a esta importância eu ainda não finalizei muitas definições, pois quero fazer o melhor que puder. O que começou como uma idéia para um simples projeto de TCC, hoje se tornou o prelúdio de um sonho.

game engine unity

Unity

No final do ano passado, duas grandes game engines ganharam versões gratuitas, a Unity e a Unreal Development Kit (UDK). Talvez estas foram as melhores notícias para os desenvolvedores independentes e estudantes no em 2009, pois agora podemos desenvolver jogos utilizando game engines profissionais. Pra mim foi muito bom, pois poderei utilizar uma destas game engines no meu TCC neste ano.

Na pós-graduação, em uma aula de Game Engine, meu grupo fez uma apresentação da Unity e um tech demo. A Unity tinha uma versão indie, que custava $200, que não é algo caro para uma pequena empresa, mas para quem quer apenas estudar isto não vale muito a pena, e foi esta versão que ficou gratuita. Existe também uma versão Pro, com muitas outras coisas a mais pelo preço de $1499.

Interface da Unity

Interface da Unity

Minha primeira coisa que pensei ao abrir a Unity foi “certo… e agora?”. Para quem nunca viu, tudo pode parecer confuso, mas lembra bastante uma interface de um software de modelagem 3D como o Softimage XSI. Estudando a interface da Unity podemos aprender muitas coisas, pois quase tudo é intuitivo. O que realmente é necessário é ter uma noção de ambientes 3D e estudar algumas técnicas utilizadas em modelagem, isto pode facilitar bastante.

Com a versão gratuita, podemos desenvolver jogos para plataforma Windows, MAC e Web (para Web é necessário instalar um plugin, semelhante ao flash). Existem complementos para a versão Pro que permite o desenvolvimento de jogos para iPhone e Wii. A programação pode ser feita utilizando C# (a Unity é baseada no Mono), JavaScript ou Boo (uma variação de Python, feita por um brasileiro).

Unity no iPhone

Unity no iPhone

Podemos criar modelos 3D em diversos softwares e importar na Unity,de uma maneira incrivelmente fácil e simples: basta colocar o modelo no diretório da “Assets” do seu projeto, que ela automaticamente adiciona dentro do projeto, nem é necessário abrir e fechar o projeto. Isto é tão útil que podemos alterar o modelo salvo em Assets e visualizar o resultado dentro da Unity.

Apensar de ser um ambiente 3D, podemos criar um jogo em 2.5D, como o este exemplo de tutorial de jogo de plataforma. Outro ponto forte desta game engine é a utilização de audio e vídeo (vídeo só na versão Pro) nos jogos, da mesma maneira simples e prática que importamos um modelo 3D.

Estas são algumas das features da Unity:

  • Editor integrado: Fácil utilização, pode ser customizado, funciona com drag n’ drop
  • Gráficos: Renderização em tempo real, sistemas de partículas, suporte a DirectX e OpenGL
  • Importação de modelos: Aceita diversos formatos, com suporte a texturas, bones e animações
  • Publicação: Windows, Mac, Web, Wii e iPhone
  • Shaders, Luz e Sombra: Efeitos prontos, elementos naturais, editor de shaders
  • Rede: Suporte a sincronização, acesso remoto e conexão
  • Física: Utiliza a PhysX da Nvidia, e possui recursos específicos, como componente de física para rodas, por exemplo
  • Programação: Suporte a C#, JavaScript e Boo. Pode ser integrado à uma solução do Visual Studio
  • Debug: Todos os parâmetros de qualquer objeto ou modelo podem ser alterados em tempo de execução, além de existir a possibilidade de pausar a execução para verificar parâmetros

Existem muitas outras features na Unity, porém estas acima já a torna uma grande game engine, cheia de recursos. Além desta parte técnica, existe algo na Unity que merece muito destaque: sua comunidade. Através do site, podemos entrar em contato direto com os desenvolvedores para dar sugestões e feedback. Existem também foruns diversos e ativos, com pessoas dispostas a te ajudar sempre que for necessário, além de um vasto material que inclui um FAQ, Wiki, dicas, repositório de exemplos e um chat (IRC). Ah, também existe uma revista publicada por eles, a Unity Develop Magazine.

Além de tudo isso, ainda podemos contar com um completo suporte, que oferece documentação técnica, manual, referências, exemplos de script, tutoriais, exemplos de projetos, vídeo aulas, artigos, e recursos gratuitos, como plugins desenvolvidos pela comunidade.

Por enquanto encontrei apenas um livro dedicado a Unity, o Unity Game Development Essentials, do Will Goldstone. Em seu site, existem excelentes vídeo aulas sobre a Unity, e outros softwares. Eu fiz meu tech demo depois de assistir a primeira vídeo aula.

Unity Game Development Essentials

Desenvolvimento de jogos com a Unity

Hoje, grande parte dos jogos feitos com a Unity são para PC e/ou Mac (inclusive um MMO), enquanto jogos para Web enfrentam a barreira do Flash. Mais de 325 jogos foram feitos e publicados para iPhone, porém poucos foram feitos para Wii.

Ao abrir a Unity pela primeira vez, após instalar, ela carrega um projeto demo, que é de uma ilha que utiliza diversos recursos. Este demo é muito legal para estudar, pois possui uma infinidade de pequenos detalhes que mostram o poder da Unity.

Demo da Ilha na Unity

Demo da Ilha na Unity

Vale muito a pena dar uma olhada no site da Unity, que possui muitas coisas legais para os desenvolvedores. Existem também muitos sites e tutoriais espalhados pela internet, estes são alguns que eu já usei e recomendo:

Eu comecei a estudar a Unity há pouco tempo, então não fiz muita coisa além de “brincar”. Provavelmente irei utilizar esta game engine no meu TCC da Pós-Graduação, e durante o desenvolvimento irei publicar aqui tutoriais sobre desenvolvimento de jogos com a Unity. Se quiser ver o tech demo que fiz, clique aqui para fazer o download (versão para windows).

Panorama theme by Themocracy