You are on page 1of 36

Motores de Juego

Motor 2D: PTK

José Carlos Cortizo Pérez


http://www.esp.uem.es/jccortizo
josecarlos.cortizo@uem.es

Departamento de Sistemas Informáticos


Escuela Superior Politécnica
Universidad Europea de Madrid
1
Ubicación

José Carlos Cortizo Pérez


2
Indice

José Carlos Cortizo Pérez


3
Indice

José Carlos Cortizo Pérez


4
Motor 2D

Permite gestionar el trabajo con gráficos 2D de la forma más


simple, rápida y eficiente
Al igual que los Motores 3D, suele apoyarse en librerías gráficas
(OpenGL,DirectX)
Pero aporta un mayor nivel de abstracción

José Carlos Cortizo Pérez


5
Motor 2D
Funcionalidades Típicas

Gestión de Sprites
Colocar bitmaps (varios formatos) por pantalla soportando
transformaciones y canales alfa
Gestión de capas
Gestión de la entrada
Gestión del sonido
etc.
José Carlos Cortizo Pérez
6
Motor 2D
Motor 2D vs API

Es difícil establecer el límite


El Motor 2D es un paso más allá de abstracción que un API pero
nadie establece una barrera clara
Lo único que importa del motor 2D es que nos ahorre tiempo

José Carlos Cortizo Pérez


7
Motor 2D
Ejemplos

SDL: Simple DirectMedia Layer. Uno de los más importantes.


Muchos motores lo utilizan como “API” de soporte
Haaf’s Game Engine
PTK 2D Game Engine
Torque Game Builder Pro
Allegro: Como SDL

José Carlos Cortizo Pérez


8
PTK
Introducción

PTK es más bien un SDK (Software Development Kit)


Es multiplataforma (Windows/Mac Os X)
Tiene ciertas capacidades 3D
Por debajo utiliza OpenGL o DirectX
Se programa con C++

José Carlos Cortizo Pérez


9
PTK
Juegos desarrollados con PTK

José Carlos Cortizo Pérez


10
PTK
en Visual Studio

Para Visual Studio .Net 2003


Conseguir PTK (www.phelios.com/ptk)

Instalar Ptk y descomprimirlo en un directorio fácilmente accesible

Crear un proyecto de VC++ vacío

José Carlos Cortizo Pérez


11
PTK
Ptk en Visual Studio
en Visual Studio

José Carlos de
IV Master en Diseño y Programación Cortizo Pérez
Videojuegos
Prof. José Carlos Cortizo Pérez12
PTK
Ptk en Visual Studio
en Visual Studio

IV Master en Diseño y Programación de Videojuegos


Prof. JoséJosé
CarlosCarlos
CortizoCortizo
Pérez Pérez
13 13
PTK
en Visual Studio

Crear un archivo fuente (p.e. main.cpp) para que el Visual


Studio se de cuenta de que es un proyecto C++

José Carlos Cortizo Pérez


14
PTK
en Visual Studio

Seleccionamos las propiedades del proyecto


Seleccionamos C/C++, y dentro de ahí el nodo General
Seleccionamos “Todas las Configuraciones” del panel de
Configuraciones
En Directorios adicionales incluidos, referenciamos la carpeta
libptk\pc\headers, si nuestro proyecto lo hemos creado al lado
de Ptk, la podemos referenciar como “..\ptk\libptk\pc
\headers”
José Carlos Cortizo Pérez
15
PTK
Ptk en Visual Studio
en Visual Studio

José Carlos
IV Master en Diseño y Programación de Cortizo Pérez
Videojuegos
Prof. José Carlos Cortizo Pérez 16
PTK
en Visual Studio

Seleccionamos el Nodo de Linkado, y el nodo General dentro de


él
en Directorios de Librerías adicionales, referenciar libptk\pc
\libmicrosoftvc, de forma similar al anterior p.e. “..\ptk\libptk
\pc\libmicrosoftvc”

José Carlos Cortizo Pérez


17
PTK
Ptk en Visual Studio
en Visual Studio

José Carlos Cortizo Pérez


IV Master en Diseño y Programación de Videojuegos
18
PTK
en Visual Studio

Seleccionamos Linker->Input Node y en Dependencias


Adicionales, metemos: libptkvc.lib ksoundvcstatic.lib winmm.lib
opengl32.lib dsound.lib dxguid.lib

José Carlos Cortizo Pérez


19
PTK
Ptk en Visual Studio
en Visual Studio

José CarlosdeCortizo
IV Master en Diseño y Programación Pérez
Videojuegos
Prof. José Carlos Cortizo Pérez20
PTK
en Visual Studio

Seleccionamos Debug del panel de Configuraciones, si pide


guardar los cambios, le decimos que si
En la misma página, en Ignorar Librerías Específicas, ponemos
“libcmt;libc”.
Seleccionamos Aplicar

José Carlos Cortizo Pérez


21
PTK
Ptk en Visual Studio
en Visual Studio

José Carlos Cortizo Pérez


IV Master en Diseño y Programación de Videojuegos
22
PTK
en Visual Studio

Cambiamos a configuración de Release y añadimos libc a la


sección de Ignorar Librerías Específicas
Seleccionamos el nodo C++->Generación de Código
En Librerías de Ejecución (Runtime Library), seleccionamos
Multi-threaded (/MT) y damos a Aplicar

José Carlos Cortizo Pérez


23
PTK
Ptk en Visual Studio
en Visual Studio

José Carlos Cortizo Pérez


IV Master en Diseño y Programación de Videojuegos
24
PTK
en Visual Studio

Seleccionamos modo Debug y dentro de ahí seleccionamos


Multi-Threaded Debug (/MTd)
Aplicamos y listo

José Carlos Cortizo Pérez


25
PTK
Ptk en Visual Studio
en Visual Studio

José Carlos Cortizo Pérez


IV Master en Diseño y Programación de Videojuegos
26
PTK
en Visual Studio

Ahora falta añadir una serie de ficheros .lib al directorio


recursos del proyecto
Se encuentran en dónde esté instalado el VS, \Vc7\PlatformSDK
\Lib
d3dx.lib; ddraw.lib; dsound.lib; dxguid.lib
OpenGL32.lib; Shell32.lib; WinInet.lib; WinMM.lib

José Carlos Cortizo Pérez


27
PTK
Hola Mundo

#include "ptk.h"
KWindow *window;
int WINAPI WinMain(IN HINSTANCE hInstance,
IN HINSTANCE hPrevInstance,
IN LPSTR lpCmdLine,
IN int nShowCmd )
{

window = KPTK::createKWindow( K_OPENGL );

window->createGameWindow(640, 480, -1, true, "PTK Example");

window->setClearColor(1.0f, 0,0, 1.0f);

window->setWorldView(0,0,0,1.0f, true);

int saliendo=0;

do {


window->setClearColor( 0,0,0,0 ) ;


window->setWorldView( 0 , 0 , 0 , 1 , true );


//surf_menu->blitRect( 0,0,1024,768,0,0 ) ;


window->flipBackBuffer( ) ;


if ( KInput::isPressed( K_VK_RIGHT ) == ISDOWN )



saliendo = 1;

} while( saliendo == 0 );

return 0;
}

José Carlos Cortizo Pérez


28
PTK: Ejemplo
Desarrollo de un Pacman

Como primer objetivo de esta parte de la asignatura, se


pretende realizar un “pseudo-pacman”
Este pacman tendrá un pacma controlable por el usuario y
podrá pasearse a su antojo por un laberinto (respetando los
sitios por donde puede y por donde no puede ir)
Existirá un fantasma que tratará de seguir al pacman

José Carlos Cortizo Pérez


29
PTK: Ejemplo
Desarrollo de un Pacman

El código se encuentra en la web de la asignatura


Bajadlo, probadlo, comprendedlo y posteriormente...
Los ejercicios

José Carlos Cortizo Pérez


30
PTK: Ejercicios
Ejercicio 2D:1

Modificar el Pacman para que cuándo el fantasma pille al


Pacman, se acabe la partida y se pida al usuario que pulse una
tecla para continuar. Si la pulsa, se reiniciará el juego

José Carlos Cortizo Pérez


31
PTK: Ejercicios
Ejercicio 2D:2

Modificar la Inteligencia del fantasma para que no se quede


parado en algunas esquinas en determinadas situaciones

José Carlos Cortizo Pérez


32
PTK: Ejercicios
Ejercicio 2D:3

Crear otro fantasma con otro tipo de inteligencia. Documente


bien el algoritmo elegido y por qué se elige

José Carlos Cortizo Pérez


33
PTK: Práctica 1
Juego 2D

Desarrollar un juego en 2D que sea significativamente distinto


del visto en los ejemplos. Céntrese sobre todo en la parte gráfica
y de control de los sprites. A ser posible, que el juego permita
ser mejorado posteriormente mediante la adición de físicas,
inteligencia artificial, control del juego, etc.

José Carlos Cortizo Pérez


34
¿Alguna pregunta?

José Carlos Cortizo Pérez


35
Referencias

“Game Art: The Graphic Art of Computer Games” de Leo Hartas


y Dave Morris
“Game Coding Complete” de Mike McShaffry
“Data Structures for Game Programmers” de Ron Penton
“Focus On 2D in Direct 3D” de Ernest Pazera
“Focus on SDL” de Ernest Pazera

José Carlos Cortizo Pérez


36

You might also like