Desarrollo tradicional vs Desarrollo de videojuegos [NB Original]
Antes y Despues (c) Alebrije Estudios

Antes y Despues (c) Alebrije Estudios
Hace unos días, platicando con algunos estudiantes de Ingeniería en Sistemas, nos hicieron una pregunta muy interesante: ¿Cuál es la diferencia entre la programación para videojuegos y el desarrollo de software tradicional o aplicaciones?
En este post trataremos de dar una respuesta basándonos en nuestra experiencia y cómo hemos visto se han integrado los programadores tradicionales a la industria de los videojuegos. Para efectos del artículos a toda forma de código diferente a los videojuegos la llamaremos software o aplicaciones.
Debemos recordar que los videojuegos al final del día son una serie de líneas de código como también lo son los sistemas administrativos, las aplicaciones móviles, el software de producción. Los videojuegos también son software y por ende comparten muchas similitudes en el proceso de desarrollo.
De manera general, ambos pasan a través de un ciclo de diseño, desarrollo, pruebas e implementación y por lo mismo utilizan metodologías similares como el SCRUM, AGILE, Extreme Programming entre muchas otras. En ambos casos estas metodologías se adaptan al proceso iterativo de desarrollo pero comparten una base solida.

Orientado a Objetos (c) Alebrije Estudios
Los videojuegos y las aplicaciones comparten la mayoría de los paradigmas de programación, en otras palabras los estilos fundamentales de programación. Mencionar todos estos sería una tarea muy extensa y no nos gustaría dejar alguno de largo, pero mencionaremos los que consideramos los dos más conocidos por todos aquellos que han pasado por algún curso básico de programación.
- Programación Orientada a Objetos: Es el estilo de programación estructurada que usa objetos estructurados que contienen métodos y campos de datos. Así como podemos definir en la programación de sistemas un objeto que tenga la información referente a un registro o transacción de igual manera podemos crear objetos que contengan la información de los enemigos o los NPC.
- Programación Orientada a Eventos: Es el estilo de programación en el cual el flujo de las aplicaciones está determinado por eventos tanto humanos como de otras partes del software. En todo momento tanto un sistema como un juego está esperando la interacción del usuario con el mouse, teclado o pantalla táctil, y de igual forma esta esperandoa que otros procesos ajenos al usuario terminen, para realizar otras acciones.
Los videojuegos y las aplicaciones comparten la misma base, ambos nacen de la misma área de conocimiento. ¿Cuál es la verdadera diferencia entre ambos? A grandes rasgos la gran diferencia radica en la cantidad de especialidades que se unen a las ya existentes en la creación de software (matemáticas y diseño) para crear videojuegos.
En otras palabras los videojuegos utilizan de igual manera que el software tradicional las matemáticas, lógica y el diseño pero a estas se le agregan muchas otras disciplinas. Entre ellas se encuentran la física, la inteligencia artificial, la ingeniería de audio, el arte, el manejo del 3D, y tal vez la más especial la programación del gameplay o la experiencia de juego.

Pong by tcp909 Flickr
La programación para videojuegos es muy particular de entra las experiencias interactivas en general ya que busca crear una experiencia de reto, destreza, suerte, y juego. Desde el punto de vista de la programación tradicional, este concepto no existe y no agrega valor a un sistema de producción. Es este gameplay el cual agrega una capa particular al desarrollo de videojuegos; de igual manera es el que hace que las áreas extras se integren de mil y un maneras y que se creen problemáticas que no existen en el desarrollo de software.
La pregunta original sin duda va dirigida hacia cómo tengo que modificar mi formación si soy un programador tradicional y quiero desarrollar videojuegos? La respuesta está en todas esas áreas de conocimiento que se agregan cuando hablamos de desarrollo de videojuegos. El conocimiento necesario no vendrá por arte de magia, el camino es la práctica.
Nuestra recomendación es que si te encuentras en esta encrucijada comienza por ponerte tus propios retos y descubrir estas diferencias por ti mismo. Crea un pequeño juego, en la red existen mucho tutoriales para muchos lenguajes que te pueden llevar de la mano en el uso del conocimiento técnico que ya tienes para moldearlo y convertirte en un desarrollador de juegos.
Este podría ser el control final de la Wii U
Guaternius: Nintendo dominó, los primeros minut...
El Resumen de la Semana: el lanzamiento de Diab...
Medal of Honor: Warfighter muestra su nuevo tra...
Frank O'Connor ofrece más detalles de Halo 4
Metal Gear Rising: Revengeance estrena nuevo video
Regístrate al beta de Dust 514 y cruza los dedos
10 Comentarios
Desarrollo tradicional vs Desarrollo de videojuegos [NB Original]
Hola, gracias por los artículos. Voy a hacer una pregunta que no tiene que ver con este post si no con el de los engines (que ya lleva mes y medio). Qué tal te parece el Panda3D?, es un buen engine para comenzar?
ResponderMe van a perdonar pero no le encontré un real sentido al articulo, además las dos definiciones que das de programación están erradas y no vienen al caso, en ningún momento pretendo ser pesado o faltar el respeto pero esto para mí es realmente un tema serio y esperaría que si van a comunicar algo lo hagan con la seriedad que amerita el caso.
Responder@Pablo Hormazabal podrias argumentar el porqué piensas que no estan bien las definiciones.
ResponderComparto lo que dice @Pablo Hormazabal. el articulo no agrega la gran cosa al tema, es mas confunde, la definicion de Orientacion orienta al objeto esta muy mala.
Responder"Es el estilo de programación estructurada que usa objetos estructurados que contienen métodos y campos de datos." Eso mismo se logra en C con struct y no es Orientado a objeto:
La programacion orientada a objeto es una forma de encapsular logica en trozos de codigo reutilizables que se asemejan a estructuras de la vida real y que se comunican a traves mensajes...(porfavor ponganse serios).
gracias @Ricardo exactamente a eso me refiero
ResponderRicardo y Pablo, creo que lo mas importante del articulo no son las definiciones, es el hecho que lo que ya saben de programacion aplica tanto para video juegos como cualquier otro software.
ResponderLas definiciones no son las más óptimas, pero si es muy acertivo el articulo al decir que se requieren otras áreas de conocimiento para desarrollar un juego. Si no se tiene conocimiento de Matematica (Geometria, Algebra Lineal), Física del movimiento, IA., un desarrollador normal jamas podría programar un juego.
ResponderCualquier simio puede seguir documentación para programar algo... Y en un juego también aplica eso.
ResponderLo que marca la diferencia entre cómo se programa un juego y cualquier otra cosa, es por la etapa de diseño; y no precisamente la tecnología detrás de este, si no su arte, las interacciones, la historia. En otras palabras, la cosmovisión de lo que uno quiere lograr no tiene las mismas restricciones que otro proyecto de software. En un proyecto tradicional, pocas veces tienes la libertad absoluta de qué hacer: hay requerimientos y restricciones de lo que desees lograr acotado a lo que tu "cliente" quiera y también las tecnologías que emplees (aunque esto tb aplica a juegos). Los procesos a seguir en lo que se llama "etapas del proyecto" no distan tanto una de otra, e incluso me atrevería a decir que son el mismo bicho.
TL;DR: Si en el curso del proyecto para crear el juego hay un documento que te amarre a algo ya concebido (no puedes diseñar), no tiene diferencia con uno tradicional.
Saludos!
@Francisco A Redard
Respondertoda la razon... los programadores son desechables, cualquiera puede llegar y hacer un codigo que funcione, obviamente hay gente que programa mas bien que otra y son los que valen, pero a la empresa eso no le importa mucho... además lo más importante en el desarrollo de software es el DISEÑO, los diagramas, los monitos y todo eso
igual salvó el artículo... ahora, haganse fans de mi página de música de juegos XD http://www.facebook.com/pages/Musica-de-Videojuegos/152455708142827
De una u otra manera es programar y programar ... Al final lo que importa es entregar a tiempo el software y con calidad
ResponderDeja tu Comentario