Programación de Videojuegos

Slides:



Advertisements
Presentaciones similares
Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
Advertisements

El escritorio virtual es un servicio para usuarios de la red Internet. Este servicio se caracteriza por permitir al usuario crear, modificar y eliminar.
CONOCIENDO LA COMPUTADORA
VI Unidad. Sistema Operativo
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
LOS ORDENADORES Rubén Granada.
El ordenador ELOY PUEYO GIMENO.
INFORMÁTICA BÁSICA.
Programación, Algoritmos y Estructuras de Datos
PROPIEDADES Cada uno de los objetos que forman un formulario, desde el formulario mismo hasta los botones de comando y demás objetos contenidos en él,
Introducción al software
La informática.
Teoría de lenguajes y compiladores
UTFSM - Sistemas Operativos
Memoria RAM. Tarjeta de sonido Una tarjeta de sonido o placa de sonido es una tarjeta de expansión para computadoras que permite la entrada y salida.
Unidad 3 Punteros.
Componentes básicos del ordenador
El lenguaje de programación C - Funciones -
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Igor Santos Grueiro. Ahora tenemos datos y datos …
Mantenimiento lógico del pc
Semana 5 Subprogramas..
Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás.
 Una parte física o hardware, formada por los circuitos electrónicos, dispositivos electromagnéticos y ópticos que forman el teclado, la torre, el monitor,
INSTALACIÓN DE UNO O MAS SISTEMAS OPERATIVOS
Administración de Archivos
Herramientas del sistema Jhonatan Feriz
1 5. La Búsqueda (I) Los ordenadores almacenan gran cantidad de información…  Hay que clasificarla y ordenarla para encontrarla con facilidad. ¿Y si no.
UNIDAD 3 Conceptos de Sistemas Operativos.
Archivos.
TEMA 2: SISTEMAS OPERATIVOS. ENTORNO MONOUSUARIO
Informática Ingeniería en Electrónica y Automática Industrial
Valor X Valor Y Punto (0,0) Coordenadas.
Programación de Sistemas
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
¿QUÉ ES WINDOWS 98? REQUERIMIENTOS DEL SISTEMA ESCRITORIO Y ELEMENTOS VENTANAS EXPLORADOR DE WINDOWS PANEL DE CONTROL.
Estructura del sistema de Archivos de
Practicas comunes en sistemas operativos. Unidad 5.
Fundamentos de Programación Resolución de Problemas con Computadoras y Herramientas de Programación.
Introducción a los Sistemas Operativos
Archivos Programación I MC Beatriz Beltrán Martínez.
El Ordenador: Elementos Básicos
Capítulo 7 Gestión de memoria.

Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Informática Básica Introdución a Windows
Un ordenador no puede funcionar sin sistema operativo.
Éstos son los requisitos mínimos de la funcionalidad básica. Los requisitos reales varían dependiendo de la configuración del sistema y de los programas.
UNIDAD 3 C ONCEPTOS DE S ISTEMAS O PERATIVOS. El ordenador es un sistema programable formado por un conjunto de elementos hardware que necesitan instrucciones.
Sistemas Operativos I Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas.
 PORTADA : Cuando nuestros escritos contienen varias páginas y es un trabajo a presentar, podemos elegir una portada para el mismo en la ventana que.
Vamos a tratar algunos temas que es necesario conocer a la hora de administrar un sistema informático y que nos van a ser útiles sin importar el sistema.
ISCT. Luis Antonio Mancilla Aguilar
EL ORDENADOR PERSONAL Aparato electrónico que sirve para procesar información (transformarla para que sea útil. Para hacerlo codifica la información (descompuesta.
Introducción a GDevelop
Vamos a tratar algunos temas que es necesario conocer a la hora de administrar un sistema informático y que nos van a ser útiles sin importar el sistema.
ELEMENTO DE COMPETENCIA 3
EL TIPO DE DATO LOGICO y constantes.
Definición De Software Y Hardware
ING. JOSE M ESTARITA LEMOS. CRITERIOS DE EVALUACION  Saber realizar las diferentes configuraciones básicas, después de la instalación del servidor, cumpliendo.
Área Académica: Informática Tema: Creación y edición de video Profesor: Lic. en Comp. Marco Antonio Zamora Lucio Periodo: enero-junio de 2015.
Arquitectura de Computadores
Pulse para añadir texto Partes de un ordenador Hardware (La máquina) Software (Los programas)
ORDENADOR HARDWARE UNIDAD CENTRAL Microprocesador memoria PERIFÉRICOS Teclado, ratón, Escáner, Impresora, Webcam, lápiz, Etc. SOFTWARE SISTEMAS OPERATIVOS.
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
¿Qué es VideoSpin? VideoSpin es una herramienta totalmente novedosa que permite crear tus propias películas en sólo unos minutos a partir de tus propios.
Transcripción de la presentación:

Programación de Videojuegos Por Gorka Suárez

Apartados del curso Conceptos teóricos sobre el desarrollo de un videojuego. Introducción a la API multiplataforma SDL.

Conceptos teóricos Organización de un videojuego. El bucle principal. La sección de pintado. La sección de la lógica.

Organización de un videojuego Inicialización del programa Bucle principal Finalización del programa Cargar datos Núcleo de datos del videojuego Libera los datos

Inicialización del programa Activar el sistema de video, entrada, sonido, etc... Cargar ficheros de configuración. Carga de las texturas necesarias durante toda la ejecución del programa.

Bucle principal Llamar al pintado de la pantalla. Ejecutar un ciclo de la lógica. Rutina de pintado Leer datos Núcleo de datos Leer datos Rutina de la lógica Modificar datos

Código de ejemplo void BuclePrincipal (tNucleo * Nucleo) { Uint32 Intervalo = 0; Uint32 TiempoAnt = 0; do{ //Tomamos el tiempo de inicio TiempoAnt = DarTicks(); //Pintamos la pantalla PintarPantalla(Nucleo); //Calculamos cuanto tiempo ha tardado Intervalo = DarTicks() - TiempoAnt; //Y ejecutamos la lógica en base al tiempo transcurrido EjecutarLogica(Nucleo, Intervalo); }while(Nucleo->Partida.EstadoDelJuego != ESTSAL); }

La sección de pintado Pintar el fondo. Pintar entidades del juego. Pintar interfaz del juego (HUD). Actualizar la pantalla.

La sección de la lógica Actualizar la entrada del juego (teclado, ratón, etc...) Interpretar la entrada del juego. Ejecutar la IA de todas las entidades vivas del juego.

Introducción a la SDL ¿Qué es la SDL? Funciones para la inicialización. ¿Qué son las “SDL_Surface”? Funciones para manejar imágenes. Funciones para la gestión del teclado. Como compilar SDL bajo linux.

¿Qué es la SDL? La SDL es una API multiplataforma, que se puede emplear para el desarrollo de programas que requieran manejo multimedia (gráficos, sonido, entrada, cd-rom, etc...) Creada por Sam Lantinga, para portar juegos como Civilization Call to Power, de windows a linux. Se puede encontrar en http://www.libsdl.org/

Funciones para la inicialización SDL_Init SDL_VideoModeOK SDL_SetVideoMode SDL_Quit

SDL_Init int SDL_Init (Uint32 flags); Inicializa la API SDL. Devuelve -1 en caso de que exista algún error. Su argumento flags sirve para indicar los sistemas que deseamos activar (encadenados con el operador | ): SDL_INIT_VIDEO = Sistema que controla el tema de los gráficos. SDL_INIT_AUDIO = Sistema que controla el tema del audio. SDL_INIT_TIMER = Sistema para el control del tiempo. SDL_INIT_EVERYTHING = Para inicializarlo todo.

SDL_VideoModeOK int SDL_VideoModeOK (int width, int height, int bpp, Uint32 flags); Comprueba si está soportado el modo de video indicado por el usuario, en la tarjeta de video del ordenador. Si no está soportado dicho modo de video, nos devolverá 0, en cualquier otro caso nos devolverá la profundidad máxima soportada por el modo de video indicado. Sus parametros son: width = Ancho de la resolución de la pantalla. height = Alto de la resolución de la pantalla. bpp = Numero de bits de profundidad para el color (8, 16, 24, 32). flags = Propiedades que va a tener el buffer principal de la pantalla.

SDL_SetVideoMode SDL_Surface * SDL_SetVideoMode (int width, int height, int bpp, Uint32 flags); Activa el modo de video que le indiquemos. Nos devolverá NULL en caso de error, o la dirección de memoria donde se encuentra el buffer principal de la pantalla. Los flags que podemos usar son: + SDL_SWSURFACE: Que use la memoria RAM normal. + SDL_HWSURFACE: Que use la memoria RAM de la tarjeta de video. + SDL_DOUBLEBUF: Que use doble buffering. + SDL_FULLSCREEN: Que la aplicación sea a pantalla completa.

SDL_Quit void SDL_Quit (void); Finaliza todos los sistemas que se habían activado de la SDL. Se tiene que llamar siempre que se vaya a salir del programa, para desactivar la SDL.

¿Qué son las “SDL_Surface”? Son regiones de memoria (buffers), donde se almacenan imágenes. Al cambiar el modo de video, se nos devuelve una región que usará la tarjeta de video, para pintar la pantalla con su información. ¿Qué es el Doble Buffering? Consiste en una técnica de tener dos buffers para la pantalla, en uno pintamos la escena actual, y del otro la tarjeta de video lee el contenido para pintarlo en la pantalla. Cuando tenemos la escena terminada de pintar, damos el buffer que acabamos de usar a la tarjeta, y tomamos el que acaba de dejar libre, para pintar la nueva escena.

Funciones para manejar imágenes SDL_LoadBMP SDL_SetColorKey SDL_FreeSurface SDL_BlitSurface SDL_Flip

SDL_LoadBMP SDL_Surface * SDL_LoadBMP (const char * ruta); Carga en una surface, un fichero bmp indicado en el parametro ruta.

SDL_SetColorKey int SDL_SetColorKey (SDL_Surface * surface, Uint32 flag, Uint32 key); Añade o modifica el color clave para la transparencia de la surface que le pasemos como argumento. “flag” suele valer siempre SDL_SRCCOLORKEY, y “key” es el color que va a actuar como color transparente.

SDL_FreeSurface void SDL_FreeSurface (SDL_Surface * surface); Libera el espacio ocupado en memoria por la surface que le indiquemos.

SDL_BlitSurface int SDL_BlitSurface (SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect); Copia en la región “dstrect”, de la surface “dst”, la región “srcrect”, de la surface “src”. En caso de error devuelve -1. dst src SDL_Rect: + x = Coordenada x. + y = Coordenada y. + w = Ancho del area. + h = Alto del area. dstrect srcrect Copiar de src a dst

SDL_Flip int SDL_Flip (SDL_Surface * buffPantalla); Intercambia los buffers cuando empleamos la técnica de doble buffering, actualizando así el contenido de la pantalla.

Funciones para la entrada SDL_PumpEvents SDL_GetKeyState SDL_GetMouseState SDL_GetRelativeMouseState

SDL_PumpEvents void SDL_PumpEvents (void); Actualiza el estado completo de la entrada por teclado y ratón.

SDL_GetKeyState UInt8 * SDL_GetKeyState (int * numKeys); Nos da un puntero a la región de memoria, donde SDL tiene almacenado el estado de las teclas del teclado. numKeys normalmente valdrá NULL, para que podamos acceder a todas las teclas. Ejemplo: UInt8 * teclas = SDL_GetKeyState (NULL); if(teclas[SDLK_ESCAPE] == 1) printf(“Ha pulsado escape...\n”);

SDL_GetMouseState UInt8 SDL_GetMouseState (int * x, int * y); Da las coordenadas (x, y) actuales del ratón. Devolviendo el estado de los botones del ratón. Que se puede comprobar haciendo lo siguiente: UInt8 Botones = SDL_GetMouseState (&x, &y); ((Botones & SDL_BUTTON(SDL_BUTTON_?)) == 1) -> Indica si está pulsado un botón o no. Los diferentes botones que hay son: SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE, SDL_BUTTON_RIGHT, SDL_BUTTON_WHEELUP, SDL_BUTTON_WHEELDOWN.

SDL_GetRelativeMouseState UInt8 SDL_GetRelativeMouseState (int * rx, int * ry); Da las coordenadas relativas (x, y) actuales del ratón.

Como compilar bajo linux Para compilar bajo linux no hace falta realmente mucho trabajo. Tan solo hacernos el fichero makefile, y cuando vayamos a llamar al compilador para generar el ejecutable, enlazando todos los ficheros objeto, hemos de añadir lo siguiente: `sdl-config --cflags --libs` Como ejemplo, en el caso de que solo tuvieramos un fichero fuente, el comando quedaría tal que: gcc `sdl-config --cflags --libs` -o prueba prueba.c