miércoles, agosto 31, 2011

¿Ya no puedo jugar más?

¡Ta-rá, último post de P*! A partir del próximo post regresamos a la programación regular.

Soy Simón, el venezolano programador de segundo año.

En Venezuela conozco una persona que es actriz de voz. Ella hace las voces en español de películas, dibujos animados y animé.

Según ella, una vez que uno se convierte en un actor de voz, ya no es posible ver las animaciones como un espectador normal. La razón detrás de esto es que, mientras ella está viendo la animación, sin querer le presta atención a las técnicas de voz.

"¿Cómo hace para expresar éste sentimiento? ¿Cómo hace esa voz? ¿Por qué usó esa entonación en ese momento?" Et cétera. Cuando ve animaciones no puede concentrarse en lo absoluto en la animación. Siempre termina concentrándose en las técnicas de voz.

Una vez que uno se convierte en creador de juegos, ¿ya no es posible jugarlos como un usuario normal? ¿Será que uno se concentra en las técnicas de programación, y que uno no puede concentrarse para nada en el juego?

En mi caso, es un poco así. "¿Cómo hacen para mostrar tantos polígonos? ¿Cuándo están cargando este escenario? ¿Cómo hacen este efecto?" Et cétera.

Sin embargo, no es un problema tan grande como el de mi amiga la actriz. La primera vez que juego un juego con toda certeza ocurre lo descrito. Me preocupo por las técnicas de programación y no me puedo concentrar en el juego. Sin embargo, una vez que he aclarado todas mis dudas puedo regresar al mundo del juego. Es más, como ahora sé lo difícil que es hacer un juego puedo apreciarlo mejor al momento de jugarlo.

Volverse creador de juegos tiene tanto cosas buenas como cosas malas...

domingo, agosto 14, 2011

Un ciclo

¡Uy, penúltimo post de P*!

Hola, soy Simón, programador de segundo año.

Hace varios meses fui asignado a un equipo de desarrollo. Desde ese momento he estado trabajando en el desarrollo de un juego que no puedo mencionar. Hace poco tuvimos la fecha de entrega del prototipo. Ésa fue mi primera fecha de entrega en el desarrollo de un juego. ¡Vaya, qué experiencia!

El comienzo del desarrollo no fue difícil. Cuando mi jefe decía "haga este sistema", yo hacía el sistema con calma. Había tiempo para pensar a fondo y para hacer los ajustes necesarios. Cuando el sistema fallaba, había tiempo para arreglarlo.

De vez en cuando recibía solicitudes de los diseñadores de juego, algunas veces de los artistas. Cuando los diseñadores de juego y los artistas me decían "haz una herramienta que haga esto", o "arregla esta otra cosa", yo tenía tiempo para trabajar con calma.

Sin embargo, a medida que el prototipo avanzaba cada vez estaba más ocupado. Poco a poco las solicitudes fueron aumentando. El tiempo para pensar a fondo y para hacer ajustes desapareció. Si no trabajaba rápidamente, no podía cumplir con mis responsabilidades.

La última semana estuvo fatal. Había un sinnúmero de ajustes que hacían falta. Al terminar un ajuste, ya había otro esperando. Ajustar, ajustar, ajustar... todo el tiempo era ajustar detalles.

Para ajustar los detalles utilizaba el mismo sistema que yo había desarrollado. A través de tanto usarlo descubrí muchas cosas que hacía falta mejorar. Sin embargo, no había tiempo para arreglarlo. No había otra opción. Aunque fuera difícil de usar, había que avanzar así. No había tiempo para reescribirlo. Y eso que era un fastidio de usar...

Con esfuerzo terminé mis responsabilidades a tiempo. El productor probó el juego. Todo los miembros del equipo, en silencio y prestando mucha atención, veían al productor jugar. Yo también veía en silencio y prestando atención. ¡Qué satisfacción al ver cómo se movía lo que yo había hecho! Era como para gritar "¡yo construí eso!".

Luego de la fecha de entrega la presión bajó. Ahora hay suficiente holgura para poder arreglar los problemas del sistema. De hecho, ahora los estoy arreglando. Ya me estoy preparando para la próxima fecha de entrega. Mi sistema tiene que ser más fácil de usar.

Diseñar un sistema, construirlo, utilizarlo, ¡entregarlo!, mejorarlo. Iterar.

Parece que acabo de experimentar un ciclo de desarrollo de juegos (:

domingo, agosto 07, 2011

A estar menos en el puesto de trabajo

Ya que nada más faltan 3 post de P* por traducir, voy a retarme a publicar dichos post este mes. Primera semana, primero de los 3 faltantes:

Hola a todos, soy el programador Simón. ¿Están todos bien?

"Simón, tú estás todo el día en tu puesto. Vamos a estar menos en el puesto de trabajo" - fue lo que me dijo mi jefe un día. Al principio no entendí lo que me quería decir.

Si no estoy en mi puesto de trabajo, ¿cómo voy a trabajar? Me puse a pensar qué podría significar "estar menos en el puesto de trabajo".

¿Será que estoy trabajando demasiado? No, si yo me voy del trabajo antes que mi jefe. Debe ser otra cosa.

¿Será que debería tomar vacaciones? No, si se está acercando una fecha de entrega. Debe ser otra cosa.

Creo que mi cara se debe haber transformado en un signo de interrogación. Mi jefe, al ver mi cara de confusión, decidió explicarme más.

"El programador Fulanito casi nunca está en su puesto, ¿verdad? Así es que quiero que tú hagas".

Que Fulanito casi nunca está en su puesto es algo que yo sé, pero ¿por qué es eso bueno? Creo que debería ser al revés. Ya esto no tiene ningún sentido.

"El programador Fulanito se la pasa discutiendo con los artistas, se la pasa pensando cosas interesantes junto con los diseñadores de juego, etc." - dijo mi jefe. ¡Ah! Entendí. ¡Hacer un juego no es trabajo de una sola persona!

Para poder producir algo bueno, es necesario discutir con las personas de los otros grupos.

¿Cuál es el significado de este objeto? ¿Por qué la cámara enfoca ese punto? ¿Cuál es el propósito de esta animación? Si no hago ese tipo de preguntas es como si estuviera programando a ciegas.

Sin embargo, no es suficiente con preguntar. También hay momentos en que es necesario hablar de manera proactiva.

Si uno encuentra un error en el trabajo de otra persona, ¡hay que reportarlo! Si para poder avanzar con el trabajo de uno se necesita algo producido por alguien más, entonces ¡a fastidiarlo hasta que termine! Y, claro está, si uno tiene una buena idea, ¡hay que decirla! Et cétera.

Es a través de la interacción del equipo que los juegos avanzan de manera positiva. Si me la pasara todo el tiempo en mi puesto, ¿cómo podría hacer buenos juegos?

jueves, junio 30, 2011

Compras extrañas

Entrada 8 de 11 del blog de P*.

Hola, es Simón, uno de los nuevos programadores.

Hace poco hice un par de compras extrañas. Desde mi punto de vista las cosas que compré no son raras, pero cada vez que le digo a un amigo "mira, me compré esto", la respuesta que obtengo es "¿Eh? ¿Por qué te compraste eso?".

Mi primera compra extraña es un PS2 (PlayStation 2). Sí, 2, dos, II. No es un PS3. Me han dicho cosas como "¿Eh? ¿Por qué te compraste un PS2?", "¡Pero si el PS3 está a la venta, y es de última generación!". La razón por la que me compré un PS2 es que nunca tuve un PS2.

Yo soy de los que piensa que los juegos que son buenos están más allá de la definición de generación. Si es un juego realmente bueno, no importa si fue hecho hace 10, 20 ó 30 años, aunque lo juegue hoy será divertido. Un ejemplo muy famoso es Tetris. Es un juego de hace 25 años, pero si lo juegas hoy igual te diviertes.

Como los juegos buenos van más allá de las generaciones, aunque estemos en la generación del PS3, los buenos juegos del PS2 deben seguir siendo divertidos. Como nunca tuve un PS2 quiero jugar esos juegos que me perdí. Además, como programador de juegos podría aprender algo.

La segunda compra extraña fue una Mac Mini. Me han dicho mucho "¿Eh? ¿Por qué la Mini? ¡Pero si están la Pro y la Book!". La razón porque me compré una Mac es que nunca he tenido una Mac.

Desde hace un tiempo Mac OS se ha vuelto muy popular. La gente que le gusta Mac dicen que Mac OS es mucho más bonito, que es más fácil de usar y más seguro.

Hasta ahora yo he usado Linux. Comparado con el sistema operativo común, es más estable, seguro, barato (de hecho, es gratis) y se puede customizar todo lo que quieras. Pienso que en verdad tiene muchas ventajas. Sin embargo, no puedo ignorar la popularidad de Mac OS. Si en verdad es un buen sistema operativo me gustaría usarlo, aunque sea pago.

Es por eso que me compré una Mac. Porque quiero probar Mac OS.

Y la razón por la que me decidí por una Mini es que, en el caso en que no me guste Mac OS, por lo menos gasté poco dinero ^_^

Éstas son las cosas que Simón, el nuevo programador, hace. Eso es todo.

martes, mayo 31, 2011

Cinturón negro

Séptima entrada del blog de P* traducida al castellano. Para los que se están preocupando porque sólo hay entradas de P*, tranquilícense, que con la siguiente entrada pasamos los 2/3.

Hola, soy Simón, el nuevo programador. ¿Cómo están?

Yo hice Aikido en Venezuela. Luego de llegar a Japón practiqué un poco más. Yo pensaba que el cinturón negro significaba que uno se había convertido en un experto del arte marcial, que uno ya no era más un discípulo. En mi mente, obtener el cinturón negro era equivalente a graduarse del arte marcial.

Yo estudié computación en Venezuela. Luego de llegar a Japón hice una maestría. En total me gradué dos veces de computación. Yo pensaba que me había convertido en un cinturón negro de la programación. Ya no soy más un discípulo, ahora soy un experto.

Supongo que esa mentalidad es común en occidente. Si uno se gradúa en una universidad, uno está preparado para llegar a una compañía y empezar a trabajar. Como uno ya ha estudiado lo suficiente, no han de quedar muchas cosas por aprender. Creo que por ahí va nuestra manera de pensar.

Cuando en abril del año pasado entré en P* yo tenía esa manera de pensar. Tal vez sea necesario aprender la manera de hacer las cosas de P*, pero no habrá mucho que aprender en cuanto a programación, es lo que yo pensaba.

No podía estar más equivocado. Durante los primeros meses participamos un entrenamiento. Desde el primer día de entrenamiento aprendí cosas nuevas. No sólo eso, sino que cada día de entrenamiento aprendía más cosas.

Luego del entrenamiento fui asignado a una línea de desarrollo. Pensaba que una vez que se ha terminado el entrenamiento, no quedarían muchas cosas por aprender. Sin embargo, no podía estar más equivocado. Ya llevo 10 meses en P*, y todavía estoy aprendiendo cosas nuevas todos los días. De hecho, las cosas que he aprendido durante estos 10 meses me han permitido desarrollar más, y ahora que desarrollo más descubro más cosas que aprender.

Pero, ¿cómo es posible que un cinturón negro de programación todavía esté aprendiendo cosas?

Resulta que yo aprendí una cosa más en Aikido: el verdadero significado del cinturón negro. El cinturón no significa que uno se ha convertido en un experto del arte marcial, sino que simboliza el camino que va desde el cinturón blanco hasta haberse convertido en un discípulo. El significado del cinturón negro es que uno se ha vuelto un discípulo, que uno está listo para aprender.

Finalmente entendí eso que aprendí en Aikido. Cuando uno puede programar es que uno está listo para estudiar programación. Además, entendí que todavía queda mucho por aprender. Es por ello que ahora soy un cinturón negro de la programación: ahora estoy listo para aprender.

domingo, abril 17, 2011

Para los que aspiran a ser programadores

Sexta entrada del blog de P* traducida al castellano:

Hola, tengo mucho tiempo sin escribir. Es Simón, uno de los nuevos programadores.

Ahorita, febrero, es el mes en que están en plena búsqueda de trabajo, ¿verdad? Uds. que están buscando trabajo, ¡ánimo!

Cuando a mí me tocó hacer búsqueda de trabajo pasé por muchas dificultades. Especialmente, se me hizo muy difícil el idioma japonés y los modales. Si no leía el japonés lo suficientemente rápido, no podía terminar los exámenes a tiempo. Además, como no conocía los modales, en las primeras entrevistas cometí muchos errores.

Sin embargo, a través de ensayo y error aprendí qué se debe hacer en la búsqueda de trabajo. Quisiera compartir una de las cosas que aprendí con aquellos que aspiran a ser programadores de juegos. Me alegraría mucho que les fuera de utilidad en su búsqueda de trabajo.

Los aspirantes a una compañía deben enviar varios documentos. Dependiendo de la compañía, a los aspirantes a programador se les pide que envíen un proyecto. Las personas que estudiaron en escuelas técnicas de video juegos pueden enviar juegos que hayan desarrollado, pero no todos los aspirantes a programador asisten a escuelas de juegos.

Yo era uno de esos aspirantes a programador que no había ido a una escuela de juegos. No sabía qué debía enviar. Como estaba en competencia con los estudiantes que fueron a escuelas de juegos, pensé que yo también tenía que enviar un juego, y que mientras más grande fuera el juego, mejor.

Yo había programado un juego de peleas en 3D, por una razón que no tenía nada que ver con la búsqueda de trabajo. Con esfuerzo, yo mismo hice los modelos, las animaciones y el escenario. El juego en sí no era muy divertido. Además, como el juego era enorme, todavía estaba incompleto. Sin embargo, tenía la esperanza de que las personas que revisaban los proyectos pensaran que una persona que se proponga el reto de construir un juego así de grande debía ser un programador que trabajara con empeño.

No obtuve buenos resultados de parte de las compañías a las que envié el juego de peleas. Concluí que no importaba qué tan grande fuera el juego, ni qué tan ambicioso fuera el proyecto; un juego incompleto no era la mejor estrategia.

Decidí preparar otro proyecto. Esta vez sería un programa pequeño, completo y simple. Como aspiraba a compañías de juegos decidí que tenía que ser un programa que tuviera que ver con computación gráfica. Me decidí por dos programas. El primer programa muestra una aproximación de una esfera. Se podía cambiar interactivamente el número de subdivisiones de los polígonos. El segundo programa mostraba en 3D un mapa de alturas. Para ambos programas usé OpenGL y los escribí en el lenguaje C.



Con los programas cortos recibí mejores resultados de las compañías.

Pienso que, dado que el programa es corto, las personas que evalúan los proyectos pueden concentrarse más en entender la estructura del programa, en ver las habilidades del programador, en ver su capacidad de resolver problemas y su forma de pensar.

Pienso que uno puede mostrar mejor sus habilidades de programador a través de un programa corto. Uno puede hacer que resalten aquellas cosas que uno quiere mostrar. Es fácil comunicar un "miren, ¡soy capaz de programar estas funcionalidades!".

Lo que quiero compartir con los aspirantes a programador es: lo importante no es el tamaño del programa, sino que sea un programa completo y fácil de entender. Me alegraría que este tip les sea de utilidad.

domingo, abril 10, 2011

Las obsesiones de un programador

Tengo mucho tiempo sin escribir, vamos a ver si este mes me pongo las pilas y compenso con más entradas. Aquí va la quinta entrada en el blog de P*, traducida al castellano:

Hola, es Simón, uno de los nuevos programadores.

Creo que es algo obvio, pero el trabajo de un programador implica usar mucho el teclado. Sin importar qué herramienta, sistema o juego uno desarrolle, uno escribe el programa a través de un teclado. Yo utilizo el teclado más que el control de juegos, más que el mouse, más que los lápices, más que cualquier otra cosa. De hecho, creo que el objeto con el que más tengo contacto durante el día es el teclado.

Antes de empezar a trabajar en P* yo ya tenía experiencia en programación. Sin embargo, comparativamente, en el colegio no usaba tanto el teclado como lo uso en P*. Como en P* me la paso programando todo el día, empecé a desarrollar ciertas obsesiones.

Mi primera obsesión son los shortcut keys. Como cambiar las manos del teclado al mouse, y del mouse al teclado es algo fastidioso y quita tiempo, quería hacer mi trabajo utilizando sólamente el teclado. Para lograr mi deseo la única manera era utilizando shortcut keys.

Toda la vida he utilizado los shortcuts básicos como Ctrl-c, Ctrl-v (copiar y pegar) y Alt-Tab (cambiar de ventana); pero, recientemente no utilizó click-derecho para abrir el menú contextual sino Shift-F10, navego por la estructura de directorios con las flechas del teclado, incluso inicio los programas a través del teclado.

Para abrir un programa desde el teclado utilizó un programa llamado Launchy, que me lo presentó Ochiai, un programador que entró a la vez que yo. Si uno presiona Alt-Space, Launchy abre una pequeña ventanita. En esa ventanita uno puedo escribir el nombre del programa o del directorio y ejecutarlo. Si les interesa pueden visitar launchy.net.

Sin embargo, no me limité a los shortcuts del escritorio, ahora también uso bastante los shortcuts del editor de texto. Por ejemplo, para mover el cursor hacia la línea de abajo no utilizo ↓ (abajo) de las flechas del teclado sino Ctrl-n, para bajar una página utilizo Ctrl-v, para comentar una función utilizó Ctrl-c Ctrl-c, etc. El utilizar estos shortcuts me permite no alejar las manos de las teclas principales del teclado y teclear más rápido. (Por cierto, estos shortcuts sólo funcionan en el editor de texto Emacs)

Mi siguiente obsesión es la distribución de teclas del teclado. Aunque los shortcuts son muy útiles, si uno los utiliza mucho uno se dará cuenta de que la posición de ciertas teclas es inconveniente. En especial la tecla Ctrl (control) de la izquierda.

Muchos de los shortcuts utilizan Ctrl, ¿verdad?. Me intrigó por qué razón la persona que diseño los shortcuts decidió utilizar una tecla en una posición tan lejana e incómoda. Decidí investigar y terminé leyendo sobre la historia de los teclados. Resulta ser que la posición original de la tecla Ctrl es la posición actual de la tecla CapsLock (BloqMayús).



¡Por supuesto! Con la posición original, los shortcuts son fáciles de teclear. El problema es que cambió la posición de las teclas. Decidí probar cambiar la posición de las teclas, resultó ser súper fácil escribir los shortcuts. ¡Ya no se me cansa más la mano izquierda! Las personas que utilizan mucho los shortcuts deberían probar la posición original.

Para poder cambiar la posición de las teclas hay que editar el registro de Windows. Como eso es un fastidio, estoy usando un programa llamado SharpKeys. Como es muy fácil de usar, aquí se los presento: sharpkeys.codeplex.com

Mi última obsesión es el teclado en sí mismo. Es la última frontera de la obsesión con teclear. Si uno llega hasta este punto es que uno se ha convertido completamente en un fanático de los teclados.

Según los más fervientes entusiastas de los teclados, los teclados comunes no son suficiente para una persona que teclee mucho. Esto se debe a que, en un teclado común, aunque uno presione una tecla uno no sabe con certeza en qué momento se activa su circuito. La única retroalimentación que uno tiene es el ver que el caracter ha aparecido en la pantalla. Sin embargo, las teclas de los teclados mecánicos tienen cierta resistencia. Cuando el circuito de la tecla se activa, la resistencia de la tecla cambia inmediatamente. Por lo tanto, la retroalimentación no se limita al caracter en pantalla, uno también cuenta con el sentido del tacto. Dependiendo del diseño, también se puede escuchar un "click" cuando se activa el circuito. Según los amantes de los teclados, si uno cuenta con el feedback táctil y auditivo uno puede teclear más rápido y minimizar los errores. Aparentemente, también se siente muy bien.

Quisiera comprar un tecládo mecánico para probar. En estos momentos esto investigando diferentes marcas y modelos. Por lo que he investigado, la calidad de los teclados mecánicos hechos en Japón es muy buena. Posiblemente escoja uno japonés. Sin embargo, si tuviera infinito dinero, me compraría un teclado mecánico modificado al estilo steampunk por datamancer.



Sin embargo, como cuestan alrededor de (USD) $1500, creo me mejor me compraré un teclado mecánico normalito.

--

Hasta ahí el post original. Si tienen curiosidad, terminé comprándome un Filco Majestouch Tenkeyless, con switches Cherry MX azules. En castellano: un teclado mecánico de la marca Filco, que no tiene la sección de números de la derecha, y que utiliza los switches que fabrica la compañía Cherry; los switches azules proveen feedback tácil y auditivo.

Y aquí las fotos de mi bebé:





Como pueden ver, lo modifiqué con unas teclas de colores diferentes. Esc ahora está en rojo, y en una posición más cómoda si uno se la pasa cancelando programas, y las teclas WASD (que se usan mucho en juegos de computadora) están en morado.

:D

jueves, marzo 31, 2011

El terremoto, visto desde Ōsaka

El 11 de marzo ocurrió el infame terremoto de Tōhoku. Eso fue un día viernes, un poco antes de las 3:00pm. Como es de esperarse de un día viernes a las 3:00pm, estaba trabajando en la oficina.

Como muchos sabrán, yo trabajo y vivo en Ōsaka. Ōsaka está relativamente lejos de Tōkyō y muy lejos de Tōhoku y Fukushima. A pesar de la distancia, aquí se sintió el temblor.

No es mi primer terremoto, y tampoco es mi primer terremoto en la oficina. Al igual que los terremotos anteriores, al principio uno cree que está mareado; es el edificio que se bambolea de un lado a otro. Tarde o temprano uno se da cuenta que no es uno el que se mueve, sino todo lo demás, y procede a ignorar el temblor. Normalmente, el bamboleo desaparece en segundos.

Como con todos los terremotos, toda la gente de mi piso ignoró las vibraciones, al principio.

"Está temblando. No importa, ya pasará" - pensarían mis colegas.

"Está temblando. No importa, ya pasará" - habrán pensado un par de veces más.

"Está temblando. Oye, ya está largo, ¿no?" - por lo menos eso fue lo que yo pensé.

"Epa... me estoy preocupando" - ¡Ja! Todos pensaron ésta.

"¡Perro! ¿Y si este es uno como el de Hanshin-Awaji?"

Este terremoto fue realmente largo. Las vibraciones duraron minutos. O así fue como lo experimentamos. Poco a poco los colegas empezaron a ponerse de pie y comentar, entre risas nerviosas, que el terremoto está largo. Más y más personas se pusieron de pie, todos comentando entre risas que está largo. Hasta que de repente, los ánimos cambiaron de risas a preocupación. Ya nadie se reía, todos estaban esperando en silencio a que algo sucediera, todos indecisos.

El instinto dice que hay que correr, huir cuanto antes. Pero toda la educación dice que lo peor que puedes hacer es moverte en un terremoto. El bambolear del edificio podría hacerte daño si estás corriendo, bajando escaleras, o pasando cerca de un balcón.

En lo que las vibraciones bajaron lo suficiente, a un nivel casi imperceptible, todo el mundo abandonó la oficina. La puerta no es muy grande, sólo pasa uno a la vez, pero los japoneses se comportaron a la altura: no hubo tropiezos ni desorden, y todos salieron rápidamente.

Como yo estoy al final de la oficina sería de los últimos en salir. Si tenía que esperar para salir bien tenía tiempo de tomar mi chaqueta y mi gorro. Todavía estaba haciendo frío de invierno. Fui el único en no pasar frío allá abajo (;

"Simón, ¡qué bien preparado estás para los terremotos!" - me dijo un artista.

No pasaron ni cinco minutos cuando todos, con el espíritu de trabajo que caracteriza a los japoneses (o tal vez porque no les gustó pasar frío), regresaron como si nada a trabajar.

¿Y en Japón no hay réplicas?

Sí, por eso evacuamos el edificio una segunda vez, cuando el edificio se bamboleó por segunda vez... Esta vez todos se trajeron su ropa de invierno :D

Desde la primera vez que bajamos, todos mis colegas acudieron a sus celulares, iPhones y Androids. Así fue que nos enteramos que el terremoto fue en Tōhoku, que la mamá de una artista (que vive en Tōkyō y que estaba bien) veía a Odaiba en fuego, etc.

Odaiba Fire

Todo el mundo empezó a contactar a sus parientes en regiones remotas a ver si estaban bien. Entre que la mitad del país trata de contactar a la otra mitad, y entre los equipos dañados por el terremoto, fue muy difícil para muchas personas recibir información de sus parientes.

Después de que regresamos por segunda vez al trabajo el resto de la tarde transcurrió como un día normal. La única diferencia es que todos seguían webcasts de las noticias. Poco a poco nos fuimos enterando de la gravedad del terremoto, vimos la gente caminar por las calles de Tōkyō por falta de trenes, vimos los reportajes y demás.

Yo tenía planes de ir a Tōkyō ese fin de semana. De hecho, había comprado mi ticket de bus nocturno esa misma tarde.

Sabía que el terremoto había sido fuerte, pero como Japón está preparado para los terremotos supuse que podría ir a Tōkyō sin ningún problema.

Una artista me recomendó fuertemente que no intentara ir a Tōkyō. Cuando hay un gran terremoto como éste el tren bala se detiene. Según me explicaron es como medida de seguridad en caso de algún tsunami-post-terremoto. Hay partes de los rieles que pasan muy cerca del mar.

Por esa misma razón se cierran las carreteras. Además, no se sabe si las carreteras se pueden usar o no. Sin carreteras ni trenes no hay como ir a Tōkyō.

El fin de semana fue de alta tensión. En mi casa estuvimos siguiendo (a través de webcasts, pues no tengo TV) el estado de la planta nuclear de Fukushima. Aparte de eso, todo estaba bien. Aquí en Ōsaka no faltaba luz (el cableado es independiente del de Tōkyō), no escaseaba comida, no se detuvieron los trenes, etc.

Tan bien estaba la cosa en Ōsaka que recibimos refugiados en mi apartamento. Se vino "el maje", uno de mis mejores amigos. Él es un colombiano que trabaja como programador en Sega, en Tōkyō. Él se trajo un amigo suyo. Además, mi room-mate recibió a una compañera. Todos huían de Tōkyō, por el miedo a la radiación, porque no se podían mover por la ciudad, porque el ambiente era deprimente.

El martes de la segunda semana luego del temblor, las cosas parecían volver a la normalidad. Tōkyō ya estaba agarrando compostura y el éxodo se invirtió.

Sé que muchas vidas se perdieron en el terremoto, y que la situación fue difícil en Tōhoku, sé que varias ciudad y pueblos fueron arrasados, pero eso no justifica el alarmismo de los medios de comunicación occidentales.

A la vez que veía los webcasts de los canales japoneses, leía los artículos de prensa occidentales. La diferencia me pareció grande. O bien los noticieros japoneses no decían la verdad para que no hubiera pánico, o bien a los occidentales les gusta exagerar para atraer lectores. Con el pasar de los días decidí que era la segunda.

Como verán, Ōsaka se vio poco afectada por el temblor. Las únicas cosas que cambiaron fueron que recibimos refugiados, y que en muchas esquinas y estaciones de trenes se veían grupos de voluntarios y partidos políticos recolectando dinero para enviar a las áreas más afectadas.

Sí, Simón sigue en Japón.

--

Por cierto, si alguien quiere hacer alguna donación, abajo dejo unos sitios web. La emergencia ya pasó, pero igual hay mucha gente sin hogar y con traumas psicológicos a las que podrían ayudar.

Cruz Roja japonesa
Doctors without borders
Caritas

domingo, enero 23, 2011

El trabajo de hacer videojuegos - programador

Cuarta entrada en el blog de P*, traducida al castellano:

Saludos, es Simón, el nuevo programador.

En el desarrollo de un videojuego participan muchas personas: artistas, planificadores, programadores, músicos, etc. A groso modo, los artistas producen los modelos de los personajes y las animaciones, los planificadores crean las mecánicas y la narrativa del juego, los programadores escriben el código que hace funcionar el juego, y los músicos componen la banda sonora y efectos de sonido.

Dado que soy un programador, no quisiera quedarme con una explicación tan basta como la anterior. Me gustaría explicar más a fondo qué es lo que hace un programador. Como todavía soy novato no comprendo cabalmente lo que implica ser un programador, pero por lo menos me gustaría explicar lo que he aprendido hasta el momento.

El trabajo de un programador es producir software. Todos saben lo que es software, ¿verdad? Software son programas cuya función es manipular datos y que se ejecutan en computadoras. Y su vez, un programa es una serie de instrucciones escritas en un lenguaje que la computadora es capaz de entender.

Por ejemplo, el sistema operativo de una computadora es software, el browser que ustedes están usando es software, la aplicación que se encarga de reproducir música en una computadora es software. Los videojuegos también son software.

Como los videojuegos son software, manipulan datos al igual que cualquier otro software. Por supuesto, son datos que tienen que ver con juegos. Por ejemplo, supongamos que en un juego tenemos la siguiente regla: "si el jugador toma 100 monedas, su vida se incrementa en 1". Les mostraré cómo podría ser la función que se encarga de esta regla. Digamos que esta función es ejecutada cada vez que el jugador toma una moneda. Si escribimos la función de manera sencilla, podría verse algo así:

int coins = 0;
int lifes = 3;

void takeCoin(){
   coins++;
   if( coins == 100 ){
      coins = 0;
      lifes++;
   }
}

El código de arriba declara las variables coins y lifes como números enteros. El valor inicial de coins es 0 y el de lifes es 3. Luego, se declara la función takeCoin(). El contenido de takeCoin() significa:

Incrementar en 1 el valor de la variable coins;
si el valor de coins es igual a 100, asignar 0 a coins e incrementar en 1 el valor de lifes

Variables, enteros, funciones, igualdad... ¡Programar es pura matemática! Yo no le recomendaría el trabajo de programador a alguien que no es muy amigo de la matemática.

Para mí, el trabajo de programador es un trabajo muy satisfactorio. El código que uno escribe hace funcionar juegos, o le da soporte al desarrollo de juegos. Lo que uno produce se difunde por todo el mundo y llega hasta cada usuario. Los jugadores en cada rincón del planeta se divierten gracias al software que uno hace.

A mí me gustaría darle algunos consejos a las personas que quieren entrar a la industria de los videojuegos, a aquellas personas que se quieren convertir en programadores. Pero como todavía soy novato decidí ir a preguntarles a los programadores séniors.

Le pregunté a cinco programadores qué debería estudiar en la universidad o en una escuela vocacional una persona que quiere convertirse en programador de videojuegos. Obtuve las siguientes respuestas:

- álgebra lineal e inglés.
- muchas cosas: matemática, física, etc.
- que se ponga a desarrollar cosas en el lenguaje C ó C++. No importa lo que desarrolle, o si es en la escuela o por su cuenta. 
- si quiere ser programador de videojuegos, lo mejor que puede hacer es hacer un videojuego. Uno aprende mucho más en el proceso de hacer un juego que lo que puede aprender a través de un libro. Luego sería bueno que estudiara aquellas cosas que fueron necesarias en el desarrollo. Además, uno debería pulir aquellas áreas en las que uno es bueno, sin importar el campo de estudio. Uno nunca sabe cuándo esos conocimientos pueden ser útiles.
- partiendo de la premisa que uno ha estudiado las bases que se enseñan en la universidad/escuela, lo ideal es que uno experimente aquellas cosas que todavía no ha experimentado. Eso es válido tanto para los juegos como para cualquier otra cosa. Experiencia de vida. Inclusive es importante divertirse a fondo. Pienso que en el momento en que uno va a dar ideas para un videojuego, mientras más experiencias uno tenga mucho más amplia será su capacidad de aportar. Tanto en juegos como en lo que sea, lo ideal es hacer las cosas que uno todavía no ha hecho.

Además, hice otra pregunta: para convertirse en un buen programador de videojuegos, ¿qué tipo de habilidad debe uno cultivar? Me respondieron lo siguiente:

- resaltar en algo. Ser una persona muy humana.
- un buen programador de videojuegos es aquel que tiene curiosidad de averiguar lo que no sabe. Además, debe tener espíritu lúdico.
- tener la habilidad de proactivamente retar aquello que uno no tiende o que uno no sabe. Tener la actitud de querer siempre crecer. Más que hablar de habilidades concretas, es la postura ante la vida y el estar preparado.
- la habilidad de comunicarse. No importa cuanto uno sepa de programación, si uno no se puede hacer entender no sirve de nada. Es importante tanto escuchar como hablar. Y dentro de eso, es importante tener la habilidad de entender lo que quiere decir el interlocutor. Adicionalmente, creo que es importante poder ampliar la conversación
- más que una habilidad, lo que hay que hacer es meterse en un ambiente donde uno pueda conectarse con muchos programadores aventajados. No importa que tan talentoso sea una persona, si está en un ambiente limitado su crecimiento también será limitado. Como en nuestra era, a través de Internet uno puede intercambiar con muchos programadores aventajados, creo que poco a poco veremos cada día más excelentes programadores.

Esas fueron sus respuestas.

Creo que yo no pude transmitir adecuadamente el encanto del trabajo de programador, pero me conformaría con que lo que he escrito sea de utilidad a quienes no sabían mucho sobre este trabajo. Además, me alegraría que los consejos de arriba le sean de utilidad a quienes se sienten atraídos por la programación.