universidade de são paulo

Propaganda
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
Download