Desarrollo de videojuegos en GDevelop CAMPUS CIENTÍFICO DE VERANO 2015
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Sprites Consisten en imágenes y animaciones. En GDevelop, cada animación puede representar, por ejemplo, un estado del objeto (correr, caminar, explosión ...). Una animación se compone a su vez de direcciones, correspondientes al ángulo del objeto (mirando izquierda, derecha, etc ...).
T3: Sprites Páginas útiles donde encontrar sprites: http://www.spriters-resource.com/ http://spritedatabase.net/ http://www.videogamesprites.net/ http://retrogamezone.co.uk/
T3: Sprites Para crear un animación, utilizar Editor de Sprites
T3: Sprites Añadir nueva Animación. Añadir todas las imágenes que van a formar parte de la animación. Pulsar botón para activar bucle de animación Pulsar botón de añadir tiempo entre cada imagen
T3: Sprites Para controlar el cambio de animación se utilizan eventos. Se pueden controlar además los fotogramas de la animación y la velocidad de animación.
T3: Sprites Podemos Editar los puntos de una imagen pulsando En la ventana que se abre, siempre tenemos por defecto el Origen y Centro de la imagen. Para añadir un nuevo punto pulsamos Se pueden introducir las coordenadas o señalar el punto en pantalla.
T3: Sprites Los sprites y en general cualquier objeto tienen propiedades básicas: X, Y: Posición del objeto. Ángulo: Ángulo (de giro) del objeto. Plano(Z): Se utiliza para indicar la colación de los objetos. Dados dos objetos, el que tenga mayor valor de plano es el que se sitúa delante.
T3: Sprites Transparencias: GDevelop permite establecer diferentes niveles de transparencia a un sprite. Para ello es necesario usar un eventos. El valor de transparencia es un número entero entre 0 (transparente) y 255 (opaco).
T3: Sprites Mezclas: GDevelop tiene tres modos de mezcla de sprites con el fondo: Alpha Sumar Multiplicar Se manejan mediante eventos
T3: Sprites Conversor de imágenes: GDevelop permite dividir ciertos formatos de imagen (GIF, RPGMaker, Spritesheet) en varias imágenes para crear las distintas animaciones que componen un sprite.
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Tiles Definición (wiki): Una tile es la parte gráfica de cada videojuego que puede ser utilizada para completar partes de un fondo por medio de un tileset (conjunto de tiles). Cada tile es diferente y básicamente del mismo tamaño, en los videojuegos los tiles están colocados en un tileset. Cada tileset tendrá la combinación básica de ciertos lugares del juego, montañas, lagos, bosques etc. Los tiles también son partes seccionadas de un sprite (imagen). Ejemplo: imagen de montaña seccionada: cada tile de esa montaña podrá juntarse para hacerse la misma, pero, no solo para eso sino para también hacer más combinaciones con otros tiles y así obtener gráficos más variados.
T3: Tiles Algunos tiles tienen un color de fondo (background color), el cual sirve para diferenciar el sprite del tile de su tile trasero que está seleccionado. Algunos tiles vienen con un fondo predeterminado, es decir ya creado y no necesitan de su color de fondo para poder tener en base un tile trasero, a menos que se cambie. Tiles isométricos
T3: Tiles Habitualmente se utiliza algún tipo de editor que me permita diseñar la pantalla a partir del tileset (o tilesets) seleccionados. Estos editores generan algún tipo de estructura de datos que representa la pantalla, como características principales tenemos: Pueden utilizar tilesets en 2D o isométrico (2D ½) Las pantallas se construyen mediante layers (capas), donde cada capa se emplea con diferentes objetivos (fondo, primer plano o pantalla, colisiones). Se genera una estructura de datos que contiene toda la información de la pantalla.
T3: Tiles Ejemplos de estos editores son: Tiled Map Editor (www.mapeditor.org/) Tile Studio (tilestudio.sourceforge.net/)
T3: Tiles Ejemplos de estos editores son: DAME Editor (http://dambots.com/dame-editor/) tIDE Open Source Tile Map Editor (http://tide.codeplex.com/)
T3: Tiles Los tiled sprites en GDevelop se denominan Mosaicos: Muestran un patrón de imagen repetido Más eficientes que los Sprites comunes
T3: Tiles Añadir un mosaico: Seleccionar una imagen del banco de imágenes Añadir la imagen como textura del mosaico Establecer dimensiones del mosaico
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Físicas La física es una de las partes más importantes de un videojuego, ya que permite dar movimiento y dinamismo a los objetos que forman parte de él. Las físicas en un videojuego están normalmente ligadas a un Sprite. GDevelop ofrece múltiples conceptos físicos ya implementados
T3: Físicas Movimiento y giro de sprites Para mover y girar un Sprite en Gdevelop, se crean eventos cuya acción modifique su posición (x,y) y su ángulo. Las acciones de Movimiento se basan en agregar fuerzas a los objetos. Cada fuerza es un vector que define la dirección, sentido y velocidad del movimiento
T3: Físicas Movimiento y giro de sprites Ejemplo: Movemos el Sprite “Pea” de forma indefinida y constante hacia la parte superior derecha de la pantalla.
T3: Físicas Colisiones Gdevelop ofrece mecanismos para detectar y responder ante colisiones. La colisión es una condición de evento
T3: Físicas Colisiones Ejemplo: Eliminar el Sprite “Pea” cuando choque con el Sprite “Pared”
T3: Físicas Colisiones Por defecto, las colisiones entre objetos se producen cuando su máscaras de colisión chocan. Las máscaras de colisión se pueden editar en el editor de sprites.
T3: Físicas Colisiones Por defecto, la máscara de colisión de cualquier Sprite está definida por un rectángulo que le rodea. Se puede establecer cualquier número de polígonos como máscara Máscara por defecto Máscara mejorada
T3: Físicas Colisiones Colisión pixel por pixel Comprueba si cada pixel de la imagen un sprite está en contacto con un pixel de la imagen de otro sprite MUY COSTOSO COMPUTACIONALMENTE
T3: Físicas Motor físico Gdevelop ofrece un automatismo para añadir físicas de forma sencilla a un Sprite: Motor físico Las propiedades físicas de este motor se pueden editar para cada objeto.
T3: Físicas Motor físico Ejemplo: Hacer que un sprite caiga y rebote sobre una plataforma.
T3: Físicas Motor físico Propiedades físicas de la pelota. La gravedad se establece como propiedad física global para todos los objetos La elasticidad hace que la pelota rebote
T3: Físicas Motor físico Propiedades físicas de la plataforma. Los objetos estáticos mantienen las propiedades de colisión pero se mantienen inmóviles
T3: Físicas Motor físico Acciones (de eventos) propias de un objeto con motor físico.
T3: Físicas Plataformas: GDevelop implementar un automatismo que permite controlar automáticamente plataformas y personajes de este tipo de juegos. Permite a los objetos moverse sobre ella. Existen tres tipos: Plataforma Plataforma atravesable Escaleras
T3: Físicas Plataformas: Aceleración: Indica como acelera el objeto horizontalmente cuando está en movimiento. Controles por defecto: Si se marca esta casilla, el objeto se moverá con los controles de entrada por defecto, que son las flechas Izquierda y Derecha para el movimiento y el Espacio para el salto. Desaceleración: Indica como desacelera el objeto al cesar el movimiento. Gravedad: Aceleración en caída. Velocidad de caída máxima. Velocidad de salto. Velocidad máxima (horizontal). Ángulo máximo de pendiente: Valor en (0,90). Para rampas de ángulo mayor a este valor, el objeto es incapaz de caminar sobre ellas.
T3: Físicas Plataformas: Existen varias condiciones y acciones que permiten controlar mediante eventos los sucesos de este tipo de juegos. Controlar cuando el objeto está saltando, desplazándose, etc.
T3: Físicas Ejercicio Mejorar la precisión de las colisiones en el juego Pong usando conceptos de colisiones Máscaras de colisión Colisión por pixel
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Control de Entrada Entrada mediante teclado: Se controla mediante eventos (como condición)
T3: Control de Entrada Entrada mediante teclado: O bien utilizando un objeto de tipo entrada de texto
T3: Control de Entrada Entrada por ratón: Se controla por eventos las pulsaciones y la posición del cursor
T3: Control de Entrada Entrada por gamepad (SOLO PARA NATIVO): Se controla por eventos los botones pulsados y la posición del eje del joystick
T3: Control de Entrada Control con automatismos: Movimiento arriba-abajo: Controla automáticamente la animación de un sprite en las 4 (8 si se usan diagonales) direcciones posibles. Captura las teclas de movimiento del teclado por defecto si así se indica.
T3: Control de Entrada Control con automatismos: Objeto arrastrable: Al añadir este automatismo, el objeto se puede arrastrar utilizando el ratón. Mediante eventos, se puede saber si el objeto está siendo arrastrado
T3: Control de Entrada Ejercicio: Cambiar el juego del Pong para controlar una de las barras mediante el ratón.
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Texto Los textos se añaden de una forma muy similar a los Sprites, mediante un objeto de tipo Texto. Sus propiedades básicas son: Estilo: Negrita, Cursiva, Subrayado Color Fuente Espesor (Tamaño de fuente)
T3: Texto Para que muestren contenido variable se deben usar eventos
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Variables Las variables permiten almacenar los datos, por ejemplo, un número o un texto (nº de vidas, puntuación, % vida consumida, estado de un objeto…) . Según su ámbito de uso pueden ser: Globales: Accesibles desde todas las escenas. De Escena: Accesibles desde la escena en que se crean. De Objeto: Asociadas a un objeto. Se pueden añadir variables desde las propiedades del proyecto, escena u objeto
T3: Variables El nombre de la variable nos permite hacer referencia al valor almacenado. Se recomienda poner nombres identificativos. Se les puede dar una valor inicial.
T3: Variables Pueden usarse en las condiciones para comprobar sus valores mediante operadores lógicos. Resultado lógico: VERDADERO (TRUE) o FALSO (FALSE). Operadores lógicos = Igual != Distinto > Mayor que >= Mayor o igual que < Menor que <= Menor o igual que
Operadores Aritméticos T3: Variables Pueden modificarse los valores de las variables en las acciones mediante operadores aritméticos. Operadores Aritméticos + Suma - Resta * Multiplicación / División
T3: Variables Como mostrar el valor de una variable en una escena: Poner un objeto de tipo Texto. Añadir evento que asigne valor al texto que muestra este objeto. Los valores de tipo texto van ente comillas (“Hola que tal”). Cuando se utiliza el operador “+” con texto se están concatenando.
T3: Variables Ejercicio: Añadir al Pong un marcador que cuente el número de veces que golpea la pelota cada jugador
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Sonido Los sonidos en Gdevelop son un tipo de objeto invisible que actúa como fuente de sonido. Hay 2 tipos: Música: Para sonidos largos. (FORMATO .ogg) Sonido: Para efectos instantáneos. (FORMATO .wav)
T3: Sonido Los sonidos se activan siempre mediante eventos. No es necesario el uso de objetos de sonido para reproducir sonido, los eventos son suficiente. Las acciones de los eventos que activan sonidos o música no deben ser llamadas repetidamente. Ejemplo: Al comenzar una escena, reproducir en bucle un archivo de sonido de fondo para el juego
T3: Sonido Páginas para descargar efectos de sonido: http://www.freesound.org/ http://www.partnersinrhyme.com/pir/PIRsfx.shtml http://lasonotheque.org/ http://www.freesfx.co.uk/
T3: Sonido Ejercicios Añadir un efecto de sonido al juego Pong cada vez que una pala golpee la pelota. Añadir al juego Pong una música de fondo que se reproduzca en bucle.
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Capas y Cámaras Las capas en un videojuego son un elemento gráfico que ayuda a separar y organizar los objetos visuales.
T3: Capas y Cámaras Un uso muy común es utilizar una capa como base de juego (capa por defecto) y otra como fondo
T3: Capas y Cámaras Una cámara es un objeto invisible que controla qué parte del juego es la que se muestra en cada momento. Cada capa tiene asociada un conjunto de cámaras. Por defecto, cada capa tiene una cámara fija del tamaño de la ventana de juego. Una forma de agregar, eliminar o editar cámaras dentro de una capa es usar el menú de edición de capa de Gdevelop.
T3: Capas y Cámaras Las cámaras (y capas) también se pueden editar a través de eventos. Ejemplo: Mover la cámara de la capa Fondo para crear un efecto de “scrolling” Otras acciones sobre cámaras: Acercar/Alejar (Zoom) Centrar y seguir un objeto
T3: Capas y Cámaras Ejercicio En el juego Pong, acercar la cámara de juego hacia el jugador ganador cuando gane la partida.
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Navegación Los videojuegos suelen tener diferentes pantallas que representan diferentes estados del juego: Pantalla de presentación. Pantallas del juego. Pantallas de fin. Pantallas de confirmación. Inicio Click en “Jugar” Click en “Control” Configuración Presentación Juego Tecla ‘Esc’ Tecla ‘Esc’ Tecla ‘Esc’ Fin
T3: Navegación En GDevelop, cada pantalla se representa con una escena. Agregar una nueva escena
T3: Navegación Creamos la pantalla de presentación. Insertamos unos botones para Jugar y Configurar los controles.
T3: Navegación Para cambiar de escena utilizamos eventos de escena.
T3: Navegación Para salir del juego, también se usa un evento. Los eventos de la pantalla de Presentación quedarían similares al siguiente ejemplo:
T3: Navegación Ejercicio: Añadir una pantalla de presentación al juego del Pong, así como una de configuración que permita cambiar los controles para manejar a los jugadores.
T3: DESARROLLO DE VIDEOJUEGOS EN GDEVELOP 3.1. Sprites 3.2. Tiles 3.3. Físicas 3.4. Control de entrada 3.5. Texto 3.6. Variables 3.7. Sonido 3.8. Capas y Cámaras 3.9. Navegación 3.10. Inteligencia Artificial
T3: Inteligencia Artificial Definición (wiki) de Inteligencia Artificial (IA): ciencia multidisciplinar que estudia la creación y diseño de sistemas capaces de resolver problemas cotidianos por sí mismas utilizando como paradigma la inteligencia humana. IA en videojuegos: Es la simulación de comportamientos de los personajes no manejados por el jugador: NPCs, enemigos, jefes finales, animales… Usualmente se buscan efectos puntuales A veces el costo no justifica el efecto Superar siempre al humano no es negocio Ideas y desarrollo acotado por el mercado
T3: Inteligencia Artificial Problemas de IA en videojuegos: Interactuar con el entorno Adaptarse al entorno Adaptarse al jugador humano Interactuar con otras IAs Coordinar comportamiento Navegación Uso de táctica y estrategia Respuestas “humanas” Comportamiento emocional
T3: Inteligencia Artificial Donde usar la IA en videojuegos: En los enemigos: Saben navegar por el mapa y/o terreno. Saben ocultarse y percibir nuestra cercanía. Saben cuando y cómo perseguirnos. Adoptan estrategias dinámicas. En los amigos: Pueden seguirnos adecuadamente por el terreno. Saben dar apoyo de manera inteligente. En nuestras unidades: Se mueven en formaciones inteligentes. Reaccionan adecuadamente ante ataques inesperados. Son proactivos y reactivos. En la generación de diálogos en RPGs. …
T3: Inteligencia Artificial Tipos de IA en videojuegos: Hacks: Efectos puntuales, usualmente plasmados directamente en el código como recurso de programación. No representan realmente una técnica de Inteligencia Artificial. Ejemplo: fantasmas del PacMan. Heurísticas: Técnicas o reglas que aplicadas pueden servir para resolver un problema puntual. La búsqueda es terreno habitual de heurísticas. Ejemplo: atacar la unidad enemiga más débil. Algoritmos: Algoritmos que sustentan comportamiento inteligente, basados en técnicas generales aplicables a varios escenarios. Ejemplo: pathfinding, planificación, análisis de terrenos, movimientos coordinados en grupos, etc..
T3: Inteligencia Artificial Creando una IA básica (Hack) en GDevelop: Disparos de naves enemigas en Space Shooter.
T3: Inteligencia Artificial Lógica con eventos: Cuando distancia entre Player y IA es menor que 800 pixeles, se hace visible IA y se le aplica una fuerza en el eje X. Se crea un contador a IA para que dispare balas cada segundo en la dirección de Player siempre que esté delante de él.
T3: Inteligencia Artificial Algoritmos de IA en videojuegos: Decision Strategy: Algoritmos y técnicas enfocados en el comportamiento grupal (actitud agresiva, defensiva, toma de control del terreno, etc). Decision Making: Algoritmos y técnicas para la toma de decisiones de los caracteres sintéticos (atacar, defender, construir, destruir, selección de acciones encadenadas, planificación, etc). Movement: Algoritmos y técnicas para el movimiento de los caracteres sintéticos (moverse, buscar, perseguir, esquivar, escapar, pasear, etc).
T3: Inteligencia Artificial El movimiento de caracteres sintéticos es probablemente el aspecto más elemental de inteligencia artificial en un juego. Una buena parte de la actividad científica en videojuegos se centra en aspectos de movimiento: Técnicas de búsqueda de caminos Técnicas de generación de waypoints de navegación Movimientos coordinados de grupos de unidades Movimientos de multitudes (crowd) Movimientos creíbles Planificación de movimientos Este área de IA en Juegos tiene estrecha relación con el área de animación.
T3: Inteligencia Artificial Técnicas de búsquedas de caminos También llamado pathfinding Son algoritmos que buscan un camino existente entre un nodo inicial y un nodo final de un grafo Se tiene en cuenta un coste entre nodos (distancia, dificultad del terreno…) El algoritmo más usado es A*, el cual nos garantiza el camino óptimo. GDevelop dispone de un automatismo de búsqueda caminos con A* Automatismo Búsqueda de ruta para moverse hacia un punto Automatismo Obstáculo para la búsqueda de ruta para situar un obstáculo.
T3: Inteligencia Artificial Para realizar la ruta, se divide el escenario usando una rejilla virtual. En la configuración de Búsqueda de ruta se puede configurar el tamaño de rejilla para adaptarlo al tamaño de los objetos. Si los objetos son mayores que el tamaño de la rejilla, pueden colisionar con obstáculos en la ruta. Para evitarlo, se pueden añadir bordes extra.
T3: Inteligencia Artificial Las rutas se representan internamente como una sucesión de nodos. El objeto se desplaza de nodo en nodo. Se puede acceder a dichos nodos a través de expresiones en los eventos. Utilizando eventos se puede comprobar si el objeto ha calculado la ruta o alcanzado su destino.
T3: Inteligencia Artificial Ejercicio: Añadir una IA básica al Player2 del juego del Pong, de tal forma que se mueva automáticamente para golpear a la pelota, pero con posibilidad de fallo.