The document provides an introduction to game development using Ogre 3D. It discusses the author's background and game projects, describes key features of Ogre 3D including its multiplatform support and large community, and gives an overview of initializing and using the Ogre 3D API for graphics, input, animation and more.
2. Sobre Mim
23 anos;
Bacharel em Sistemas de Informação pela
Universidade Católica de Santos;
Trabalho com Java para sistemas Web;
Estudo desenvolvimento de jogos desde 2009;
2 projetos na área de jogos:
Shyds;
PontoV.
3. Shyds Games -
http://shydsgames.com/
Criado para armazenar nossos jogos, news e
como blog de desenvolvimento;
Projetos:
Bola de Pano;
Tumbu;
Black Amber;
Sem nome (Em desenvolvimento).
9. Introdução ao Desenvolvimento
de Jogos em Ogre 3D
Introdução;
Principais Trabalhos;
Características e Features;
Ferramentas;
Ogre API;
Considerações Finais;
11. Ogre 3D
OGRE == Object-Oriented Rendering Engine;
Object-Oriented;
Rendering Engine;
Escrita em C++;
12. Ogre 3D
Breve História
Steve Streeting;
Iniciado em 2000;
Release 1.0 (Azathoth) lançado em 02/2005;
Atualmente na versão 1.8.1 (Byatis) lançada
em 09/2012.
19. TorchLight
Desenvolvido pela Runnic Games;
Lançado em outubro de 2009;
Maioria das bibliotecas utilizadas são Open
Source;
20. TorchLight
No dia 6 de agosto de 2010 o número de
vendas já ultrapssava 600 mil vendas (fonte:
Gamasutra);
Foi pago pelo jogo 20 dólares (caixa) e 10
dólares pelo download.
22. Ogre 3D
Principais características
Orientada a Objetos;
Orientada a cenas (Grafos);
Produção de Aplicações Gráficas 3D
aceleradas por Hardware;
Abstração o do uso de OpenGl e DirectX.
23. Ogre 3D
Principais Features
Multiplataforma (Windows, Linux, Mac OS);
Iphone;
Renderiza em DirectX 9, DirectX 10, OpenGL
e OpenGL ES;
24. Ogre 3D
Principais Features
Suporta Shader em CG, DirectX HLSL e
OpenGL GLSL;
Level Of Detail;
Tipo de Imagens suportadas: PNG, JPEG,
TGA, BMP, PVRTC, DDS;
Sistema de Partículas.
25. Ogre 3D
Outras Features
Plugins para exportar para os principais
modeladores 3D;
Carrega arquivos compactados (zip, pk3);
Frameworks para facilitar integração com as
principais Engines Físicas;
Integração com o OIS;
26. Ogre 3D
Features de Próximos Releases
Suporte a Android(Android NDK) e Windows
Phone 8;
Renderização em DirectX 11;
Renderização via Rede.
27. Ogre 3D
Principais Vantagens
Desempenho;
Multiplataforma;
Open Source (MIT License);
Boa documentação;
Grande Comunidade ativa;
Grande número de plugins, add-nos e
bibliotecas gratuitas;
Ser apenas uma engine gráfica.
28. Ogre 3D
Principais Desvantagens
Tempo de Compilação;
Não funcionar em consoles*;
Ser apenas uma engine gráfica.
35. Arquivos do
Ogre 3D
.mesh;
.material;
.skeleton.
36. Inicialização do
Ogre 3D
mRoot = new Ogre::Root(PLUGINS_CFG);
// Carregando as pastas dos resources
Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media/materials/scripts", "FileSystem",
"Popular");
Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media/materials/textures", "FileSystem",
"Popular");
Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media/models", "FileSystem", "Popular");
Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media", "FileSystem", "General");
// mRoot->restoreConfig() Verifica se ja existe configuração no ogre.cfg
// se existir retorna true e entra no if
// senão cai no OU e mostra a tela para escolher configuração
if(mRoot->restoreConfig() || mRoot->showConfigDialog()){
// O primeiro parâmetro diz ao Ogre que ele pode criar uma janela para renderização
// O segundo parâmetro é o titulo da Janela
mWindow = mRoot->initialise(true, "Ponto V - Tutorial 1");
}else{
// Caso o usuário aperte cancel na tela do ogre feche o programa
return false;
}
37. Inicialização do
Ogre 3D
// Escolhendo o gerenciador de cenas
mSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC);
// Cria a camera
mCamera = mSceneMgr->createCamera("Camera");
// ViewPort é o que faz a cena ser renderizado pela camera
Ogre::Viewport* vp = mWindow->addViewport(mCamera);
// Cor de fundo do ViewPort
vp->setBackgroundColour(Ogre::ColourValue(0, 0, 0));
// Muda o aspecto(width, height) da camera para se adequar ao ViewPort
mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));
// Carrega Todos resoures
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
38. Grafo de Cenas
Nó de Cena
O que é?
Nó raiz:
sceneManager->getRootSceneNode();
Criando um Nó de cena:
Ogre::SceneNode* node = sceneManager->createSceneNode("Node1");
//ou
sceneManager->getRootSceneNode()->createSceneNode("Node1");
39. Grafo de Cenas
Entidades
O que é?
Criando uma entidade:
Ogre::Entity* entidade = sceneManager-
>createEntity( “NomeDaEntidade“ , “arquivo.mesh“ );
Anexando uma entidade a um nó:
node->attachObject(entidade);
40. Grafo de Cenas
Hierarquia de Nós
Como funciona?
Root Scene
Node
Node 1
Entity
41. Grafo de Cenas
Hierarquia de Nós
Root Scene Node
Posicao ( 0, 0, 0 )
Node 1 Node 2
Posicao ( 10, 0, 0 ) Posicao ( 0, 10, 20 )
Entity
Entity 2
Posicao
Posicao
(10,0,0)
(10,10,20)