Abrir menú principal

Desarrollo de Videojuegos con Unreal Engine

Facultad Ingeniería
Departamento Informática
Área Tecnologías de información
Nivel Universitario

Bienvenido a este proyecto de aprendizaje dedicado a conocer los fundamentos del entorno Unreal Engine y a utilizar sus diversas herramientas para desarrollar videojuegos de un nivel de complejidad entre básico e intermedio.

Este proyecto forma parte de la Wikiversidad. Te invitamos a saber más sobre ella y a averiguar cómo dar tus primeros pasos por aquí. Además te recomendamos consultar el manual de estilo y las políticas que aplican a la hora de trabajar en la edición colaborativa de estas páginas.

ObjetivosEditar

Este proyecto de aprendizaje nos ofrece la posibilidad de estudiar la organización interna y el funcionamiento de un entorno tan potente como es Unreal Engine y aplicarlo en el desarrollo de videojuegos de complejidad moderada, trabajando desde el punto de vista del diseñador de juegos, un perfil de desarrollador de videojuegos que debe contar con algunos conocimientos en creación y edición de recursos gráficos 2D/3D y sonoros, además de ciertas nociones de programación orientada a objetos y basada en eventos. En este proyecto se hace especial hincapié en las herramientas imprescindibles para construir escenarios, integrar personajes y objetos, realizar secuencias animadas y en definitiva definir comportamientos utilizando esquemas de programación visual.

Además se nos incita a poner en práctica lo aprendido desarrollando un proyecto real, es decir, un pequeño juego con los elementos necesarios para demostrar lo que es posible desarrollar en este entorno en poco tiempo y sin demasiado esfuerzo ni experiencia previa.

Sobre la versión de Unreal Engine: Aunque la mayor parte del texto intentará ser válido para todas las versiones de Unreal Engine, el participante debe tener presente que los consejos básicos se realizan asumiendo que se trabaja con la versión 4.8.2 de julio de 2015.

Materiales didácticosEditar

Los principales materiales didácticos de este proyecto son las lecciones que se desarrollan colaborativamente entre todos los participantes. Estas lecciones, y en general cualquier actividad que se realiza en este proyecto de aprendizaje, puede tener asociadas una serie de lecturas recomendadas: fuentes bibliográficas, guías, tutoriales, enlace a la documentación oficial de Epic Games o de otros foros o comunidades de desarrolladores, etc. Las fuentes más relevantes a todo el proyecto de aprendizaje se recopilan en la sección de referencias de esta misma página.

Disponemos de un calendario, con las fechas reales del primer curso que se impartió y que sirvió como base para este proyecto y donde se anotaron las tareas reales que se iban realizando día a día. La idea es que estas fechas y tareas puedan servir como referencia a la hora de adaptar el proyecto de aprendizaje a las circunstancias concretas de cada participante.

LeccionesEditar

A continuación se presenta un listado con las distintas lecciones que se van generando como material didáctico para este proyecto de aprendizaje. Es importante que sigas estos consejos para redactar lecciones a la hora de modificarlas o crear algunas nuevas.

Las lecciones están divididas en nueve grandes bloques. Recomendamos que las lecciones identificadas como "avanzadas" sean directamente ignoradas por aquellos participantes que todavía no tengan cierta experiencia en el desarrollo de videojuegos con Unreal Engine.

Bloque 1: Instalación y proceso de desarrolloEditar

Todo lo relativo a los preparativos necesarios para trabajar con Unreal Engine e instalarlo en tu ordenador, además de teoría para tener una visión global del proceso completo de desarrollo de videojuegos con esta herramienta. Se incluye un ejemplo, ya que esto permite aclarar las ideas desde el principio y así hacer que el participante entienda el contexto de todas las próximas lecciones.

Lecciones (todas ellas básicas):

  1. Requisitos de uso de Unreal Engine
  2. Instalación de Unreal Engine
  3. Proceso de desarrollo de videojuegos con Unreal Engine
  4. Ejemplo del proceso de desarrollo de un videojuego con Unreal Engine

Bloque 2: Creación de niveles y contenidosEditar

Estas lecciones exponen cuestiones básicas que es necesario conocer acerca del entorno integrado de desarrollo de videojuegos Unreal Engine. Se enseña el manejo básico del editor de niveles, pieza central del entorno Unreal Engine, para posicionar actores en la escena y cosas así.

Lecciones básicas:

  1. Manejo básico del editor de niveles de Unreal Engine
    1. Guía rápida del editor de niveles de Unreal Engine
    2. Actores en Unreal Engine
    3. Etiquetas para actores en Unreal Engine
  2. Fundamentos de Unreal Engine (del motor)
  3. Fundamentos de Unreal Editor (el editor de niveles) https://docs.unrealengine.com/latest/INT/Engine/UI/LevelEditor/index.html
  4. Gestión de contenidos
  5. Niveles
  6. Cámaras (https://docs.unrealengine.com/latest/INT/Gameplay/HowTo/UsingCameras/index.html en vez de llevármelo a gameplay)

Level Design

Los entornos integrados de desarrollo de videojuegos Una panorámica del entorno El motor Unreal y sus herramientas La plataforma Unreal Engine 4 Requisitos e instalación de Engine 4 (llevármelo muy al principio) Los primeros pantallazos El marketplace Recursos para aprender Los proyectos (una vez hayan visto uno abierto y tal…)

Lecciones avanzadas:

  1. Unreal Engine avanzado
  2. Unreal Editor avanzado
  3. Gestión de contenido avanzada (mucho)
  4. Creación de contenidos [para Artistas]... parte al bloque 3, seguramente
  5. Transmisión de niveles (para mundos contínuos... y persistentes -MMOG y similar-)

Bloque 3: Creación de escenarios y efectos visualesEditar

Estas lecciones...

Lecciones básicas:

  1. Renderizado (geometría, mallas estáticas y de otros tipos)
  2. Texturas
    1. Hay un modo para pintar mallas estáticas, directamente: https://docs.unrealengine.com/latest/INT/Engine/UI/LevelEditor/Modes/MeshPaintMode/VertexColor/index.html (BSPs no se puede)
  3. Iluminación
  4. Materiales y sombreadores
  5. Simulación física
    1. Colisiones a nivel básico, sus respuestas: https://docs.unrealengine.com/latest/INT/Engine/Physics/Collision/index.html
  6. Sistemas de partículas
  7. Efectos de post-procesamiento

Lecciones avanzadas: (ya para enriquecer escenarios)

  1. Rendering avanzado?
  2. Mallas destructibles https://docs.unrealengine.com/latest/INT/Resources/ContentExamples/Destructables/index.html

No sé si este tutorial sea de utilidad: https://www.youtube.com/watch?v=QIvcTwlosMQ#t=58

  1. Iluminación avanzada
  2. Materiales avanzados
  3. Creación de materiales [para Artistas]
  4. Cerchas (curvas polinomiales a trozos o splines) y los componentes de una Spline Mesh. Las curvas de Beziel son un ejemplo. Tutorial en video: https://www.youtube.com/watch?v=MqPeFIEJUmg
  5. Terreno (y pintar terreno). También herramientas de splines para usar sobre terrenos: https://docs.unrealengine.com/latest/INT/Resources/ContentExamples/Landscapes/1_2/index.html
  6. Vegetación
  7. Simulación física, más avanzada
  8. Sistemas de partículas (¿y otros efectos especiales?) avanzados
  9. Efectos de post-procesamiento

Bloque 4: Programación de sucesos y comportamientosEditar

Estas lecciones hacen referencia al ...

Lecciones básicas:

  1. Modelo del juego, de sus niveles y escenarios (conceptos básicos de gameplay, armazón/arquitectura de Unreal con pawn, character, etc.)
  2. Programación textual (C++) y visual (esquemas)
  3. Entradas del usuario
  4. Maneras y recomendaciones para comunicar esquemas https://docs.unrealengine.com/latest/INT/Engine/Blueprints/UserGuide/BlueprintCommsUsage/index.html
  5. Encontrar actores dentro de esquemas https://docs.unrealengine.com/latest/INT/Gameplay/HowTo/FindingActors/Blueprints/index.html
  1. Lógica del juego (mediante esquemas/blueprints)
    1. Guía sobre cómo hacer...
  2. Dinámica del nivel (mediante esquemas/blueprints)
    1. Guía sobre cómo hacer...
  3. Mecanismos del escenario (mediante esquemas/blueprints)
    1. Guía sobre cómo hacer...
    2. Líneas de tiempo
    3. Sobre cómo mover cámaras: https://docs.unrealengine.com/latest/INT/Gameplay/HowTo/UsingCameras/Blueprints/index.html
  4. Simulación física
    1. Colisiones y fuerzas a nivel básico
  5. Inteligencia artificial
    1. Guía sobre cómo hacer
  6. Programación en C++ [Programadores]

Lecciones avanzadas:

  1. Entradas del usuario avanzadas (touch?)
  2. Lógica del juego avanzado (mediante esquemas/blueprints)
    1. Guía sobre cómo hacer...
  3. Dinámica del nivel avanzado (mediante esquemas/blueprints)
    1. Guía sobre cómo hacer...
  4. Mecanismos del escenario avanzado (mediante esquemas/blueprints)
    1. Guía sobre cómo hacer...
  5. Interacción entre comportamientos y física
    1. Manejo de bolas o intervención en comportamientos físicos sencillos
    2. Vehículos (podría haber subcategorías)
  6. Inteligencia artificial avanzada
    1. Hacer Splines con esquemas:

https://docs.unrealengine.com/latest/INT/Resources/ContentExamples/Blueprint_Splines/index.html

https://docs.unrealengine.com/latest/INT/Videos/Player/index.html?series=PLZlv_N0_O1ga0aV9jVqJgog0VWz1cLL5f&video=wR0fH6O9jD8&utm_source=uelauncher&utm_medium=software&utm_campaign=learntab

    1. Behavior Tree, como este tutorial de Víctor Blanco.
    2. Guía sobre cómo hacer..
  1. Programación en C++ avanzada [Programadores], tal vez con su lógica, dinámica y mecanismos

Muy bueno, sobre cómo ir gestionando la creciente complejidad en los blueprints que programamos: https://www.unrealengine.com/blog/managing-complexity-in-blueprints

Programar sistemas de uso de objetos, como este tutorial de Víctor Blanco.

Los Blueprints vienen siendo un Kismet 2 (internamente las clases C++ que los compilan se llaman Kismet, de hecho). Aunque ya no haya UnrealScript, los blueprints se compilan a UnrealScript bytecodes: https://docs.unrealengine.com/latest/INT/Engine/Blueprints/TechnicalGuide/Compiler/index.html

Ahora ya hay un inventario hecho con Blueprints y UMG también, en los tutoriales oficiales.

Bloque 5: Gestión de recursos audiovisualesEditar

Lecciones básicas:

  1. Música
  2. Sonidos

La introducción oficial al sistema de sonido: https://docs.unrealengine.com/latest/INT/Engine/Audio/Overview/ El componente básico es Ambient Sound Audio: https://docs.unrealengine.com/latest/INT/Engine/Audio/SoundActors/index.html Y luego es importante conocer los volúmenes, concretamente los de Audio: https://docs.unrealengine.com/latest/INT/Engine/Actors/Volumes/index.html (la sección donde pone Audio Volume)

Lecciones avanzadas:

  1. Integración de video (Media Framework, para el inicio)

Bloque 6: Creación de animacionesEditar

Lecciones básicas:

  1. Sprites y flipbooks (con Paper2D?)
  2. Sistema de animación Persona
  3. Animación por fotogramas clave
  4. Animación esqueletal
  5. Editor de cinemáticas Matinee
  6. Cinemáticas

Lecciones avanzadas:

  1. Paper2D avanzado
  2. Animación por fotogramas avanzado
  3. Animación esqueletal
  4. Cinemáticas (secuencias interactivas o no interactivas, basadas en fotogramas clave) avanzadas

Efectos especiales y cinemáticas | Gráficos que se mueven y otras cuestiones

Animation discussion, including Animation Blueprint, Persona, Skeletal Meshes, and more.

Bloque 7: Creación de la interfaz de jugadorEditar

Estas lecciones hacen referencia al ... interfaz gráfica del usuario/jugador

Lecciones básicas:

  1. Menú del juego (con esquemas... sobre componentes TextRenderer y cosas así; tal vez hacer una referencia a Slate básico [Programadores?])
  2. HUD in-game (con UMG y esquemas)
    1. Los tutoriales de Shah sobre UMGs ya han quedado desfasados, ahora todo es mucho más fácil

Lecciones avanzadas:

  1. Menú del juego (Slate avanzado -cómo se hizo el propio interfaz del entorno UE4-, [C++? Programadores] se puede hacer hasta un editor de Unreal)
  2. HUD in-game avanzado (con UMG y esquemas)

Bloque 8: Optimización y distibución del juegoEditar

Estas lecciones hacen referencia al ...

Lecciones básicas:

  1. Análisis y evaluación de rendimiento (profiling)
  2. Optimización (cambios para conseguir los FPS deseados, etc.)
  3. Empaquetado (generar la versión ejecutable/distribuible del juego)
    1. Compilar el código fuente, "cocinar" el contenido para la plataforma, empaquetarlo todo... (por defecto hablaremos de Windows 64bits)

https://docs.unrealengine.com/latest/INT/Engine/Basics/Projects/Packaging/index.html

Luego se puede usar un instalador externo a UE4 para crear la versión instalable

  1. Distribución y ¿comercialización? [Marketing]

Lecciones avanzadas:

  1. Análisis de rendimiento avanzado
  2. Optimización de rendimiento avanzado (eliminación de características para realidad virtual, por ejemplo)
  3. Implantación para plataformas específicas
    1. Web
      1. HTML 5 (usan [Emscripten] para transformar todo el motor de C++ a Javascript)

https://docs.unrealengine.com/latest/INT/Platforms/HTML5/GettingStarted/index.html Una demostración de UE4 ejecutándose sobre Firefox, sin necesidad de plugins: http://www.polygon.com/2014/3/12/5501322/watch-unreal-engine-4-running-in-firefox

Creo que en navegadores de 64bits ya deberían funcionar demos como la de Tappy Chicken: https://www.unrealengine.com/html5

    1. Móvil
      1. Android
      2. iOS
    2. Realidad virtual
      1. Rift
  1. Distribución y ¿comercialización? avanzada [Marketing] (subida al marketplace y tal)

Bloque 9: Desarrollo profesional de videojuegosEditar

Estas lecciones hacen referencia al ... futuro, a seguir aprendiendo... son todas lecciones avanzadas

Lecciones (todas ellas avanzadas):

  1. Trabajo colaboratorivo (Engine Source, con Subversion y Performe... plugin para Git/GitHub)

Trabajo futuro | Seguir aprendiendo y experimentando Más blueprints Trabajando con programación en C++

Discuss GitHub, using source code to modify the engine, and the creation of engine plugins.

Sobre qué directorios y ficheros ignorar cuando se trabaja con el proyecto compartido en un sistema de control de versiones: http://gamedev.stackexchange.com/questions/72248/which-unreal-engine-4-project-files-can-i-ignore-in-source-control

Cuestiones pragmáticas del uso del motor, como las redirecciones que se producen al mover o renombrar recursos https://docs.unrealengine.com/latest/INT/Engine/Basics/Redirectors/index.html Lo que lleva a saber que hay commandlets, acciones especiales que se pueden realizar desde la línea de comandos https://docs.unrealengine.com/latest/INT/Gameplay/Localization/Commandlets/index.html Aquí nos recuerdan como hacer la de FixupRedirects https://answers.unrealengine.com/questions/64043/running-the-fixupredirects-commandlet.html

Generación procedural de contenidos. Un videotutorial de Training Twitch (no se encuentra directamente en el buscador de la documentación oficial) https://docs.unrealengine.com/latest/INT/Videos/Player/index.html?series=PLZlv_N0_O1ga0aV9jVqJgog0VWz1cLL5f&video=mI7eYXMJ5eI

Así se presenta una demo en la GDC: https://www.unrealengine.com/blog/demo-your-project-at-the-game-developers-conference

Plugin de Mercurial, pero también otras formas de hacer interfaces de usuario: http://lycaeum.ultimacodex.com/unreal-engine-4-gets-coherent-mercurial/

Posibles cursos que se organicen, como el curso que está intentando montar Víctor Blanco en la Facultad de Informática de la Universidad Complutense de Madrid

Asegurarnos de que este curso TRINIT es de Unreal 4, no UDK: http://trinit.es/curso/Curso_13_09_14_Taller_Iniciacion_Unreal_Engine_Centro_Recursos

AnexosEditar

Para complementar y resumir el contenido más relevante de las lecciones se pueden generar anexos complementarios a estas.

Actualmente tendríamos uno en proceso de construcción:

ReferenciasEditar

A continuación se presentan las lecturas recomendadas y a la vez las fuentes más utilizadas para conseguir información en este proyecto de aprendizaje.

En primer lugar, la información que puede obtenerse de Epic Games, los propios creadores de Unreal Engine (todo en inglés):

En segundo lugar, algo de información adicional (también en inglés, documentos provenientes en su mayoría de la comunidad oficial de desarrolladores):

Y finalmente, información generada por la comunidad de habla hispana:

  • Unreales, comunidad hispana de UDK y Unreal Engine 4

Y otros:

Participantes activosEditar

Participantes activos en este grupo de aprendizaje:

  • Federico Peinado (Iniciador del proyecto)
  • Pablo Diaz
  • Ricardo Hoyos
  • <-- Apunta tu nombre aquí