6.30.2005

4k synth



Bien, aquí está la herramienta para generar los samples :)

Para crear esta herramienta la verdad es que he tenido ayuda de bastante gente, empezando por Wonder que fue el que me dio la clave para el diseño, herotyc que me ha echado una buena mano a la hora de entender los trackers (por lo menos lo básico), KILE por darme alguna ayuda con el synth, sole por los patterns del terrible formato IT y a la gente de fuzzion(verdaderos magos en 4kb) que es de la que salió la idea original de crear la música para 4kb de esta forma.

Con esta herramienta se generan los samples, que son muestras de sonido muy básicas y que se usarán posteriormente en el tracker, en conjunción con otras, para conseguir una melodía decente. La verdad es que el trabajo es prácticamente del músico, él es el que genera los samples seteando los parámetros correctos y el que posteriormete hace magia con ellos.

En este caso la herramienta cuenta con 3 osciladores (diente de sierra, señal cuadrada y senoidal), un generador de ruido, un filtro paso bajo con frecuencia de corte y resonancia configurables y por último un generador de envolvente bastante básico (no es un ADSR :). Como ya conté en otro post, basta con hacer oscilar uno de los osciladores, este generará una onda que posteriormente se pasará por el filtro y finalmente se multiplicará por la envolvente. Es simple, pero no es sencillo dar con la información necesaria para implementarlo. Espero que en exámen de mañana de tratamiento digital de la señal no la cague :).


Ahora me falta extraer los datos que necesito (básicamente notas y volúmenes) del módulo que haga el músico y generarlos, pero esta vez no en una herramienta de 200kb con todo .NET por debajo, sino en 4kb ;).

Por último decir que la idea que tenía al comienzo de enfocarlo todo desde el punto de vista del coder es una idea equivocada, es muy necesaria la ayuda de alguien que de verdad controlo del tema, y Wonder lo hace (es teleco claro :P).

6.27.2005

dev-diary

Recientemente he añadido a mi tab de páginas que visito a diario the independent game source, una página dedicada al mundo de juegos indie. A través de ella se ven algunas juegos curiosísimos y cargados de originalidad y jugabilidad, cosa que se echa de menos en un montón de triples a(')s actuales. Allí podemos encontrar desde MMORPG hechos en flash, juegos con estética diferente, e incluso juegos españoles como glest o The Cursed Wheel (cuyo devlog puedes ver en la parte derecha de esta web). En mi opinión el juego más original y paranoico es este hecho en flash.

Siguiendo las noticias el otro día me encontré con una que hablaba sobre un dev diary de un juego llamado mr.robot. Esperaba una página aburrida sobre aspectos de la programación del juego que a nadie le interesan, pero me equivoqué. El diario usa como base un foro y periódicamente van posteando los avances del juego incluyendo gran cantidad de material visual (bocetos, modelos, wires...) y comentan los aspectos más destacables de una forma amena y todo, como digo, acompañado de un material gráfico muy bien cuidado. Muy recomendable, eso si que es un buen dev-diary, además el juego promete.

Supongo que un dev-diary tan cuidado no es exclusivamente fruto del amor al arte de estos señores, creo que es una buena forma de publicitar su juego para el día de su salida.

Un aspecto que me gustaría comentar es que hacen mucho hincapié en el uso que hacen de wings3d,un modelador 3D muy intutivo, incluso un coder puede hacer algo semidecente :). En la página de Jove (debes mirar otra vez al marco de la derecha), un verdadero veterano en el mundo del modelado (y en la vida en general), hay algunos videotutoriales de modelado muy útiles.



Después de unos días leyendo el dev-diary me han picado y voy a empezar a poner los progresos que vaya haciendo con mi 4kb (y en el futuro con el PFC que está al caer y mis pet-projects) que espero presentar en la euskal, de momento estoy con el sintetizador, pero me reservo la información para un post detallado sobre el tema, que en mi opinión puede ser interesante debido a la poquísima información que circula sobre el tema.

6.23.2005

seleccionando

Otro proceso de selección más, esta vez en tecsidel. Esta empresa se dedica a las telecomunicaciones principalmente, aunque también tiene otras áreas de negocio como son el desarrollo software y los peajes de las autopistas. Esto ha sido lo que nos ha venido a decir el director de la empresa en valladolid en una pequeña charla que nos ha dado para introducirnos en la materia. La beca es para estar unos 6 meses en esta empresa haciendo sabe dios qué. Por lo que he podido intuir se dedican a hacer aplicaciones java con base de datos (oracle en este caso) y desarrollos en C++ para el control del HW y quieren gente para adiestrar e incorporar a su plantilla si demuestra su valía.

El proceso de selección ha sido rápido, primero unas pruebas de "pe-sicotécnico" (las típicas de series de números), después había que rellenar una hoja con conocimientos en unas áreas que especificaban (java,sql,c/c++,windows,linux y tcp) y por último un test sobre linux,oracle,c++ y java.

Me pregunto yo: para qué convocan a telecos si no hemos dado ninguna de las materias anteriormente citadas en la carrera? Como mucho un poco de C++ y linux, pero oracle? Como si todo el mundo usara oracle para llevar la cuenta de las asignatuas aprobadas o algo así. Señores, si supiera oracle no estaría aquí haciendo una prueba de selección para ganar 600€ al mes (brutos, claro).

Para remate nos comenta que cabría la posibilidad de hacer las prácticas en madrid... *ejem* con una cantidad entre 600 y 900€, más tirando a 600€, quién se va a madrid?

La verdad es que he ido a la entrevista con cara de bestia, cabreado, entre otras cosas, por la forma en la que nos han avisado (por mail) sin apenas ningún dato (nisiquiera el número de parcela para hubicarla en el parque tecnológico de boecillo) y encima sin facilitarnos ninguna ayuda para ir a boecillo (no hay autobús público). Supongo que no volveré a pisar esa empresa, no creo que mis conocimientos de C++ les interesen demasiado.

Por supuesto he dejado el pabellón de python bien alto :). Yo siempre llevo mi serpiente a todos lados.

6.19.2005

Organización

A raiz del comentario en mi blog sobre las diapositivas de diseño de juegos y de un post en el blog de Jare titulado "game design". En él se hace referencia a que en los foros de stratos nisiquiera había un apartado para diseño de juegos y se lamenta de ello dada la importancia del diseño en el desarrollo de un juego.

Decidido me deslicé hasta los foros y pegué parte del post de Jare (haciendo referencia lógicamente, no estoy dispuesto a que me acusen de plagio de nuevo) y pregunté que por qué no se trataba este tema en este foro (el cual visito con asiduidad). En el momento que vi la segunda respuesta a mi pregunta sabía que algo pasaba, que había tocado una fibra sensible. Mi respuesta fue clara y poco orientada a lo relacionada con el post: stratos necesita un cambio radical.

Stratos es una asociación que se creó hace unos años y que surgió con el objetivo de crear una comunidad de desarrolladores. Además, la cabeza de la organización, Antonio Arteaga, se buscaba la vida para buscar distrubuidoras a los pequeños juegos que se producián. Esto funcionó hasta que ciertas distrubuidoras no pagaron y los desarrolladores culparon a la cúpula de la organización, con el consecuente enfado de desarrolladores y de Antonio Arteaga. A partir de ese momento la asociación dejó de serlo para pasar a ser un foro en el que cometabamos nuestras vidas y una página principal donde se copiaban y pegaban ofertas de trabajo relacionadas con el mundillo.

En el hilo que plantee se fue olvidando el tema del post para discutir el estado de stratos hasta que uno de los históricos comentó la posibilidad de crear de nuevo stratos como la conocíamos antes.

Actualmente se está discutiendo el cómo formar la organización, en qué se basará, qué objetivos tendrá, quienes la formarán y es aquí donde te das cuenta la dificultad de la organización. Poner de acuerdo a un número no muy amplio de personas es algo así como imposible, cada uno propone ideas, algunas encaminadas a crear una nueva web con la cual _se supone_ se resolverá el problema, otros intentan sacar beneficio propio proponiendo reactivar sus viejos proyectos y hay otros que intentan crear una comunidad "símplemente".

Partiendo de la dificultad de concretar que se quiere, cuando ya se tiene una idea más o menos clara, el llevarlo a cabo es, si cabe, más complejo. Quién será el director? quienes los coordinadores? cómo se eligen? habrá que pagar cuota? qué se hará?... son muchas las preguntas que uno se plantea las que además deben "conectar" con el resto de las personas implicadas.

Actualmente se está planteando, en poca palabras, lo siguiente: crear una asociación de desarrolladores de videojuegos, la cual dará apoyo técnico, asesoramiento y ayuda a la distribución de los productos. Para ello uno histórico ha pruesto empezar con juegos para móviles debido a su simplicidad y su "fácil" comercialización. La idea es crear un framework basado en una linux-live y desarrollar de la forma más eficiente posible, cosa que me ha gustado bastante, ya que se enfoca el tema desde una perspectiva empresarial. Por otro lado algunas personas se está informando a propósito de las subvenciones y de la definición legal de la asociación, además de redactar unas líneas generales que tan importantes son.

Para mi, la asociación es mucho más que eso, para mi es una forma de cambiar la mentalidad que tenemos actualmente, la de criticar los desarrollos de los demás, la de crear cada uno sus herramientas, la de ir cada uno por su lado, se trata de "remar todos para el mismo lado".

La conclusión de todo esto: organizar es difícil, ahora entiendo a mi jefe, ahora ya sé porque cobraba más que yo.

6.15.2005

Javier Arévalo

A muchos este nombre os sonará como el mío o como cualquier otro, sin embargo a otros les sonará, y además muy bien. Creo que todos tenemos alguien en quien fijaros o al que tomemos como modelo a seguir, especialmente en las tareas que más nos gustan y jare (ese es su nick) es un buen ejemplo de ellos.

Hacía tiempo que no visitaba su web y esta tarde me ha dado por visitarla para ver si tenía algo nuevo o mantenía un blog. Mi sorpresa ha sido que en efecto, tiene un blog y es en este donde te das cuenta que este hombre realmente sabe de lo que habla. Sus comentarios acerca del modelo de negocio de los videojuegos realmente dan que pensar, me gusta la comparación que hace con la industria del DVD, etc, recomiendo su lectura. Sin embargo lo que me ha llamado esta vez la atención han sido unas diapositivas de una charla que dio en la universidad de Sevilla sobre desarrollo de videojuegos, en las que hace un recorrido por el desarrollo, desde le punto de vista cronológico, hasta el punto de vista logístico. Leyendolas te das cuenta que es una persona con una amplia experiencia, que conoce muy bien el mundo del videojuego y que además, viendo las diapositivas, se puede intuir que lo cuenta con pasión. Rara es la vez en la que me he encontrado un ponente con experiencia, conocimientos y que además viva lo que cuente, y triste es decir esto habiendo estado 6 años dentro de un aula.

El contenido de las diapositivas no tiene desperdicio, voy a comentar algunos de los fragmentos que más relevantes, a mi modo de ver, cara al desarrollo de videojuegos:

- Me ha encatando la mirada al pasado y al presente del desarrollo, pasa de un tío con su PC en su casa a una empresa bien distribuída, con una plantilla relativamente grande y que dará el que para mi es uno de los mejores juegos de la historia, commandos 1. Obviamente estoy hablando de Pyro Studios.

- En la mirada al futuro dice lo siguiente:
"Desaparición de los publisher tradicionales frente a la distribución por Internet?"

Estoy seguro que a Colson, que está metido en el mundo indie, le encatará.

- En la siguiente parte habla de estructuración, en la que da mucha importancia a la existencia de jefes (me hace gracia las tareas que les asigna). Me sorprende la importancia del testing del juego, sobretodo los comentarios que hace sobre los que lo testean. La parte del desarrollo propiamente dicha no me ha llamado mucho la atención, me esperaba algo así, lo único destacable es que habla de ingenieros informáticos, lógico, y de ing de telecomunicación ( \o/ ), menos lógico ya que nuestra formación tiene de todo menos ing. de software. Queda muy claro en este aspecto que además es necesaria formación complementaria, normalemnte autodidacta.

- Pasamos a uno de los puntos fuertes para mi:
"-La diferencia entre un código terminado, y un código cerrado, es crucial"

"-Pensar en la eficiencia, pero optimizar después, y solamente lo que importa"


Estas dos suelen ser los típicas causas por las que muchos proyectos amateur fallan, la falta de constacia a la hora de llevar a cabo un diseño y la pérdida del rumbo cuando piensas más en la optimización que en el propio diseño.

- Curiosidades: En el testing es normal que los testers aporten ideas y esto es lo que pone acerca de ellas:"Sugerencias de última hora, casi todas desechadas". En cuanto a los bugs encontrados: "Hay que arreglar cada fallo evitando introducir errores nuevos. Algunos bugs conocidos no se arreglarán
"
XDD.

- Más adelante comenta cosas del motor del Praetorians y básicamente lo que viene a decir son dos cosas: el juego no es el motor gráfico e intenta dejar todo configurable sin modificar el código.

- Para terminar el punto que más me ha gustado, dice lo siguiente:

"
Y, por supuesto, hacer juegos
No importa que sean pequeños
No importa que sean clones
No importa que sean feos
Lo que importa es terminarlos
"


En lo que tiene más razón que un santo, terminar un juego es una tarea que requiere constancia y es lo que realmente te da experiencia y conocimiento.

Recomiendo al que le interese el tema que se baje las transparencias y se las mire, están muy bien y además tienen imágenes y detalles del desarrollo del praetorians.

Para terminar, decir que Javier Arévalo, como no, viene del mundo de la escena :)

6.13.2005

tratamiento digital de la señal (estado: feliz)

Después de tanto sufrimiento, han salido las notas de TDS y he sacado un 4.5. Estoy completamente feliz a pesar de nisquiera haber aprobado y las razones se ven cláramente en estos datos que he obtenido:

media 2,776717557
maxima 7,75
pasados 35
aprobados 10
presentados 131
procentaje aprobado 7,633587786
procenatje pasados 26,71755725


Los pasados son los que han sacado más de un 4, ellos pueden presentarse al siguiente exámen ya que la asignatura tiene 3 exámenes, uno de dos horas teorico, y otro par de ellos de 4 horas.

Me parece que cuando tanta gente suspende no es culpa de que los alumnos no estudien, sinceramente creo que la asignatura, tal cual está planteada ahora mismo, es para suspenderla y no para aprender. En condiciones normales (un exámen ajustado a los contenidos, una correción no binaria, esto es, si un problema vale 4 puntos y tienes 3.75 bien que no te planten un 0) creo que me merecía un sobresaliente.

Me voy a calmar y después hago un análisis más coherente del negocio. Ahora a darle caña a los siguientes exámenes :))

6.12.2005

base 10

El otro día medio dormido pensaba que en realidad con los dedos podemos contar mucho más de lo que siempre nos han dicho. Porque ¿cúanto podemos contar con 10 dedos? en principio 10 si usamos codificación one hot, pero si usamos binario podemos contar hasta 2^10 = 1024 !!, qué gilipollones eran nuestros antepasados XDD. Eso si asumimos que nuestros dedos solo tienen 2 posiciones, abiertos o cerrados, pero bien sabido es que tienen muchas posiciones (infinitas). Es cierto que podríamos usar sólamente como posiciones destacadas las quenos permiten las articulaciones, pero la verdad es que es chungo poder articular. Me quedo con los 1024 :)

El siguiente paso es saber cuando podríamos contar con las manos y los pies :)

6.09.2005

F1 y telemetría

En complementos telemáticos 3, una asignatura opetativa de 5º de teleco, debemos hacer un trabajo sobre el posible modelado de datos de la telemetría del equipo renault-f1. El trabajo en si es curioso, pero más curiosa es la forma de plantear el traajo a los alumnos (enunciado), en ella se plantea la situación que vivío el equipo renault en el pasado gran premio de mónaco, en el cual les surgieron problemas de adherencia debido al desgaste del neumático.

Lo que más me ha llamado la atención es que renaut ofrece datos de su telemetría en tiempo real (usar este término te da unos cuantos amarracos en tu escala social XD) en su web, el próximo gran premio estaré atento para conectarme a la página para poder ver los datos que ofrecen. De esta manera cojo ideas para el trabajo que espero que unidas a la telemetría que me ofrece el juego F1-2003 me den una buena base para modelar algo decente.

Un detalle más, de uno de los pdf's que nos ofrece el profesor para hacer el trabajo, he obtenido la url de una web bastante interesante relacionada con la F1. Me asombra la información que puedes sacar a veces de las propiedades de los ficheros pdf :).

A hilo de esto, el otro día me llama mi madre alertada de que me había llegado un paquete de california y con todo letras rarísimas (estaba en inglés). La pregunté que me dijera lo que ponía, y a duras penas la pude entender que ponia "equis cell". Enseguida me di cuenta de que se refería a xcell, la publicación de xilinx. El caso es que hace unos meses estuve leyendo unos artículos en su web (en concreto este) y me registré para bajarme un software para diseñar en VHDL. Parece ser que quieren que siga leyendo su revista :). A ver si me llegan los 4 dvd de MS que pedí el otro día.

6.08.2005

python en movimiento

Como todos los días estaba visitando pythonhispano y he visto un artículo que me ha llamado la atención. Se trata de un detector de movimiento mediante una webcam usando python (en windows of course). El tema me lleva algún tiempo rondando la cabeza, sobretodo después de hablar con un compañero de clase que trabajaba en la empresa de su hermano y que se dedicaba, entre otras cosas, a diseñar e implementar sistemas de vigilancia, cámaras porno, etc y servirlas a través de una ADSL. Parecido a lo que ofertaba telefónica hace poco para la vigilancia del negocio.

El artículo apunta a este otro y en él, además de dectectar el movimiento, programa una aplicación tipo eye-toy (esta cosa que anunciaba sony para su playstation) que, aunque es simple, muestra las posibilidades del invento. Una cosa curiosa del post es que uno de los comentarios cuenta como pilló a un ladrón usando un sistema similar, incluso muestra fotos del ladrón en su salsa XD.

Técnicamente no es muy difícil de implementar, usa el módulo de python para acceder a la webcam, un módulo para el control de las imágenes y pygame para el pequeño juego. Hace tiempo yo había pensado un sistema similar, no orientado para juegos, después de leer un poco acerca de procesado de imágenes. La verdad es que se me ocurren miles de cosas que hacer con algo así, por ejemplo usarlo para juegos sencillos (le daría un aliciente), o para modelar en 3d al estilo de smoothteddy, total, ¿quién no tiene una cámara web si por 11 euros te pillas una?

La verdad es que python tiene aplicaciones para todo, y cuando digo todo es todo, desde aplicaciones para dispensar comida para gatos, para posicionarnos cuando hagamos senderismo mediante un móvil nokia (de un español) o incluso un SO. No sé qué coño haceis que no estais aprendiendo python ya. Para daros el primer empujón podeis empezar por aquí, o allí, o bueno mejor aquí, todo eso sin olvidar todo esto. No hay excusas para no aprender python.

flickr test

esto no es mas que una prueba de posteo desde flickr :). La bola (solo windows ) está programada en C++ con opengl para un concurso que hubo en codepixel hace un tiempo :)
. Especial atención a la ganadora (iq) cuyo autor creó paradise que ganó en la euskal del año pasado. A ver si este año engaño a alguien para que venga conmigo :)

6.07.2005

mal pensados

La encriptación y la seguridad nunca me gustó demasiado, en el fondo es algo que no debería existir, bastaría con confiar en el resto de seres humanos. Sin embargo hace unos días un profesor me acusó de plagio con unos argumentos bastante lamentables en una práctica en la que había que hacer un cliente de FTP en C. Supongo que ver un código estructurado y bien enfocado le resultaría ilógico. Llegué tan irritado a casa que me puse a buscar la forma de demostrar que un código estaba copiado, incluso mandé una noticia a barrapunto que han publicado hoy. La verdad es que el señor me cabreó bastante , incluso di unos cuantos golpes encima de la mesa donde estaba el sparc V donde hacía la revisión (a veces seguir a david goleman es difícil, aunque sé que no debería haberme irritado tanto). Es una asigantura de tercero de teleco, a mi me quedan 4 asiganturas y esta es la única de libre configuración que me queda, con lo cual me da por el culo que me suspenda, sin embargo no me da tanto que me acuse de plagio. Se ve que el hombre estaba un poco tocado después de hacerle ver que de RPC y XDR estaba tan verde como yo.

Como bien dice goleman en su libro la práctica de la inteligencia emocional, las personas optimistas y que sacan partido de sus errores son emocionalmente más inteligentes, por tanto he decidido tomar algunas medidas. Para empezar he creado mi par de claves RSA para enviar correos y así, en un futuro, poder validarlos. Lo segundo, en todas las prácticas actuales he referenciado absolutamente todo, incluso aunque sea lo más estúpido y evidente. Estas son dos, pero supongo que a partir de ahora tomaré muchas más precauciones con el código y conocimientos que libere, supongo que usaré algún tipo de licencia, ya veremos.

En mi vida me habían acusado de plagio, más que nada por que nunca he plagiado nada, y menos por un profesor. Quiero pensar que el hombre estaba picado y la pagó así. Todos los síntomas apuntaban a eso, sobretodo porque se puso a nuestra altura (a la altura del alumno) cosa que un profesor no debe hacer, si he copiado, he copiado y me lo demuestras, pero no te pones a discutir con argumentos estúpidos. Desde ahora seré un mal pensado y responderé en la típica pregunta de test de personalidad de las entrevistas laborales: "sí, creo que la gente habitualmente trata de engañar".

6.05.2005

links (1,2,3)

Paseando por barrapunto me he encontrado, entre fanátivo y fanático, una página que me ha llevado a otra y a su vez me ha terminado, no sé como, llevando a esta. Es un blog interesantísimo sobre inteligencia artificial, al principio asusta un poco, pero está muy bien escrito.

La putada es que tengo mañana un exámen y no tengo tiempo de mirarla, ains.

6.03.2005

último día

Hoy ha sido mi último día de clase como universitario de mi vida. Solo me queda aprobar las asignaturas que tengo y hacer el PFC para tener otro título más :)

google code

Como no, google sorprende con otra de sus buenas ideas, esta vez summer of code. Se trata de un dinero que google aporta para que estudiantes desarrollen un pequeño subproyecto dentro de un gran proyecto de soft libre. En la página está la lista de grupos que participan, entre los que están las grandes del soft libre, apache, KDE, freebsd... gnome (jorge), drupal (mario) o Blender. Creo que voy a proponer uno de entre los muchos que tienen pendientes en blender.

El análisis que hago de lo que hace google no me termina de encajar. Entiendo que done para proyectos que estén relacionados fuertemente con sus sistemas (perl,python,apache, quizás jabber?), pero me resulta curioso ver como apoyan a otros, que a priori no tiene nada que ver, como blender o wine. Quizás algo se me escape.

6.02.2005

robotijo

Esta tarde tengo que presentar en telemática industrial (una asignatura de 5º de teleco en valladolid) un trabajo acerca de un sistema de tiempo real. En nuestro caso elegimos el control de un brazo de robot, aunque la decisión fue un poco precipiada ya que andabamos justo de tiempo, para mi ha sido el trabajo que he hecho con más gusto de toda la carrera.

Para ello hemos creado una pequeña aplicación con ADA95, la cual, mediante un lenguaje de script que nos hemos sacado de la manga, movemos un brazo de robot. El brazo en cuestión es un CS133 y aunque parezca lo contrario, esta elección no es al azar. En el red book (el libro por excelencia de OpenGL) hay un código donde representa un brazo de robot en 3D y en la página del tío que en mi opinión más controla del mundo (Antonio Tejada) hay una pequeña aplicación, de la cual he tomado parte de código (con permiso del autor claro), que controla el CS133. Ya que estoy comentando la página de Antonio, si estás interesado en tema de shaders te recomiendo que mires un poco su página, sobretodo esta parte en la que usa GLSL (GL shading languaje) para "raycastear" terrenos, lo que era algo bastante innovador en año en el que está escrito (2002) ya que actualmente estamos viendo raytracers en tiempo real usando GLSL. No quiero terminar este párrafo sin comentar que Antonio Tejada es una de los participantes en el desarrollo de OpenGL2.0 y que actualmente está trabajando en MS (paradójico eh?).

Para la presentación he preparado una pequeña demo basada en la aplicación de antonio tejada que usando los datos que genera la aplicación en ADA95 sobre el movimiento del robot, muestra en pantalla el robot en 3D. A ver que tal sale la presentación, un screen:



Como siempre la aplicación está programada en C++ (bueno managed c++ aka c++ usando las extensiones de .NET) usando Opengl para ls visualización. Si alguien está interesado en el código, no solo de esta aplicación, sino de todas las que voy colocando, no tiene mas que mandarme un mail.