Motores de juego ptk

36
Motores de Juego Motor 2D: PTK José Carlos Cortizo Pérez http://www.esp.uem.es/jccortizo [email protected] Departamento de Sistemas Informáticos Escuela Superior Politécnica Universidad Europea de Madrid 1

description

Motor de juego 2d

Transcript of Motores de juego ptk

Page 1: Motores de juego ptk

Motores de JuegoMotor 2D: PTK

José Carlos Cortizo Pérez http://www.esp.uem.es/jccortizo [email protected]

Departamento de Sistemas Informáticos Escuela Superior Politécnica Universidad Europea de Madrid

1

Page 2: Motores de juego ptk

José Carlos Cortizo Pérez

Ubicación

2

Page 3: Motores de juego ptk

José Carlos Cortizo Pérez

Indice

3

Page 4: Motores de juego ptk

José Carlos Cortizo Pérez

Indice

4

Page 5: Motores de juego ptk

José Carlos Cortizo Pérez

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

5

Page 6: Motores de juego ptk

José Carlos Cortizo Pérez

Motor 2D

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.

Funcionalidades Típicas

6

Page 7: Motores de juego ptk

José Carlos Cortizo Pérez

Motor 2D

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

Motor 2D vs API

7

Page 8: Motores de juego ptk

José Carlos Cortizo Pérez

Motor 2D

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

Ejemplos

8

Page 9: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

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++

Introducción

9

Page 10: Motores de juego ptk

José Carlos Cortizo Pérez

PTKJuegos desarrollados con PTK

10

Page 11: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

Para Visual Studio .Net 2003Conseguir PTK (www.phelios.com/ptk)

Instalar Ptk y descomprimirlo en un directorio fácilmente accesible

Crear un proyecto de VC++ vacío

en Visual Studio

11

Page 12: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

12

12

Page 13: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

13 13

Page 14: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

Crear un archivo fuente (p.e. main.cpp) para que el Visual Studio se de cuenta de que es un proyecto C++

en Visual Studio

14

Page 15: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

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”

en Visual Studio

15

Page 16: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

17

16

Page 17: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

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”

en Visual Studio

17

Page 18: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

19

18

Page 19: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

Seleccionamos Linker->Input Node y en Dependencias Adicionales, metemos: libptkvc.lib ksoundvcstatic.lib winmm.lib opengl32.lib dsound.lib dxguid.lib

en Visual Studio

19

Page 20: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

21

20

Page 21: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

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

en Visual Studio

21

Page 22: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

23

22

Page 23: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

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

en Visual Studio

23

Page 24: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

25

24

Page 25: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

Seleccionamos modo Debug y dentro de ahí seleccionamos Multi-Threaded Debug (/MTd)

Aplicamos y listo

en Visual Studio

25

Page 26: Motores de juego ptk

José Carlos Cortizo Pérez

PTKen Visual Studio

IV Master en Diseño y Programación de VideojuegosProf. José Carlos Cortizo Pérez

Ptk en Visual Studio

27

26

Page 27: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

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

en Visual Studio

27

Page 28: Motores de juego ptk

José Carlos Cortizo Pérez

PTK

#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;}

Hola Mundo

28

Page 29: Motores de juego ptk

José Carlos Cortizo Pérez

PTK: Ejemplo

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

Desarrollo de un Pacman

29

Page 30: Motores de juego ptk

José Carlos Cortizo Pérez

PTK: Ejemplo

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

Bajadlo, probadlo, comprendedlo y posteriormente...

Los ejercicios

Desarrollo de un Pacman

30

Page 31: Motores de juego ptk

José Carlos Cortizo Pérez

PTK: Ejercicios

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

Ejercicio 2D:1

31

Page 32: Motores de juego ptk

José Carlos Cortizo Pérez

PTK: Ejercicios

Modificar la Inteligencia del fantasma para que no se quede parado en algunas esquinas en determinadas situaciones

Ejercicio 2D:2

32

Page 33: Motores de juego ptk

José Carlos Cortizo Pérez

PTK: Ejercicios

Crear otro fantasma con otro tipo de inteligencia. Documente bien el algoritmo elegido y por qué se elige

Ejercicio 2D:3

33

Page 34: Motores de juego ptk

José Carlos Cortizo Pérez

PTK: Práctica 1

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.

Juego 2D

34

Page 35: Motores de juego ptk

José Carlos Cortizo Pérez

¿Alguna pregunta?

35

Page 36: Motores de juego ptk

José Carlos Cortizo Pérez

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

36