Laboratorio de Investigación y Desarrollo de Software Libre Creación de un motor de videojuegos ultrabásico con C, SDL y OpenGL sobre plataformas de Software.

Slides:



Advertisements
Presentaciones similares
Es el arte de instruir a un computador sobre los pasos necesarios para resolver los problemas que influyen en la creación de un videojuego. Es el.
Advertisements

2. Motor de Videojuegos..  En un comienzo se programaba para un hardware específico, usando directamente instrucciones de los diversos microprocesadores.
Mónica Quintana Pineda
INSTALACION DE UN SISTEMA OPERATIVO.
Hacer clic para comenzar. Reunión Especializada de Organismos Gubernamentales de Control Interno del Mercosur Foro Un espacio para el diálogo.
Microsoft PowerPoint es un programa de presentación desarrollado por la empresa Microsoft para sistemas operativos Microsoft Windows y Mac OS, ampliamente.
Organización del Computador UC1.- Arquitectura y estructura del computador.
OpenGL básico con SDL Alejandro Valenzuela Roca Laboratorio de Investigación y Desarrollo de Software Libre 25 de Abril de 2008.
Hardware. Que es el hardware y sus componentes. 1. El hardware son todas las partes físicas y tangibles de una computadora. 2. Partes del hardware: 2.1.
SISTEMAS OPERATIVOS REALIZADO POR: Noelia Hidalgo y Auda López.
Vania Mora Velázquez Sistemas operativos aplicados.
SISTEMAS OPERATIVOS (II): WINDOWS
Tema 1 Fundamentos de Computación
Introducción al mundo de las comunicaciones
WINDOWS Elvira Abajo Lera Octubre, 2008.
Física General.
COMPUTACIÓN Y SOFTWARE DE APLICACIÓN
Introducción a Sistemas Operativos
SOFTWARE Se forma por el conjunto de instrucciones o programas. Los programa son una secuencia de órdenes que se le dan a la computadora para que haga.
Introducción a Sistemas Operativos
Diagramas de Flujo Algoritmos.
Tatiana largo Acevedo. 10-2
Computadora La computadora es una máquina capaz de realizar y controlar a gran velocidad cálculos y procesos complicados que requieren una toma rápida.
Informática 1 Año. Trabajo Practico. Tema: Definiciones
Introducción al mundo de las comunicaciones
LENGUAJES Y REPRESENTACION TECNICA
Conectividad de Bases de Datos
APLICACIONES DE WINDOWS
Historia de las computadoras Dispositivos de entrada
AGREGAR NUEVO HARDWARE
Cómo instalar Windows 7 Cardenas perez 10-1.
Conceptos Procedimientos
Ing. Victor Padilla Farías. LINUX INTRODUCCIÓN Si conserva un antiguo 386 ó 486, puede que lo quiera aprovechar con Linux. No va a alcanzar velocidades.
Ing. Victor Padilla Farías. LINUX INTRODUCCIÓN Si conserva un antiguo 386 ó 486, puede que lo quiera aprovechar con Linux. No va a alcanzar velocidades.
KUbuntu Carlos Torres Denis González 7 de septiembre de 2015.
1era. Unidad el computador y sus componentes
S.I.G (SISTEMA DE INFORMACION GEOGRAFICO)
PROVEEDOR DATA WAREHOUSE TERADATA
ADMINISTRACIÓN DE USUARIOS
DIFERENCIAR LAS FUNCIONES DEL SISTEMA OPERATIVO O S.O.
CONTENIDO HIPERVINCULOS: ¿Qué es scratch? Interfaz grafica de scratch
Continuación Unidad 4. Control de flujo
TECNOLOGIA.
HERRAMIENTA DE TAREAS JORGE ENRIQUE SOTO.
Instalaciones Desatendidas
Scratch Presentado por: Valentina Agudelo Huerfano J.M.
Scratch Presentado por: Sharon Daniela Bustos Barón. 901 J.M.
Cómo restablecer Windows 10 a su estado original sin perder tus archivos y configuración.
EL SISTEMA OPERATIVO Es un conjunto de programas hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora.
INSTALACIÓN DE WINDOWS 7
Diseño de software educativo
CHIPSET.
NOMBRE: Danilo Pillacela Efraín Villalta. Introducción La ingeniería con el transcurso del tiempo ha visto necesario experimentar con los fenómenos físicos.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
Introducción a la informática. Definiciones Es el término resultante de la contracción de los vocablos INFORmación y autoMÁTICA. Se define como el conjunto.
Integrantes : Luna valentina torres olivares Jackson Hernán Martínez Tarazona 4°A.
Estructura de Sistemas Operativos CAMPOS CHACALTANA, ANTHONY.
Estructura de los sistemas Operativos 1. Componentes de un sistema operativo  Administración de procesos  Administración de memoria  Subsistema de Entrada/Salida.
INSTITUTO TECNOLOGICO DE VERACRUZ
VIRUS INFORMÁTICO.  CONCEPTO Un virus es un software que tiene por objetivo de alterar el funcionamiento normal de cualquier tipo de dispositivo informático,
INTRODUCCIÓN A LA INFORMÁTICA
Conceptos básicos II. – Game Maker. –.
LOS SISTEMAS OPERATIVOS MENÚ SISTEMAS OPERATIVOS Introducción Definición Historia Funciones Tipos S.O. Algunos Existentes Conclusiones Referencias.
Instalación y creación de una maquina virtual. 2/2/ La mayoría de las computadoras modernas son lo suficientemente potentes como para ejecutar varios.
ESTRUCTURA DE LO SISTEMAS OPERATIVOS Presentado por: Jennifer.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
Informática- R.L.G.1 Computadora: Herramienta electromecánica que facilita diversas y muy variadas tareas dependiendo del programa que se utilice. Se caracteriza.
Transcripción de la presentación:

Laboratorio de Investigación y Desarrollo de Software Libre Creación de un motor de videojuegos ultrabásico con C, SDL y OpenGL sobre plataformas de Software Libre (“FLOSS”, “Free/Libre Open Source Software”) Alejandro Valenzuela Roca

¿Qué hay en esta plática? ● Objetivo ● ¿Qué es un motor de videojuegos? ● ¿Por qué C/SDL/OpenGL? ● Funcionamiento de un motor de videojuegos ● Construcción de un ejemplo: – SDL – OpenGL – Geometría analítica (Álgebra vectorial) – Simulación de cinemática – Detección de Colisiones – Sonido

Objetivo ● Que los asistentes sepan con qué se puede hacer y por dónde se puede comenzar, y tengan una idea de cómo funciona un motor de juegos por dentro, sin entrar en cosas demasiado complicadas (por ahora). ● Que los asistentes observen una demostración de un mini-juego 3d multiplataformas con un motor muy sencillo.

Introducción ● En un principio, cualquier ñoño lo suficientemente ñoño en la computadora hacía un videojuego. ● Hoy en día, se requieren ingenieros de Software para las herramientas y el motor, de Hardware para las consolas, de redes para los MMORPG, Animadores, Diseñadores de personajes, Cuentistas, Marketing, Finanzas, etc. ● Esta plática se enfoca en un motor 3d muy básico, pero hecho por nosotros mismos.

¿Qué necesito? ● Máquina Una máquina con ~ 1 GHz, pentium3+, 256MB+ RAM, tarjeta de video aceleradora compatible (intel, nvidia o ATI – que tenga drivers para GNU/Linux) ● Paciencia ● Perseverancia ● Imaginación ● Un “NO extremo disgusto” por las matemáticas

¿Por qué C/SDL/OpenGL? ● Software libre ● Excelente rendimiento ● Multiplataforma (GNU/Linux, *BSD, Windows, MacOS, BeOS, Solaris, IRIX, QNX, WindowsCE, Playstation*, Dreamcast*, Atari*, Symbian*) ● Programaremos las “tripas” del sistema ● Interoperabilidad entre distintos entornos, SO, compiladores, incluso lenguajes ● No es demasiado complicado * Con soporte aunque no oficialmente soportado (fuente: )

¿Qué es un motor de videojuegos? ● Programa que simula mediante matemáticas el estado de un mundo ficticio que reacciona al estímulo de uno o más usuarios. ● Esquema if (A > B) return colision; Pos += 1;

Funcionamiento de un motor de videojuegos ● Esquema interno Inicio Menú Mainloop Inicializar variables ¿Sa lir? No Fin Sí Lo que cubre esta plática Game Over

Inicialización de variables ● Posición inicial de los objetos dentro del juego ● Situación inicial del juego – Vidas = 3 – Mundo = 5-3 – Tiempo restante = 400s – Velocidad = 0 – Aceleración = 0 – Energía = 100 – etc.

Mainloop Inicio Leer controles del usuario y alterar variables “de control” en base a dichos controles Actualizar variables “de juego” en base al estado previo y al tiempo transcurrido; como el Mainloop es precisamente un ciclo, este tiempo transcurrido será el tiempo entre la última vez que se corrió este mismo bloque y “ahora”. Representar al universo de manera gráfica (pintar un frame con la información pertinente que le muestre al jugador lo que está pasando) ¿Salir ? No Fin Sí If (control.circle.pressed){ acelerar = 1; } V = V + a * pos = pos + V * Calcular (entre otras cosas) Dormir ZzZzZz...

Leer controles del usuario y alterar variables “de control” ● Se detecta qué botones o teclas está presionando el usuario. ● Se alteran variables (por ejemplo, si el usuario presiona el botón de salto, se establece dicha variable en 1). ● Es mejor no tomar directamente la lectura de los controles porque dependiendo de la plataforma pueden llegar varios mensajes idénticos seguidos, luego desaparecer sin que el botón haya sido soltado, luego reaparecer, etc.

Observación ● Algunas consolas modernas leen los controles más frecuentemente de los fps que dibujan, probablemente para realizar una medición más precisa en controles extraños (como el ilustrado). Sin embargo, en el motor de esta plática esta idea fue probada sin resultados significativos (salvo que la aplicación se colgaba en Windows..)

Actualización de las variables “de juego” ● La actualización de las variables de juego es una de las partes más interesantes y una donde se realiza una gran cantidad de cálculos; en general: – Se actualizan las aceleraciones de los objetos móviles en base a las variables “de control”. – Se actualizan las velocidades de los objetos en base a sus aceleraciones. – Se actualiza la posición de cada objetos en base a su velocidad resultante.

Actualización de las variables “de juego” (continuación) – Se detectan colisiones que pueden modificar directamente la posición, las velocidades, y las aceleraciones del objeto. – Se corrigen “efectos cuánticos”, efectos secundarios de discretizar el tiempo para detectar colisiones.

Actualización de las variables “de juego” (continuación) – Los “agentes” dentro del juego (enemigos, etc.), deben tomar decisiones en base a lo que estaban haciendo con anterioridad, y la nueva situación del universo dentro del motor de juego. – Se decide si se emiten sonidos o no (el sonido debe tener su propio hilo, de preferencia).

Representar la situación actual del universo de manera gráfica ● Una vez terminados los cálculos que definen completamente la situación actual, se manda al sistema de trazado de gráficos (en este caso OpenGL) las instrucciones necesarias para representarlo. – En esta etapa se calcularían todos los efectos de luz, las oclusiones, etc., en un motor gráfico más complejo.

Construcción de un ejemplo ● Usaremos C, SDL y OpenGL para construir un motor gráfico sencillo en base a lo que se vio con anterioridad. ● Necesitaremos: – Caja de vectores. – Compilador. – Bibliotecas instaladas.

SDL ● SDL es una biblioteca que abstrae el sistema de ventanas, de manera que con las mismas funciones de SDL tendremos efectos equivalentes sin importar si se trata de GNOME o KDE, XFCE, el manejador de BeOS o Windows. Las ventanas se crearán de la misma manera sin importar la plataforma. ● SDL también nos abstrae el sistema de sonido y provee de métodos para leer tanto efectos de sonido en wav como música en OGG.

OpenGL ● OpenGL es una biblioteca desarrollada por SGI para conservar una API uniforme para trazar gráficos en varias plataformas. ● OpenGL es capaz de comunicarse directamente con la tarjeta de video de manera que en gran parte traslada los cálculos de los gráficos del procesador a la tarjeta de video.