MAC 499 – Trabalho de Formatura Supervisionado

 

 

 

 

 

 

 

 

 

 

 

 

Projeto GANNSO – Um Jogo de Computador

 

Instituto de Matemática e Estatística da Universidade de São Paulo

 

 

 

 

 

 

 

 

 

 

 

 

Roberto A. G. Motta

 

Prof. Dr. Marcos Dimas Gubitoso - orientador

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dezembro de 2000

















A todos aqueles que se dedicam à programação amadora.

Aos colegas, pelo incentivo durante toda minha formação acadêmica.

A meus pais, amigos e minha namorada, pela compreensão em todas as minhas ausências.

























Introdução



O Cenário



Como faço um jogo de computador?



Projeto Inicial



Engine de Jogos de Computador



Gerenciamento Interno do Jogo



Interface com o Usuário



Andamento do Projeto



Ambiente de Desenvolvimento



Dificuldades Encontradas



O IME no Projeto



MIP, PATTO e GANNSO



Conclusão



Projetos Futuros



Referências







Introdução

 

 

Durante todo o ano de 2000 desenvolveu-se no IME um projeto de construção de Jogos para Computador. Esse documento tenta relatar os objetivos desse projeto, as atividades realizadas e os novos projetos que o desenvolvimento desse trabalho gerou.

 

O grupo empenhado no desenvolvimento desse projeto é formado por:

 

Luiz Gustavo Marins (Gus)

Marcus Harada Pena (Meio)

Ricardo Bueno Cordeiro (Ricardo)

Ricardo Skubs (Skubs)

Roberto Augusto Giacomo da Motta (Guto)

Tiago Tagliari Martinez (Tiago)

 

Professor coordenador: Marcos Dimas Gubitoso (Gubi).

 

O desenvolvimento desse projeto buscou o exercício da programação de jogos de computadores e, principalmente, a criação de ferramentas que facilitassem esse trabalho e servissem de incentivo para que outras pessoas pudessem desenvolver seus próprios projetos baseados em nossas ferramentas.

 

O contato com jogos de computador se dá muito cedo em pessoas que se interessam por computadores. Quando alunos de ciência da computação entram na faculdade, imaginam poder participar do desenvolvimento de jogos do tipo que estão acostumados a jogar. Muitos deles já têm projetos em vista, mas não têm o conhecimento de programação necessário para pô-los em prática.

 

Infelizmente, ao se deparar com o mundo acadêmico, a realidade é um pouco diferente. Estudar vários anos de teoria pura sem qualquer aplicação faz com que os alunos percam boa parte da motivação original.

 

Temos, portanto, um grande dilema. Se ao entusiasta falta o conhecimento para desenvolver software de qualidade, ao programador mais experiente falta boa parte da iniciativa original.

 

Desenvolvendo uma ferramenta que possibilitasse aos ingressantes um bom contato inicial com a produção de jogos, estaríamos permitindo a eles a realização de suas ambições. Poderiam guiar seus estudos no IME buscando aprimorar o uso dessas ferramentas e até melhorar o software por nós produzido.

 

Criando essa base de software, e otimizando-a ao máximo, também facilitaríamos nosso próprio trabalho de criação de jogos. Esse reaproveitamento de código diminuiria sensivelmente o tempo de desenvolvimento de novos jogos.

 

 

A idéia começou a ganhar forma ao definirmos parte da estrutura do projeto. A organização das ferramentas em uma biblioteca gráfica, utilizada por sua vez na criação de um engine pareceu ser o formato correto.

 

Ganhando grande liberdade de atualização e permitindo o desenvolvimento distribuído, a organização em classes de cada um desses programas foi o passo definitivo rumo à orientação a objetos.

 

Alguns questionamentos quanto a performance se fizeram necessários, mas concluímos que não haveria grande perda de performance. Os ganhos de organização do código provindos da modularização certamente compensariam as poucas perdas.

 

Assim, programamos em C++. Essa linguagem traz a modularização inerente à orientação a objetos sem trazer grande perda de performance. Sempre pode-se escrever código inline em assembly ou mesmo trechos de programação em C, nos pontos críticos de performance.

 

Enfim, optamos por desenvolver ferramentas que facilitem a vida do programador de jogos, na esperança de que isso aumente o interesse das pessoas pela área e lance no mercado produtos de qualidade técnica, mas principalmente criativa.





O Cenário

 

 

Graças ao trabalho, muitas vezes não reconhecido, de diversas pessoas, hoje podemos dizer que o IME tem um histórico de produções de jogos para computadores. Esse assunto sempre fascinou muitos alunos do BCC, e mesmo dos outros cursos, que tentavam levar adiante projetos mais ou menos ambiciosos relacionados à criação de jogos de computador.

 

O professor Marcos Dimas Gubitoso (Gubi) é um dos professores incentivadores de projetos desse tipo. No curso de Laboratório de Programação II de 1998, o projeto do disciplina foi o desenvolvimento de um jogo de computador bastante simples, para o sistema operacional Linux.

 

Um dos projetos de iniciativa de alunos pioneiros dessa área no IME foi o L.O.S.E.R Corps (http://loser.netpedia.net). Seu idealizador, Ricardo R. Massaro (Moe) é uma das pessoas que contribuem até hoje nos projetos de jogos do IME.

 

O desenvolvimento do L.O.S.E.R chamou a atenção dos alunos do IME por seu sucesso.  Revelou talentos dentro do IME em diferentes áreas relacionadas ao desenvolvimento de jogos. Chegou a ter projeção internacional, com colaboração, inclusive, de pessoas de todos os cantos do mundo. Foi divulgado em diversos sites especializados em jogos e em revistas impressas européias. Chegou a concorrer no SofTest de 1999, tendo grande destaque.

 

Talvez o fator determinante do sucesso do L.O.S.E.R Corps tenha sido a concentração dos esforços de programação em uma só pessoa. Por tratar-se de um projeto amador, dependia exclusivamente do empenho de seus criadores. Outras tentativas fracassaram por dependerem da conciliação do trabalho de muitas pessoas.

 

Esse cenário foi muito incentivador, mas também nos serviu de alerta, mostrando os diversos projetos que não obtiveram sucesso por dificuldades de coordenação do trabalho em equipe, principalmente à distância.

 

O desafio estava apresentado, utilizar os talentos existentes em nosso meio buscando sempre focar o trabalho do grupo no objetivo final. Se o trabalho se dispersasse, talvez o objetivo de produzir um engine se perdesse totalmente.





Como faço um jogo de computador?

 

 

Essa pergunta é um tanto quanto genérica. Apesar disso, está em diversos FAQ’s de sites especializados em dar suporte a desenvolvedores de jogos. A resposta é muito ampla, mas vamos tentar mostrar as diversas partes de um jogo, evidenciando aquelas para as quais tentamos escrever nossas ferramentas.

 

Um jogo de computador não é fruto de um esforço racional, mas sim de um esforço criativo. Bons jogos de computador são baseados em boas idéias, em idéias divertidas.

 

É claro que as idéias precisam ser trazidas para o mundo sensível. Nossos esforços se concentram nesse trabalho, a parte de um jogo de computador que traz uma boa idéia para dentro do computador.

 

A criação de um jogo, em geral, começa ao se escrever um roteiro. A história do jogo é definida, as situações em que os jogadores podem se encontrar, seus objetivos, possíveis ações, enfim, o roteiro. Uma história cativante é a base de todo bom jogo de computador.

 

Complementando o processo criativo, deve-se visualizar esse mundo criado no roteiro. São criados os gráficos do jogo. Um jogo precisa ser visualmente agradável. Sem essa característica, mesmo a melhor história do mundo pode se tornar entediante.

 

A criação de gráficos de jogos pode se dar de diferentes formas. Toda a criação pode ser feita no computador ou o artista pode desenhar os gráficos em papel, colorindo-os posteriormente no computador. Além disso, uma base de software já se relaciona com esse processo. Os gráficos do jogo são, na verdade, a combinação dos desenhos do artista e dos efeitos visuais do programador. Efeitos de transparência e iluminação valorizam os desenhos do artista.

 

Efeitos sonoros completam o processo criativo de construção de jogos de computadores. O software responsável pela reprodução dos efeitos sonoros também é fundamental para o sucesso do jogo.

 

Já no contexto do software puro, temos a Inteligência Artificial. Todo o software de controle do comportamento dos personagens representados pelo computador é chamado de Inteligência Artificial.

 

Em alguns casos, temos software responsável pela comunicação em rede, permitindo interação entre diversos jogadores espalhados pelo mundo.

 

Finalmente, o gerenciamento interno do jogo é responsável pela coordenação das diversas partes em um jogo.





Projeto Inicial

 

 

Buscando permitir que os desenvolvedores de jogos se concentrassem nos processos criativos do trabalho, projetamos uma biblioteca de funções que facilitassem o tratamento de gráficos e sons nos jogos de computadores.

 

Essa biblioteca funcionaria como uma camada adicional entre o jogo e o sistema operacional, gerenciando todo o tratamento gráfico e reprodução de sons.

 

Como essa camada isolaria o jogo do sistema operacional, definiu-se que ela deveria ser portável para diferentes sistemas. Isso resolveu um grande conflito dentro do grupo de produção, divergente quanto ao sistema operacional a se utilizar.

 

Foi, então, batizada de MIP (Mip Is Portable), devia a essa sua característica.

 

O projeto, no entanto, era um pouco mais ambicioso. Queríamos mais que uma simples biblioteca. Queríamos um engine de jogos.

 





Engine de Jogos de Computador

 

 

Um engine é um programa, com uma interface definida, que tem todas as partes de software necessárias para a produção de um jogo, permitindo que o produtor do jogo crie gráficos, roteiro e som e tenha seu próprio jogo.

 

É o software por trás do jogo. Implementa funcionalidades, idéia de algoritmos, não de história, gráficos ou som.

 

Nosso engine seria o GANNSO. Definiu-se que seria um engine 2D, o que eliminaria problemas enormes de desempenho durante o desenvolvimento.

 

Esse engine foi dividido em partes: Gráficos, Som, Inteligência Artificial, Interface com o Usuário e Controle Interno.

 

Boa parte do código responsável por manipulação de sons e gráficos já estaria pronta na biblioteca MIP.

 

O desafio do desenvolvimento do engine estava, portanto, na Inteligência Artificial e Interface com o Usuário.

 

Para atingir todos os nossos objetivos, precisaríamos dividir as tarefas e concentrar esforços. Para isso, dividimos o trabalho entre alguns grupos mais específicos.

 

Coube-me participar do grupo de desenvolvimento da Interface com o Usuário e Gerenciamento Interno do Jogo, além de certa participação no desenvolvimento da biblioteca MIP.

 

A organização do trabalho se daria em reuniões periódicas do grupo e constante troca de informações em uma lista de discussão criada para o projeto (rbc-499@linux.ime.usp.br).

 

Algumas dificuldades começavam a surgir.





Gerenciamento Interno do Jogo

 

 

Essa área de desenvolvimento é responsável pela definição das estruturas de dados utilizadas no projeto, bem como da interface entre as outras áreas de desenvolvimento (Inteligência Artificial, Gráficos, etc.) com essas estruturas de dados.

 

Podemos entender o Gerenciamento Interno do Jogo como o núcleo de todo o jogo, a parte do jogo responsável por permitir o bom funcionamento e a harmonia de todo o conjunto.

 

Um exemplo que nos ajuda a entender o papel dessa área dentro do projeto é o tratamento do evento em que um personagem é atingido por um tiro; a detecção desse evento é feita na área de Gerenciamento, que atualiza os dados desse personagem, diminuindo sua energia, alterando seu status para "baleado" e retirando o objeto "bala" do sistema.

 

A Inteligência Artificial recebe a informação da ocorrência desse evento para que possa alterar o comportamento dos inimigos adequadamente. A área Gráfica também recebe essa informação para que possa representar graficamente a ocorrência desse evento.

 

Vimos, portanto, que o papel básico do Gerenciamento Interno do Jogo é facilitar o trabalho de cada uma das áreas do jogo tratando diversos eventos e evitar ao máximo a inconsistência dos dados do jogo, ao encapsulá-los.

 

É vital para o funcionamento do jogo que essa área atue de maneira rápida e eficiente. Para tanto, utilizamos teorias de Estrutura de Dados e Análise de Algoritmos para desenvolver nossos algoritmos rápidos e eficientes, permitindo que o jogo flua sem perda de performance.





Interface com o Usuário

 

 

A definição de uma boa interface com o usuário é um trabalho que se dá, em grande parte, depois de finalizada quase que a totalidade da produção de software. Através de diversos testes, pode-se definir com precisão a qualidade da interface empregada.

 

Infelizmente, é inviável adiar decisões sobre a interface para o fim do desenvolvimento. É preciso definir o funcionamento do jogo. A interação do usuário é fundamental nessa definição.

 

Esse trabalho consistiu da elaboração de diagramas, em diferentes estados do jogo, que indicavam que tipo de interação o jogador poderia ter com o jogo.

 

Definir que ações o personagem poderia realizar, que informação adicional seria apresentada ao usuário é basicamente o trabalho da definição de uma boa interface.

 

Também nessa área de desenvolvimento é necessária grande imaginação, já que devemos definir como se dará a interação de uma pessoa qualquer, totalmente desconhecida, com um jogo que ainda não existe.





Andamento do Projeto

 

 

Para podermos organizar melhor o trabalho e também por ser exigência da disciplina MAC499, definimos um cronograma de atividades a serem realizadas durante o ano. Esse cronograma foi publicado na Internet, onde todos poderíamos acompanhá-lo. Foi publicado muito tarde, tendo efeito significativo apenas sobre o trabalho de conclusão do projeto.

 

Cronograma

19/09/2000 - Uma primeira versão (atrasada) do cronograma

22/09/2000 - Final de todo o gerenciamento do jogo e rotinas gráficas para visualizar um mapa

13/10/2000 - Protótipo da inteligência artificial e jogabilidade inicial

20/10/2000 - Protótipo da interface com o usuário e uso do mouse e teclado

10/11/2000 - Finalização do projeto de interface com usuário e menus fora do jogo

17/11/2000 - Término da inteligência artificial

24/11/2000 - Início do alpha-testing

08/12/2000 - Início do beta-testing

 

 

Também publicamos um histórico, mostrando a evolução do projeto.

 

Histórico

01/03/2000 - Início do projeto

12/03/2000 - Primeira versão das especificações do projeto

20/03/2000 - Primeira tentativa de organizar o projeto

24/03/2000 - Confirmação do professor Gubi como coordenador

07/04/2000 - Definição do roteiro do jogo

20/04/2000 - Separação do grupo em equipes

15/05/2000 - Primeira reunião entre as equipes para definir interfaces

23/07/2000 - Primeira implementação do código de visualização de mapas

11/08/2000 - Melhorias no visualizador de mapas

11/08/2000 - Utilitários para criar mapas na pagina

13/08/2000 - Protótipo das funções de pathfinding que serão usadas no jogo

20/08/2000 - Início da implementação da parte de gerenciamento interno

26/09/2000 - Primeira distribuição "pública" de uma versão do engine

 





Ambiente de Desenvolvimento

 

 

O desenvolvimento do projeto se deu, em grande parte, isoladamente por cada participante do grupo. As pessoas costumavam trabalhar em casa, durante a noite, ou mesmo no trabalho, depois do expediente.

 

Houve, no entanto, diversas reuniões para discussão e programação. As reuniões mais teóricas, digamos assim, se deram, em grande parte, no IME. Combinávamos pela lista de discussão encontros periódicos para troca de informações e para tomada de algumas decisões importantes.

 

As reuniões para programação em grupo se deram em laboratórios de algumas empresas, onde trabalham alguns de nós.

 

Nosso trabalho é intimamente relacionado à criatividade. Mesmo quando programamos, criamos um ambiente propício à imaginação. Eram muito comuns pausas no desenvolvimento para torneios de diversos jogos diferentes. Esse tipo de tarefa, totalmente inapropriada ao desenvolvimento de software, usualmente, foi extremamente benéfica para nosso trabalho.

 

Trata-se de pesquisa, além de instigar nossa imaginação. Observando o trabalho de outras pessoas sempre temos novas idéias para nosso próprio trabalho.

 

A diversão sempre esteve associada a nossa produção. Essa simples característica garantiu o interesse de todos nesses momentos de reunião.

 

Talvez seja esse o diferencial que leva tantos de nós a buscarem seguir carreira profissional no desenvolvimento de jogos. A falta de um bom ambiente de trabalho, livre, aberto à criatividade e imaginação faz do trabalho em empresas tradicionais algo entediante.

 

Um estudo mais detalhado seria necessário para determinar a relação entre o ambiente de trabalho e a produtividade de profissionais da área de produção de software. Uma reestruturação seria indicada a muitas empresas que insistem em criar um ambiente apático. Talvez essa decisão implique em grande perda de produtividade.





Dificuldades Encontradas

 

 

O projeto de desenvolvimento era bastante extenso. Tínhamos muito trabalho pela frente, mas muito tempo para terminá-lo. O foco de atenção das pessoas envolvidas em um projeto como esse se perde facilmente.

 

Por conta de tudo isso, o rendimento do trabalho do grupo não foi constante. Houve momentos de muita produção, quase sempre seguidos por uma pausa razoavelmente longa.

 

Um dos fatores causadores desses problemas foi falta de comunicação. O desenvolvimento baseado na web é uma tarefa nem sempre simples. Apesar de sermos todos alunos do IME, principalmente por tratar-se de um projeto que exige recursos de hardware nem sempre disponíveis nos laboratórios da faculdade, a maior parte do desenvolvimento se dava em casa e no trabalho das pessoas envolvidas.

 

O fato de termos uma lista de discussão não foi garantia de uma boa comunicação. O canal estava lá, mas nem sempre era usado.

 

A grande falha nesse desenvolvimento, no meu entender, foi falta de disciplina dos participantes. Falta de profissionalismo. Tudo isso é normal, afinal, trata-se de um projeto amador.

 

Enfim, houve falta de comunicação e integração dos participantes. Tudo isso seria evitado se houvesse uma estrutura física destinada a essa produção. Se nos encontrássemos para desenvolver no mesmo local, o projeto teria sido muito mais produtivo, superando as expectativas iniciais.

 

Creio que isso seria solucionado criando-se, na faculdade, um laboratório específico para projetos de jogos, onde os alunos teriam liberdade para jogar e produzir jogos, contando com os recursos de hardware necessários.

 

Talvez isso seja utópico. Certamente, em uma empresa destinada à produção de jogos, esse ambiente estaria presente.

 

Felizmente, essas dificuldades não impediram o sucesso do projeto. Apesar das longas pausas, o trabalho foi feito.

 





O IME no Projeto

 

 

Apesar de não ter fornecido estrutura física para a realização do projeto, o IME nos forneceu todos os outros fatores.

 

Durante todo o desenvolvimento percebemos a importância de nossa formação acadêmica e sua aplicação prática. Não só conseguimos descobrir aplicações de muita teoria aprendida na faculdade, mas principalmente reconhecer habilidades desenvolvidas em nós mesmos durante todos os anos de formação acadêmica.

 

Percebemos que somos capazes de produzir software de grande qualidade, em pouco tempo e com pouca dificuldade.

 

Somos capazes de nos adaptar a novas tecnologias e situações inusitadas com grande agilidade.

 

Tudo isso foi fundamental para o sucesso do projeto, já que estávamos lidando com um campo da programação totalmente novo para alguns de nós, apesar de muito interessante.

 

Para mostrar a aplicação de parte da teoria que conhecemos no IME durante o projeto, podemos citar alguns exemplos de aplicação:

 

Inteligência Artificial

 

Talvez um dos campos mais complexos do engine de jogos, a inteligência artificial dos NPCs foi baseada totalmente na teoria a que fomos apresentados na faculdade. Por se tratar de uma disciplina optativa, o grupo de desenvolvimento de Inteligência Artificial foi constituído por alunos que já haviam cursado essa disciplina e tinham interesse em aprofundar seus conhecimentos relacionados à inteligência artificial.

 

Os algoritmos empregados no engine são algoritmos de pathfind (busca de caminhos). Existem vários tipos diferentes de algoritmos, com complexidades e eficiências diferentes. Estudamos muitos e implementamos alguns desses algoritmos. Apenas a implementação de diferentes algoritmos nos possibilitou encarar as verdadeiras dificuldades dessa parte do projeto.

 

Estrutura de Dados e Análise de Algoritmos

 

Um jogo de computador sempre usa o limite dos recursos de hardware disponíveis. Consome muito processamento e pode ter sua jogabilidade inviabilizada por esse consumo. Por conta disso, otimização de código e opção acertada das estruturas de dados é muito importante para desenvolver um software rápido.

 

 


Programação Orientada a Objetos:

 

Nosso contato com a disciplina Programação Orientada a Objetos nos ajudou a tornar claro em nossas mentes a importância da estruturação do nosso código.

 

Principalmente por tratar-se de um projeto dividido em várias partes, com pessoas diferentes trabalhando em cada uma delas, precisávamos optar por uma estrutura de classes que facilitasse a integração do trabalho e permitisse que ele fosse desenvolvido separadamente.

 

Além disso, nosso objetivo inicial era disponibilizar esse código para reaproveitamento em novos jogos. Tudo isso tornou a orientação a objetos e a determinação das classes envolvidas no jogo fundamental.





MIP

 

 

A biblioteca MIP é, talvez, o melhor resultado desse projeto. Atingiu uma série de requisitos e vai, certamente, viabilizar a produção de muitos dos nossos novos projetos e talvez despertar interesse de outras pessoas para o desenvolvimento de jogos de computador.

 

Características Gráficas:

 

 

O MIP é facilmente portável entre sistemas operacionais. Sua estrutura de classes permite que se aproveite quase a totalidade de seu código quando migrando para novos sistemas. Apenas a classe System precisa ser adaptada para que a biblioteca possa ser utilizada.

 

 

 

Realizamos diversos testes, inclusive desenvolvendo joguinhos simples, para testar as funcionalidades da biblioteca e sua performance. Com todo seu poder de efeitos de iluminação e transparência, não há perda de performance que comprometa sua utilização.

 

 

 

Mais uma vez, a estrutura de classes empregada na biblioteca traz grande flexibilidade, permitindo a implementação de novos efeitos especiais.

 

 

Características de Som:

 

 

 

A classe GSoundManager do MIP torna trivial a utilização de recursos de som na criação de jogos. É acessível por três métodos bastante simples: Load, Reset e Update, permitindo controle total sobre os efeitos sonoros.

 

 

 

 

 

 

PATTO

 

 

Patto é um jogo de combate espacial em estilo clássico, como encontrado em muitos fliperamas do passado. Trata-se, basicamente, de um jogo de tiros infinitos contra asteróides e naves inimigas.

 

A única razão da existência do Patto é testar as funcionalidades da biblioteca MIP. Por conta disso, tentamos usar todos os efeitos gráficos e sonoros fornecidos pela MIP.

 

A barra de energia usa efeito de transparência, sumindo e reaparecendo lentamente (fade), os tiros tem efeito de iluminação (lightening) e o som do jogo é baseado num trilha de fundo e em efeitos sonoros de tiro, simultaneamente.

 

Colocamos algumas funcionalidades extras, como um contador de frames por segundo, para permitir que medíssemos a performance da biblioteca.

 

Apesar de muito simples, Patto é bastante divertido e está virando mania entre nossos colegas desenvolvedores.

 


GANNSO

 

 

GANNSO é um engine que será aprimorado e aproveitado na criação de um jogo. Trata-se de um engine de visão isométrica, em duas dimensões, controlado por mouse e teclado. As ações do personagem principal limitam-se a se movimentar pelo mapa e atirar em direções apontadas pelo mouse.

 

Um projeto futuro visa aproveitar esse engine na criação de um jogo de covert action. O personagem principal deverá escapar de uma base inimiga, escondendo-se na construção enquanto tenta fugir.

 

A criação desse engine trouxe maiores problemas de desempenho da biblioteca MIP e do próprio código do GANNSO. Nosso software foi otimizado algumas vezes para poder manter sua jogabilidade.

 

Uma infinidade de roteiros e gráficos diferentes poderão se adaptar ao engine do GANNSO na criação de novos jogos.

 

Apesar do projeto de formatura estar terminado, pretendemos continuar trabalhando nesse engine, aprimorando-o para podermos usá-lo em nossos projetos futuros.

 

 

 

 

 

 





Conclusão

 

 

Com o fim do ano e conseqüentemente, do projeto de 499 podemos considerar nossos objetivos atingidos. Temos hoje a biblioteca MIP pronta e disponível na Internet para pessoas interessadas em desenvolver novos jogos. Criamos um jogo bastante simples, o PATTO, para testar as funcionalidades do MIP e atingimos um estágio bastante razoável no desenvolvimento do GANNSO, nosso engine de software.

 

Não conseguimos ter uma versão final do jogo GANNSO, embora esse não fosse um dos objetivos iniciais. Faltam a ele um roteiro mais definido e um projeto gráfico mais elaborado.

 

A interface com o usuário também precisa ser um pouco melhorada. Essa etapa do desenvolvimento só se dá depois de muito do software estar pronto. Apenas com muitos testes podemos sugerir melhorias na interface.

 

Apesar de tudo, consideramos nossos objetivos atingidos. Estamos hoje mais familiarizados com o processo de produção de jogos, temos contatos com outros desenvolvedores e acesso a novas fontes de informação.

 

Esperamos que haja interesse de outros alunos do IME pelo desenvolvimento de software e que nossas ferramentas possam ser realmente úteis no desenvolvimento de outros projetos da área. Acreditamos que o fácil acesso a informações trazido pela internet, associado ao incentivo de professores e boa divulgação de nosso trabalho incentivarão pessoas no IME e em outros lugares a essa tarefa.

 





Projetos Futuros

 

Melhorias e novas implementações no software desenvolvido até agora são sempre parte dos planos futuros das pessoas envolvidas no projeto.

 

A biblioteca MIP mostrou-se muito eficiente e de fácil utilização. Apesar de ser bastante completa como biblioteca gráfica e de sons, ainda não é uma biblioteca de jogos completa. Pretendemos acrescentar novos efeitos gráficos, mas principalmente, extender a biblioteca adicionando a ela funcionalidades de rede e melhorando seu tratamento de entrada do usuário.

 

Para isso, pretendemos adicionar uma classe específica ao tratamento de comunicação de rede, utilizando novamente a classe System para o tratamento das funções específicas de cada sistema operacional.

 

Mantendo essa característica estrutural da biblioteca, mantemos sua portabilidade, permitindo não só utilizar a biblioteca MIP em projetos desenvolvidos em Linux e Windows mas ainda a intercomunicação de software desenvolvido em Linux e Windows.

 

Um outro projeto futuro é portar o MIP para outros sistemas operacionais, buscando atingir o maior número de desenvolvedores possível.

 

É claro que tendo desenvolvido tantas ferramentas para criação de jogos, não poderíamos deixar de pensar em nossos próprios jogos.

 

Os projetos são vários. O primeiro deles deverá ser a finalização do jogo baseado no engine GANNSO. É um trabalho mais de criação de roteiro e gráficos que de programação, mas pode nos permitir aprimorar o engine.

 

Alguns de nós se interessam por seguir profissionalmente como desenvolvedores de jogos. É uma área sem grande destaque no Brasil, embora de grande projeção no exterior. Talvez haja interesse de empresas e investidores brasileiros na área de jogos. Com certeza será muito divertido levar esse trabalho profissionalmente.

 

 

 





Referências

 

 

http://loser.netpedia.net

 

http://www.linux.ime.usp.br/~tiagotm/mac499/

 

http://www.makegames.com/

 

http://www.gamedeveloper.com/

 

Graphics File Formats; David C. Kay e John R.Levine; ed. Windcrest; 2a edição, 1996.

 

Windows Game Programming for Dummies; Andre Lamothe; ed. Hungry Minds; 1998.

 

Inside DirectX; Bradley Bargen e Terence Peter Donnely; Microsoft Press; 1998.