Sobre o USPGameDev

From USPGameDev Wiki
Jump to: navigation, search

Esse artigo é baseado no relatório "USPGameDev: Grupo de Pesquisa e Desenvolvimento de Jogos da USP", cuja última versão oficial foi compilada em 23 fevereiro de 2012 e encontra-se na Secretaria do Ciclo Básico da Escola Politécnica da USP.

O que é o USPGameDev?

Definição e objetivos

O USPGameDev é um grupo de pesquisa e desenvolvimento de jogos da USP. Ele tem como meta criar um ambiente no qual membros da comunidade USP interessados na criação de jogos eletrônicos possam por em prática o que aprenderam em seus cursos e desenvolver suas próprias ideias. Além disso, o grupo visa aprender sobre práticas de gerenciamento de equipes e projetos, sobre processos de elaboração criativa de jogos e, também, adquirir familiaridade com as atuais ferramentas de desenvolvimento utilizadas na área.

Filosofia

O grupo procura adotar uma filosofia de Software Livre - permitindo que qualquer um tenha acesso a estudar, modificar e redistribuir aquilo que produzimos - e de Portabilidade - garantindo que aquilo que produzimos possa ser compatível com a maior parte possível dos sistemas operacionais e arquiteturas encontradas nos computadores modernos. É do interesse do grupo que o maior número possível de pessoas possam usufruir dos nossos resultados, sem restrições.

Atividades

A rotina usual do grupo consiste em reuniões presenciais, três vezes por semana, para discussão e trabalho. Ou seja, é nessas reuniões que ocorre o desenvolvimento dos projetos nos quais o grupo está envolvido, assim como eventuais debates sobre metas futuras e suas prioridades. No entanto, além dos projetos centrais, há outras atividades nas quais o grupo participa.

A primeira delas é a realização de palestras informativas para divulgar o trabalho do grupo e compartilhar experiências. Desde o seu primeiro lançamento, o grupo tem se esforçado para encontrar seu lugar na comunidade USP, realizando essas apresentações inclusive no campus da Escola de Artes, Ciências e Humanidades da USP.

Outra atividade é o oferecimento de cursos técnicos, também voltados ao público da USP. A primeira bateria deles ocorreu durantes os meses de Outubro e Novembro de 2011. A intenção do grupo é oferer quatro cursos por semestre. O conteúdo deles abrange ferramentas de desenvolvimento de software como:

  • CMake - gerenciador multiplataforma de construção de projetos de software;
  • Lua - linguagem de script brasileira muito usada por jogos de renome no mercado; e
  • LÖVE - uma plataforma para desenvolvimento de jogos em duas dimensões minimal e gratuita.

Mas também aborda ferramentas de propósito mais geral como:

  • Git - ferramenta de controle de versão de projetos;
  • LaTeX - programa de formatação de texto muito utilizado no mundo acadêmico; e
  • SSH - protocolo de rede que permite conexões seguras entre computadores.

Houve também um processo seletivo de novos membros que envolveu a confecção de quatro mini-projetos por parte dos candidatos. Tendo sido orientados pelo membros veteranos do grupo durante o processo, esses candidatos puderam adquirir uma experiência breve porém real de como é desenvolver um jogo, independentemente de terem sido posteriormente admitidos como membros ou não.

Além dessas atividades, alguns integrantes do grupo ainda se organizam para participar de competições de desenvolvimento de jogos eletrônicos de tempos em tempos. Em 2011, os integrantes Vinícius Daros, Nathasha higa, Henrique Stagni e Bruno da Hora participaram do X Simpósio Brasileiro de Games e Entretenimento Digital. Em 2012, Nathasha Higa, Paulo Vianna e Fernanda dos Santos participaram do Global Game Jam.

Com o objetivo de divulgar todas essas atividades, o grupo criou um site. Nele todas as principais informações sobre essas atividades podem ser encontradas, dentre outras. Em particular, o site disponibiliza a documentação oficial dos projetos que o grupo realiza.

Metodologia

Para gerenciar as atividades do grupo, é seguida uma metodologia de trabalho derivada do Scrum. O integrante do grupo Vinícius Daros fez como Trabalho de Conclusão de Curso no Bacharelado em Ciência da Computação justamente analisando sobre como Scrum poderia ser aplicado à equipes de desenvolvimento de jogos, e usou o USPGameDev como caso de estudo. Portanto, para maiores detalhes sobre como a nossa metodologia funciona, recomenda-se a leitura da monografia resultante desse trabalho.

Histórico

O começo (Novembro/2009 - Janeiro/2012)

Em novembro de de 2009, o orientador pedagógico da Escola Politécnica (Poli), Giuliano Salcas Olguin, incentivou tanto alunos do Instituto de Matemática e Estatísitca (IME) quanto da Poli interessados em desenvolver jogos eletrônicos a se juntar e tentar criar um projeto. Assim, realizou-se a primeira reunião de interessados, contando com a presença de alunos do Bacharelado em Ciência da Computação e de Engenharia da Computação. Nessa mesma reunião surgiu a proposta para o primeiro jogo que o grupo tentaria construir, porém apenas seu gênero estava definido. Ainda não possuia nome nem temática.

A partir de então, mantiveram-se encontros semanais para discutir idéias e elaborar mais sobre o primeiro projeto. Essa fase inicial foi bem complicada, e muitos dos membros iniciais acabaram desistindo. Mas os que permaneceram chegaram a um acordo e finalizaram uma proposta completa para o primeiro projeto: Horus Eye. Um Game Design Document foi escrito para orientar os desenvolvedores na produção do jogo em janeiro do ano seguinte.

Nesse período, as reuniões semanais aconteciam tanto no Biênio quanto no IME.

Primeira fase de desenvolvimento do Horus Eye (Fevereiro/2001 - Setembro/2010)

Com a ideia do jogo bem formada, o grupo deu início ao seu desenvolvimento. Pelas ferramentas escolhidas serem de baixo nível (veja a seção do projeto) o processo inicial foi trabalhoso e não apresentava quase nenhum resultado visual. O primeiro deles foi aparecer só depois de dois meses de esforço, embora por trás houvesse um ferramental bem maior já funcionando.

Uma vez começado o semestre letivo, as reuniões voltaram à sua frequência usual. Dessa vez, a maior parte delas ocorria no Biênio.

As funcionalidades necessárias ao jogo foram sendo implantadas ao longo do semestre. Nesse período alguns membros novos ingressaram no projeto para ajudarem com a arte gráfica. Nem todos eles ficaram até o fim, mas o jogo já tinha a maior parte da aparência atual pelo final do semestre. Com isso, o crescimento do jogo aumentou drasticamente no mês de Julho, uma vez que agora a arquitetura básica dele estava bem estabelecida.

Embora não se pudesse chamar o Horus Eye de um jogo completo, todos os requisitos exigidos pelo Game Design Document haviam sido satisfeitos. Os meses de Agosto e Setembro compuseram uma fase de revisões e melhoramentos.

Lançamento do Horus Eye e novas metas (Outubro/2012 - Novembro/2010)

Em Outubro de 2010, o Horus Eye foi oficialmente lançado pelo grupo. O lançamento foi feito em uma apresentação no IME, embora as reuniões continuassem sendo realizadas majoritariamente no Biênio. Pouco tempo depois ocorreu também o lançamento do site do grupo (que na época tinha apenas algumas páginas e o fórum).

Com o primeiro grande passo dado, o grupo passou rever os objetivos. Após alguma discussões, o que ficou decidido foi que o grupo precisava: recrutar novos membros, começar um novo projeto, e melhorar o suporte gráfico do Horus Eye. Houve algumas propostas para o próximo jogo, mas nada ficou definido naquela época. O projeto de melhoria no Horus Eye havia começado mas levaria ainda mais alguns meses para ser concluído. O processo seletivo que seria usado no recrutamento dos novos membros, no entanto, fora planejado e posto em prática logo em seguida.

Processo seletivo de novos membros (Novembro/2010 - Abril/2011)

Apesar de não ter sido a intenção original, a maior parte da atenção do grupo nesse período se focou no processo seletivo. Havia um total de aproximadamente setenta candidatos, e gerenciar a presença e a participação deles exigiu tempo e cuidado. Ao final foram selecionados dezoito novos membros, que incluíam dessa vez alunos não só do IME, da Poli, e da FAU, como também da Escola de Comunicação e Artes (ECA) e da Faculdade de Filosofia, Letras, e Ciências Humanas (FFLCH).

Um dos principais resultados do processo seletivo foram os mini-projetos realizados pelos candidatos, como explicado na seção de atividades. E nesse meio tempo, a migração de sistema gráfico do Horus Eye foi finalizada. As propostas de separar mais claramente o jogo da framework direcionavam o grupo à criação da UGDK.

No dia 29 de Abril, os membros Vinícius Daros, Henrique Lima e Wilson Kazuo Mizutani deram uma palestra sobre o grupo no campus da EACH.

Escolha e elaboração se um segundo projeto (Maio/2011 - Junho/2011)

Terminado o processo seletivo, o grupo agora dispunha de um maior arsenal de mentes criativas e capazes para desenvolver jogos. As discussões para o segundo projeto foram retomadas. Esse processo levou entre um e dois meses até que se houvesse decidido qual seria o novo jogo, seu gênero e sua temática.

Em seguida foi decidida qual a ferramenta de desenvolvimento que seria usada. Como explicado na seção do "Pirates", dessa vez se desejava uma ferramenta de alto nível, para que o projeto evoluísse mais rapidamente. E também se passaria a usar uma nova metodologia de trabalho.

Nessa época, o grupo sofreu com algumas dificuldades em encontrar um lugar fixo para suas reuniões, visto que a sala que normalmente usavam no Biênio estava em reforma.

Scrum, cursos e novos lançamentos (Julho/2011 - Dezembro/2011)

A metologia baseada em Scrum mencionada na seção de metodologia tem sido utilizada pelo grupo desde o início do segundo projeto. Antes disso, o grupo não seguia nenhuma metodologia em particular. Com essa nova maneira de trabalhar, ficou mais fácil de medir e documentar a produtividade do grupo.

Mas além do novo projeto e do novo esquema de trabalho, foi nesse período que o grupo também deu início aos cursos (listados na seção de atividades) e lançou tanto a primeira versão independente da UGDK quanto a segunda versão oficial do Horus Eye. Ela apresentou novos conteúdos e ferramentas de edição. Assim como no ano anterior, esses lançamentos foram anunciados em uma palestra em Outubro, no IME.

Nessa altura havia sido terminada a reforma da sala que o grupo usava, e agora ela disponibilizava uma infraestrutura muito mais completa, permitindo ao grupo trabalhar com mais eficiência, além de ter sido muito útil na aplicação dos cursos.

Novo site e novas metas (Janeiro/2012 - Fevereiro/2012)

Mesmo havendo um site no qual divulgar as atividades do grupo, era difícil de lidar com ele. Por isso os membros resolveram adotar ferramentas mais fáceis de manipular e de atualizar informações. Houve uma reforma no site e ele passou a ser como é hoje.

Além do site, o grupo também buscou nesses meses rever suas prioridades e preparar novos planos para o futuro. A intenção é que o grupo participe mais em eventos e em palestras, tornando-se mais presente no meio do desenvolvimento de jogos. Outra meta importante é tornar os projetos do grupo mais acessíveis ao público geral, além de continuar oferecendo os cursos.

Membros

Ao longo da existência do grupo, muitas pessoas passaram por ele como membros e fizeram suas contribuições. Segue uma lista com todos que em algum momento participaram ativamente do grupo, com o instituto em que estudam (ou estudaram) e um e-mail para contato. A lista está separada pelas épocas em que houve o ingresso de membros.

Membros fundadores

  • Alexandre Martins (IME)
  • Felipe Cesar Maia (Poli)
  • Felipe Simionato Solferini (IME)
  • Fernando Omar Aluani (IME)
  • Gregory De Bonis (IME)
  • Gustavo Teixeira da Cunha Coelho (IME)
  • Henrique Gemignani Passos Lima (IME)
  • Henrique Stagni (IME)
  • Lucas Gassert (IME)
  • Luciana Kayo (IME)
  • Natan Costa Lima (IME)
  • Renan Teruo Carneiro (IME)
  • Rodrigo de Paula (IME)
  • Samuel Plaça de Paula (IME)
  • Thiago de Gouveia Nunes (IME)
  • Toshi Kurauchi (IME)
  • Vinícius Kiwi Daros (IME)
  • Wilson Kazuo Mizutani (IME)

Membros que entraram durante o desenvolvimento do Horus Eye

  • André Spanguero Kanayama (IME)
  • Bruno Vercelino da Hora (IME)
  • David Macedo da Conceição (IME)
  • Natasha Higa (FAU)

Membros que entraram no processo seletivo de 2011

  • Ana Julia Alcantara Monteiro Travia (ECA)
  • Bernardo Mascarenhas Camargos e Silva (Poli)
  • Cinthia Yoshie Udakiri (Poli)
  • Eduardo Dias Filho (IME)
  • Fernanda Vieira Nunes dos Santos (FAU)
  • Guilherme Pimenta Sorregotti (Poli)
  • Guilherme Pinho Meneses (FFLCH)
  • Henrique Carvalho Silva (Poli)
  • Jefferson Serafim Ascaneo (IME)
  • Julio Felipe Angelini (IME)
  • Luciana Bonassi Zulpo (ECA)
  • Marcela Lazaro Návia (ECA)
  • Marcelo Toshio Yamashita (Poli)
  • Paulo Passos Neto (Poli)
  • Paulo Ricardo Rocha Vianna (Poli)
  • Rafael Freitas da Silva (Poli)
  • Thiago Tatsuo Nagaoka (IME)
  • Willian Akira Mizutani (FAU)

Projetos

O USPGameDev possui três projetos de software em desenvolvimento, distribuídos entre dois projetos principais. O primeiro é composto pelo jogo Horus Eye e pela framework UGDK. O segundo corresponde a um jogo sobre piratas com nome ainda não definido, mas ao qual costuma-se referir como Pirates. Mas vale lembrar, como foi dito na seção de atividades, o grupo trabalha apenas com esses projetos.

Para gerenciar o desenvolvimento desses projetos, existem duas ferramentas muito importantes das quais o grupo se aproveita. A primeira delas é o controlador de versões Git, que permite que um mesmo projeto seja desenvolvido por vários membros ao mesmo tempo sem que eles dependam diretamente do trabalho um do outro para realizar a sua própria tarefa, além de possibilitar a migração entre diferentes versões do projeto para desfazer incompatibilidades e rever soluções para problemas que já ocorreram anteriormente, tornando o processo de desenvolvimento mais eficiente, rico e seguro. A segunda é o gerenciador de construção de software CMake, que permite que nossos programas possam ser construídos no maior número possível de máquinas e que eles o façam de maneira padronizada, atendendo à filosofia de Portabilidade explicada na seção sobre a filosofia do grupo.

Segue uma breve descrição de cada um dos principais projetos do USPGameDev.

Horus Eye

Artigo pricipal: Horus Eye

É o primeiro jogo-projeto do USPGameDev. Surgiu junto com a criação do grupo, com seu objetivo principal sendo fornecer a experiência de desenvolver um jogo, mesmo que simples, do começo ao fim. A idéia, portanto, era não usar ferramentas de desenvolvimento de alto nível, mas sim uma framework mais elementar. Assim, para mantê-lo simples, a proposta do jogo limitou seus requisitos gráficos a uma interface bidimensional, em oposição a uma interface tridimensional.

Tendo em mente essas considerações, o grupo decidiu, a princípio, desenvolver o jogo usando como linguagem de programação o C++, com o auxílio da biblioteca Simple DirectMedia Layer (SDL), versão 1.2, que fornece as funcionalidades gráficas e sonoras necessárias a um jogo. Eventualmente, porém, constatou-se que a SDL por si só não possibilitaria os efeitos visuais desejados com uma eficiência aceitável. Para resolver isso, o grupo migrou o sistema gráfico para um novo modelo que usava tanto a SDL quanto uma outra biblioteca gráfica - OpenGL, que permite recorrer à aceleração de processamento gráfico via hardware. Com isso, o grupo tinha o suficiente para produzir todos os efeitos gráficos que desejasse.

Como será explicado no próximo item, toda essa parte de processamento de mídias foi posteriormente transferida à \textbf{UGDK}.

Desde o começo do grupo até hoje o jogo ainda continua em desenvolvimento, porém possui duas versões alpha (experimentais) lançadas. Juntamente com a UGDK, constituem a maior produção concreta do grupo. E graças à restrição inicial de não se recorrer a ferramentas de alto nível, permitem até agora que os membros possam experimentar e estudar diferentes áreas da programação (como processamento gráfico, engenharia de software e inteligência artifical), do design (como arte digital, desenho de interface e balanceamento de jogabilidade) e do desenvolvimento criativo de jogos em geral (como elaboração de desafios ao jogador, análise crítica de jogos e gerenciamento de projeto).

Atualmente o jogo conta com mais de 12000 linhas de código em mais de 140 arquivos-fonte e com 50 arquivos de imagens de personagens, cenários, efeitos visuais, dentre outros. O projeto inteiro totaliza aproximadamente 21,3 megabytes de espaço virtual. Maiores detalhes sobre o jogo e um link para download, tanto das versões de lançamento (estáveis) quanto em desenvolvimento (instáveis), podem ser encontradas aqui.

UGDK

É uma ferramenta derivada do Horus Eye. Desde o começo, a estrutura do jogo era dividida em duas grandes partes: um framework responsável pelo gerenciamento de mídias (como gráficos e audio) e do motor base do jogo; e o jogo propriamente dito. Era intenção do grupo eventualmente transformar o framework em um ferramenta reaproveitável de desenvolvimento de jogos cuja interface fosse bidimensional. Por um bom tempo, no entanto, essas duas partes do jogo estavam muito presas uma à outra para que pudessem ser completamente separadas. Quando finalmente o grupo conseguiu fazê-lo, surgiu uma nova partição do projeto inicial, independente do Horus Eye, embora fortemente relacionado.

A esse novo projeto que correspondia ao antigo framework foi dado o nome de UGDK, que é um acrônimo tanto para USPGameDev Kit (Kit do USPGameDev) quanto para USP Game Development Kit (Kit de desenvolvimento de jogos da USP).

Desde sua cisão com o primeiro projeto, a UGDK encorporou mais bibliotecas e ferramentas auxiliares, embora não mais de processamento gráfico. Para poder usar algumas funcionalidades convenientes de C++, foi usada a biblioteca Boost (em particular o pacote TR1). Para poder acoplar módulos em outras linguagens além do C+ aos jogos que são desenvolvidos usando a UGDK, foi usado um programa chamado SWIG, que faz justamente isso. Graças a ele, o projeto está sendo estendido para ser compatível com as linguagens Lua e Python. Por serem bem mais fáceis de usar que C++, isso permite que mais pessoas possam aproveitar a UGDK sem precisar entender profundamente de programação.

Assim como o Horus Eye, a UGDK possui duas versões experimentais lançadas, e continua em desenvolvimento até hoje. Na verdade, a ferramenta em si está completa para o uso, mas conforme os membros do grupo adquirem maior experiência em suas respectivas áreas, mais funcionalidades e facilidades são elaboradas para serem implantadas na UGDK.

Atualmente a ferramenta conta com mais de 13500 linhas de código em mais de 120 arquivos-fonte, com o projeto inteiro totalizando aproximadamente 1,4 megabytes de espaço virtual. Maiores detalhes sobre a ferramenta e um link para download, tanto das versões de lançamento (estáveis) quanto em desenvolvimento (instáveis), podem ser aqui.

"Pirates"

É o segundo jogo-projeto do USPGameDev. Desde o primeiro lançamento do Horus Eye o grupo cogitava o começo de um novo projeto, mas na época ele estava ocupado demais com o processo seletivo de novos membros. Uma vez finalizado o processo retomaram-se os brainstorms e ao longo da segunda metade do primeiro semestre de 2011 a idéia do jogo tomou forma. Ele tem suas principais mecânicas e elementos de enredo definidos, mas não possui um nome ainda, sendo provisoriamente conhecido como Pirates.

Diferentemente do Horus Eye, que tinha como objetivo fornecer a experiência de criar um jogo inteiro desde o começo, o Pirates prioriza o desenvolvimento do conteúdo do jogo em si. Isso significa que o uso de ferramentas de alto nível para seu desenvolvimento não foi desmotivado, e sim desejado, eliminando a restrição de simplicidade até certo ponto - o suficiente para permitir uma interface tridimensional. Dessa forma, foi possível alcançar resultados bem mais rapidamente que nos outros projetos. No entanto, o Pirates como um todo ainda está bem menos completo, pois é o projeto mais recente e apresenta maiores desafios técnicos.

No caso, a linguagem de programação escolhida continuou sendo C++. Mas a biblioteca usada para obter acesso não só às diferentes mídias, mas também à diversas outras funcionalidades muito comumente usadas em jogos, foi a Panda3D.

Atualmente o jogo conta com apenas um pouco menos de 2000 linhas de código em 24 arquivos-fonte e com 2 modelos tridimensionais para o barco e o cursor. O projeto inteiro totaliza aproximadamente 4 megabytes de espaço virtual. Também diferentemente do Horus Eye, esse projeto ainda não possui nenhum lançamento, experimental ou não. Maiores detalhes sobre o jogo podem ser encontradas aqui.

Agradecimentos

O USPGameDev é profundamente grato pelo apoio e pela ajuda fornecidos por diversas pessoas e entidades. Em particular, o USPGameDev agradece:

  • à Escola Politécnica da USP (Poli-USP), à sua Diretoria, e à Comissão do Ciclo Básico, por conceder ao USPGameDev uma sala com uma infraestrutura de ponta que proporciona um ambiente de trabalho eficiente e produtivo;
  • ao Instituto de Matemática e Estatística da USP (IME-USP), pelas vezes em que foi permitido ao grupo se reunir em uma de suas salas de aula e por haver fornecido a aparelhagem de rede e o computador servidor que o grupo precisava;
  • à Rede Linux do IME-USP, por fornecer o espaço e a rede para instalar e manter o servidor Web do grupo;
  • ao professor Ricardo Nakamura, da Poli, e ao professor Flávio Soares Corrêa da Sliva, do IME, por nos orientarem em nossas pesquisas e trabalhos;
  • aos professores José Coelho de Pina e Carlos Eduardo Ferreira, ambos do IME, por nos providenciarem recursos tecnológicos e infraestruturais sempre que precisamos; e
  • ao Orientador Pedagógico Giuliano Salcas Olguin, pela iniciativa do projeto, pelo incentivo e apoio constantes e pelo crucial papel de facilitador que tem determinadamente exercido desde o começo.