8.9. Game Loop: User Input
Total Page:16
File Type:pdf, Size:1020Kb
Desarrollo de videojuegos de plataformas en 2D usando Simple DirectMedia Layer Aarón Ojeda Reyes Tutor: Agustín Trujillo Pino Mayo 2017 Agradecimientos A mi tutor, por su supervisión y disponibilidad a lo largo del proyecto. A mis compañeros en esta aventura que ha supuesto finalizar la carrera. Nada hubiera sido igual sin su compañía, bromas y consejos. En especial a Yarilo, David, Yeray y Luis, con los que la relación va más allá de lo académico. No puedo olvidar al resto de amigos fuera de la carrera. Gracias por interesarse por algo que a duras penas entendían y por obligarme a salir de «la cueva» de vez en cuando. A mi madre, a mi padre y a mi hermano, por el inmenso apoyo desinteresado que sólo la familia sabe proporcionar. A Itahisa, cuya paciencia y comprensión durante todo este proceso no han conocido límites. Índice general I Introducción 1 1. Descripción 3 2. Objetivos 5 3. Estructura del documento 7 3.1. Parte I Introdución . .7 3.2. Parte II Framework s2Dp .............................7 3.3. Parte III Editor de niveles S2PEditor ......................8 3.4. Parte IV Conclusiones . .9 4. Planificación 11 5. Estado del arte 15 5.1. Juegos de plataformas . 15 5.2. Herramientas de desarrollo . 17 II Framework s2Dp 23 6. Análisis 25 6.1. Establecimiento de requisitos . 25 6.2. Herramientas de desarrollo . 26 6.3. Determinación del alcance de los juegos . 26 6.3.1. Avance . 26 6.3.2. Estado del jugador . 27 6.3.3. Pantallas . 27 6.3.4. Objetos del juego . 28 6.3.5. Sonido . 29 6.3.6. Controles . 30 i ii ÍNDICE GENERAL 7. Comparativa de herramientas 31 7.1. Instalación y facilidad de uso . 31 7.1.1. C++/ SDL 2.0 . 31 7.1.2. C++ / SFML 2.1 . 37 7.1.3. C# / Monogame . 40 7.1.4. Resumen . 47 7.2. Presencia en la industria . 48 7.2.1. SDL . 48 7.2.2. SFML . 49 7.2.3. MonoGame . 50 7.3. Actividad de la comunidad . 51 7.4. Conclusión . 51 8. Diseño e implementación 53 8.1. Simple DirectMedia Layer (SDL) . 54 8.1.1. Inicialización . 55 8.1.2. Subsistema de video . 55 8.1.3. Subsistema de eventos . 56 8.1.4. Subsistema de timers . 58 8.1.5. Gestión de audio . 58 8.1.6. Finalizar SDL . 59 8.2. Estructura general del juego . 59 8.3. Objetos del juego . 61 8.3.1. Animaciones . 67 8.4. Estados del juego . 70 8.5. Niveles y escenarios . 75 8.6. Data-Driven Design . 79 8.6.1. Ficheros XML . 82 8.6.2. Parser . 86 8.7. Gestión de sonido . 93 8.8. Inicialización del juego . 96 8.9. Game loop: User input . 99 8.10. Game loop: Update . 103 8.10.1. Movimiento . 107 ÍNDICE GENERAL iii 8.10.2. Colisiones . 108 8.11. Game loop: Render . 109 8.12. Salir del juego . 119 8.13. Gestión del tiempo . 120 III Editor de niveles S2PEditor 123 9. Análisis 125 9.1. Casos de uso . 125 9.1.1. Proyectos . 126 9.1.2. Niveles . 129 9.1.3. Juego . 132 9.2. Enfoque del desarrollo . 133 10.Comparativa de bibliotecas GUI 137 10.1. Bibliotecas ligeras . 137 10.1.1. SDL2-widgets . 137 10.1.2. Game Gui . 138 10.1.3. libRocket . 139 10.1.4. Conclusiones . 142 10.2. Qt . 143 10.2.1. Visual Studio Add-in . 144 10.2.2. Usar Qt junto a SDL . 146 11.Diseño e Implementación 149 11.1. Interfaz Gráfica de Usuario . 149 11.2. Estructura de la solución adoptada . 150 11.3. Ventana principal . 154 11.4. Añadidos al framework s2Dp ............................ 155 11.4.1. Parser . 156 11.4.2. EditorState . 157 11.5. Clase EditorController . 159 11.6. SDL y Qt: clase QSDLCanvas . 160 11.6.1. Constructor . 161 11.6.2. Iniciando el editor . 162 iv ÍNDICE GENERAL 11.6.3. Actualización y dibujado . 163 11.6.4. Eventos de entrada . 164 11.6.5. Integración en la ventana principal . 166 12.Desarrollo de un juego con S2PEditor 169 12.1. Empezando . 169 12.2. Niveles . 170 12.3. Tilesets . 172 12.4. Imágenes . 175 12.5. Sonidos . 176 12.6. Backgrounds . 177 12.7. Objetos . 179 12.7.1. Gestor de objetos . 179 12.7.2. Crear un objeto . 180 12.7.3. Ejemplos . 184 12.7.4. Niveles finalizados . 189 12.8. Probar niveles . 193 12.9. Generar juego . 193 IV Conclusiones 195 13.Costes 197 14.Valoración 199 15.Trabajo futuro 201 A. Manual de usuario 203 A.1. Instalación . 203 A.2. Interfaz de usuario . 203 A.3. Distribución . ..