# Desarrollo de videojuegos

El desarrollo de videojuegos es el proceso de creación de un videojuego, desde el concepto inicial hasta el videojuego en su versión final. Es una actividad multidisciplinaria, que involucra profesionales de la programación, diseño gráfico, animación, sonido, música, actuación, etc.

## Desarrollo

El desarrollo de videojuegos se lleva a cabo por un desarrollador de videojuegos, que puede variar de individuos y pequeños desarrolladores independientes, hasta grandes empresas de videojuegos. A menudo los desarrolladores de videojuegos cuentan con una distribuidora encargada de tareas como el marketing, el control de calidad, el porting a consolas, la localización, o la financiación del desarrollo.
El tiempo de desarrollo de un videojuego, puede variar en función de muchos factores, como el alcance y tamaño del mismo. Los videojuegos AAA para PC y videoconsolas pueden tardar de dos a siete años desarrollarse, mientras que los videojuegos independientes o videojuegos para móviles suelen tener desarrollos más cortos, aunque también pueden llegar a durar años.
El desarrollo del videojuego comerciales comenzó en la década de 1970 con la llegada de la primera generación de videoconsolas y los primeros ordenadores personales. Debido a las bajas capacidades de las computadoras de aquella época, un programador solitario podría desarrollar un videojuego completo. Sin embargo, al acercarse el siglo XXI, con las mejoras en las capacidades de las computadoras, y el aumento de las expectativas de los consumidores, fue aumentando la cantidad de personas y tiempo que se debía emplear en el desarrollo de un videojuego.

## Proceso

Para que el creador haga esto en el desarrollo de un videojuego generalmente hace el siguiente proceso:
* Concepción de la idea del videojuego
* Diseño
* Planificación
* Preproducción
* Producción
* Pruebas
* Mantenimiento
El proceso es similar a la creación de software en general, aunque difiere en la gran cantidad de aportes creativos (música, historia, diseño de personajes, niveles, etc) necesarios. El desarrollo también varía en función de la plataforma objetivo (PC, móviles, consolas), el género (estrategia en tiempo real, RPG, aventura gráfica, plataformas, etc) y la forma de visualización (2D o 3D).
Cabe mencionar que el diseño de juegos es usualmente considerado un proceso de creación iterativo, esto quiere decir que los diseñadores tendrán que pasar por cada uno de estos pasos repetidas veces (cambiando y mejorando aspectos) hasta que consideren que el resultado sea el mejor.

### Concepción

Al tener una idea inicial en mente comienza esta etapa en la cual deberán plantear los aspectos fundamentales que conformarán el videojuego, entre los que se encuentran:
* Género: dentro de qué géneros se va a desarrollar el juego. De no corresponder a un género muy conocido, se deben especificar las características.
* Gameplay: lo que generará diversión a la hora de jugarlo.
* Conceptos: algunas ideas sueltas acerca de cómo debe lucir el juego en cuanto a personajes, ambientación, música, etc.
Para el desarrollo de estos y para facilitar su creación se pueden utilizar métodos de pensamiento activo o lluvias de ideas, ya que es la etapa inicial, o conceptualización. Pueden usar técnicas simples como red o burbuja de palabras.

### Diseño

En esta fase se detallan todos los elementos que compondrán el juego, dando una idea clara a todos los miembros del grupo desarrollador acerca de cómo son. Entre estos elementos tenemos:
* Historia: forma en que se desenvolverán los personajes del juego y la historia del mundo (o un planeta en específico) representado. Casi todos los juegos tienen historia.
* Guion: el proceso comienza con una reunión de todo el equipo de desarrollo, para que todo el equipo tenga la oportunidad de aportar sus ideas o sugerencias al proyecto. A partir de aquí el equipo de guion trabaja por conseguir un borrador en el que queden plasmados cuales serán los objetivos en el juego, las partes en las que se dividirá, el contexto en el que se desarrollará la acción, cuales y cómo serán los personajes principales del juego, etc.
* Arte conceptual: se establece el aspecto general del juego. En esta etapa un grupo de artistas se encargan de visualizar o conceptualizar los personajes, escenarios, criaturas, objetos, etc. Estos artistas se basan en las ideas originales de los creadores y luego entregan una serie de propuestas impresas o digitales de cómo lucirá el juego. Posteriormente, el director de arte se encargará de escoger de entre las opciones aquellas que se apeguen más a la idea original. Algunas veces los artistas conceptuales permanecen durante todo el proceso de producción, pero lo usual es que sólo participen en las primeras etapas del proceso.
* Sonido: detallada descripción de todos los elementos sonoros que el juego necesita para su realización. Voces, sonidos ambientales, efectos sonoros y música.
* Mecánica de juego: es la especificación del funcionamiento general del juego. Es dependiente del género y señala la forma en que los diferentes entes virtuales interactuarán dentro del juego, es decir, las reglas que rigen este.
* Diseño de programación: describe la manera en que el videojuego será implementado en una máquina real (PC, consola, móviles, etc) mediante un cierto lenguaje de programación y siguiendo una determinada metodología. Generalmente en esta fase se generan diagramas de UML que describen el funcionamiento estático y dinámico, la interacción con los usuarios y los diferentes estados que atravesará el videojuego como software.
De toda la fase de diseño es necesario generar un documento llamado Documento de Diseño, que contiene todas las especificaciones de arte, mecánicas y programación.

### Planificación

En esta fase se identifican las tareas necesarias para la ejecución del videojuego y se reparten entre los distintos componentes del equipo desarrollador. También se fijan plazos para la ejecución de dichas tareas y reuniones clave, con la ayuda de herramientas de diagramación de actividades como GANTT y PERT.

### Preproducción

Durante la etapa de preproducción se le asigna el proyecto a un pequeño equipo, con la finalidad de verificar la factibilidad de la idea.
Este equipo trabajará para crear un nivel o ambiente del juego, acercándose lo más que se pueda al producto final. La preproducción es una de las partes más críticas del proceso ya que determinará la viabilidad del juego.

### Producción

Aquí se llevan a cabo todas las tareas especificadas en la fase de planificación, teniendo como guía fundamental el documento de diseño. Esto incluye, entre otras cosas, la codificación del programa, la creación de sprites, tiles y modelos 3D, grabación de sonidos, voces y música, creación de herramientas para acelerar el proceso de desarrollo, entre otras.
* Programación: la mayoría de los juegos se programan utilizando el lenguaje C++ dado que es un lenguaje de nivel medio que permite un rápido acceso a los componentes de hardware de una computadora o consola de juegos que lo hace más accesible.
* Ilustración: los juegos 2D deben ser ilustrados por artistas experimentados, quienes trabajan tomando en consideración las limitaciones técnicas del hardware sobre el cual correrá el juego, esto incluye: cantidad de colores disponibles, tamaño de los sprites, resolución final de los sprites y formatos a utilizar. Los artistas 2D también son los encargados de elaborar las animaciones del juego.
* Interfaz: es la forma en que se verán los elementos de la interfaz gráfica de usuario y el HUD, mediante los cuales el usuario interactuará con el juego.
* Animación y modelado 3D: los artistas utilizan herramientas comerciales de modelado y animación tridimensional como 3DS Max, Maya, XSI/Softimage, Blender (el cual no es comercial), etc. Pero, además, usan herramientas desarrolladas internamente que facilitan algunas de las funciones más comunes del proceso de creación de juegos.
* Sonido: los ingenieros de sonido se encargan de crear sonidos para cada objeto o personaje del juego. Pueden crear sonidos desde cero o utilizar sonidos del ambiente y modificarlos según sus necesidades.

### Pruebas

Al igual que en otros tipos de software, los videojuegos deben pasar en su desarrollo por una etapa donde se corrigen los errores inherentes al proceso de programación y se asegura su funcionalidad. Además, a diferencia de aquellos, los videojuegos requieren un refinamiento de su característica fundamental, la de producir diversión de manera interactiva (jugabilidad). Generalmente, esta etapa se lleva a cabo en tres fases:
* Pruebas físicas: se llevan a cabo por los diseñadores y programadores del juego. Se crean prototipos que simulan los eventos que pueden suceder en el juego. Un prototipo físico puede utilizar papel y lápiz, tarjetas de índice, o incluso ser actuado fuera. Sobre la base de los resultados de estas pruebas se puede hacer una mejor aproximación al balance del videojuego, pueden prevenir problemas de programación. El objetivo es jugar y perfeccionar este simplista modelo antes de que un solo programador, productor o artista gráfico estén cada vez más introducidos en el proyecto. De esta manera, el diseñador del juego recibe retroalimentación instantánea en lo que piensan los jugadores del juego y pueden ver inmediatamente si están logrando su metas.
* Pruebas alpha: se llevan a cabo por un pequeño grupo de personas, que con anterioridad estén involucradas en el desarrollo, lo que puede incluir artistas, programadores, coordinadores, etc. El propósito es corregir los defectos más graves y mejorar características de jugabilidad no contempladas en el documento de diseño.
* Pruebas beta: estas pruebas se llevan a cabo por un equipo externo de jugadores, bien sea que sean contratados para la ocasión o que sean un grupo componente del proyecto (grupo QA). De estas pruebas, el videojuego debe salir con la menor cantidad posible de defectos menores y ningún defecto medio o crítico.

### Mantenimiento

Una vez que el juego alcanza su versión final (RTM) y se publica, aparecerán nuevos errores o se detectarán posibles mejoras. Es necesario recopilar toda la información posible de los jugadores y a partir de ahí realizar los cambios oportunos para mejorar el juego en todos sus aspectos, ya sea de diseño, jugabilidad, etc. Estas correcciones o mejoras se hacen llegar a los usuarios en forma de parches o actualizaciones, que en ocasiones pueden incluir algunas características nuevas para el juego.
En ocasiones, los desarrolladores van más allá -especialmente si el videojuego ha funcionado bien comercialmente- y realizan una ampliación considerable en los contenidos o en las fases del videojuego que se pone a la venta normalmente a un precio inferior al del juego original y que se conoce como una expansión.

## Funcionalidad

La funcionalidad es un factor clave para el desarrollo, la producción y el lanzamiento del juego. La funcionalidad se logra cuando, a través de la corrección de las mecánicas y dinámicas del juego, un jugador, sin ayuda de los desarrolladores, puede jugar sin ningún problema. Este punto se lleva a cabo desde la concepción y el desarrollo de las pruebas del juego, llevando las pruebas a cabo es la única manera de refinar el proceso de funcionalidad. Un ejemplo claro de que el juego es funcional es cuando en las pruebas los jugadores pueden completar las metas o logros esperados en el tiempo que se planeó con las instrucciones que el mismo juego les brinda. Dentro de la funcionalidad entran otros conceptos como:
* Base interna del juego: este punto también es referente a las dinámicas y reglas del juego. La base interna del juego requiere ser completa, esto significa que no haya elementos dentro del juego que compliquen el plan de juego y su flujo. Hay tres problemas principales que pueden causar que la base del juego no pueda ser completada:
** Reglas no claras: factores tales como reglas que contradicen otras reglas, reglas que confieren ventajas injustas o reglas, que por errores de traducción (en caso de ser juegos importados) o errores gramaticales, no tengan sentido, y que produzcan que el juego no logre avanzar o que obliguen al jugador a improvisar con elementos que rompen con el esquema de la base interna completa del juego y se deben de arreglar lo más pronto posible.
** Loopholes: estos elementos son considerados fallas en el diseño, en la estructura, en el flujo o en la programación del juego, de los cuales los jugadores pueden conseguir ventajas injustas. La habilidad de atravesar paredes dentro del juego (a lo que comúnmente se le llama clipping dentro de la comunidad de jugadores), elevar ventajas del jugador a través de repetir actos dentro del juego (realizar acciones simples como abrir cofres o cerraduras bloqueadas, bloquearlas de nuevo y volver a abrirlas para ganar más experiencia), o usar el escenario y las mecánicas de enemigos para eliminarlos y decrecer el nivel de dificultad del nivel son considerados ejemplos de loopholes. Estos elementos son difíciles de ubicar aún con todo el proceso de prueba y se suelen detectar cuando el juego ya ha sido publicado. A estas alturas la corrección de estos errores se lleva a cabo en el mantenimiento del juego, a través de parches y actualizaciones.
** Callejones sin salida o dead ends: factores de reglas no claras o errores de programación o diseño pueden crear callejones sin salida. Estos elementos son puntos muertos en el juego, donde el jugador ya no puede seguir avanzando en el juego y debe reiniciarlo. Estos problemas son una prioridad para el refinamiento y la funcionalidad del juego y deben arreglarse lo antes posible.
* Balance: es el proceso de hacer que el juego cumpla con las metas que se le asignaron, basándose en la experiencia del jugador. Que las dinámicas y mecánicas, aun cuando se puedan usar en infinitas variaciones, puedan aun así lograr los objetivos. En el juego multijugador, se denomina a que el juego debe ser justo.

## Tipos de desarrolladores

Los desarrolladores de videojuegos se clasifican en tres categorías: desarrolladores terceros, desarrolladores internos y los más pequeños independientes. Los desarrolladores generalmente contratan a un grupo de programadores, diseñadores de juegos, artistas, ingenieros de sonido, productores y probadores, a pesar de que algunos de estos roles pueden ser externos. De manera confusa, una persona individual dentro de cualquiera de estos roles puede ser llamada desarrolladora de videojuegos. También pueden clasificarse de la siguiente manera:
* Desarrolladora de primera o principal (first-party developer en inglés) es aquella que forma parte de una empresa que es dueña de alguna consola del mercado. Estas desarrolladoras son enteramente propiedad de la empresa a la que pertenecen, por lo que sólo desarrollan videojuegos exclusivamente para las consolas de esa empresa. Este tipo de desarrolladoras también son conocidas como desarrolladoras internas. Estas pueden haber sido fundadas por la misma empresa o haber sido adquiridas.
* Desarrollador de segunda o secundario (second-party developer en inglés) es aquella desarrolladora que sin ser una subsidiaria de una empresa dueña de alguna videoconsola del mercado, crea sus videojuegos exclusivamente para una de estas plataformas. Las empresas suelen tener cierta participación en estas desarrolladoras, aunque sin llegar a controlarlas como propiedades. También puede ser que esta exclusividad se deba a tratos que hayan firmado entre la empresa y la desarrolladora.
* Desarrollador de tercera o terceros (third-party developer en inglés), es el nombre con el cual se conocen a las empresas que desarrollan software libremente para cualquier tipo de plataforma, sin mantener exclusividad con ninguna, aunque también se trata de programas que aceptan archivos de otros programas. Especialmente se aplica en videojuegos.