Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

CMPGPV: Programador vs Idea Guy

Como convertir una idea en código fuente

Todo proyecto comienza con una idea y esa idea debe de ser expresada de algún modo. En esta entrada comenzaremos a discutir la primera fase del manejo de proyectos grandes de programación enfocado a juegos: La fase del espionaje y el Idea Guy.

Sin entrar en detalles un Idea Guy es alguien que no programa, no dibuja, y en realidad no hace nada que se refleje directamente en el juego. Pero es el que tiene esa idea genial que quiere compartir con el mundo. En el mejor de los casos el Idea Guy puede tener cierta idea de como escribir una historia y construir los diálogos del juego. Aunque fuera de los RPG o juegos muy narrativos el Idea Guy termina siendo cualquier desocupado con iniciativa que invita a otros que si saben hacer algo a hacer un juego. En esta entrada veremos como tomar las ideas geniales de este personaje y obtener información de programación a partir de sus ocurrencias.

Pensemos en una situación típica: Ustedes pertenecen a un grupito de nerds que quieren hacer un videojuego. Entre ellos hay gente que sabe dibujar en papel, manejar editores gráficos, hacer sonidos y música y por supuesto alguien que tiene una muy pero muy buena historia que quiere dar a conocer al mundo en formato jugable. De este grupo ustedes son los programadores. Personajes que hacen el trabajo que nadie del grupo entiende ni quiere entender pero que se aguantan porque no les queda mas remedio. Entonces va la pregunta ¿Como convertir todas esas conversaciones llenas de ilusión e interminables documentos de texto con faltas de ortografía en un código de un videojuego?

Créanme, he estado en muchas de estas pláticas y se de lo que hablo. Los de las ideas pueden tener toda clase de historias y personajes geniales y los que manejan los paquetes de creación de contenido pueden saber como usarlos pero ustedes como programadores no deben dejarse arrastrar por los detalles. Al menos no todavía. Mas bien deben de ejercitar su capacidad de abstracción y pensar en términos de reglas y de información. Lo primero que deben de tener en cuenta es que todo programa de computadora o subrutina que lo componga tiene una cosa en común: A todos les entra información por un lado y les sale transformada por otro. ¿No lo creen? ¿Creen que eso es cosa aburrida de administración? Pues no es así. Aún en el mas loco de los videojuegos se cumple esa regla. El código de un videojuego toma los gráficos, el sonido creado por los artistas como entrada y las señales enviadas desde el control del jugador, lo procesa de acuerdo a las reglas con las que está programado el juego y al final genera una salida de datos que el hardware de video y audio muestran como una animación multimedia interactiva. Y este código a su vez puede descomponerse en módulos mas pequeños por los cuales circulan los datos del juego. La fase del espionaje consiste en convertir esos textos interminables que describen el videojuego en un conjunto de unidades de datos y de control. Volviendo a la analogía de la guerra esta etapa consiste en identificar los blancos y las unidades enemigas y definir que posiciones debemos de controlar para tener oportunidad de ganar. Y aunque suena aburrido y complicado verán que es un proceso bastante mecánico que bien puede ser auxiliado por un programa de procesamiento de cadenas de texto sin mucha ciencia.


Un ejemplo de idea de las que valen 10 centavos la docena:

Otra cosa aunque esto tal vez ya lo sepan si saben algo de programación de videojuegos: Las ideas valen 10 centavos la docena. No importa que tan genial o lucrativa se escuche una idea, si no hay videojuego jugable que lleve a la realidad esa idea esta no vale nada. Ahora veamos un ejemplo de una de esas ideas de menos de un centavo que bien pudo basarse o no en un famoso videojuego de la era de 8 bits del NES.

Ejemplo práctico: Digamos que el Idea Guy y los artistas quieren hacer un videojuego de plataforma donde el protagonista sea un ninja. Si no les gustan los ninjas mas adelante veremos otros ejemplos pero lo que el escritor puede presentarles es un trozo de texto como este:


“El juego cuenta la historia de un ninja que busca vengar el asesinato de su padre y viaja a occidente donde sospecha se esconde el culpable. Armado con su espada, su gran agilidad y conocimientos ancestrales se abre camino por lugares como ciudades controladas por pandillas, selvas llenas de fieras y templos antiguos protegidos por fanáticos. Su búsqueda de venganza lo lleva a descubrir una conspiración para revivir a un antiguo demonio cuyo ejército infernal llevará a la humanidad a la destrucción y él es el único ser viviente capaz de impedirlo.”

Este párrafo puede ser una idea que a cualquiera puede ocurrírsele luego de ver alguna película o leer algún libro y aunque puede parecer muy buena todavía le falta trabajo. La mayoría de los ‘de las ideas’ no se detienen aquí, comienzan a diseñar mas cosas, sobre todo personajes y situaciones en los que se presenten. Si tiene liderazgo puede que algunos de los artistas hagan dibujos de como se vería el ninja y puede que hasta hagan en papel o un editor gráfico algunos cuadros de animación. Y los programadores tal vez logren mover algunos de los dibujos en pantalla si es que les toca uno bueno. Pero hasta donde yo he visto los proyectos de videojuegos de los aficionados no pasan de ahí. El escritor se frustra de no ver que su historia se vuelva jugable. Los artistas se hartan de dibujar todo el dia y al final ver que lo que sale en pantalla no se parece nada a lo que hicieron en papel y el programador con suerte puede mover una imagen y que reaccione al oprimir uno o dos botones y mandar la aplicación a un crash al oprimir los 2 botones al mismo tiempo. La inmensa mayoría ni siquiera llegan a ver una sola animación de 2 frames en pantalla y terminan con “mucha historia, poco arte y cero código”, abandonan su proyecto cuando llega la época de los exámenes y no trabajan en él en vacaciones, tan solo para olvidarlo al inicio del siguiente semestre. Pero este no será nuestro caso y ahora veremos que como programadores esta descripción es todo lo que necesitamos para empezar.

En programación a la descripción con palabras que describe lo que el código va a hacer se le llama Enunciado de Alcance. Esa descripción del juego es un enunciado de alcance y estos pueden extenderse en 2 direcciones diferentes: Hacia lo ancho y hacia lo profundo. Extender el enunciado de alcance hacia lo profundo es detallar algo que ya se describió y hacerlo hacia lo ancho es agregar nuevas cosas. Es importante no abusar y caer en la tentación de agregar demasiadas cosas. Un juego puede tener una historia muy elaborada pero las cuestiones programables en realidad no son tantas. De hecho en etapas avanzadas el código comienza a reducirse y lo que antes hacíamos con mil lineas luego puede hacerse con menos de 100. Y además de extender el enunciado de alcance hacia adentro o hacia afuera podemos hacer otra cosa: Obtener información a partir de las palabras. No se si este proceso tiene nombre pero a partir de este es como podemos obtener información básica para la construcción del programa a partir de una descripción del mismo.

A veces hace falta mucha abstracción para poder convertir una historia elaborada en un documento que pueda reducirse a un enunciado de alcance. Y el proceso para obtener información a partir de las palabras es largo. Les recomiendo que si son programadores no se alejen demasiado del escritor para poder discutir con él si algo pueden programarlo o no y cambiarlo si es que no tienen idea de como hacer algo. Esos escritores pueden perderse en sus propias ideas y no hacer nunca nada que pueda programarse en un tiempo razonable. Pero para eso estamos los programadores que por medio de una buena labor de inteligencia y fria recolección de datos tomaremos esos textos y los convertiremos en código. Pero eso lo veremos en las siguientes entradas.

Anuncios

diciembre 19, 2013 - Posted by | Uncategorized |

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: