Diseño y desarrollo de video juegos

63
Diseño y desarrollo de video juegos

Transcript of Diseño y desarrollo de video juegos

Page 1: Diseño y desarrollo de video juegos

Diseño y desarrollo de video juegos

Page 2: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 3: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

La industria del videojuego. presente y futuro

Debido a los distintos avances en el campo de la informática, no solo a nivel de desarrollosoftware y capacidad hardware sino también en la aplicación de métodos, técnicas y algoritmos,la industria del videojuego ha evolucionado hasta llegar a cotas inimaginables, tanto a nivel dejugabilidad como de calidad grafica.

La evolución de la industria de los videojuegos ha estado ligada a una serie de hitos.determinados particularmente por juegos que han marcado un antes y un despues, o porfenómenos sociales que han afectado de manera directa a dicha industria.

Juegos como Doom, Quake, final fantasy, zelda, tekken, gran turismo, metal gear, the sims, worldof warcarft, entre otros, han marcado tendencia y han contribuido de manera significativa aldesarrollo de videojuegos en distintos géneros.

Page 4: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

El más evidente de ellos es la necesidad imperiosa de ofrecer una experiencia de entretenimiento alusuario basada en la diversión, ya sea a través de nuevas formas de interacción, como por ejemplo larealidad aumentada o la tecnología de visualización 3D, a través de una mejora evidente en la calidad delos títulos, o mediante innovación en aspectos vinculados a la jugabilidad.

No obstante, actualmente la evolución de los video juegos está estrechamente ligada a la evolución delhardware que permite la ejecución de los mismos. Esta evolución atiende, principalmente, a dos factores:i) la potencia de dicho hardware y ii)las capacidades interactivas del mismo.

En el primer caso, una mayor potencia hardware implica que el desarrollador disfrute de mayoresposibilidades a la hora de, por ejemplo, mejorar la calidad gráfica de un título o de incrementarla IA(Inteligencia Artificial) de los enemigos. Este factor está vinculado al multiprocesamiento.

Page 5: Diseño y desarrollo de video juegos

El desarrollo de los video juegosEn el segundo caso, una mayor riqueza en términos de interactividad puede contribuir a que el usuario devideojuegos viva una experiencia más inmersiva (por ejemplo, mediante realidad aumentada) o,simplemente, más natural (por ejemplo, mediante la pantalla táctil de un smartphone).

Finalmente, resulta especialmente importante destacar la existencia de motores de juego (game engines),como por ejemplo Quake1 o Unreal2, middlewares para el tratamiento de aspectos específicos de unjuego, como por ejemplo la biblioteca Havok3 para el tratamiento de la física, o motores de renderizado,como por ejemplo Ogre 3D .

Este tipo de herramientas, junto con técnicas específicas de desarrollo y optimización, metodologías dedesarrollo, o patrones de diseño, entre otros, conforman un aspecto esencial a la hora de desarrollar unvideojuego.

Al igual que ocurre en otros aspectos relacionados con la Ingeniería del Software, desde un punto de vistageneral resulta aconsejable el uso de todos estos elementos para agilizar el proceso de desarrollo y reducirerrores potenciales.

En otras palabras, no es necesario, ni productivo, reinventar la rueda cada vez que se afronta un nuevoproyecto.

Page 6: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Estructura típica de un equipo de desarrollo

Los ingenieros son los responsables de diseñar e implementar els oftware quepermite la ejecución del juego, así como las herramientas que dan soporte a dichaejecución. Normalmente, los ingenieros se suelen clasificar en dos grandes grupos:

• Los programadores del núcleo del juego, es decir, las personas responsables dedesarrollar tanto el motor de juego como el juego propiamente dicho.

• Los programadores de herramientas ,es decir ,las personas responsables Dedesarrollar las herramientas que permiten que el resto del equipo de desarrollopueda trabajar de manera eficiente.

Page 7: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 8: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Los artistas son los responsables de la creación de todo el contenido audio-visual del videojuego,como por ejemplo los escenarios, los personajes, las animaciones de dichos personajes, etc. Al igualque ocurre en el caso de los ingenieros, los artistas también se pueden especializar en diversascuestiones, destacando las siguientes:

• Artistas de concepto, responsables de crear bocetos que permitan al resto del equipo hacerse unaidea inicial del aspecto final del video juego. Su trabajo resulta especialmente importante en lasprimeras fases de un proyecto.

• Modeladores, responsables de generar el contenido 3D del videojuego, como por ejemplo losescenarios o los propios personajes que forman parte del mismo.

• Artistas de texturizado, responsables de crear las texturas o imágenes bidimensionales queformarán parte del contenido visual del juego. Las texturas se aplican sobre la geometría de losmodelos con el objetivo de dotarlos de mayor realismo.

Page 9: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

• Artistas de iluminación, responsables de gestionar las fuentes de luz del video juego, así como susprincipales propiedades, tanto estáticas como dinámicas.

• Animadores, responsables de dotar de movimientos a los personajes y objetos dinámicos delvideojuego. Un ejemplo típico de animación podría ser el movimiento de brazos de undeterminado carácter.

• Actores de captura de movimiento, responsables de obtener datos de movimiento reales paraque los animadores puedan integrarlos a la hora de animar los personajes.

• Diseñadores de sonido, responsables de integrar los efectos de sonido del videojuego.

• Otros actores, responsables de diversas tareas como por ejemplo los encargados de dotar de voza los personajes.

Page 10: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Los diseñadores de juego son los responsables de diseñar el contenido del juego,destacando la evolución del mismo desde el principio hasta el final, la secuencia decapítulos, las reglas del juego, los objetivos principales y secundarios, etc.

Evidentemente, todos los aspectos de diseño están estrechamente ligados alpropio género del mismo.

Por ejemplo, en un juego de conducción es tarea de los diseñadores definir elcomportamiento de los coches adversarios ante, por ejemplo, el adelantamientode un rival.

Page 11: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Finalmente, en el desarrollo de video juegos también están presentes roles vinculados ala producción, especialmente en estudios de mayor capacidad, asociados a laplanificación del proyecto y a la gestión de recursos humanos.

En algunas ocasiones, los productores también asumen roles relacionados con el diseñodel juego. Así mismo, los responsables de marketing, de administración y de soportejuegan un papel relevante. También resulta importante resaltar la figura de publicadorcomo entidad responsable del marketing y distribución del videojuego desarrollado porun determinado estudio.

Mientras algunos estudios tienen contratos permanentes con un determinadopublicador, otros prefieren mantener una relación temporal y asociarse con elpublicador que le ofrezca mejores condiciones para gestionar el lanzamiento de untítulo.

Page 12: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

El concepto de juego

Dentro del mundo del entretenimiento electrónico, un juego normalmente se suele asociar a la evolución,entendida desde un punto de vista general, de uno o varios personajes principales o entidades que pretendenalcanzar una serie de objetivos en un mundo acotado, los cuales están controlados por el propio usuario.

Así, entre estos elementos podemos encontrar desde superhéroes hasta coches de competición pasando porequipos completos de fútbol.

El mundo en el que conviven dichos personajes suele estar compuesto, normalmente, por una serie de escenariosvirtuales recreados en tres dimensiones y tiene asociado una serie de reglas que determinan la interacción con elmismo.

De este modo, existe una interacción explícita entre el jugador o usuario de videojuegos y el propio videojuego, elcual plantea una serie de retos al usuario con el objetivo final de garantizar la diversión y el entretenimiento.

Page 13: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Desde una perspectiva más formal, la mayoría de videojuegos suponen un ejemplo representativo delo que se define como aplicaciones gráficas o renderizado en tiempo real , las cuales se definen a suvez como la rama más interactiva de la Informática Gráfica. Desde un punto de vista abstracto, unaaplicación gráfica en tiempo real se basa en un bucle donde en cada iteración se realizan lossiguientes pasos:

• El usuario visualiza una imagen renderizada por la aplicación en la pantalla o dispositivo devisualización.

• El usuario actúa en función de lo que haya visualizado, interactuando directamente con laaplicación, por ejemplo mediante un teclado.

• En función de la acción realizada por el usuario, la aplicación gráfica genera una salida u otra,esdecir,existe una retroalimentación que afecta a la propia aplicación.

Page 14: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

En el caso de los videojuegos, este ciclo de visualización, actuación y renderizadoha de ejecutarse con una frecuencia lo suficientemente elevada como para que elusuario se sienta inmerso en el videojuego, y no lo perciba simplemente comouna sucesión de imágenes estáticas.

En este contexto,el frame rate se define como el número de imágenes porsegundo, comúnmente fps, que la aplicación gráfica es capaz de generar.

A mayor frame rate, mayor sensación de realismo en el videojuego. Actualmente,una tasa de 30 fps se considera más que aceptable para la mayoría dejuegos.Noobstante,algunosjuegos ofrecen tasas que doblan dicha medida.

Page 15: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Aunque el componente gráfico representa gran parte de la complejidad computacional de losvideojuegos, no es el único.

En cada ciclo de ejecución, el videojuego ha de tener en cuenta la evolución del mundo en el que sedesarrolla el mismo.

Dicha evolución dependerá del estado de dicho mundo en un momento determinado y de cómo lasdistintas entidades dinámicas interactúan con él.

Obviamente, recrear el mundo real con un nivel de exactitud elevado no resulta manejable nipráctico, por lo que normalmente dicho mundo se aproxima y se simplifica, utilizando modelosmatemáticos para tratar con su complejidad.

En este contexto, destaca por ejemplo la simulación física de los propios elementos que forman partedel mundo.

Page 16: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Motor de juego

Al igual que ocurre en otras disciplinas en el campo de la informática, el desarrollo de video juegosse ha beneficiado de la aparición de herramientas que facilitan dicho desarrollo, automatizandodeterminadas tareas y ocultando la complejidad inherente a muchos procesos de bajo nivel.

Si, por ejemplo, los SGBD han facilitado enormemente la gestión de persistencia de innumerablesaplicaciones informáticas, los motores de juegos hacen la vida más sencilla a los desarrolladores devideojuegos.

El término motor de juego surgió a mediados de los años 90 con la aparición del famosísimo juegode acción en primera persona Doom, desarrollado por la compañía id Software bajo la dirección deJohn Carmack.

Page 17: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Este planteamiento facilitaba enormemente la reutilización de software y elconcepto de motor de juego se hizo más popular a medida que otrosdesarrolladores comenzaron a utilizar diversos módulos o juegos previamentelicenciados para generar los suyos propios.

En otras palabras, era posible diseñar un juego del mismo tipo sin apenas modificarel núcleo o motor del juego, sino que el esfuerzo se podía dirigir directamente a laparte artística y a las reglas del mismo.

Este enfoque ha ido evolucionando y se ha expandido, desde la generación de modspor desarrolladores independientes o amateurs hasta la creación de una granvariedad de herramientas, bibliotecas e incluso lenguajes que facilitan el desarrollode videojuegos.

Page 18: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

A día de hoy, una gran parte de compañías de desarrollo de videojuego utilizan motores o herramientaspertenecientes a terceras partes, debido a que les resulta más rentable económicamente y obtienen,generalmente, resultados espectaculares.

Por otra parte, esta evolución también ha permitido que los desarrolladores de un juego se planteenlicenciar parte de su propio motor de juego, decisión que también forma parte de su política de trabajo.

Obviamente, la separación entre motor de juego y juego nunca es total y, por una circunstancia u otra,siempre existen dependencias directas que no permiten la reusabilidad completa del motor para crearotro juego.

La dependencia más evidente es el genero al que está vinculado el motor de juego. Por ejemplo, unmotor de juegos diseñado para construir juegos de acción en primera persona,conocidostradicionalmente como shooters o shoot’em all, será difícilmente reutilizable para desarrollar un juego deconducción.

Page 19: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Una forma posible para diferenciar un motor de juego y el software que representa aun juego está asociada al concepto de arquitectura dirigida por datos (data-drivenarchitecture).

Básicamente, cuando un juego contiene parte de su lógica o funcionamiento en elpropio código (hard-coded logic), entonces no resulta práctico reutilizarla para otrojuego , ya que implicaría modificar el código fuente sustancialmente.

Sin embargo,si dicha lógica o comportamiento no está definido a nivel de código, sinopor ejemplo mediante una serie de reglas definidas a través de un lenguaje de script,entonces la reutilización sí es posible y, por lo tanto, beneficiosa, ya que optimiza eltiempo de desarrollo.

Page 20: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Géneros de juegos

Los motores de juegos suelen estar, generalmente, ligados a un tipo o género particular de juegos. Porejemplo, un motor de juegos diseñado con la idea de desarrollar juegos de conducción diferirá engran parte con respecto a un motor orientado a juegos de acción en tercera persona.

No obstante, existen ciertos módulos, sobre todo relativos al procesamiento de más bajo nivel, queson transversales a cualquier tipo de juego, es decir, que se pueden reutilizar en gran medida demanera independiente al género al que pertenezca el motor.

Un ejemplo representativo podría ser el módulo de tratamiento de eventos de usuario, es decir, elmódulo responsable de recoger y gestionar la interacción del usuario a través de dispositivos como elteclado, el ratón, el joystick o la pantalla táctil.

Otros ejemplo podría ser el módulo de tratamiento del audio o el módulo de renderizado de texto.

Page 21: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Probablemente, el género de juegos más popular ha sido y es el de loslos denominados FPS, abreviado tradicionalmente como shooters,representado por juegos como Quake, Half-Life, Call of Duty o Gears ofWar, entre muchos otros.

En este género, el usuario normalmente controla a un personaje conuna vista en primera persona a lo largo de escenarios quetradicionalmente han sido interiores, como los típicos pasillos, peroque han ido evolucionando a escenarios exteriores de grancomplejidad.

Page 22: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 23: Diseño y desarrollo de video juegos

El desarrollo de los video juegosLos FPS representan juegos con un desarrollo complejo, ya que uno de los retos principales que han de afrontar esla inmersión del usuario en un mundo hiperrealista que ofrezca un alto nivel de detalle, al mismo tiempo que segarantice una alta reacción de respuesta a las acciones del usuario. Este género de juegos se centra en la aplicaciónde las siguientes tecnologías :

• Renderizado eficiente de grandes escenarios virtuales 3D.

• Mecanismo de respuesta eficiente para controlar y apuntar con el personaje.

• Detalle de animación elevado en relación a las armas y los brazos del personaje virtual.

• Uso de una gran variedad de arsenal.

• Sensación de que el personaje flota sobre el escenario, debido al movimiento del mismo y al modelo decolisiones.

• NPC con un nivel de IA considerable y dotados de buenas animaciones.

• Inclusión de opciones multijugador a baja escala, típicamente entre 32 y 64 jugadores.

Page 24: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Normalmente, la tecnología de renderizado de los FPS está especialmente optimizada atendiendo,entre otros factores, al tipo de escenario en el que se desarrolla el juego.

Por ejemplo, es muy común utilizar estructuras de datos auxiliares para disponer de más informacióndel entorno y, consecuentemente, optimizar el cálculo de diversas tareas.

Un ejemplo muy representativo en los escenarios interiores son los árboles BSP (Binary SpacePartitioning) (árboles de partición binaria del espacio) , que se utilizan para realizar una división delespacio físico en dos partes, de manera recursiva, para optimizar, por ejemplo, aspectos como elcálculo de la posición de un jugador.

Otro ejemplo representativo en el caso de los escenarios exteriores es el denominado occlusion culling, que se utiliza para optimizar el proceso de renderizado descartando aquellos objetos 3D que no se vendesde el punto de vista de la cámara, reduciendo así la carga computacional de dicho proceso.

Page 25: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

En el ámbito comercial, la familia de motores Quake, creados por Id Software, se ha utilizado para desarrollar un gran número de juegos, como la saga Medal of Honor, e incluso motores de juegos.

Hoy es posible descargar el código fuente de Quake, Quake II y Quake III 7 y estudiar su arquitectura para hacerse una idea bastante aproximada de cómo se construyen los motores de juegos actuales.

Otra familia de motores ampliamente conocida es la de Unreal, juego desarrollado en 1998 por Epic Games. Actualmente, la tecnología Unreal Engine se utiliza en multitud de juegos, algunos de ellos tan famosos como Gearsof War.

Más recientemente, la compañía Crytek ha permitido la descarga del CryENGINE 3 SDK (Software Development Kit)8 para propósitos no comerciales, sino principalmente académicos y con el objetivo de crear una comunidad de desarrollo.

Este kit de desarrollo para aplicaciones gráficas en tiempo real es exactamente el mismo que el utilizado por la propia compañía para desarrollar juegos comerciales, como por ejemplo Crysis 2.

Page 26: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Otro de los géneros más relevantes son los denominados juegos en tercerapersona,donde el usuario tiene el control de un personaje cuyas acciones se puedenapreciar por completo desde el punto de vista de la cámara virtual.

Aunque existe un gran parecido entre este género y el de los FPS, los juegos en tercerapersona hacen especial hincapié en la animación del personaje, destacando susmovimientos y habilidades, además de prestar mucha atención al detalle gráfico de latotalidad de su cuerpo.

Ejemplos representativos de este género son Resident Evil, Metal Gear, Gears of War oUncharted, entre otros.

Page 27: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 28: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Otro género importante está representado por los juegos de lucha, en los que,normalmente, dos jugadores compiten para ganar un determinado número de combatesminando la vida o stamina del jugador contrario.

Ejemplos representativos de juegos de lucha son Virtua Fighter , Street Fighter, Tekken, oSoul Calibur, entre otros.

Actualmente, los juegos de lucha se desarrollan normalmente en escenariostridimensionales donde los luchadores tienen una gran libertad de movimiento.

Sin embargo, últimamente se han desarrollado diversos juegos en los que tanto elescenario como los personajes son en 3D, pero donde el movimiento de los mismos estálimitado a dos dimensiones, enfoque comúnmente conocido como juegos de lucha descroll lateral.

Page 29: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Otro género representativo en el mundo de los videojuegos esla conducción, en el que el usuario controla a un vehículo quenormalmente rivaliza con más adversarios virtuales o realespara llegar a la meta en primera posición.

En este género se suele distinguir entre simuladores, como porejemplo Gran Turismo, y arcade, como por ejemplo RidgeRacer o Wipe Out.

Mientras los simuladores tienen como objetivo principalrepresentar con fidelidad el comportamiento del vehículo y suinteracción con el escenario, los juegos arcade se centran másen la jugabilidad para que cualquier tipo de usuario no tengaproblemas de conducción.

Page 30: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Otro género tradicional son los juegos de estrategia,normalmente clasificados en tiempo real o RTS (Real-TimeStrategy) y por turnos (turn-based strategy).

Ejemplos representativos de este género son Warcraft,Command & Conquer, Comandos, Age of Empires o Starcraft,entre otros.

Este tipo de juegos se caracterizan por mantener una cámaracon una perspectiva isométrica, normalmente fija, de maneraque el jugador tiene una visión más o menos completa delescenario, ya sea 2D o 3D.

Así mismo, es bastante común encontrar un gran número deunidades virtuales desplegadas en el mapa, siendoresponsabilidad del jugador su control, desplazamiento yacción.

Page 31: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

En la construccion de software no trivial, las herramientas de gestion de proyectos yde desarrollo facilitan la labor de las personas que lo construyan.

A medida que el software se va haciendo mas complejo y se espera masfuncionalidad de el, se hace necesario el uso de herramientas que permitanautomatizar los procesos de desarrollo, asi como la gestion de proyecto y sudocumentacion.

Ademas, dependiendo del contexto, es posible que existan otros integrantes delproyecto que no tengan formacion tecnica y que necesiten realizar labores sobre elproducto tales como traducciones, pruebas, diseño grafico, marketing, etc.

Page 32: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Los videojuegos son proyectos software que, normalmente, requieren la participaciónde varias personas con diferentes perfiles profesionales (programadores, diseñadoresgráficos, compositores de sonidos, etc.).

Cada uno de ellos, trabaja con diferentes tipos de datos y con diferentes tipos deformatos. Todas las herramientas que permitan la construcción automática delproyecto, la integración de sus diferentes componentes y la coordinación de susmiembros serán de gran ayuda en un entorno tan heterogéneo.

Desde el punto de vista de la gestión del proyecto,una tarea esencial es laautomatización del proceso de compilación y de construcción de los programas. Unade las tareas que más frecuentemente se realizan mientras se desarrolla y depura unprograma es precisamente la decompilación y construcción.

Page 33: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Cuanto más grande y complejo sea un programa, mayor es el tiempo que se necesita en esta fase y, portanto, mayor tiempo consumirá. Un proceso automático de construcción de software ahorrará muchaspérdidas de tiempo en el futuro.

En los sistemas GNU/Linux es habitual el uso de herramientas como el compilador GCC, el sistema deconstrucción GNU Make y el depurador GDB. Todas ellas fueron creadas en el proyecto GNU yorientadas a la creación de programas en C/C++, aunque también pueden ser utilizadas con otrastecnologías.

También existen editores de texto como GNU Emacs o vi, y modernos (pero no por ello mejores)entornos de desarrollo como Eclipse que no sólo facilitan las labores de escritura de código, sino queproporcionan numerosas herramientas auxiliares dependiendo del tipo de proyecto.Por ejemplo,Eclipse puede generar los archivos Makefiles necesarios para automatizar el proceso de construccióncon GNU Make.

Page 34: Diseño y desarrollo de video juegos

El desarrollo de los video juegosUn motor de video juegos es un termino que hace referencia a una serie de herramientas que permiten el diseño, la creación y la representación de un videojuego. La funcionalidad básica de un motor es proveer al videojuego renderizacion, gestión de físicas, colisiones, scripting, animación, administración de memoria o gestión del sonidos entre otras cosas.

Metodo de trabajo con un motor de videojuegos

Generacion de contenido externo al motor

• Diseño del videojuego: esta fase suele hacerse con papel y boligrafo. En ella definiremos las mecánicas necesarias a implementar, haremos bocetos de los personajes asignando diferentes prioridades.

• Generación del material gráfico: El videojuego necesitará gráficos, texturas, fuentes, animaciones o sonidos. Este material se conoce como assets. Podemos utilizar diferentes programas de modelado y texturizado 3D o 2D para esta tarea, ya que todos los assets son exportados a un formato de entrada de los que reconoce el motor gráfico.

Page 35: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 36: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Generación de contenido interno al motor

• Escritura de scripts: La escritura de scripts se realiza con un editor de texto externo a las herramientas del motor gráficopero se considera contenido íntimamente relacionado del motor de videojuego. Los scripts que utilizamos se pueden escribir en los lenguajes C#, Javascript o BOO.

• Escritura de shaders: Los shaders también se escriben con un editor externo. Importación de assets: Uno de los pasos iniciales dentro del entorno integrado de Unity3D es añadir al proyecto todo el material generado anteriormente y ajustar sus atributos; como formatos, tamaños de textura, ajuste de propiedades, calculo de normales, etc.

• Creación de escenas: Crearemos una escena por cada nivel o conjunto de menús del videojuego. En la escena estableceremos relaciones entre objetos y crearemos instancias de ellos.

• Creación de prefabs: Los prefabs son agrupaciones de objetos que se salvan como un objeto con entidad propia.

• Optimización de la escena:Uno de los pasos fundamentales se lleva acabo al final del desarrollo de la escena y es la optimización. Para ello emplearemos técnicas de lightmapping y occlusion culling con las herramientas del entorno.

Page 37: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 38: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Creación de escenas

Una escena está constituida por instancias de objetos de nuestros assets y las relaciones entre ellos. Podemosconsiderar una escena como la serialización de el objeto escena.

Este objeto contiene jerárquicamente otros objetos que son almacenados cuando se produce esaserialización, para posteriormente cargar la escena con todas esas instancias que contendrán los mismosvalores que cuando fueron almacenados. Hay dos enfoques diferentes a la hora de crear escenas:

1. Una escena por cada nivel del juego: Utilizaremos este enfoque cuando cada nivel tenga elementosdiferentes. Podrán repetirse elementos de otros niveles, pero trataremos que estos elementos seanprefabs para que si los modificamos en alguna escena, el cambio se produzca en todas.

2. Una única escena con elementos modificados dinámicamente: Puede que en nuestro videojuego todoslos niveles tengan el mismo tipo de elementos pero lo diferente sea la dificultad o el número de enemigos, eneste caso podemos crear una única escena pero variar sus condiciones dinámicamente en función de en quenivel estemos.

Page 39: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 40: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Como las escenas pueden cargarse desde otra escena. Podemos realizar un cambiode escena cuando se ha llegado al final de un determinado nivel por ejemplo.

Este cambio de escena mantendrá en memoria los elementos comunes comotexturas o modelos 3D o sonidos que pertenezcan a los dos escenas, la escena quese descarga y la escena que se carga, por lo que dependiendo del caso esta cargasuele ser bastante rápida. También podemos realizar los menús en una escena ydesde ahí cargar la escena del primer nivel del juego.

Uso de prefabs Cuando un elemento se repita en los diferentes niveles o en lamisma escena debe de ser un prefab. De esta forma sólo se tiene una referencia deese objeto y es óptimo en rendimiento y organización de assets.

Page 41: Diseño y desarrollo de video juegos

El desarrollo de los video juegosCreación de prefabs

Cada uno de los objetos de nuestra escena es un nodo, y cada nodo puede contenerjerárquicamente a otros nodos.

Podemos agrupar esa jerarquía y darle un nombre propio para después serializarla einstanciarla en el futuro. A ese concepto se le conoce con el nombre de prefab.

Podemos crear tantos prefabs como queramos a partir de jerarquías de objetos de unaescena y son una parte fundamental para entender el método de trabajo con un motor.

En nuestra escena se ha creado prefabs para cada uno de los tipos de enemigos, ytambién hemos creado prefabs para el disparo, una explosión y un efecto de partículasde llamas.

Page 42: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 43: Diseño y desarrollo de video juegos

El desarrollo de los video juegosProgramación de scripts

Una script es un fichero de código que contiene instrucciones sobre el comportamiento de un determinado actor de nuestra escena.

Podemos añadir uno o varios scipts a cada uno de los elementos de nuestra escena y además los scripts tienen la posibilidad de hacer referencia a estos objetos o scripts de otros objetos.

En los scripts podemos utilizar las clases y API’s que nos proporciona el motor de videojuegos. Algunas de estas clases son:

GameObject: Esta clase tiene información sobre el objeto. Todos los nodos de una escena son GameObjects.

Transform: Esta clase representa la posición, rotación y escala de un elemento en el espacio tridimensional.

AudioSource: Esta clase almacena un sonido y permite gestionar su reproducción.

Texture 2D: Esta clase contiene una textura bidimensional.

Page 44: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Los scripts tienen algunos métodos especiales que podemos implementar como:

Update: Este método es invocado por el motor gráfico cada vez que el objeto va a ser renderizado.

Start: Este método es invocado por el motor gráfico cuando se instancia el objeto que contiene a este script.

Podemos consultar la documentación de cada una de las API’s para los tres lenguajes de scripting desde la página oficial de Unity3D.

Page 45: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Algunos scripts básicos

Algunos de nuestros enemigos son helicópteros. Podemos añadir el siguiente script a el objeto de las hélices para que realice una rotación sobre su eje perpendicular.

Page 46: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

En nuestro escenario se han añadido nubes modeladas mediante planos y con una textura de una nube con transparencias. Para darle mayor realismo a este elemento se va a programar un script para mover las coordenadas u,v del mapeado de este plano provocando que la textura se mueve sobre el plano y simulando un movimiento de nubes.

Page 47: Diseño y desarrollo de video juegos

El desarrollo de los video juegosEn los scripts se utiliza el valor de Time.deltaTime para interpolar el valor de otros elementos con respecto al tiempo que ha pasado desde el último frame renderizado.

De esta forma el videojuego va igual de rápido en todas las máquinas, pero se visualizará de manera más fluida en máquinas más rápidas debido a que al renderizar mayor numero de frames por segundo se producirán más posiciones intermedias de cada uno de los valores que dependen de Time.deltaTime.

Triggers

Un trigger es una porción del espacio definida por un objeto geométrico como una caja o una esfera que utilizaremos para colocar sobre la escena y de esta forma saber cuando un determinado objeto entra o sale de una zona concreta.

De esta forma podremos invocar diferentes comportamientos en ese momento. En nuestra escena utilizaremos un trigger para determinar cuando hemos llegado al enemigo final.

Page 48: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 49: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 50: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Invocación de métodos retardada

Aveces necesitaremos programar un evento para que pase trascurrido un determinado tiempo. En nuestro ejemplo esto ocurre con la explosión, que invocaremos su destrucción 5 segundos después de haberse instanciado.

Page 51: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Comunicación entre diferentes scriptsLa mayoría de los scripts se comunicaráncon otros scripts más complejos.

Para ello hay que crear un puntero alobjeto que contiene el script y utilizarlopara a su vez crear un puntero a lainstancia de el script de ese objeto.

Después, sobre el puntero de esainstancia de script, podremos invocar losmétodos definidos en el mismo. En elsiguiente script que controla el disparo seutiliza este procedimiento decomunicación para invocar un método deel script Sonidos, encargado de lareproducción de los sonidos y músicas.

Page 52: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 53: Diseño y desarrollo de video juegos

El desarrollo de los video juegosControl del flujo general de la partidaNormalmente se suele utilizar un script quecontrola el flujo general de la partida.

Este script se utiliza como nexo de unión entre elresto de los scripts y se le pasarán mensajes porejemplo cuando ha terminado la partida.

Podemos modelar el comportamiento de estescript como si de un autómata se tratara.

En cuanto al límite de FPS, en dispositivos móvilesestá ajustado por defecto a 30 FPS pero podemoscambiarlo modificando el atributoApplication.targetFrameRate.

También es importante señalar que utilizaremos lainstrucción WaitForSeconds para introducirretardos en los scripts.

Page 54: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 55: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 56: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Programación de enemigos

Vamos a tener un único script para definir el comportamiento de todos los enemigos,incluidos el enemigo final. En este script vamos a definir una serie de atributospúblicos que después ajustaremos con unos valores específicos para cada uno de losprefabs de enemigos.

Detección de colisiones Cuando un objeto tridimensional tiene añadidos los elementoscollider y rigidbody permite detectar colisiones mediante el método OnCollisionEnter.

Cada enemigo vendrá determinado un rango de disparo y un tiempo de recarga, ymodificando estos parámetros crearemos enemigos más peligrosos que otros. Estosvalores influirán en el calculo de puntuación que proporciona ese enemigo concreto alser destruido.

Page 57: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 58: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 59: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 60: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Programación del control del jugadorEl jugador controlará su avión con los botones: izquierda, derecha y disparo. Además hay que tener en cuenta que cuando el jugador colisiona con un disparo enemigo o un enemigo debe reducir su vida, y cuando esta llega a cero explotar.

Page 61: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 62: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Page 63: Diseño y desarrollo de video juegos

El desarrollo de los video juegos

Resultado finalEl resultado final es una piezajugable de unos dos minutos ymedio de duración que podría serun nivel de un videojuego shoot deaviones con vista cenital.

Este videojuego está listo paracompilarse para dispositivos coniOS o Android y funcionar enterminales de gama media-baja,pudiendo alcanzar los 60 FPS enterminales de gama alta.