El diario del domingo

22 03 2009

Bienvenidos a una nueva edición del diario de los domingos. El diario que leería el Ayatollah Khomeini si le interesaran la programación en ActionScript y los videojuegos.

Sin mas preámbulos, acá esta la carne:

Salió “The Path“, siendo distribuido por Steam. Dicen que es un juego de terror muy poco convencional. Si lo compran tenganle paciencia al gameplay que parece que es algo innovador.

El viernes a la madrugada termine MadWorld y hoy terminé el House of the Dead: Overkill para wii. Solo puedo decirles si tienen una wii, no pueden permitirse perderse estos dos juegasos. Altamente recomendados.

Probe el smartfox server y la verdad es que es un placer desarrollar juegos multiplayer en flash con él. En la siguiente imagen pueden ver una serie de ventanas corriendo un juego de carreras de coches que desarrollé. Actualmente estoy tratando de implementar papervision en el juego. La semana que viene les cuento como me fué.


SmartfoxServerTest

Salió un juego MMO basado en una franquicia de banco, me pregunto si los quest serán tipo “sácale a la gente sus casas”. LINK

Salio otro clon de desktop tower deffence, llamado Front line Deffence. Ahora que estoy haciendo juegos multiplayer me imagino este juego competitivo : LINK

Sale cave story para wii, y parece que este plataformero la va a romper. LINK

Un loco se hizo las zapas de Monkey Island: LINK

Se confirmó la salida del DeadSpace para wii, el cual parece que va a ser un rail-shooter(como un house of the dead) LINK



Cuidado con los “Singletons”

1 07 2008

Una solución rápida cuando uno necesita un dato desde varios lugares es crear un singleton. Pero hay que tener cuidado con ellos.

Un singleton tiene la particularidad de que no se destruye nunca(sobre todo en lenguajes como java o actionscript), porque la referencia que tiene dentro de si impide que el garbaje colector lo recicle.

Si usamos un singleton, debemos tener cuidado de que no tenga procesos, estos siguen ejecutándose aún en estados del programa en el que no son necesarios. Mas procesos ejecutandose = mas ciclos del procesador por loop = menos frames por segundo.

En un programa orientado a objetos, las clases suelen distribuirse en forma de árbol. Cuando debamos utilizar un dato en dos clases que estan al mismo nivel pero “no se ven”, antes de utilizar un singleton debemos buscar la primer clase padre que tengan en común. Localizada la clase tenemos dos opciones:

1. Pasar la referencia al dato a travez de constructores. Esto no es muy recomendable, porque complica la interface de las clases(hay que agregar un parámetro a los constructores)

2. Que la clase que necesita el dato dispare un evento, el cual posee una referencia a si misma. El evento debe ser del tipo bubble, es decir, si la clase donde esta la referencia al objeto que dispara el evento no lo atrapa, el evento es relanzado hacia arriba en la jerarquía de clases hasta que alguna lo procesa. En la clase padre identificada previamente, capturamos el evento y seteamos el valor requerido en el objeto solicitante(cuya referencia nos llega en el evento).

Adieu!



No usar mp3 para loops en flash

14 04 2008

Si intentamos utilizar un archivo mp3 para generar un loop musical en flash, encontraremos que este queda mal, ya que se produce un corte minúsculo, pero perceptible entre que el loop termina y vuelve a empezar.

La solución consiste en atizar archivos wav.



Jefe experto, jefe impuesto, jefe ideal

14 04 2008

Creo que en muchas empresas se cometen errores al asignar gente para que se haga cargo de una determinada áraea. Trataré de exponer mis puntos de vista. Si creen que hay algo en lo que le estoy pifiando, por favor dejen un comentario con su crítica.

El jefe experto

Conforme iba avanzando en mi carrera de sistemas, llegaba el momento en que debía hacerme cargo de un grupo de personas con menos experiencia. Entonces debía dejar de programar para redactar documentos de estimaciones, tratar con los clientes, organizar agendas del grupo y reunirme con superiores y subordinados para asegurarme de que todos saben que esta pasando y que deben hacer.

Nunca comprendí porque para avanzar en la carrera, sacan a una persona de una tarea que le gusta y que hace bien, para hacer algo que no le gusta y que solo diós sabe si es capaz de hacer bien. Lo insólito es que muchas veces esto se hace para justificar un aumento de sueldo! Ademas, muchas veces la persona que recibe el ascenso no tiene mucha capacidad de decidir al respecto. Es obvio que no comprendo nada de management porque no puedo concebir como corno las empresas que hacen esto siguen funcionando ni como la gente acepta estos cambios porque “asciende”.

Lo que nos debe quedar en claro: No se debe sacar a una persona de la tarea que le gusta hacer y para ejercer una actividad que no le gusta hacer como justificativo de un aumento de sueldo.

El jefe impuesto

El contraejemplo anterior nos habla de una persona que de repente debe hacerse responsable de un grupo. Muchas veces pasa que la persona que pasa a ocupar un puesto de mando medio no tiene madera para tratar con la gente. Las causas de esta incapacidad son muchas: Falta de consideración hacia los demás, falta de interés, que no puede desarrollar empatía(esto es, la capacidad de ponerse en el lugar del otro), etc. Todos estos problemas se resumen en unos solo, que es “desconocimiento de la mecánica de las relaciones humanas”.

Los escenarios en que se hace evidente lo anterior son muchos. Saber hacer un trabajo no es suficiente para llevar adelante a un grupo de personas.

Lo que busco exponer es que un lider no debe ser puesto a dedo. Para nombrar un lider, uno no debe centrarse en el candidato, sino en el grupo todo. Identificar el candidato correcto para hacerse cargo de un área consiste en identificar a la persona a quien todos preguntan, cuya opinión valoran, en otras palabras, a quien respetan.

El respeto no es algo que viene per se, es algo que se gana con el tiempo. Si se pone a un déspota al frente de un grupo de personas, es posible que los proyectos salgan, pero la gente dejará de disfrutar lo que hace, y luego de un tiempo se marcharan de la empresa.

El jefe ideal

Si se va a poner a una persona técnica al frente de un grupo de personas, debe verse que:

a. Los miembros del equipo lo tomen como referente y lo respeten.
b. No entorpecer su tarea con papeléo.

Para “a” basta leer el apartado anterior, para “b”, de ser posible se debe asignar a alguien que se encargue de redactar documentos y actualizar los gantt. Dejando a la persona que se encarga del grupo de hacer lo que mejor hace: Ver como están las cosas, escuchar y ayudar a la gente que tiene problemas, ademas de contribuir a los proyectos en el frente de batalla con su demostrada capacidad técnica.

La afinidad del grupo

Hay algo que pocas veces se considera y es la afinidad de las personas del grupo. Si todas las personas que integran el grupo tienen habilidades que se complementan y se respetan, no hace falta management. Lo único que hay que cuidar es que si hay dos personas con experiencia equivalente cuyas opiniones pueden diferir y ser igualmente válidas, hay que poner a alguien que “desempate”. El resto sale solo.

Espero que estas reflexiones le sean de utilidad a alguien.

Saludos!



Al hacer presupuestos, desglosar los puntos.

13 04 2008

money

Hace no mucho tiempo, cuando redactaba presupuestos de sistemas, estos tenían los puntos del proyectos y cuanto se tardaría en llevarlos a cabo en horas hombre(tiempo = dinero).

Esto estaba bueno porque si al cliente le parecía muy caro el coste del proyecto, podía recortar funcionalidades para que los números le cierren.

A lo mejor esto les resulta útil.

Salutes