TJE
Última actualización: 29/04/2010Introducción
El taller trata sobre el desarrollo de un videojuego 3D en C++ sobre OpenGL comenzando de un esqueleto muy básico, usando los conceptos básicos del desarrollo de motores de juegos. Desde carga de texturas y modelos 3D, pasando por logica de juego y inteligencia artificial.
La asignatura es una buena oportunidad para desarrollar una aplicación compleja, donde poner en práctica todos los conceptos de programación orientada a objetos, patrones de diseño, y metodologias de programación eficientes y limpias.
En anteriores edificiones se han hecho juegos de Tankes, de lucha de naves espaciales (estilo Freespace), de lucha de barcos (estilo Battlestations Pacific) y de lucha de aviones (estilo Winds of Prey).
Prerequisitos
Este es un listado de algunos de los conceptos que se asume los estudiantes estan familiarizados de otras asignaturas.
Semana 1-2: Practica 2D
Presentación de Jocs Electronics
En la primera práctica crearemos un simple juego 2D.
Requisitos Practica 1
- Resolution 160×120
- Control con cursores y dos botones máximo (salvo botones para salir del juego)
- Tiene que tener title screen
- Tema: JUNTOS
La entrega sera el Jueves 23 a las 23:59 max a través del aula global, y tendreis que presentar cada grupo el viernes 24.
Semana 3: Introduction to 3D
Semana 4-5: Engine
Semana 6: Game Logic
Semana 7: Characters
Semana 8: AI + Gameplay
Semana 9: GUI + Audio
Semana 10: Improving Graphics
Semana 12: Final touches
-
- Cómo publicar el juego (sobre deploy y testeo)
- Más allá de JE consejos para seguir creciendo
Extra
Código
- Visual Studio 2015 Community IDE gratuito solo para Windows
- Cómo compilar con Glew en XCode
- SDL y XCode: Template para XCode para compilar bajo OSX con SDL y OpenGL
- Bass Lib: Libreria para audio (tutorial de uso)
- Shader Snippets: pequeños fragmentos de codigo para shaders (incluye conversiones a polares).
Arte
Para descargar recursos para el juego (assets) visita la sección de recursos de arte. Recuerda que tienes un enlace a la sección arriba de todo a la derecha de esta página.
Entrega Practica Final
La fecha de entrega será el ultimo dia de examenes, y la presentación será ese mismo dia por la tarde.
Teneis que entregar a traves del aula global un zip que contenga todo siguiendo la guia de deploy, debe contener:
Enlaces externos
- awesome-gamedev Repositorio con links a cientos de cosas (articulos, librerias, programas, etc)
- Curso online sobre Game Design del MIT
- Curso online sobre Computer Graphics del MIT
- Tutorial sobre fisica en videojuegos, Slides sobre fisica en juegos, Curso sobre Rigid Body Physics en 2D.
- Presentacion sobre Shaders, como funcionan.
- Gamedev-tricks, listado de trucos de desarrollo usados en juegos
- Tutorial sobre OpenGL avanzado
- Math for game developers Videos sobre mates utiles para juegos.
- Tutorial sobre Fixed time step
- Mejora tus matematicas o Essential Maths for a game developer.
- Videotutoriales sobre Design Patterns en videojuegos PatternCraft
- Stratos-ad comunidad hispana sobre desarrollo de juegos
- Gamedev.net comunidad inglesa sobre desarrollo de juegos
- The Independent Games Source, blog sobre juegos independientes (foro de desarrolladores)
- Slides sobre optimizar graficos en GPU
- Pixel art tutorials
- Video sobre programar sistemas y no escenas
- Video “The Art of Screenshake”
- Video “Juicing Your Cameras With Math”
- Video “Math for Game Programmers”
- Video “Quaternions” muy bien explicado
Trabajos entregados en años anteriores
- Blue wars (2009)
- Batallions of Steel (2014)
- Star Battlezone (2014)
- Coolspace (2014)
- Assault Birds (2015)
- Wing Commander (2015)
- Love the Bomb (2015)
- Fleet Sinker (2015)
- Drift Space (2016)
- IN THE SKY: Battle of Britain (2017)
- SPACE THINGS (2017)
- IronSky (2018)
- Village Escape (2019)
- Island Escape (2019)
- Neera (2019)
Posts interesantes
- Lessons to learn from doing your engine
- Data oriented game programming (optimization)
- Learning from the Doom3 Source Code
- Dirty coding tricks from game developers
- Build your 3D engine from scratch
- Camaras en juegos con scrolling 2D
- Tutoriales de muchas cosas sobre 3D
- Glitch de Mario Land 2
- Rendering water in videogames
- Tesis sobre el salto en los videojuegos
Librerias utiles
Si quereis seguir desarrollando aplicaciones gráficas aquí hay un listado de librerias utiles para hacerlo:
- STB libraries librerias de un solo .h para cualquier cosa (cargar imagenes, voxelizar, pintar texto, etc).
- Pathfinders libreria de un solo .h y .c para calculo de caminos.
- Tiny headers otras librerias de un solo .h para audio, red y fisica 2D.
- OpenAL o BASS para el audio
- TinyXML o Jansson (para parsear XMLs o JSON respectivamente)
- PhysFS para el sistema de ficheros virtual
- libnoise para generar perlin noise (util para generacion procedural).
- OpenIL para cargar imagenes.
- CORGI para crear componentes y entidades en tu juego.
- libcurl y zoidcom para peticiones HTTP y realtime connections respectivamente.
- LUA, GameMonkey o Angelscript como motor de scripting