tutorial: desenvolvimento de jogos com unity 3d

Download Tutorial: Desenvolvimento de Jogos com Unity 3D

Post on 07-Jan-2017

217 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Tutorial:DesenvolvimentodeJogoscomUnity3D

    ErickBaptistaPassosepassos@ic.uff.br

    JosRicardodaSilvaJr.josericardo.jr@gmail.com

    FernandoEmilianoCardosoRibeiroone.fernando@gmail.com

    PedroThiagoMouropedrothiago@hotmail.com

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    1

  • Apresentao

    Essetutorialapresentadocomoumabreveintroduoaodesenvolvimentodejogoscomo

    motor Unity3D. Explicaes muito detalhadas, mesmo que cobrindo apenas parte dasfuncionalidades existentes, ocupariambemmais que as trs dezenas de pginas disponveisparaestetutorial.Dessaforma,recomendamosoleitorinteressadoabuscarmaisinformaes

    naabrangenteeexcelentedocumentaoda ferramenta,disponvel tanto localmente,aoserealizarasuainstalao,quantoonlineatravsdositehttp://www.unity3d.com/support.

    Tambmporquestesdeespao,nofoi includauma introduogeralaodesenvolvimentodejogos.Esperasequeoleitorpossuaalgumafamiliaridadecomosconceitoseferramentas

    relacionadosaoassunto taiscomorenderizaoemtemporeal,modelagemeanimao3D,texturas e Shaders. Tambm esperase que o leitor possua noes de programao,preferencialmentecomalgumalinguagemorientadaaobjetos.

    O contedo do texto est organizado em forma crescente de complexidade, de forma a

    facilitar a leitura. Entretanto, as sees apresentadas tambm podem ser lidas de formaindependente.

    AimagemdacapafoicedidadoprojetoFranaAntrtica,decujaequipededesenvolvimentofazempartealgunsdosautores.O jogoFranaAntrticaestsendodesenvolvidoatravsda

    Unity3DeumprojetofinanciadopelaSecretariadeCulturadoEstadodoRiodeJaneiro.

    Por fim, informase que algumas das figuras e exemplos apresentados foram adaptados domanualdaferramenta,detutoriaisonline(http://www.unity3d.com/resources),bemcomodediscusses disponveis no forum comunitrio de desenvolvedores Unity

    (http://forum.unity3d.com). Tambm recomendamos o leitor que explore essas refernciasparaummaioraprofundamento.

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    2

  • Guiadeleitura

    1Introduo

    BreveapresentaodosmdulosdaUnity3Dedetalhamentodainterfacedoeditordecenas.

    2CriaoeManipulaodeGameObjects

    ExplicaodomodelodeobjetosdaUnity3Deasformasbsicasdecriao,composioe

    alteraodosmesmos.

    3MateriaiseShaders

    BreveintroduolinguagemdeespecificaodeShadersdaUnity3D:ShaderLab.Sodemonstradosexemplosparapipelinedefunofixa,bemcomoShadersprogramveis.

    4SistemadeFsica

    IntroduoaoscomponentesrelacionadosaosubsistemaPhysXdesimulaofsica.

    5Scripting

    Apresentao,atravsdeexemplos,dosprincipaisconceitosparaaprogramaodescriptscomaUnity3D.

    6Concluso

    Consideraesfinaisdosautores.

    Bibliografia

    Leiturasrecomendadasparaaquelesinteressadosemummaioraprofundamento.

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    3

  • 1Introduo

    Odesenvolvimentodejogos3Dumaatividadeaomesmotempogratificanteedesafiadora.

    Diversashabilidades,dediferentesreasdoconhecimento,sonecessriasnesseprocesso.Ousodeferramentasparaauxiliarnastarefasrepetitivasfundamentalnessetipodeatividade,eaolongodotempo,umtipoespecialdeferramenta,conhecidocomomotordejogos(game

    engine) foi evoluindo de maneira paralela aos prprios jogos, ao ponto que se tornaramprodutosvaliososedecertaformapopulares.

    Alguns mdulos e funcionalidades auxiliares so condies necessrias para que umaferramenta seja considerada um motor de jogos completo. Em especial, um sistema de

    renderizao 3D com suporte a Shaders programveis e um sistemade simulao fsica sofundamentais. Uma boa arquitetura para a programao de scripts, um editor de cenasintegrado,eacapacidadedeseimportardiretamentemodelos3d,imagenseefeitosdeudio

    produzidosemferramentasexternas, soascaractersticasexistentesnosmotoresde jogos.Alm disso, desejvel que os jogos desenvolvidos possam ser distribudos em mltiplasplataformascomoPC,consolesoumesmodispositivosmveis.

    AUnity3DabstraidodesenvolvedordejogosanecessidadedeutilizardiretamenteDirectXou

    OpenGL (apesar de ainda ser possvel, caso necessrio), suportando a criao de ShaderscomplexoscomalinguagemCgdaNVidia.Internamente,osubsistemadesimulaofsicaopopularPhysX,tambmdaNVidia.Paraaexecuodescripts,aUnityusaumaversodealto

    desempenhodabibliotecaMono,umaimplementaodecdigoabertodoframework.NetdaMicrosoft.

    Aindaquesejaumaferramentaqueincluioestadodaartenoseusegmento,aUnity3Dtemum preo acessvel, o que apenasmais uma das razes para sua crescente popularidade.

    MesmousandoaversomaisbaratadaUnity3d,os jogospodemserdesenvolvidosparaPC,Mac ou mesmo embutidos em uma pginaWeb. Com a aquisio de licenas especficas,podesedesenvolveredistribuirjogosparaiPhone,atravsdalojaonlinedaApple,oumesmo

    paraoconsoleWiidaNintendo.

    1.1Interface

    O motor de jogos Unity3D possui uma interface bastante simples e amigvel que objetivafacilitar o desenvolvimento de jogos de diversos gneros e outros sistemas de visualizao.Sua rea de trabalho composta de vrias janelas chamadas views, cada uma com um

    propsitoespecfico.AfiguraabaixoumacapturacontendoumarepresentaoesquemticaeaidentificaodecadaumadessasjanelasnoeditordecenasdaUnity3D.

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    4

  • Figure1InterfacedoeditordecenadaUnity3D(UNITYTECHNOLOGIES2009A)

    Projectview

    AjanelaProjectainterfaceparamanipulaoeorganizaodosvriosarquivos(Assets)que

    compemumprojetotaiscomoscripts,modelos,texturas,efeitosdeudioePrefabs,osquaisserodetalhadosmais adiantena seode scripting.Aestruturaexibidana janelaProject correspondente subpasta Assets dentro da pasta do projeto no sistema de arquivos do

    computador. Recomendase que a manipulao de sua estrutura e contedo seja efetuadasomentedentrodaUnity3D,afimdemanteraintegridadedosmetadadosquesoassociadosa estes elementos. Entretanto, certasmudanas, como atualizao de uma textura por um

    editordeimagensporexemplo,oumesmoaadiodenovosAssets,podeserfeitadeformaseguradiretamentenosistemadearquivos.

    Figure2JanelaProject

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    5

  • Hierarchyview

    A janelaHierarchyexibetodososelementosdacenaqueencontramsenacenaqueseest

    editando. Alm disso, nessa janela podemos organizar e visualizar a hierarquia de decomposioentreosvriosobjetosquecompemacena (grafodecena).O funcionamentodessesobjetos,bemcomoahierarquiadetransformaoserexplicadomaisdetalhadamente

    naprximaseo.

    Figure3JanelaHierarchycomdoisobjetos

    Sceneview

    AjanelaSceneaformaprincipaldemanipulaodoselementosvisuaisnoeditordecenasda

    Unity, possibilitando a orientao e posicionamento desses elementos com um feedbackimediatodoefeitodasalteraesefetuadas.Nestajanela,podesemanipulargraficamenteosobjetosatravsdasopesdearrastaresoltarcomomouse.Essamanipulaosemelhante

    quela de ferramentas demodelagem 3D e podesemanipular objetos tais como cmeras,cenrios,personagensetodososelementosquecompemacena.

    Devidoasuagrandeimportnciaduranteodesenvolvimentodeumaaplicao,vriasformasdenavegaosooferecidasafimdeaumentaraindamaisaprodutividadedodesenvolvedor.

    Alm disso, as ferramentas bsicas demanipulao dos elementos da cena, tais comopan,translao,rotaoeescalatambmestodisponveisparautilizaonestajanelaatravsdeatalhosdeteclado(teclasQ,W,EeR).

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    6

  • Figure4JanelaScene

    Gameview

    A janelaGame responsvel pela visualizao da aplicao em desenvolvimento da forma

    queelaserexibidaquandofinalizada.Nessajanela,podeserapidamenteterumaprviadecomooselementosestosecomportandodentrodaaplicao.Almdisso,aUnityforneceaopodeseparalisar(botopause)asimulaoenquantoelaestiveremdepurao,deforma

    a possibilitar que os parmetros dos vrios elementos possam ser ajustados paraexperimentao.Lembramosqueoajustedessesparmetrosnonecessitamqueasimulaoestejaparalisada,podendoseralteradosinclusiveenquantoasimulaoestejaemexecuo.

    Nesta janela, tambm podese visualizar vrias informaes estatsticas (stats) sobre a

    simulao,taiscomotempodeprocessamentoenmerodeframesporsegundo,nmerodetringulos e vrtices renderizados,memria de textura utilizada, entre outras. Esta opo importante para a depurao do desempenho da simulao para uma posterior otimizao,

    casosejanecessrio.

    Inspectorview

    Najanela Inspector, temseacessoaosvriosparmetrosdeumobjetopresentenocenrio,bem como aos atributos de seus componentes (Components). Essa estrutura utilizada pelaUnityparaacomposiodeobjetossermelhorexplicadanaprximaseo.Aindanajanela

    Inspector, podeseajustarosatributospblicos (parmetros)de cada componente, inclusiveduranteaexecuodaaplicao.

    VIII Brazilian Symposium on Games and Digital Entertainment Rio de Janeiro, RJ Brazil, October, 8th-10th 2009

    7

  • Figure5JanelaInspector

    2CriaoeManipulaodeGameObjects

    Muitosmotoresdejogosdegeraoanteriordisponveisnomercadosobaseadosnousodeespecializao/heranaparaasclassesqueirorepresentarobjetosdejogo.Nestaarquitetura,oselementosdeumjogoherdamdeumaclassebsica(normalmentealgocomoGameObject)

    e as novas funcionalidades so acrescentadas. Assim como em outras categorias dedesenvolvimentodesoftwareorientadoaobjetos,ousodemasiadodeherananessetipodesituaotornouseobsoleto,principalmenteporsuapoucaflexibilidadequandoosobjetosde

    jogopossuemmltiploscomportamentos,oqueexigiriaheranamltipla.

    A Unity3D baseada em ummodelomaismoderno para a arquitetura de objetos de jogobaseadoemcomposio[Bilas2002,Stoy2006,Passosetal.2008].