UNIVERSIDADE DE SÃO PAULO Instituto de Ciências Matemáticas e de Computação Desenvolvimento do jogo Robogol para navegadores web utilizando o motor de jogos Unity 3D. Diego Eduardo Carvalho Desenvolvimento do jogo Robogol para navegadores web utilizando o motor de jogos Unity 3D. Diego Eduardo Carvalho Supervisor: Antonio Valério Netto Monografia de conclusão de curso apresentada ao Instituto de Ciências Matemáticas e de Computação – ICMC-USP - para obtenção do título de Bacharel em Ciências de Computação. Área de Concentração: Desenvolvimento de Sistemas USP – São Carlos Junho de 2012 ii Resumo O Robogol é um sistema criado para a realização de partidas de futebol entre robôs. Inspirado no futebol de mesa, popularmente conhecido como totó ou pebolin, o sistema conta com uma mesa energizada que alimenta de um a quatro robôs, estes são controlados individualmente por um humano, através de controles fixados na mesa ou por um algoritmo computacional. Os robôs possuem movimentos de rotação no próprio eixo e ações de movimentação para frente e para trás, permitindo assim um controle total da direção para a qual se deseja seguir. O sistema conta ainda com um formato de pontuação e classificação dos melhores usuários que fica disponibilizado no site da empresa Xbot, aumentando assim o desafio entre os utilizadores. Por se tratar de um equipamento complexo é mais indicado para feiras, buffets e áreas de entretenimento como parque de diversões e áreas de lazer de shoppings. Assim viu-se a necessidade de tornar o produto mais acessível para angariar mais usuários e aumentar a divulgação do mesmo. O desenvolvimento do mesmo sistema no formato digital para a web foi a alternativa encontrada para atingir usuários de todas as faixas de idade e de qualquer ponto de acesso a rede mundial de computadores. Este projeto tem por objetivo desenvolver o Robogol para navegadores web, mantendo um alto grau de similaridade tanto no que diz respeito ao visual quanto ao grau de semelhança em jogabilidade encontrado pelos usuários nas mesas físicas aplicando-se técnicas de engenharia de software, programação orientada a objetos, física e computação gráfica. Os resultados obtidos demonstram que os principais objetivos foram atingidos obtendo um jogo em formato digital incorporado ao site da empresa permitindo que os usuários continuem suas disputas em qualquer lugar e que estes incentivem mais participantes a conhecerem o sistema. i Sumário LISTA DE ABREVIATURAS .................................................................................. IV LISTA DE FIGURAS .................................................................................................. V CAPÍTULO 1: INTRODUÇÃO .................................................................................. 1 1.1 A EMPRESA ONDE O ESTÁGIO FOI REALIZADO ......................................................... 1 1.2 OBJETIVOS DO TRABALHO ...................................................................................... 2 1.3 ORGANIZAÇÃO DA MONOGRAFIA ........................................................................... 3 CAPÍTULO 2: MÉTODOS, TÉCNICAS E TECNOLOGIAS UTILIZADAS ...... 4 CAPÍTULO 3: DESENVOLVIMENTO DO TRABALHO ..................................... 6 3.1. DESCRIÇÃO DO PROBLEMA .................................................................................... 6 3.2. DESCRIÇÃO DAS ATIVIDADES REALIZADAS ........................................................... 7 3.2.1 Unity 3D .......................................................................................................... 7 3.2.2 Requisitos ...................................................................................................... 10 3.2.3 Modelagem .................................................................................................... 11 3.2.4 Codificação ................................................................................................... 16 3.3. RESULTADOS OBTIDOS ........................................................................................ 18 3.4. DIFICULDADES E LIMITAÇÕES ............................................................................. 20 4.1. CONTRIBUIÇÕES .................................................................................................. 21 4.2. CONSIDERAÇÕES SOBRE O CURSO DE GRADUAÇÃO ............................................. 21 4.3. TRABALHOS FUTUROS ......................................................................................... 22 REFERÊNCIAS .......................................................................................................... 24 ii BIBLIOGRAFIA ........................................................................................................ 24 iii Lista de Abreviaturas 2D – Duas Dimensões 3D – Três Dimensões FAPESP – Fundação de Amparo à Pesquisa do Estado de São Paulo FINEP – Financiadora de Estudos e Projetos ICMC – Instituto de Ciências Matemáticas e de Computação IDE – Integrated Development Environment (Ambiente de Desenvolvimento Integrado) P&D – Pesquisa e Desenvolvimento PIPE – Pesquisa Inovativa em Pequenas Empresas SGBD – Sistema Gerenciador de Banco de Dados UML – Linguagem de Modelagem Unificada USP – Universidade de São Paulo iv Lista de Figuras Figura 1: Ambiente de Desenvolvimento do Unity 3D .............................................................. 8 Figura 2: Diagrama de Atividade - Gerenciamento Robogol ................................................... 12 Figura 3: Diagrama de Atividade - Jogo Robogol .................................................................... 13 Figura 4: Diagrama de Classes - Robogol ................................................................................ 14 Figura 5: Esboço - Menu Principal ........................................................................................... 15 Figura 6: Esboço - Seleção de Times ....................................................................................... 15 Figura 7: Esboço - Classificação .............................................................................................. 16 Figura 8: Tela de Jogo - Seleção de Times ............................................................................... 18 Figura 9: Tela de Jogo - Partida em Execução ......................................................................... 19 v CAPÍTULO 1: INTRODUÇÃO 1.1 A empresa onde o estágio foi realizado Fundada em 2007, a Xbot é uma empresa de pequeno porte situada em São Carlos – SP focada na fabricação e comercialização de robôs para as áreas de educação, entretenimento e treinamento. Para a área de educação a utilização de robôs visa aumentar e desempenhar um papel de aceleração na curva de aprendizado para estudantes do nível fundamental, ensino médio, ensino técnico, graduação e pós-gradução. Com o uso dos robôs diversas disciplinas são empregadas e abordadas, permitindo que os conceitos adquiridos sejam aplicados na pratica. Para a área de entretenimento o foco é tornar as pessoas familiarizadas com a robótica de forma divertida, além de proporcionar um meio de comunicação altamente atrativo para ações promocionais utilizando-se da paixão nacional, o futebol. Para tanto a empresa conta com um sistema para realização de partidas de futebol de robôs permitindo sua customização tanto de layout quanto de cores. Para a área de treinamento diversos cursos e treinamentos são oferecidos abrangendo as áreas de educação técnica, indústria e serviços. Os cursos foram montados e preparados para todos os tipos de publico alvo, desde hobbystas, estudantes, técnicos de indústria, professores de ensino técnico além de empresas de serviços. Os cursos podem ser oferecidos diretamente na empresa ou realizado especificamente em uma empresa ou instituição permitindo assim a fácil transferência de conhecimentos técnicos e de aplicações já adquiridos pela equipe multidisciplinar da empresa. Desde sua fundação a Xbot conta com o financiamento tanto de investidores individuais, quanto de programas de fomento do governo estadual e federal como FAPESP, CNPq e FINEP. A empresa possui também investimentos em P&D não reembolsáveis o que demonstra a confiança na competência e segurança da empresa pelos órgãos responsáveis. 1 A empresa é estruturada em departamento de compras, vendas, atendimento ao cliente, montagem e manutenção, pesquisa e desenvolvimento, administração, engenharia, entre outros. O estágio foi realizado no departamento de pesquisa e desenvolvimento que conta com uma equipe composta por engenheiros eletrônicos e engenheiros de computação utilizando-se da linguagem C++. Porém por se tratar do primeiro projeto na área de jogos digitais foi definida um nova equipe para atuar no desenvolvimento do projeto utilizandose da tecnologia .NET, com a linguagem C# e o motor de jogos Unity 3D. Sendo um projeto piloto a equipe do mesmo foi montada apenas com o estagiário. 1.2 Objetivos do Trabalho O Robogol é um sistema criado para a realização de partidas de futebol entre robôs. O equipamento é constituído de uma mesa eletrônica no formato de campo de futebol com dimensões 2,85m x 1,60m x 0,90m pesando aproximadamente 160kg, dois a quatro robôs controlados por joysticks fixados na mesa e uma bola de golfe. Por se tratar de um equipamento complexo é mais indicado para feiras, buffets e áreas de entretenimento como parque de diversões e áreas de lazer de shoppings. Esta limitação de lugares disponíveis para o acesso ao usuário causa certa limitação no numero de adeptos e da divulgação do produto. O presente projeto tem por objetivo aumentar a divulgação do sistema no formato digital, inserindo-o no site da empresa. Através desta iniciativa o sistema simularia o ambiente real tornando possível que os usuários continuem disputando suas partidas mesmo distantes das lojas que possuem o produto oficial. Este trabalho tem por objetivo também informar a quantidade de usuários que estão aderindo ao produto de forma virtual, abrindo assim a possibilidade de uma pesquisa de mercado interativa e transparente para o usuário final. Portanto o objetivo principal do trabalho foi a criação de um jogo digital para ser incorporado ao site da empresa, similar ao Robogol real, para a simulação das partidas do futebol entre robôs nos navegadores web. 2 1.3 Organização da Monografia Esta monografia está organizada da seguinte forma: no Capítulo 2 são descritos os métodos, técnicas e tecnologias utilizadas para o desenvolvimento desse projeto, como por exemplo, o motor de jogos utilizado. No Capítulo 3, o trabalho e as atividades desenvolvidas são apresentados, assim como os resultados obtidos e as limitações e dificuldades encontradas durante a execução do projeto. No Capítulo 4 a conclusão, as considerações sobre o curso de graduação que tiveram influência sobre esta monografia e os trabalhos futuros. Por fim são apresentadas as referências citadas. 3 CAPÍTULO 2: Métodos, Técnicas e Tecnologias Utilizadas Para a execução do projeto optou-se pela utilização da Unity 3D versão 3.0 como motor de jogos. Motor de jogos, mais conhecido no termo em inglês, game engine, é um programa de computador ou um conjunto de bibliotecas que fornecem uma abstração dos detalhes da construção de um jogo digital. As funcionalidades tipicamente encontradas em um motor de jogos são renderização gráfica 2D e 3D, simulação de física e detecção de colisão. Fornece também a abstração de hardware permitindo ao desenvolvedor criar jogos sem se preocupar com a arquitetura da plataforma alvo. A escolha da Unity 3D foi baseada no fato de uma empresa parceira já ter utilizado em outros projetos, mas principalmente por possuir características que auxiliam o profissional a concluir seu trabalho de forma rápida e fácil. A ferramenta não é apenas um motor de jogos, contando também com um ambiente integrado de desenvolvimento e com um sistema de publicação enquadra-se na categoria de midleware. Middleware é o termo criado para designar camadas de software que não constituem diretamente aplicações, mas que facilitam a criação destas. Entre as características encontradas podemos citar que o motor de jogos possui uma versão gratuita que pode ser usada tanto em jogos educacionais quanto para fins comerciais, os jogos digitais podem ser criados utilizando as linguagens de programação Boo, JavaScript e C#. É compatível com diversos navegadores web e compatível também com diversos programas de modelagem tridimensional, possui ainda interface gráfica, sistema de colisão, iluminação e de som. Além de todas as características apresentadas outro ponto forte da Unity 3D é o fato de ser multiplataforma, podendo ter jogos desenvolvidos tanto para desktops, mobile e web alterando uma simples configuração. Para a codificação do jogo a linguagem de programação escolhida foi o C#, uma linguagem orientada a objetos, desenvolvida pela Microsoft como parte da plataforma .NET. Apesar da ferramenta para desenvolvimento de jogos citada já possuir ambiente para criação e edição de código integrado ao seu ambiente, foi utilizado ambiente integrado de desenvolvimento Microsoft Visual Studio 2010®, por ser mais robusto e possuir mais 4 funcionalidades para este fim. O Microsoft Visual Studio 2010® também foi utilizado como ferramenta para a criação dos diagramas UML que serviram de base para o desenvolvimento. O banco de dados utilizado foi o PostgreSQL versão 8.4, o qual já era utilizado pela empresa para armazenamento das informações do próprio site, o PostgreSQL é um SGBD objeto - relacional open source, que possui funcionalidades sofisticadas como controle de concorrência, tables spaces, copias de segurança, tolerância a falhas, dentre outras. Com as ferramentas definidas fez-se a analise de requisitos seguindo o padrão da UML e modelando o jogo com a aplicação de técnicas de análise Orientada a Objetos. A UML permite ao engenheiro de software traduzir as regras de negócios através de métodos unificados com modelos de análise usando regras definidas por Grady Booch, James Rumbaugh e Ivar Jacobson (PRESMAN, 2002). Os métodos de análise orientados a objetos definem as regras do problema como um conjunto de objetos que possuem relação ou não entre si, podendo ou não herdar atributos uns dos outros e que se comunicam através de mensagens (PRESMAN, 2002). 5 CAPÍTULO 3: DESENVOLVIMENTO DO TRABALHO 3.1. Descrição do Problema O presente projeto teve por objetivo projetar e desenvolver o jogo Robogol para a plataforma web, ou seja, o produto final deveria ser executado através de navegadores web. O jogo digital deveria se assemelhar ao correspondente real, que é produzido pela empresa para fins de entretenimento, tanto no que diz respeito à parte visual, para a ambientação do jogador e o vínculo com o produto, quanto no que diz respeito à jogabilidade, visto que o principal objetivo do jogo é incentivar e estimular que os utilizadores procurem a mesa real nos clientes da empresa, estimulando a venda do produto. A meta incluía também que todas as informações das partidas e dos jogadores fossem persistidas no banco de dados da empresa e os desempenhos e estatísticas de cada usuário exibidos no site do produto. Para tanto, o objeto específico deste projeto deveria permitir que o jogador controlasse um robô com movimentos para frente, para traz e movimentos de rotação no próprio eixo. Teria que conter como parte de sua estrutura, quatro robôs idênticos no formato, mas diferentes na coloração para a divisão em times durante a partida. Alem é claro dos itens fundamentais para a execução de uma partida de futebol de robôs, o campo ou mesa composta por dois gols e obviamente a bola similar a uma bola de golfe. Também estão inclusos nesta listagem a exibição do marcador do tempo de partida e a exibição do marcador de pontuação para cada time. Outros detalhes não funcionais também necessários são uma boa iluminação para ambiente, a visão completa de toda a mesa e dos robôs nela posicionados, nitidez na diferenciação de cores entre os times, menu com informações sobre os controles necessários para a realização das partidas e visualização do desempenho individual após cada partida. 6 3.2. Descrição das Atividades Realizadas Para o desenvolvimento do jogo Robogol foi realizado um estudo do funcionamento, das funcionalidades e das características do motor de jogos Unity 3D. Com uma base de conhecimento no ambiente adquirida, deu-se inicio o levantamento de requisitos do projeto e juntamente, uma modelagem de software através de diagramas de estado e diagramas de classe baseando-se nos padrões UML. Após esta etapa concluída foram criados os documentos de definição de layout e itens que estariam presentes em cada tela apresentada durante a execução do jogo. Com toda a documentação concluída deu inicio a codificação e testes do jogo em si. 3.2.1 Unity 3D Como o Unity 3D possui um ambiente integrado de desenvolvimento, o ponto de partida no conhecimento do programa iniciou-se com a ambientação das telas e estrutura para a criação de jogos. Os jogos são montados através de cenas, que são como blocos ou etapas do jogo, distribuindo o desenvolvimento em cenas é possível economizar processamento, pois somente os elementos presentes na cena ativa consumirão o processador. A IDE, do inglês Integrated Development Environment, possui uma interface simples e amigável que tem por objetivo facilitar o desenvolvimento de jogos de diversos gêneros, é composta por quatro telas principais que são exibidas por padrão na inicialização do sistema, cada uma com uma função especifica. São elas Scene, Hierarchy, Project, Inspector estas janelas possuem as principais informações para o profissional realizar seu trabalho. 7 Figura 1: Ambiente de Desenvolvimento do Unity 3D A janela Scene é a principal no ambiente, esta é a janela que exibe todos os elementos da aplicação, possibilitando a manipulação dos mesmos através de rotações, posicionamento e alteração de sua escala. Nesta tela também é possível navegar por entre os objetos permitido que se tenha a visão de diversos ângulos e distâncias. A janela Hierarchy exibe todos os elementos presentes em uma determinada cena em edição. Estes elementos são organizados em uma hierarquia e exibidos em forma de arvore de visualização que demonstra a composição do mesmo. A janela Project é responsável pela manipulação dos arquivos que representam um projeto, como os códigos, aqui denominados scripts, texturas, modelos tridimensionais, arquivos de áudio e um componente próprio do motor de jogos, os prefabs. Prefabs são objetos armazenados que podem ser utilizados inúmeras vezes em qualquer cena do projeto. A partir do objeto original, o prefab, é possível instanciar qualquer quantidade de objetos que irão apresentar todas as características e comportamentos do objeto base, esse comportamento é similar a criar uma classe e instanciar vários objetos em uma linguagem de programação orientada a objetos. Project é organizada de forma idêntica ao sistema de arquivos do computador, permitindo até que algumas alterações ocorram diretamente nos diretórios do sistema operacional refletindo diretamente no projeto. 8 A janela Inspector apresenta os componentes de um determinado objeto. O Unity 3D trabalha de forma muito comum a outros ambientes de desenvolvimento de jogos, construindo seus elementos através de composição. Assim ao selecionarmos algum item em uma cena são exibidos todos os componentes desse objeto, como por exemplo, componente de transformação, componente de renderização e componente de colisão. Cada componente é constituído de atributos que são valores editáveis que influenciam diretamente o comportamento ou característica do objeto. A partir da familiarização do ambiente de desenvolvimento o próximo passo foi identificar os componentes que determinam um jogo desenvolvido nesta ferramenta. O primeiro elemento e o principal é o Game Object, este componente é um contêiner genérico que serve de base para praticamente todos os outros componentes de um jogo. O Game Object funciona como um repositório de funcionalidades, cada componente acrescenta uma funcionalidade ou comportamento ao objeto, esse componente pode ser um objeto de iluminação, uma geometria de colisão e até uma textura. Este objeto pode se tornar qualquer coisa na cena, sendo possível criar uma câmera simples até uma espaçonave interestelar dependendo de quais elementos o compõe. Todos os Game Objects possuem como característica inicial o componente Transform, responsável pelo posicionamento, orientação e escala no sistema referencial da cena. É a partir Game Object que são criados os prefabs que é um template que define a instanciação de outros objetos similares ao prefab. Apesar de o editor possuir ferramentas para a criação de objetos básicos como esferas, cubos e cilindros, ferramentas para coloração, efeitos de som e criação de partículas, para os jogos modernos é essencial a criação de objetos complexos como humanóides, veículos, ou sons das mais diversas formas. O Unity permite que elementos destes tipos possam ser criados em programas de computador especializados, agregando realidade ao jogo, e importados diretamente em uma cena. A esse procedimento se da o nome de importação de assets. Assets são artefatos que são importados de outras ferramentas de forma fácil e prática como um arrastar de mouse diretamente no projeto, o motor de jogos aceita diversos formatos de modelos 3D, sons, texturas e animações. 9 Para o Robogol tanto os robôs quanto as texturas foram importados como assets. Já a mesa, os gols, a pontuação, o placar de tempo e a bola foram criados a partir dos elementos básicos encontrados no editor. O que garante o funcionamento de um jogo é a movimentação de coisas e as respostas para essa movimentação. O motor de jogo utiliza internamente um motor de física da NVidia para efetuar simulações físicas dos objetos. Este motor de física foi desenvolvido para executar em unidades gráficas de processamento acarretando em um melhor desempenho, além de abstrair os cálculos complexos do desenvolvedor aumentando sua produtividade. Nesta mesma linha existe o sistema de colisão que são estruturas básicas como esferas, cubos, cápsulas e precisas como do formato do próprio objeto que são representados como componentes para o sistema. Além da simulação física por trás destes elementos de colisão, os mesmos também são utilizados como gatilhos para geração de eventos que podem ser tratados e interpretados para a tomada de ações. Outros pontos escolhidos pelo programador devem ser incluídos como regras ou ações específicas para seu funcionamento, os scripts são os responsáveis por tal função. Scripts são linhas de códigos implementados em qualquer uma das três linguagens de programação JavaScript, C# ou Boo. Internamente, os scripts são executados através de uma versão modificada da biblioteca Mono, uma implementação de código aberto para o sistema .Net. Scripts funcionam como qualquer outro componente e devem ser incluídos nos objetos que responderão aos algoritmos criados. Em Unity a comunicação entre os objetos dentro de uma cena é realizada através de mensagens. Quando um objeto deseja interagir com outro, o primeiro realiza uma busca na cena pelo segundo e chama uma função de envio de mensagens, o segundo objeto recebe esta mensagem e responde a ela conforme sua codificação. 3.2.2 Requisitos Com o conhecimento básico do software para desenvolvimento de jogos adquirido iniciou-se a fase de levantamento de requisitos e criação de artefatos UML. Os requisitos são regras de negocio ou necessidades ou mesmo solicitações às quais o sistema, projeto ou jogo deve atender. Em outras palavras é o nome dado ao estudo das características que 10 o sistema deverá ter para atender às necessidades e expectativas do cliente. Os requisitos foram levantados juntamente com o cliente e por ter o produto real de referência não foi documentado ficando somente os artefatos UML, ou seja a modelagem como documentação do projeto. 3.2.3 Modelagem A modelagem é a parte que se encarrega de transformar os resultados dos requisitos em um documento ou conjunto de documentos capazes de serem interpretados diretamente pelo programador. Para o desenvolvimento de jogos um dos principais documentos criados são os diagramas de atividade e para esse projeto não foi diferente. O Diagrama de Atividade mostra atividades sequenciais e paralelas em um processo. O diagrama é útil para modelagem de processos de negócios, fluxos de trabalho, fluxos de dados e algoritmos complexos (LARMAN, 2007). A Figura 2 representa o Diagrama de Atividade do gerenciamento do jogo. O primeiro diagrama de atividades produzido foi o do funcionamento geral do jogo, seu gerenciamento, ou seja, todo o processo que não envolve o jogo e suas regras em si. 11 Figura 2: Diagrama de Atividade - Gerenciamento Robogol O segundo diagrama de atividades trata do jogo em si, como é o inicio do jogo, as ações possíveis de serem tomadas e o que determina seu termino. 12 Figura 3: Diagrama de Atividade - Jogo Robogol Artefato conhecido entre desenvolvedores, o diagrama de classes é fundamental para dividirmos problemas complexos em problemas menores e mais fáceis de resolver. Esse diagrama facilita muito o entendimento do sistema como um todo e serve de base para a codificação do mesmo. Como o futebol de robôs apresenta uma estrutura simples para ser representada, seu diagrama de classes é simples da mesma forma. 13 Figura 4: Diagrama de Classes - Robogol Para a criação do futebol de robôs foi necessário criar menus, e telas de interação com o usuário. Foram criados então, esboços de telas planejadas com o cliente, algumas são exibidas nas imagens abaixo. 14 Figura 5: Esboço - Menu Principal Figura 6: Esboço - Seleção de Times 15 Figura 7: Esboço - Classificação 3.2.4 Codificação Para a codificação foram utilizadas técnicas de orientação a objetos que possui como características principais a implementação de classes, herança, polimorfismo e encapsulamento. A linguagem de programação utilizada foi C#, por conta da maior familiaridade entre as três possíveis. A codificação envolveu realizar a criação de scripts para a captura de colisões entre a bola e os gols para efetuar a marcação de pontuação, a codificação do contador de tempo e a finalização quando o limite de tempo da partida se esgotar. O principal script criado define a movimentação do robô controlado pelo jogador humano e pelo controlado pelo computador. O script para o usuário basicamente verifica qual o tecla esta pressionada e a partir desta define qual o movimento será realizado pelo robô. Caso a tecla pressionada seja a seta para cima o robô se movimentará para frente, caso seja seta para baixo o robô se 16 movimentara para trás, caso seja a tecla para esquerda o robô efetuará uma rotação no próprio eixo para a esquerda e caso seja a seta para direita o robô rotacionará no próprio eixo para a direita. Para o robô controlado pelo computador o script não possui inteligência artificial em seu algoritmo. Basicamente o funcionamento do computador segue um algoritmo simples, quando o jogo inicia o robô obtém um valor randômico e a partir deste valor efetua a rotação para a esquerda ou para a direita de forma também randômica. Feito isso o robô verifica se irá para frente ou para trás com uma proporção de oito em duas chances de movimentação para frente. Caso o robô sofra uma colisão que não seja com a bola ele repete o procedimento repetidamente, se a colisão for com o elemento bola, continua o movimento que já estava executando. A função do script da mesa é de computar o valor do gol para o time correto. Já o script da bola visa garantir que após a mesma entre no gol, esta seja relançada a partir do centro da mesa, como é o padrão do futebol de mesa. Para realizar a publicação no site da empresa foi necessário escolher a opção acessar o menu Build Settings e escolher a plataforma web. Feito isso o programa gera três arquivos UnityObject.js, WebPlayer.html e WebPlayer.unity3d. No arquivo WebPlayer.html é possível realizar algumas edições como, por exemplo, o tamanho e posição da janela do jogo que ficará exibida no navegador, além das frases apresentadas durante o carregamento do jogo. São estes três arquivos que deverão ser anexados ao código do site no qual a aplicação ficará hospedada. O Unity 3D assim como o Adobe Flash necessita que o utilizador instale um player para seu funcionamento. Caso o usuário que entre no site ainda não possua o web player, será solicitado que o mesmo efetue sua instalação e o aplicativo indicará o link correto para download do instalador. 17 3.3. Resultados Obtidos A criação do menu principal foi realizada com a escolha de uma imagem de fundo lembrando os gramados de futebol sobreposto pelos botões representados por textos, os botões são iniciar, opções e sair. O botão sair finaliza o jogo e mostra o desempenho do jogador e sua classificação, o botão opções abre a tela de opções onde são apresentadas informações de como movimentar o jogador e opção de habilitar e desabilitar o som. Apesar desta versão não contar com som, o menu já foi preparado para tal função. E por último o botão iniciar que passa o jogo para a próxima tela que é a responsável pela definição dos times através da escolha da coloração dos robôs. A tela de escolha de times pode ser visualizada abaixo: Figura 8: Tela de Jogo - Seleção de Times No exemplo exibido na imagem o time do jogador seria o time laranja. O próximo passo o jogador escolhe a coloração do time adversário, e logo após isso o jogo inicia. O futebol de robôs possui uma mesa, dois gols, quatro robôs e uma bola. A câmera de exibição foi posicionada simulando a posição que o jogador fica perante a mesa durante 18 uma partida real. Para a iluminação foram posicionadas quatro luzes com os feixes em formato de cone, uma em cada canto da mesa dando a sensação de ambiente fechado. Para complementar o cenário estão posicionadas três paredes com a imagem contendo o logo da empresa Xbot, controlando assim a exibição do cenário vazio comum em ambientes 3D. O jogo inicia e tem duração de cinco minutos, os dois times começam com zero gol e após o termino dos cinco minutos o time que acumular mais gols é o vencedor, ao término da partida o jogo retorna ao menu inicial e todo o processo se repete. Tantos os pontos efetuados durante a partida quanto quem venceu e perdeu são computados para compor o desempenho do jogador na classificação por pontos. São dados válidos para a composição da classificação os itens: pontos, jogos, vitórias, empates, derrotas e saldo de gols. A Figura 5 demonstra o resultado obtido durante a execução partida. Figura 9: Tela de Jogo - Partida em Execução 19 3.4. Dificuldades e Limitações Durante o processo de análise e implementação do projeto, algumas dificuldades foram observadas. No início a falta de conhecimento e treinamento para o uso do software envolvido impediu que desenvolvimento do mesmo fosse executado em um tempo ideal. O sistema de colisão do Unity 3D funciona de forma excelente porém seu entendimento demanda um certo período de estudos da ferramenta, tempo esse inexistente para a execução deste trabalho o que comprometeu as regras de colisão durante a partida, causando sobreposição de objetos por exemplo. Como o projeto trata de um sistema multimídia e composto principalmente de imagens para sua criação a falta de conhecimento em modelagem de objetos foi uma limitação altíssima. Para contornar o problema da similaridade com o ambiente real foram utilizados modelos públicos encontrados na rede mundial de computadores, e os que não foram possíveis de encontrar, como a mesa do jogo, por exemplo, foram criados de forma rudimentar com a própria ferramenta de edição do motor de jogos. Outra limitação enfrentada foi a inclusão de sons no projeto. Este ponto dependeria também de pessoas especializadas para sua produção, portanto nesta primeira parte do projeto este aspecto não foi incorporado. De forma geral um jogo digital é composto por uma equipe interdisciplinar, composta por programadores, desginers, artistas gráficos, sonoplastas, entre outros, assim era de se esperar que as principais dificuldades encontradas no desenvolvimento de um projeto deste tipo, sem uma equipe de conhecimento variado, seriam nas áreas não relacionadas a Ciências de Computação. 20 CAPÍTULO 4: CONCLUSÃO 4.1. Contribuições Este trabalho permite uma forma interativa de divulgação de um produto da empresa. Também com este trabalho usuários que não tinham acesso a mesas físicas para realizar suas partidas e treinar sua jogabilidade agora possuem um modo de jogar o Robogol sem a necessidade de sair de casa. O desenvolvimento deste projeto contribui ainda com a fidelização dos usuários com a empresa e ao jogarem através dos navegadores web possibilita uma forte estatística da demanda de mercado que o produto pode atender, podendo assim facilitar e melhorar as vendas de seu similar real. A realização do estágio proporciona por em prática em cenário real todo o conhecimento e técnicas adquiridos durante a graduação e aperfeiçoar os pontos que ainda estão com deficiência. É fundamental para o contato com diferentes e novas tecnologias, pois proporciona trabalhos em áreas que a universidade não consegue abranger mesmo possuindo um curso extenso e amplo. 4.2. Considerações sobre o Curso de Graduação O curso de Bacharelado em Ciências de Computação do ICMC fornece uma capacidade multidisciplinar extremamente necessária para o desenvolvimento de jogos. Pois nesta área é necessário ter conhecimentos de Física, Matemática, Inteligência Artificial, Computação Gráfica, Programação Orientada a Objetos, entre outras disciplinas que são fornecidas como base durante a graduação. Apesar de atualmente contarmos com vários frameworks, programas de computador e motores de jogos altamente desenvolvidos que abstraem vários processos de baixo nível e que não exigem tanto conhecimento, ter essa base fundamentada pela USP garante que qualquer dificuldade, alteração ou criação de uma funcionalidade que não atende plenamente o que o projeto necessita, pode ser facilmente enfrentada durante o desenvolvimento. Isso garante a independência de qualquer ferramenta. 21 4.3. Trabalhos Futuros O projeto ainda esta em desenvolvimento e dentre as requisitos restantes para sua conclusão estão a conexão com a base de dados do site da empresa Xbot, criação e exibição do ranking dos melhores jogadores virtuais e a exibição da lista de lugares aonde se encontram as mesas físicas instaladas. A conexão com a base de dados é fator de extrema importância para atender uma das missões do projeto no que diz respeito a fidelização dos usuários, pois é através da base que o usuário poderá se cadastrar e acompanhar sua evolução e comparar-se com os demais participantes. Esse tipo de comparação leva a desafios que estimulam o usuário a continuar procurando o jogo e o que consequentemente influencia de forma direta a fidelidade com o site. O site já possui o ranking próprio para os usuários das mesas fixas, portanto somente seria necessário incluir os dados das partidas virtuais ao seu quadro de itens. Outro ponto não contemplado nesta primeira etapa foi a inclusão de sons no produto. Como é de se esperar em um sistema multimídia o som é fundamental para a imersão do usuário no ambiente ao qual ele esta interagindo. Os sons não foram aplicados nesta etapa, pois serão produzidos por um profissional especifico contratado pela empresa, assim quando estiverem disponíveis poderão ser facilmente inseridos para dar ambientação e realidade ao produto. Durante o desenvolvimento do jogo Robogol notou-se que seria mais atrativo aos usuários se o jogo em navegador permitisse partidas entre dois a quatro jogadores em rede. Para que o jogo contemple partidas entre usuários em rede é de se esperar que o jogo aceite uma forma do usuário montar uma sala virtual e que esta sala aguarde ate que o numero determinado de jogadores estejam preparados para dar inicio a partida. Dentro deste aspecto o sistema devera ser capaz de permitir que os usuários verifiquem a disponibilidade uns dos outros para que possam enviar convites ou reservar lugares tornando possível a formação de times das mais variadas formas. Para este cenário é comum a inclusão de uma ferramenta de chat antes de dar inicio as partidas para ocorram interações entre os usuários. 22 Já quando a partida der inicio é de se esperar que os companheiros de time possam se comunicar por voz definindo assim estratégias de posicionamento, de ataque e defesa. O sistema de partidas para multijogadores não foi atendido no trabalho, pois este por si só demanda um tempo de entendimento e desenvolvimento maior do que foi especificado para o trabalho executado. Uma melhoria identificada e de extrema importância é a inclusão de inteligência artificial para os robôs controlados pelo computador. Como é de se esperar, um jogo digital com uma inteligência artificial se torna muito mais desafiador e com isso se torna menos previsível cativando muito mais jogadores e fidelizando de forma significativa os usuários corriqueiros. Este é outro ponto na área de desenvolvimento de jogos que demandaria por si só uma equipe especializada e um tempo de desenvolvimento muito alto para ser concluído no tempo determinado para este projeto 23 REFERÊNCIAS XBot. Disponível em: http://www.xbot.com.br/ - Acesso em 31 de maio de 2012. Unity 3D Manual de Referência. Disponível em: http://unity3d.com/support/documentation/Components/index.html - Acesso em 31 de maio de 2012. Unity 3D Tutorial. Disponível em: http://unity3d.com/support/resources/tutorials/ Acesso em 31 de maio de 2012. Microsoft Visual Studio. Disponível em http://www.microsoft.com/visualstudio/pt-br/products/2010-editions - Acesso em 31 de maio de 2012. Pressman, R.S., “Engenharia de Software”. 5ª edição, Rio de Janeiro: Editora McGraw-Hill, 2002. Larman, C., “Utilizando UML e padrões – Uma introdução à análise e ao projeto orientado a objetos e ao desenvolvimento iterativo”. 3ª edição, São Paulo: Editora Bookman, 2007. BIBLIOGRAFIA Watson, K., “Beginning C#: Programando”. 1ª edição, Editora Makron Books, 2002. Greene, J. “Use a Cabeça! C#”. 1ª edição, Editora Alta Books, 2008. Freeman, E. “Use a Cabeça! Padrões de Projetos (Design Patterns)”. 1ª edição, Editora Alta Books, 2005. Blackman, S. “Beginning 3D Game Development with Unity”. 1ª edição, Editora Apress, 2011. 24 Goldstone, W. “Unity Game Development Essentials”. 1ª edição, Editora Packt Publishing, 2009. Wittayabundit, J. “Unity 3 Game Development”. 1ª edição, Editora Editora Packt Publishing, 2011. 25