Upload
alessandro-binhara
View
714
Download
1
Embed Size (px)
DESCRIPTION
Desenvolvimento de Games Multi-Plataforma com .NET Uso do mono em games, Unity3D , MonoGames, Exemplos
Citation preview
Desenvolvimento de Games Multi-Plataforma com .NET
Palestrantes− Alessandro Binhara
− Msc em Gestão de Projetos Complexos pela UTF-PR− Projeto Mono Brasil − [email protected]
− Rafael Ribeiro− Especialista em Desenvolvimento de Games pela UP− Projeto Taikodom www.gamersfirst.com/taikodom− Hoplon www.hoplon.com − [email protected]
− Sandro Bihaiko − Studio FluidPlay Games− [email protected]
Agenda
− A história de um Jogo− Por que usar Mono/.Net em jogos?− Quem usa?− Demo
A História de um Jogo
História de um Jogo
− Idéia Própria ou Remake− Brainstorm (levantamento de idéias)− GDD (especificação)− Pré-Produção− Marketing, Produção, Comercial, Estratégico, etc− 3 Atividades Simultâneas (operacional)
− Game Design: Iterativo, Revisão, Novas Features, etc− Arte: Concepts, Modelagem 3D, Animação, Som, etc− Desenvolvimento: Código, Ferramentas, QA
− Lançamento
Tamanho do Jogo (Esforço)− Gigantes
− MMOs (conteúdo)− RPGs
− Grandes− Simuladores− Ação
− Pequenos− Casuais− 2D/3D (simples)− GamePlay Simples
7
Games Multi-Plataforma .NET− Dificuldades
− Bibliotecas para Renderização 3D− OpenGL versus Directx− Porte do XNA para outros ambientes????− Linguagens suportadas− Suporte à diversas plataformas
Por que Mono em Jogos?
9
Por que Mono em Games?
− OpenSource− Performance− Embarcável − Portes para Iphone, Wii, PS3, Windows, MAC, PC− Compilação Estática e Dinâmica− Otimizações especializadas para manipulação de grandes
vetores− Mono.Simd
− http://tirania.org/blog/archive/2008/Nov-03.html− http://go-mono.com/docs/index.aspx?tlink=0@N%3aMono.Simd− http://tirania.org/blog/archive/2008/Nov-03.html− http://tirania.org/blog/archive/2008/Feb-26.html
MONO.SIMDSencondLive mudou do LSL para Mono- 50x a 300x mais rápido
10
Mono.XNA -> XNATouch
− Implementação do Framework XNA para o MonoTouch− Objetiva a compatibilidade em nível de código fonte
− Livre e Gratuita− Brasileiro! - José Antonio “jalf” Leal de Farias
− Xnatouch.codeplex.com− Implementação baseada no OpenGL ES 1.1
− Recursos e desempenho− Foco atual na parte 2D (SpriteBatch)
− 90% da API implementada− API 3D apenas no fim do ano− Versão 1.0 prevista para Janeiro− Colabore!
11
Miguel Pdc2008− Icaza, Miguel Pdc2008
http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/PC54.wmv
• Rendering• Shading• Scene• Animation• Geometry• GUI
Display
• Physics• Collision• Particles• Terrain
Simulation
• World rules
• Enemy AI• User
control• Camera• Behavior
Game Logic
• Audio• Input• Networkin
g
Support
Icaza, Miguel Pdc2008 http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/PC54.wmv
The ProblemGames are real-time programs
30 to 60 frames per second (0.016 seconds)
• User control• Network
events
Input
• Scripted, slow
• React to change
• Update scene
AI
• Render Graphics
• Play audio
Updates
Language Choices
Prod
uctiv
ity
Performance
Assembly Language
C/C++
Fully Dynamic
C#/Java
FastSlow
Difficult
Easy
Mono’s CLR is ideal for embedding Some examples
SecondLife: Switched from LSL to Mono 50x to 300x performance increase
Unity3D: Powers Cartoon Network’s FusionFall
Uses C#, UnityScript and Boo UnityScript is a strongly typed Javascript
Mono in Gaming TodayMoving from scripting to static/compiled
Exploring an innocent looking loop in C#:
3D Floating Point Vector OperationsAt the core of gaming engines
UpdatePos (Vector3f [] points, ref Vector3f delta){ for (int i = 0; i < points.Length; i++) points [i] += delta;}
xi
yi
zi
+δx
δy
δz
xi+δx
yi+δy
zi+δz
=
Vector3f static operator + (Vector3f a, Vector3f b){ return new Vector3f (a.x+b.x, a.y+b.y, a.z+b.z);}
Object-oriented APIs for Vector processing Vector4f, Vector4i, Vector2d,
Vector16b, etc Mapped to hardware operations
Mono.SIMD: Mapping To Native InstructionsSIMD aware runtime
• pos += deltaC#•call [Mono.Simd]Mono.Simd.Vector4f::op_Addition(
valuetype [Mono.Simd]Mono.Simd.Vector4f,
valuetype [Mono.Simd]Mono.Simd.Vector4f)
IL•movups (%eax),%xmm0•movups (%edi),%xmm1•addps %xmm1,%xmm0•movups %xmm0,(%eax)x86
Detect
SIMDuse
SIMD Operations MixDeveloper created tests
Mono.SIMD: SpeedupsPhysics simulations, no optimizations
Based on the C++ simulation code at sharp-gamedev.blogspot.com/2008/09/updated-c-version.html
Quem usa?
21
Unity 3D
− Mais de 258 jogos na AppStore− Mono foi embarcado à ferramenta− Mono roda os scripts C#, Boo e Unity3D
− Render 3D, IA, Animações, Interações, Lógica do Jogo− Compilação Estática para Wii, Iphone− Compilação JIT 20x mais rápido que os concorrentes
− http://tirania.org/blog/archive/2009/Jan-07.html
22
Mensão Honrosa− Rodrigo Bamboo
− Desenvolvedor Mono− Criador da Linguagem Boo http://boo.codehaus.org/
Um linguagem que combina características C# , Ruby e PythonLinguagem Script fortemente tipada com inferência de tipos dinâmicosPossibilidade de criação de macros em tempo de compilação através de
uma pipeline de compilação plugável− Responsável pela integração do mono no Unity3D− Montou toda a scriptagem do C# dentro do Unity3D− Desenvolveu o UnityScript − Atualmente trabalha na DB4O (lider mundial em Bancos de
Dados Orientados a Objetos) e para a Unity3D (Lider mundial em Engine de Jogos)
FusionFall - MMOG
http://www.fusionfall.comhttp://br.video.yahoo.com/watch/4169603/11222611#MAGIC
Super Volei Brasil - Casual
25
Primeiro Game para Wii em C#− My Animal Center
http://www.myanimalcentre.com/
− Totalmente escrito em C#− Usou Unity3D− Video: http://tirania.org/blog/archive/2009/Jan-06.html
26
Jogo no IPhone
− Compilação Estática no Mono− Rodando no Iphone− http://vimeo.com/2428637
27
Rodando na WEBRodando com plug-in no Browserttp://unity3d.com/gallery/live-demos/index.html#tropical-
paradise
Demo Torment
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
Torment (Remake) – FluidPlay
© 2009 Microsoft Corporation. All rights reserved. Microsoft, MSDN, the MSDN logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.