12.23.2006
PIC
Aprovecho este post "sigo vivo" para desearos buenas vacaciones a los que las tengais y que disfruteis de vuestras personas queridas y esos tópicos de estos días. /o/
12.03.2006
Quedada en valencia
Antes de eso, y para llegar a Valencia desde Murcia, tuve que meterme 3 horas y media de tren (para hacer 225 km), con la suerte de que en el mismo tren iba, además de con un compañero de trabajo, Zaelsius, el hombre mac-style, no solo por el mac, si no por la DS lite y la gente de devilishgames. Al llegar a la estación conocí, entre otros, a varios de los míticos de stratos, colson y mars atacks :).
Llegados a la sala de grados con un vistazo reconocí a algunos propietarios de caras cuyos nicks llevo viendo ya varios años en foros e irc. La cosa se confirmó cuando Nae, el moderador, presentador y showman del evento invitó al personal a presentarse. Allí ya terminé de conocer al resto de gente.
La charla sobre la asociación fue bastante peñazo y me parece que se sacaron pocas cosas en claro. El problema? pocas empresas (solo devislih y exelweiss) y mucha gente a las que les importaba un carajo el tema. En cualquier caso sirvió como un comienzo para un algo. Los comentarios más interesantes partieron de José Vicente Pons (aka kabila) y Carles Pons de exelweiss que eran de los pocos, junto con Vicente, mi compañero de trabajo y la gente de devilish que sabían que querían de una asociación. En cualquier caso se obtuvieron conclusiones, que no es poco.
Para mi lo más interesante vino después del debate, conocí a gente de la escena, slack y r3d, a la demás gente de stratos, josepho de questtracers(aka huevo-man), Ager de noticias juegos, pude hablar con gente que hacía, al igual que yo, infoarquitectura, hablé, aunque poco, con Carles Pons y también conocí a un chaval de digital legends del que no recuerdo el nombre.
En resumen, la kdd estuvo muy bien y es bastante enriquecedor conocer gente que le gusta lo mismo que a ti.
Un resumen un poco más objetivo en noticias juegos.
11.30.2006
Que pasaría si outrun fuera publicado ahora
Para empezar las asociaciones de mujeres se echarían encima de los creadores porque es un juego machista, es el hombre el que conduce. En este caso propondrían que fuera la mujer la que condujese, porque así se fomantería la igualdad de sexos. Lo tacharían de tópico, porque la mujer es rubia y explosiva, lo acusarían de fomentar la anorexia y la bulimia por el estado de la rubia. Ah!, y no quiero decir nada si fuera el tío quien mete ostias a la tía cuando termina mal la cosa porque no has corrido demasiado
La cosa no queda ahí, la DGT pararía los pies, primero porque le quitarían los puntos por exceso de velodad (a sabes la de radares que habrán puesto en esas autovías de 4 carriles donde hay un peligro extremo), conducción agresiva, invasión del carril contrario y claro, por no usar el cinturón de seguridad. Ah! y a saber si el tío se ha metido cualquier droga o va bebido (con esa pedazo de rubia).
Ah, y en España seguro que las fases en las que sale la playita de puta madre no tendría más playa al lado contrario, seguro que pondrían unas buenas torres de apartamentos, la SGAE cobraría al pavo lo suyo por poner la radio y antena3 se cebaría por ser un juego violento, eso sí, entre noticia de atentado en irak y muerte de unos perros a manos de unos salvajes.
11.27.2006
Compartiendo datos entre python y C++
Para ello python provee un módulo cojonudo, struct. Con él en dos líneas podemos guardar datos que posteriormente podemos leer en python, por ejemplo.
- python
open("fichero.bin","wb").write(struct.pack('3f2f',x,y,z,u,v));
- C++
struct vertex
{
float x,y,z;
float u,v;
};
vertex v;
FILE* f = fopen("fichero.bin","rb");
if(f)
fread(&v,1,sizeof(vertex),f);
Con este módulo podemos hacer, por ejemplo, un exportador de geometría en python para Blender en cosa de segundos:
scn= Blender.Scene.GetCurrent()
object= scn.getActiveObject()
mesh = BPyMesh.getMeshFromObject(object, None, True, False, scn)
file = open(filename, 'wb')
file.write(pack('i',len(mesh.faces));
for f in mesh.faces:
for v in f.v:
file.write(pack('3f',v.co[0],v.co[1],v.co[2]);
11.23.2006
Nuevo juego de Kenta Cho
Parece simple crear un juego así, total, no hay texturas y todo son primitivas simples, pero a pesar de eso todo está hecho con buen gusto y hace uno uso de las partículas cojonudo. Me gusta sobretodo la explosión de cuando te matan.
A bajarlo que son 5 megas de nada :).
11.21.2006
Juegos cortos, ideas buenas
Además el juego está creado en python + pygame y tiene todo el código a la vista :).
11.20.2006
OpenGL cambia de look
- Dos nuevas releases para el verano. En resumen, si usas una implementación serás compatible con las viejas y nuevas tarjetas y con la otra solo podrás usar el nuevo hardware con la ventaja de poder usar todo su pontencia
- un SDK, que ya era hora. Hasta ahora yo me habia guiado con el redbook, la espec de opengl y la de GLSL, pero está claro que es necesario unificar y centralizar ,sacando algo similar al SDK de DX.
- cambios en el modelo de opengl. Al parecer el modelo usado para algunas cosas, como explica en la web, era una chapuza y estaban optimizadas para la creación y no para el render.
Estas son las más importantes según mi punto de vista y parece que todas cara a poder hacer frente a lo que está por venir en D3D. Todo orientado a facilitar las cosas y a poder optimizar para el hardware moderno.
Geometry Shaders con OpenGL
Y para qué leches quiere alguien generar vértices? Por ejemplo, imaginemos el caso de querer usar billboards. Tenemos la opción de usar fixed pipeline, transformando uno por uno los vértices de los quads para orientarlos a la cámara. Otra opción es usar un vertex shader, de forma que le pasamos un "quad" con los 4 vértices centrados en el centro del quad, luego en una coordenada de textura se le pasas el número de esquina y por último dos uniforms con los ángulos de cámara. Con simple trigonometría y un vector de vec3 en el que se haga lookup con el número de esquina se puede transformar el vértice. Con geometry shaders se puede, indicar que la entrada es un punto, la salida es un triangle strip y en el shader generar los 4 vértices a partir del primero, con el consecuente ahorro de cálculo en el VS y de transferencia de datos.
Este es un ejemplo, pero seguro que hay cosas mucho más útiles que eso :). Un buen tutorial lo he visto hoy en una noticia de hace 4 días en la web de opengl. Bien explicado, con sus gráficos de rigor. A ver que hace ATI (aka, quisquillosa con GLSL) ahora.
11.18.2006
perrito
11.15.2006
STL: sí o no
- efectividad: ganas tiempo en no tener que programar y hacer debug de tus contenedores. Además sabes que hay muchas más personas usándola y tienes cierta seguridad cuando las usas.
- rapidez de ejecución: es posible que tus contenedores sean más rápidos, pero en el tiempo que has usado para programarlos es posible que invitiéndolo en otros algortimos hubieras ganado más ciclos de cpu (o gpu :P).
- trabajos en equipo: cuando se trabaja en equipo es muy ventajoso que todo el grupo conozca muy bien las cosas básicas del código sobre el que se trabaja. Además casi nunca se suele estar de acuerdo en como deben funcionar los contenedores.
- Los iterators: te dan una versatilidad para cambiar de contenedor y trabajar con los mismos algortimos sobre cada uno bastante alta y que da aporta mucha efectividad a la hora de programar
pero también hay contras:
- No te evitas bugs... pero tampoco te libras de ellos si los programas tú. Por ejemplo hacer std::vector< std::vector
- Código muchas veces ilegible, con lo cual hace difícil saber qué hacen exactamente.
- Múltiples implementaciones. Por un lado tienes la que traen por defecto los compiladores, STL de SGI, STL port. No es que sea un gran problema, pero hay contenedores y algortimos diferentes, ciertos detalles internos, etc.
- Los iterators: a algunos programadores les resulta engorroso tener que usar, por ejemplo, un iterator para eliminar un elemento de un std::vector
En resumen, para mi, STL sí, porque prefiero usar mi tiempo en crear algortimos diferentes a los de toda la vida, aunque creo que todo programador debería saber como implementar una lista enlazada o un vector. Tú que opinas?
10.28.2006
La fiesta empieza en Gameloft
Me hace gracia como vende la moto el presidente de Gameloft, más que nada porque existen juegos 3D hace siglos, no creo que porque veamos juegos 3D en dispositivos móviles vaya a ser la revolución aunque si funciona bien gameloft, entre tantas, se puede forrar a base de bien. El problema es que un juego 3D requiere mucho más trabajo que uno 2D (y por tanto mayor coste de producción) y no sé si saldrá tan rentable.
Por suerte OpenGLES es muy similar a OpenGL y los programadores de PC no creo que tengan problemas en reconvertirse, con lo cual la experiencia acumulada para PC siempre se puede aprovechar. A ver que va saliendo.
10.23.2006
matemáticas para la vista
Hace tiempo se anunció el "International Congress of Mathematicians" en el que se dieron unas charlas sobre demoscene. Hoy Íñigo Quilez ha publicado en su web las transparencias de las ponencias además de todo el material usado en la exposición. Personalmente me ha gustado la definición matemática de una mariposa que hace Íñigo en el pdf, aunque los otros documentos no se quedan atrás, lo cual no sorprende viendo los ponentes, unos de los creadores de iconoclast y también de plastic.
matemáticas para la vista
Hace tiempo se anunció el "International Congress of Mathematicians" en el que se dieron unas charlas sobre demoscene. Hoy Íñigo Quilez ha publicado en su web las transparencias de las ponencias además de todo el material usado en la exposición. Personalmente me ha gustado la definición matemática de una mariposa que hace Íñigo en el pdf, aunque los otros documentos no se quedan atrás, lo cual no sorprende viendo los ponentes, unos de los creadores de iconoclast y también de plastic.
10.16.2006
Pizarra mágica
Además, la física ya sola por sí hace un juego, aunque si le añades unos toques divertidos pueden salir cosas como breakquest
EDIT: un jueguecillo/test que me ha pasado alex con física creada en flash: line rider y un video con una aplicación curiosa.. :)
10.11.2006
Agroguía empieza a andar
Bueno, estaba claro que esos problemas iban a estar. Otra cosa curiosa es lo que la gente pide que podría tener, unos piden medidores de área, otros sistemas de control integral del tractor... en fin y en cuanto al precio... a algunos les parece caro a otros barato, a algunos les parece que no sirve de nada, a otros de mucho, es curioso.
Por mi parte estoy mejorándolo en mi tiempo libre (que es poco). He añadido un medidor de área y ahora mejoraré el GUI, sobretodo en su usabilidad. A ver si contrato los servicios de un grafista que me haga unos iconos en vectorial (solo rasterizo polígonos, nada de texturas) chulos.
Por otra parte mañana voy a Valladolid, 8 horitas de tren... arg! Pero lo peor no es ir, lo peor es la incompetencia de algunos trabajadores de renfe que no saben cuantos minutos es una hora y que no saben resolver una duda sobre un trayecto. Encima creo que he cogido un catarro de estos estúpidos y tengo un principio de anginas.
Por otro lado ayer pasé por el silken 7 coronas, un hotel de murcia, donde parece que se aloja la selección. A mi la selección me da igual, pero casi se me saltan las lágrimas de ver la DSNG (aka fragoneta con antena parabólica), al ver esa parabólica orientada a vete tú a saber qué satélite, esos VTR's y sobretodo esos pequeños monitores SONY con las barras de colores ( blanco y negro, los colores primarios y los complementarios) test de la señal PAL. Qué recuerdos :__).
10.05.2006
Tristeza
Pero es telecinco... contrata a una presentadora que sabe estar en cámara, que sabe hacer ver al espectador que es una mentira y que ella es una hipócrita pero que como eres tonto te lo tienes que comer, buena iluminación, unos cuantos juegos de cámara, algún efecto de sonido y todo arreglado.
Por no hablar de los informativos, ahora mismo acaban de abrir con el titular de un método para dejar de fumar, por detrás se estaban oyendo voces de realización, una conexión en directo con el hijo de un periodista que no se aguanta de los nervios. Por no hablar de las cagadas de rotulación, las de los micros de los presentadores y de la auténtica basura sensacionalista y propagadísitica que nos meten entre pecho y espalda.
Menos mal que gran hermano se lo curran bastante bien :D
10.01.2006
hagamos negocios
En mi opinión quedan cosas que mejorar de la herramienta:
- Unos graficos en condiciones que no se pusieron en su debido momento por algunos problemas, sobretodo para los iconitos, el tractor y esas cosas.
- Me falta por concretar el HW concreto. Sé que debe ser un GPS sirf III, sin embargo me queda por concretar el modelo de PocketPC. La aplicación de momento ha funciona bien en todos los modelos que he probado, pero conviene que sea uno MUY robusto, con pantalla grande y que además tenga un soporte que aguante las vibraciones.
Si esto no funciona bien y no vendo nada, creo que la mejor manera de hacer que sea útil es sacarlo gratis y hundir en la miseria a arvatec y a isagri (jaja :P) no así a ssiiaa (empresa zamorana que también tiene un producto similar) y que así todos los agricultores puedan tener su sistema de guiado por muy poco dinero. Un día haré una comparativa sobre sus productos y el mío.
Por suerte cuento con la ayuda de Jaime Gómez, mi tutor de proyecto y amigo y con la sabiduría de rafa mompó que siempre están dispuestos a echar un cable y proponer cosas. Bueno, además de mi novia, que ahora está de comercial :P.
Sugerencias?
9.29.2006
SpeedTree
SpeedTree es una librería que genera proceduralmente árboles en base a una definición de parámetros. En esencia es solo eso y lo dejan muy claro en la documentación, speedtree es solo un motor de cálculo, no un motor de render ni nada similar. Speedtree te da todos los datos para renderizar el árbol... las texturas (que no genera, claro), los vértices, las normales, el tangent space de cada vértice, los pesos de los "bones", y otros parámetros realmente curiosos.
Ciertamente la librería genera unos árboles de alta calidad y perfectamente preparados para renderizarlos y animarlos en tiempo real. Y es que bien se podría llamar SpeedHack, porque utiliza todas las artimañas posibles para renderiza más rápido. Usa el mal llamado pseudo-instancing, esto es, pasa todos los parámetros del árbol en coordenadas de textura (posición, rotación y otros) dejándo todo el trabajo al vertex shader, de esta forma se ahorran los cambios de matrices de cada uno de los árboles.
Pero la cosa no queda ahí, especifican claramente como debes renderizar, en qué orden y casi te imponen un sistema de oclusión basado en celdas con batches de vértices para renderizar todos los árboles lejanos como billboards. Aparte de todos los trucos típicos de cambiar lo mínimo posible el contexto, organizar los vértices para no tener fallos de caché, usar un lod precalculado, usan otros trucos curiosos. Por ejemplo, una vez conoces las especies de árboles que vas a usar, una herramienta que te trae el SDK, SpeedTreeCAD, te genera texturas batch, esto es, en ella acumulan todos los billboards de cada árbol, las texturas de las ramas, etc.
Sin embargo lo que más me ha gustado es la parte del movimiento de los árboles con el viento. Cada vértice tiene unos pesos, al igual que cuando se hace skinning, sin embargo aquí se han ideado un sistema por el cual todos los árboles, sea de la especia que sean, comparten matrices de transformación. Cada frame las matrices de viento cambian (puede ser 2 o más) y cada árbol tiene un índice a una de las matrices, de forma que el mecanismo de pseudo-instancing funciona de miedo ya que parece que cada árbol se mueve a su ritmo a pesar de tener las misma mastices, la misma malla y los mismo pesos. Y todo eso con solo un parámetro por shader.
Para concluir decir que la librería se nota que está currada, pero ciertamente esta enrevesada y es muy rígida a la hora de integrarla. No compila en GCC para PC (he tenido que hacer unos cuantos hacks), aunque sí está preparada para compilarse en PS3 con gcc, además de XBOX y DX. Decir que la demo que viene a modo de tutorial no funciona en tarjetas ATI y que hace conversiones a de float a enteros en el shader que tan pesadas son en algunas tarjetas.
Otro día sigo hablando de ella, tendría para horas...
Links:
- sitio oficial
- demo de trees of pangaea, demuestran lo que puede llegar a hacer speedtree
9.22.2006
sensacionalismo al poder
Ni más ni menos que esto es lo que ha pasado con el juego patera racing. En un blog de informativos telecinco publican la noticia de la existencia del juego patera racing, programado hace 4 años y cuyo aspecto dista mucho de ser una burla hacia los inmigrantes que se juegan el pescuezo a diario. Todo hecho, 20 minutos se hace eco, los foros empiezan a funcionar... y seguramente en pocos días antena3 y T5 echarán pestes contra todo el mundo de los videojuegos (todo esto entre noticia de muertes en algún atentado y el desayuno de ronaldiño). Por suerte, el que ha escrito la noticia no debe tener mucho de periodista, porque ha publicado una "rectificación", esto es, ha copiado un correo del supuesto autor, y digo supuesto por el comentario que hace el autor en su web.
Qué enseñan en las escuelas de periodismo? Cuando aprenderemos a quejarnos y no dejar que gente así escriba noticias que no lo son y que lo único que persiguen es generar polémicas donde no las hay. Triste.
EDIT: ojo al comentario del periodista de 20minutos acerca del diseño del juego... tendría que leer sus noticias antes de criticar de aspectos que no conoce. Manda huevos que diría trillo.
9.20.2006
lo que está por venir en OpenGL
9.16.2006
Global Illumination usando GPU
(*) Actualmente cuando se habla de GPU lo primero que te viene a la mente son los vertex y pixel shaders y quizás en alguna técnica para fakear alguna propiedad física de la luz o de los materiales, sin embargo la técnica que comenta no los usa necesariamente, tranquilamente se podría calcular usando la "fixed pipeline"
9.12.2006
Lo que faltaba
Leo en anaitgames que apple se mete en el terreno de los videojuegos. Si les ha funcionado el negocio de distribuir música en internet, por qué no les iba a funcionar la distribución de videojuegos? son 5 dolares (según este resumen) por cada juego, que creo que al cambio viene a ser lo que vale un juego de móvil de los que anuncian a todas horas en TV.
Puede que se quede en una anecdota, pero tiene un análisis muy interesante. Veremos a apple sacando peleando con nintendo y sony ?
El toro de vega
Hoy veía la noticia en 20 minutos, los cuales están completamente en contra de los espectáculos taurinos, pero esta vez no es la noticia lo que me ha llamado la atención, si no los comentarios. En ellos todos hacen referencia a la bestialidad que es matar a un toro y demás, pero, curiosamente, lo hacen amenazando e insultando, incluso hay algunos que van más allá y son ellos mismos los que se proponen voluntarios para ir a partirle la jeta al señor que remató al toro, que por cierto, le ha metido el cuerno hasta el gañón.
Como he dicho, he estado durante 4 años conviviendo con gente que ha nacido viendo al toro de vega morir año tras año y para ellos es algo natural, está muy dentro de ellos, tanto que ven como una aberración que alguien se queje o quiera eliminarlo de las fiestas.
Mi opinión es que es una animalada, creo que los festejos taurines deben ir más en la línea de los cortes que en la de la matanza, sin embargo veo desmedida la actuación de las personas, tanto las que comentan en 20 minutos, como las de carne y hueso. Pretenden solucionar el problema dando de ostias a otros humanos? hay algún comentario que iguala a tordesillas con ETA.
De mientras los moros jodiéndonos la vida con las bombas, los inmigrantes palmándola, los españoles empeñándose (me hace gracia hablar en tercera persona :P), los etarras de verdad riendose de nosotros, la televisión "educativa", los bancos, telecos y empresas en general riendose del consumidor, los políticos chupando del frasco y haciendo el ridículo... no me jodas.
9.10.2006
Mi nueva casa
Bueno, hace unos días comenté que ya tenía nueva casa... qué menos que poner una imagen jaja :P. Es solo del salón (no tengo tele) con todo el dominical descomprimido, mi reproductor de mp3 (que me lo regaló mi novia), dos latas de cocacola que me gustan porque decoran, la pda, el portátil y la wifi usb para sacarla por la ventana (al fondo) y "shuparles el intené", como dirían por aquí, a los vecinos.
9.04.2006
1 semana
LLevo ya una semana en Murcia, y ya he estado en el trabajo dos días, lógicamente de contacto con la dinámica, de aprendizaje de las herramientas y el modo de trabajo, etc. La cosa promete, la gente que he conocido tiene un nivel muy alto, algunos de ellos buena experiencia en el sector del videojuego (ya me han contado algún cotilleo :P).
Qué tengo que hacer? de momento pelearme con speedtree, una librería de generación de árboles procedurales muy enfocada al entorno realtime. Se puede ver en movimiento en juegos como unreal, oblivion y, como me ha comentado Nae, en fallen lords. Es una librería potentísima y con una amplia librería de árboles, aunque tiene algunos fallos que ya comentaré.
Por otro lado he conocido enlightenment un gestor de ventanas muy interesante, no solo por el hecho de que sea bonito, si no por su arquitectura, que permite correr todo el gestor de ventanas no solo en linux, si no también en windows bajo una ventana usando GDI o incluso OpenGL. Y no se queda ahí la cosa, también corre en dispositivos embebidos. Eso por no hablar del acabado. Pinta muy bien, de momento he conocido algunas caraterísticas y me ha encantado, a ver qué tal pinta.
El resto... bien, sobreviviendo.
8.31.2006
Aterrizando
LLevo en Murcia 2 días y pico ya que llegué el lunes, los que he invertido en buscar un piso en condiciones. Al final he encontrado un apartamento la mar de majo, un poco caro, pero me pilla cerca del trabajo, de mis amigos y de los sitios que conozco. Ah! y tiene aire acondicionado, cosa que es fundamental en esta región, el calor para mi es sofocante... :(. Aparte del calor me estoy adaptando bien a la nueva situación :)
En cuanto al trabajo he estado viendo la nueva oficina y he conocido a mis compañeros y, espero, a mis futuros compañeros a los que estaban haciéndoles una entrevista para entrar como grafistas (el término grafista es muy amlpio, no sabría decirlo con más precisión). Increíbles los bocetos, comics y animaciones que han llevado como currículum, dignos de quitarse el sombrero. El ambiente no puede ser mejor, tengo ganas de que llegue el 1 para empezar a trabajar.
8.27.2006
Me cambio de vida
Mañana me cambio de vida, esto es, me mudo a la otra punta de España a trabajar en algo que me gusta. Si hace dos meses, cuando terminé la carrera, me dicen que iba a terminar en Murcia y me hubiera descojonado. Leo con alegría una entrada de hace más de un año en la que empezaba a plantearme mi futuro profesional. Algo bueno de tener un blog es que puedes recordar qué es lo que pensabas aquel día y lo mejor, puedes analizarlo con mucho más claridad, a vista de pájaro, a toro pasado como dice mi abuelo. Y ahora, después de leer lo que puse aquel día me hace gracia que haya conseguido un trabajo en algo que me gusta.
Cambiar de ciudad no es algo simple, no solo por el hecho de alejarte de tu familia y personas queridas, si no por tener que buscarte la vida para encontrar vivienda, nuevos amigos, acostumbrarte a la ciudad, en mi caso al clima y a otras cosas que también me interesan, por ejemplo quién es el alcalde, quienes son los que gobiernan la comunidad autónoma (me interesa demasiado la política desde qu trabajé en TV), qué tv locales hay allí (jaja) (justo al lado del nuevo trabajo está tv murcia), dónde está el "tio molonio" de murcia (que será de m-clan, claro) para quedarse hasta las tantas los días de diario :P. Por suerte hay personas que me están echando un buen cable.
Lo dicho, me voy a murcia, así que si vas a estar por allí, ya nos veremos.
8.23.2006
python mola
8.20.2006
Blender como framework para juegos
Desde hace un tiempo llevo viendo herramientas para crear juegos muy simples. No solo por el hecho de tener nuevas (y no tan nuevas) herramientas como fenix(devilish lo usa), blitz3d, game maker (questtracers), blender, lo nuevo de MS, XNA si no también porque los lenguajes son más simples (C#, python) y tienen más facilidades. Por ejemplo, últimamente estoy mirando el motor de disney Panda3D y la verdad es que crear un juego (simple,claro) sabiendo un poco de python es bastante asequible. O por ejemplo amanith framework (bindings para python) una librería para 2D y 3D que se ha usado en el juego de moda, freets on fire, que por cierto, está muy bien :D.
8.19.2006
blogs de desarrolladores de videojuegos
Hace no demasiado apareció planet stratos que en su gran mayoría son amateur, aunque también hay gente con años de experiencia. Tenemos a josepzin y tucho que vienen del desarrollo de glest(juego de estrategia en tiempo real 3d de gran calidad), grupos algo más consolidados, como geardome del que destaco hydrium, el blog de ager de andorstudios, Josepho de questtracers (recomiendo easter avenger), grupos de reciente aparición pero que prometen mucho como G-Boot team, gente que escribe artículos apuntes y tutoriales, como samsaga2 (buenso artículos de generación de niveles), zupervaca que no debes dejar de leer si te interesa la programación para móviles, FANatiko, Jove Chiere, el grafista alternativo (y única persona que conozco con apellido en el nick), Pablo Zurita con un podcast sobre creación de motores y luego gente con sus años de experiencia a la espalda como Astat y Virtus.
No he enumarado todos, lo mejor es visitar el planet regularmente o suscribirse al rss.
Pero la cosa no queda aquí, hay un montón de blogs de desarrolladores que están sacando juegos al mercado. En la parte izquierda del blog hay unos cuantos links que he ido recolectando (y espero que aumente) en bloglines. Destaco:
- Designostic: Blog de reciente creación que está enfocado al diseño de videojuegos (esa parte tan desconocida). Realmente no sé quienes son los que aportan, aunque según he podido leer son de las grandes españolas.
- exelweiss: en sus post tratan diferentes temas, sobretodo de análisis de mercado enfocado naturalmente a los que son objeto de sus productos, esto es, juegos online (ver mundijuegos), desarrollo para móviles, advergaming, etc :).
- El blog de Jare: no necesita presentación, creo yo :).
- Blog de Nae: diseñador y showman en digital legends. El tío que más sabe de videojuegos del mundo XD.
- Blogs de omepet: los más interensates, este y el técnico. No se actualizan con frecuencia, pero son interesantes. A ver si mejoran el ritmo :).
- Blog de unkasoft: empresa de videojuegos para móviles afincada en Salamanca y que hablan, sobretodo, de metodologías de diseño de software y de programación para móviles. Se actuliza regularmente
- Librador: otro currante de digital legends.
- DevilishGames: blog de david ferriz (aka zwitter) de devilish games, empresa que ha desarrollado los pajarracos esos que anuncian a la hora de los simpson en antena3, vamos, movil+kota en sus variantes. Además de estos juegos, han creado muchos más, han sido finalistas unas cuantas veces en artfutura. Ya era hora de que creara un blog.
Espero poder hacer un post "blogs de desarrolladores de videojuegos II" en poco tiempo :)
8.15.2006
Python en real flow
Parece que se empieza a usar una de los muchos potenciales de python, la facilidad embeberlo en otros lenguajes y usarlo como lenguaje de script, especialmente usando swig o boost::python.
Espero que en esta aplicación se hayan pensado bien el interface con python y no lo cambien en futuras versiones porque puede pasar como con blender. En blender hay scripts para dar y tomar, sin embargo no hay compatibilidad hacia atrás y el trabajo de mantener un script al día es alto, con la consecuente pérdida de tiempo y motivación. A ver si se asienta el API de blender y la gente puede empezar a hacer scripts que tengan duración y sobretodo robustez, algo de lo que carecen la mayoría de scripts de Blender.
8.13.2006
Qué no hacer al diseñar software
A medida que descubres cómo funciona RPC, con su sistema interno y, lo peor, el sistema de programación, te das cuenta que algo así es imposible que llegue a funcionar bien. Es tedioso montar un sistema simple con RPC, no entiendo como pudieron montar algo que funciona tan bien como NFS.
Pero la cosa no queda ahí, porque alguien decidió que también podría hacerse middleware para sistemas orientados a objetos y se le ocurrió CORBA que era aún mejor que RPC y todo lo conocido porque abarcaba absolutamente todo: todos los lenguajes, todas las posibilidades. Asombrado me quedé cuando vi que había empresas, como telefónica i+d, que lo usan. Cómo podría alguien usar algo tan sumamente enrevesado y complejo?
Por eso no me sorprende nada ver como CORBA muere y mucho más viendo las razones de sentido común pero tan dificiles de llevar a la práctica que enumera mig21 en el post que paso a copiar aquí:
"""
1 Los consorcios de estandarización necesitan reglas sólidas para estandarizar las mejores prácticas
2 Ningún estándar debería aprobarse sin una implementación de referencia
3 Ningún estándar debería aprobarse sin haber sido usado para en algunos proyectos de complejidad realista
4 El software libre/abierto tiene procesos de selección darwiniana y por ello se adapta mejor a las reglas anteriores
5 Para crear un software de calidad, la habilidad para decir "no" es más importante que la de decir "si"
"""
Las más importantes para mi, la 2 y la 3 que son la misma y la 5. Las primeras porque cualquier que haya hecho algo en su vida sabe que los toros desde la barrera se ven bien y la última porque la perfección es imposible.
Está claro, yo aún no he visto ninguna tecnología basada en algo fantástico como son los componentes o los WS que funcione. Sin embargo, cosas simples como AJAX están hasta en la sopa.
8.09.2006
Me voy a Murcia
Como dije, antes de ayer estuve en Murcia en una entrevista de trabajo. Salí el domingo a las 5 de la mañana - mi coche no tiene aire acondicionado -, llegué allí sobre las 12:00, no sin problemas gracias a un "pequeño" atascto en la A-7 desde murcia hasta alicante (gracias N-340). Después de encontrar la oficina, estuve más o menos una hora en una entrevista muy informal y entretenida. Estuvimos hablando de temas de 3D, de lo que sabía, de lo que hacían, me enseñaron cosas,etc. Mi novia, que estaba presente, me dijo que era lo más friki que había escuchado hacía años.
Ayer me llamaron para decirme que estaban interesados y lógicamente yo también, así que en breve me desplazaré a murcia para quedarme una temporadita. Ahora a buscar piso y preparar :).
Por cierto, GMV me respondió el correo diciendo que:"mis conocimientos y experiencia no se ajustan al proceso de selección" pero mantendrán mi cv en su BBDD para futuras pruebas de selección. El mail, típico de plantilla, que no pego aquí por que venía con una "licencia" un tanto restrictiva, estaba firmado digitalmente, esto es, habían escaneado la firma del señor que me lo había enviado y la habían puesto en un attach.
Entre este blog y mi actuación en las entrevistas, me estoy buscando una cantidad de amigos en las empresas de acojone, pero me puede esta forma de tratar a las personas, no sería mejor decir la verdad en vez de un correo prefabricado... aunque bueno, mejor eso que no decir nada, como hace telefónica i+d, tecsidel, etc. Debo ser el único que piensa que cuando voy a una entrevista soy javier santana y no el currículum número X o el segundo candidato y que la misma molestia que te tomas tú en ir a conocerles podrían tener ellos en dedicarte unos minutos en escribir un mail personalizado. Triste.
8.06.2006
Trabajo: Capítulo II
Después de la esperada desilusión de GMV, vuelvo al ataque con otra oferta de trabajo, pero esta vez cambiando de tercio.
Mi idea hasta ahora era la de intentar encontrar trabajo por una zona cercana a mi casa siempre y cuando el trabajo me interesara. El tema es una cuestión de calidad de vida, aunque, claro está, tampoco puedo estar toda la vida intentando encontrar trabajo en un sitio donde no lo hay o no lo consigo.
En mi pueblo cuando queremos decir que algo está lejos decimos que está en murcia y ahí es precisamente donde voy a ir mañana a hacer una entrevista. Del trabajo no sé demasiado, solo sé que une dos de mis grandes aficiones, C++ y OpenGL.
Seguiré posteando, mañana desde el pocketpc, seguramente desde alguna playa del mediterraneo :)
8.03.2006
Desarrollo actual: cubeout
EL juego está a un 80%, me falta casi todo la parte del renderizado que quiero darle un mejor aspecto y pulir los típicos fallos y bugs que siempre aparecen.
En este juego estoy tratando de meterlo todo en 96kb, ahora mismo el ejecutable comprimido con UPX ocupa unos 40kb y de momento tiene solo una canción dentro del ejecutable. Todo lo demás es generado, la pista, las texturas incluso los efectos de sonido.
Bueno, dejando a un lado la chapa técnica la peculiaridad del juego es que un 30% de las naves corren más que tú y la única forma de pillarlas es usando los típicos turbos. Pero claro, los turbos son limitados y la única forma de conseguir rellenar los turbos es estando al rebufo de una nave (si te deja). Con lo cual la carrera se convierte más que en una carrera a morir, en una estrategia, porque si adelantas al primero, tarde o temprano de adelantará, con lo cual lo interesante es permanecer detrás de él hasta los últimos metros :).
Bueno, una foto:
Un ejemplo de nave:
8.01.2006
Así se empieza
Entre ellos he leído un post, concretamente de david ferriz, zwitter para los amigos, que voy a pasar a reproducir aquí, porque me parece un ejemplo y creo que tira abajo muchos mitos sobre el tema de "montatelo tú mismo". Verdaderamente interesante:
"""
Cita:
un tipo amateur no se va a exponer a invertir dinero en crear una empresa
Yo me he gastado una pasta en montar la empresa, asesores, administración, equipos, licencias, etc. No se cuanto durará, pero de momento nos da para comer haciendo juegos Smile , yo no tengo estudios empresariales, ni nada por el estilo, de hecho tengo 23 años, he estudiado un ciclo superior de ilustración, y cuando acabé, decidí que mi hobbie de tantos años... podía llegar a convertirse en mi trabajo. Todo es cuestión de intentarlo, ver posbilidades, de no rechazar clientes... por muy poco atractivo que sea hacer un juego de ese estilo, ... buscarse las castañas por internet, buscando clientes para gráficos shareware. No se, todo es cuestión de moverse.
Tengo muchos compañeros que estudiaban conmigo ilustración, que son verdaderos artistazos, pero no se han movido nada... y están currando en telepizza. Hay que moverse y no tener miedo a mostrar tu trabajo por foros de todas partes, por stratos, por foros de 3d, por indiegamer... etc. A alguien le interesará tarde o temprano.
De hecho, hace ya más de un año puse un post en indiegamer presentandome, mostrando algunos gráficos, etc... y todavía me llegan mails ofreciendome trabajos freelance. Está claro que al principio te la darás muchas veces con los presupuestos, ... y te tocará comerte proyectos enormes cobrando una mierda, pero eso se gana con la experiencia... y la experiencia se gana trabajando.
Yo no soy nadie, a si que no soy quien para dar consejos, por que no creo que mi empresa sea un ejemplo, pero bueno, a mi me da de comer... y pienso que si mucha gente rebajara un poco sus pretensiones... y en vez de trabajar en un AAA, se dedicara a otras cosas más pequeñas... le saldría mejor. No es tan bonito hacer un juego flash para una web... que participar en el ultimo juego de Commandos... pero bueno... a mi me vale.
Lo de arriesgarse o no... es otra cosa, yo nunca he tenido un duro, pero todo lo que gané trabajando como diseñador web, lo he invertido en la empresa. Como mucho... voy a perder ese dinero. Para trabajar en una empresa... tengo toda la vida, para intentar montar lo mio... no Smile
Cita:
no se va a exponer a invertir dinero en crear una empresa, para por ejemplo montar un negocio de shareware
Una opción a eso... es hacer un buen juego share o para móviles, en ratos libres... pero con seriedad, acabarlo, ponerlo a la venta... y esperar beneficios para poder invertirlos en la empresa. Para hacer eso, hay que tener las cosas claras, ser constante y profesional, y hay que sacrificarse. Yo antes que quejarme... prefiero intentar las cosas antes Very Happy
Cita:
Creo que muchos de los que no se lamentan tanto son los que realmente están haciendo cosas o intentándolo.
Eso pienso yo.
"""
7.31.2006
Rez: un juego para mujeres
Mirando la entrada de la wikipedia me encuentro que algunas mujeres usan el pack de vibracion que viene con el juego (solo japón) para otros propósitos. Pase, siempre se ha bromeado de la utilizad de los vibradores en los mandos de la consola desde el rumble pack de nintendo64 y el dual shock, pero lo que es el colpo es que incluso se han programado drivers para controlarlo desde PC y que se integra con winamp/itunes/etc.
Ver para creer.
Blender para programadores
Como el tiempo es oro, cuando programas algo con cierta entidad siempre surge la necesidad de crearte herramientas que faciliten y agilicen el trabajo. Para crearte las herramientas se puede optar por la vía de programarte todo un GUI en OpenGL (o en tu api favorita), usar algunas de las librerías como MFC, windows forms, wxWidgets, etc, usar un lenguaje no apropiado o usar el apropiado (por ejemplo python). Es posible que se pueda aprovechar mucho del código del motor, juego o lo que sea para hacer la tools, en ese caso es lógico usar el mismo sistema que usas en el motor, sin embargo si no es así, lo ideal es usar un lenguaje que permita trabajar rápido y te de cosas ya hechas. No quiero ser repetitivo, pero python encaja perfectamente ahí.
En algún rato libre estoy programando un juego de carreras de naves estilo wipeout además intentándolo meter todo en 96kb. Lógicamente no voy a guardar todos los datos de geometría en el ejecutable, pudiéndolo generar, para qué voy a gastar espacio a lo tonto? :P. Para generar la pista a cualquier se le ocurre que con unos cuantos puntos y una interpolación cúbica es más que suficiente. Qué es lo que permite hacerlo en 5 minutos? pues Blender da soporte para hacer pequeños GUI con pocas líneas, fácil acceso a los vértices, objetos, etc y además tienes toda la potencia de python.
Por ejemplo, para los puntos que generarán la línea y a su vez la malla se puede exportar de la siguiente forma:
def export_c():
O = Blender.Object.GetSelected()[0];
me = O.getData();
f = open("export.h","w");
f.write("vec3f track[%d]={\n"%len(me.verts));
for v in me.verts:
f.write("{%f,%f,%f},\n" %(v.co[0],v.co[1],v.co[2]));
f.write("};");
f.close();
Basta con seleccionar la malla y exportará los vértices. De esta forma puedo editar los vértices en blender a mi gusto y dar al botón de export, recompilo y ya lo tengo. De otra forma tendría que estar editando los vértices a mano hasta que consiguiera el resultado que quiero.
Las naves, por ejemplo, están basadas en quads con muy pocos polys. Para incluirlas en el código he creado un exportador:
def export(name):
p = Object.GetSelected()[0];
if(not p): return;
objname = p.getData(True);
me = NMesh.GetRaw(objname);
objname = objname.replace(".","_");
f = open(name,"w");
verts = [];
xmax = me.verts[0].co[0];
xmin = me.verts[0].co[0];
ymax = me.verts[0].co[1];
ymin = me.verts[0].co[1];
zmax = me.verts[0].co[2];
zmin = me.verts[0].co[2];
total = [0,0,0]
for x in me.verts:
if(xmax < x.co[0]): xmax = x.co[0];
if(xmin > x.co[0]): xmin = x.co[0];
if(ymax < x.co[1]): ymax = x.co[1];
if(ymin > x.co[1]): ymin = x.co[1];
if(zmax < x.co[2]): zmax = x.co[2];
if(zmin > x.co[2]): zmin = x.co[2];
total[0] = total[0] + x.co[0];
total[2] = total[1] + x.co[1];
total[1] = total[2] + x.co[2];
total[0] /= len(me.verts);
total[1] /= len(me.verts);
total[2] /= len(me.verts);
m = max(xmax-xmin,ymax-ymin,zmax-zmin);
f.write("float %s_verts[]={"%objname);
xpan = (xmax-xmin)/m;
ypan = (ymax-ymin)/m;
zpan = (zmax-zmin)/m;
for x in me.verts:
cx = (x.co[0]-xmin)/m;
cy = (x.co[1]-ymin)/m;
cz = (x.co[2]-zmin)/m;
f.write("%ff,%ff,%ff," % (cx-xpan/2.0,cy-ypan/2.0,cz-zpan/2.0));
f.write("};\n");
f.write("unsigned short %s_inds[]={"%objname);
for x in me.faces:
f.write("%d,%d,%d,%d," % (x.v[0].index,x.v[1].index,x.v[2].index,x.v[3].index));
f.write("};\n");
f.write("meshdata %s_mesh={"%objname);
f.write("%d,%s_verts,%d,%s_inds,0,0,0,0,0};\n"%( len(me.verts),objname,len(me.faces)*4,objname ));
Fácil, no?
De postre un wipeout en 32kb: el loco megabus
Record: post más antiguo
7.27.2006
Se nota lo del euro
Yo ya sé donde voy a echar mi currículum, ¿y tú? ¿vas a buscar trabajos en infojobs pudiendo estar de funcionario sin opositar?
7.26.2006
gimp para aventuras gráficas
7.24.2006
Trabajo: capítulo I, conclusión
El pasado lunes tuve una entrevista en GMV y creo que está bien hacer un pequeño resumen de lo que pasó, sobretodo cara a quien lea esto y tenga que enfrentarse a una entrevista.
La entrevista fue bien, esto es, yo estuve tranquilo y conté todo lo que tenía que contar. Primero me hicieron una entrevista técnica y posteriormente la típica de RRHH, pero esta vez por videoconferencia.
En la entrevista técnica me hicieron las típicas preguntas:
- repaso del currículum
- ronda de "estarías dispuesto a..." [ quedarte más horas | hacer cosas a bajo nivel | etc]
- ronda de "sabrías hacer ..."
- en la carrera qué es lo que más/menos te gustó y porqué.
- inglés
Para terminar me hicieron colocar en el orden que yo quisiera las siguientes palabras: perfección, trabajo ,eficiencia y otra que no recuerdo :P. Curiosa pregunta.
La entrevista de RRHH, aún más típica:
- repaso de currículum, por qué desjaste tal y cual trabajo
- especial atención a la carrera: asignaturas que más/menos te gustaron, definir lo que hiciste en el proyecto fin de carrera incluyendo metodología y tecnologías ( muy incisivo en lenguahjes de programación y SSOO, sobretodo linux)
- tienes pensado seguir estudiando? qué?
- cómo te definirías, qué mejorarías de ti
- has trabajado en trabajo en grupo, cuándo y cómo.
- estarías dispuesto a irte fuera
- qué tal ha ido la entrevista?
- inglés, escrito y conversación.
Una de las preguntas que hacen muchas veces y que es difícil de responder es: por qué crees que te mereces más el puesto que otro?.
En mi caso hubo partes un poco "tensas", no en la parte técnica, en la que yo di hasta donde podía dar, esto es, a nivel de programación/electrónica sé lo que sé y a nivel de autonomía en el trabajo puedo hacer lo que puedo hacer. Sin embargo en la entrevista de RRHH hubo almenos dos momentos difíciles: me preguntó que asignatura me había gustado menos, respondí que economía, asignaturas de sociedad, sin embargo quedé claro que me habían gustado a pesar que habían sido las que menos. Más adelante me preguntó que si quería seguir estudiando, a lo que respondí que sí y le dije que querría estudiar algo que no tuviera mucho que ver con la tecnología, por aquello de cambiar. Entonces me dijo que eso era una contradicción... momento curioso. El otro momentazo fue cuando le dije que había desarrollado el última PFC bajo pocketpc, entonces me preguntó que si usando linux y windows. Le expliqué que pocketpc es una plataforma que trabaja bajo windows mobile y las herramientas de desarrollo lógicamente eran bajo windows. Ella respondió "ah!, lo siento" como si yo hubiera echado en cara que no supiera eso (o eso me pareció), lo más lejos de mi intención.
El resultado... el que esperaba. A pesar de que el puesto de trabajo me parecía muy interesante, me gustaba y creo que encajaría muy bien, la sensación de la entrevista no fue buena, no en cuento al trato con ellos, que creo que fue positivo, si no para obtener el puesto. Sigue rascando.
7.22.2006
OMEPET S.L.
Otra de las cosas que me ha gustado es que colaboran con la universidad, proponiendo prácticas y proyectos fin de carrera muy interesantes. Entre los proyectos, existe uno de kiosko de distribución de contenidos para móviles. A tenor de los datos sobre las descargas de juegos para móviles, según la EDGE de Julio "solo" un 5% de usuarios de móviles descargan juegos y algunos de los entrevistados en ese mismo número hacen referencia a los medios de distribución, este podría ser un método diferente de distribución por experimentar.
Sin embargo, lo mejor de todo, es que se han dado a conocer gracias a su talento, seguro sin necesidad de invertir demasiado dinero. Han salido en TV, radio y prensa, además de por las webs y blogs del mundillo.
Pues nada, a jugar a la insulta de don sancho.
7.21.2006
Hola mundo genético
Después de leer en planet stratos dos (uno y dos) hola mundo no podía dejar pasar la oportunidad para poner uno que me ha llamado la atención. Se trata de un hola mundo con algortimos genéticos.
En la misma web se pueden encontrar traducciones de artículos relacioandos con la IA, muy recomendables. Personalmente, uno de los que más me ha gustado es este sobre la IA del quake basada en máquinas de estados finitos. A hilo, otro artículo que he leído en designostic sobre la IA que está por venir.
7.18.2006
Diseño de Juegos para Programadores
Muy recomendables, con cosas curiosas, como el uso de MS project, que pensé que nunca lo vería funcionando en ninguna parte. Espero que detrás de la foto haya todo un proyecto y que no haya servido como foto-recurso.
7.17.2006
Trabajo: capítulo I
Aún recuerdo la prueba de selección de deloitte con cierto agridulce ya que además de ser la primera, fue un cúmulo de sorpresas. Tambien he pasado por tecsidel, esta vez era para unas pruebas psicotécnicas y tecnológicas para una beca en la que finalmente ni me llamaron, lo cual no me extraña, ya que salí cabreado (conmigo mismo, *ejem*). Buen sabor de boca me quedan en mis 3 entrevistas en TID( y 2), dos de ellas para una beca (me llamaron para una tercera pero ya estaba trabajando) y otra más a través de TCPSI, ya con fines laborales serios (nada de becario). Finalmente hace cosa de dos meses, quizás más, me llamaron para otra entrevista, en una empresa formada por dos personas que se dedicaba al I+D. De esa entrevista no he comentado nada aquí y aunque para mi fue muy bien (me sentí agusto), para ellos no debió ser tan buena porque no me llamaron. AH! y otra en cap gemini en el rollo ese que montan en industriales todos los años (FIBEST).
Resumen: deloitte, TIDx3, tecsidel, TVCYL, la empresa de i+d y capgemini. Total 8 entrevistas, "superadas" 1 :), menudo ratio más malo.
Hace cosa de una semana recibía una llamada de GMV madrid, intuyo que de RRHH, diciéndome que habían recibido mi CV a través de infojobs. Me hicieron unas preguntas, imagino que con triple sentido, los de RRHH nunca sabes lo que quieren saber, con lo cual me limité a responder la verdad, así nunca me confundo. Lo que me preguntaron fueron las cosas que más o menos te preguntan siempre, cosas que has puesto en el currículum y las que no has puesto pero que quieren saber: por qué dejaste los trabajos, cuando comenzaste la carrera, cual fueron los pfc's de las carreras, qué tecnologías estaban implicadas en ellos... etc. Mañana tengo la entrevista, supongo, técnica. En principio la empresa me atrae bastante, no solo por lo que se puede leer en su página web, si no por algunas de las conferencias a las que he ido durante mi estancia en la universidad.
Asi que mañana me enfundaré el traje, cosa que me desagrada ligeramente. En otras entrevistas he ido vestido normal, como voy siempre, que es como si consigo el trabajo iré en un futuro. Me parece que si voy así peco de hipócrita, aunque hay una regla no escrita que dice que tienes que ir bien vestido, psé, cosas de esta sociedad de apariencias. A pesar de ceder en este aspecto, a lo que no voy a renunciar es a ser sincero en la entrevista, no tengo problema en decir que no sé hacer y qué se hacer bien, es mejor no llevarse a engaños.
Mañana el desenlace. Más información en próximos capítulos :)
7.15.2006
Usando filtrado de señal en videojuegos
De las cosas que más me gustan es poder aplicar lo que he aprendido a situaciones para las cuales no estaban aplicadas. Cuando estudias electricidad te enseñan lo que es una resistencia, lo que es un condensador, una bobina, los mezclan en ciucuitos de mil maneras y te muestran las ondas que se producen en cada uno de los elementos.
Por otro lado, en los típicos tutoriales de programación gráfica, en aquellos que te enseñan como recoger desde tu programa las pulsaciones de teclado y aplicarlas a la rotación de un cubo. Para rotar un cubo fuciona bien, pero cuando te pones a aplicarlo al juego de naves que estás programando funciona no demasiado bien, hay discontinuidades y no se parece nada a como funciona en los videojuegos "de verdad".
Y qué tiene que ver una cosa con otra? volviendo al tema de los circuitos, el caso habitual era intriducir en el cirucito una tensión en forma de salto para ver como se comportaba el circuito. En la siguiente figura se muestra el comportamiento para diferentes valores de los componentes (arriba la entrada, abajo la salida):
(fuente figura)
Este tipo de filtros se puede aplicar a la entrada de teclado o al movimiento de un objeto para hacerlo más suave.
Por ejemplo, queremos que un objeto se desplace a una velocidad V, lo que se suele hacer es:
obj->vel = V;
obj->pos += obj->vel*delta;
Pero imaginemos que se quiere hacer que acelere suavemente: Se puede, usando un filtro de orden 1:
obj->targetVel = V;
obj->vel += (obj->targetVel - obj->vel)*cte;
obj->pos += obj->vel*delta;
De forma que si falta mucho para llegar a esa velocidad, lo hará más rápido que si falta poco para llegar. Este sería el caso "overdamped response" de la figura. La constante es un factor que indica la velocidad con la cual llegará a la velocidad deseada o en otras palabras, indica la frecuencia de corte del filtro.
Pero la cosa no queda ahí, imaginemos una nave que va a cierta altura del suelo, pilla un obstáculo, se levanta y después cae lentamente y pega unos cuantos botes más antes de estabilizarse. En este caso podemos usar un filtro de orden 2 con la coordenada Z (la que indica la altura) de la nave. En musicdsp.org se pueden conseguir montones de filtros de orden 2, en este caso he tomado el siguiente:
float zfilter(float in)
{
static float buf0 = 0.0f;
static float buf1 = 0.0f;
const float fb = 2.0f;
const float f = 0.1f;
buf0 = buf0 + f * (in - buf0 + fb * (buf0 - buf1));
buf1 = buf1 + f * (buf0 - buf1);
return buf1;
}
basta con hacer:
obj->targetzpos = TerrainHeight(obj->pos) + 3.0; //va a una altura de 3 metros sobre el suelo
obj->pos.z = zfilter(obj->targetzpos);
Variando los parámetros del filtro se puede hacer que responda más rápido a las variaciones o que oscile más. Ojo porque para ciertos valores puede hacer que la salida sea inestable.
Conclusión, es posible usar los filtros para filtrar una entrada de salto, como es presionar una teclar o hacer que los movimientos de un objeto sean más suaves y solo aplicando unas ecuaciones muy simples.
7.12.2006
Premios desarrollador_ES
Es una gran noticia para la gente que se dedica a esto, en particular para los que los que empiezan que tan cercanos me quedan. Muchas suerte a todos ellos y muchas gracias a la gente que se ha movido para que estos premios salgan adelante.
Decir que la noticia ha llegado:
- barrapunto (los comentarios positivos, como siempre)
- vidaextra
- ojgames (de primera mano)
7.10.2006
Sintetizador de música
- El artículo: 4k synth
Espero que a alguien le resulte interesante.
7.07.2006
7.06.2006
Nos vamos a sanfermines
Por otro lado, una imagencilla nueva:
Es la misma escena de siempre (envmap+fresnel+ao+difusse), pero esta vez con un poco de color. Esta semana he estado re-implementando un poco el minimotor para poder usar cubemaps de forma transparente.
7.02.2006
Dónde está la gente de Valladolid
Y me explico de nuevo, no estoy diciendo que seamos más lerdos, ni más tontos, nada de eso, pero me gustaría saber dónde se mete la gente que hace cosas, que programa, que monta charlas y conferencias, etc.
De las personas que conozco, las que más se mueven son la gente de soleup montando talleres, charlas, distros e incluso empresas. También dentro del planet augcyl hay gente que hace (y dice) cosas interesantes, como por ejemplo Diego Calleja, David Grajal o Wonder (ya fuera del planet), pero no conozco nadie más (un respecto de los que me haya olvidado o no conozca) que se mueva en ese entorno.
Imagino que habrá gente de Valladolid (y CyL) que me lea, sobretodo por el planet augcyl, y me gustaría saber si hay gente que se mueva, que programe algo, que le interese y haga cosas. Ya no pregunto nisiquiera le interesa la programación gráfica (oh!)
o el 3D (arg!)
Estaría bien tener un banco de asociaciones/gente que haga cosas en valladolid/CyL.
6.29.2006
Más pruebas: envmap + fresnel + proctex
Envmap sin fresnel:
Envmap con fresnel:
La textura que hace las veces de entorno es una textura procedural que simula un piso de azulejos que he hecho con otros propósitos:
La primera aproximación:
Un poco de color:
Un poco de perlin de fondo para dar "realismo":
En la textura guardo el mapa de alturas en el canal alpha para luego hacer bumpmap o generar el normal map en un futuro.
El código que genera la textura es el siguiente:
GEN_BEGIN(Test6)
PIXEL()
{
float step = 1.666f;
float width = 0.2;
float mult = 10;
float xx = mult*float(s)/256.0;
float yy = mult*float(t)/256.0;
float n ;
float n3 = TilePerlinNoise2D(xx,yy,6,mult,1.1);
float n2;
float lim = 0.1;
n = mod(step,xx);
float width2 = 1.0-width + width/2.0;
n = smoothstep(1.0-width,width2,n) - smoothstep(width2,1.0f,n);
n2 = mod(step,yy);
n2 = smoothstep(1.0-width,width2,n2) - smoothstep(width2,1.0,n2);
float f = clamp(0,1,n+n2); //smoothstep(0.9,1,0.5*n+0.5*n2);
//n3 = 0;
float bump = f;
f = 0.7*f + 0.3*fabs(n3);//*(1-f);
int e = int((xx+width/2.0)/step) + int((yy+width/2.0)/step);
//e = 2;
switch(e%3)
{
case 0:
c = RGBA(98,174,115);break;
case 1:
c = RGBA(252,249,141);break;
case 2:
c = RGBA(255,255,255);break;
}
c = (1.0-f)*c;
c[3] = bump*255;
}
GEN_END(Test6)
y las macros que generan la clase que después será instanciada por el manager de texturas:
#define GEN_BEGIN(name) class Texture##name: public GenTexture { public: ~Texture##name(){if(DEBUG_TEX) this->Write(#name##".tga"); } Texture##name(int _x,int _y):GenTexture(_x,_y){ format = T_RGBA;
#define INIT() Setup(); } void Setup(){
#define PIXEL() /*Gen();*/} RGBA& PixelFunc(int s,int t) { static RGBA c; float x = -1.0 + 2.0*(float)s/(float)TextureData::x; float y = -1.0 + 2.0*(float)t/(float)TextureData::y; /*polares*/ Vector2f v(x,y); float r = vectorDist(v); float phi= atan2((float)y,(float)x);
#define GEN_END(name) return c;} Palete paleta;};
6.22.2006
Buscando trabajo... pero así no
No me parece mal que me llamen para hacer procesos de selección, es más, está bien que piensen en ti, te hace sentir mejor. Pero señores, así no. Para empezar yo no he enviado mi currículum a accenture, pero pasando el pequeño detalle, cuando me han llamado nisiquiera me han dicho para que era la prueba de selección. Han preguntado si era Javier Santana, he dicho que sí (jaja), y a continuación me ha dicho que el miércoles que viene tienen una prueba de selección, que estaban interesandos en que me pasara... ¿pero? ¿qué?.
Si tuvieran un poco de sentido común me hubieran dicho para qué era el proceso, dónde, cuando, cómo, por qué, de qué me conocen, para qué proyecto, qué es lo que les interesa de mi, sueldo, etc, etc.Creo que se deben dar cuenta de que no me están haciendo ningún favor invitándome a ir a un proceso de selección. Imagino que estarán acostumbrados al típico chaval que ha terminado sus estudios, deseando encontrar un trabajo, pero esa NO es la forma de hacer las cosas.
Podría preguntar yo pero es que yo no soy el que está buscando a accenture, son ellos los que me buscan a mi y por tanto tienen que su empresa me resulte atractiva, encima para ir a un proceso de selección... jajaja, sí, para entrar en la élite. SOY YO EL QUE ELIJO EMPRESA SEÑORES, Y LO HAGO PORQUE PUEDO. Queda claro ¿no?. Suena prepotente y tal vez lo sea, pero hay puestos de trabajo para dar y tomar y además, hay que tener en cuenta que, además te haber estado 7 años de mi vida buscando la mejor forma de hacer las cosas, he estado otro par de ellos intentando aplicar lo que he encontrado a la vida real, cosa que no pueden decir muchas personas de mi edad.
Voy a seguir dándoles largas hasta que me dejen de llamar o me pregunten qué pasa. De momento les he dicho que estoy de vacaciones hasta el 15 de julio.
6.21.2006
No renuevan licencias de emisión a la COPE en cataluña
Cuántas cadenas de radio tienen atribuídas las frecuencias que usan? radio nacional y cuántas más? Por le general ocupas una frecuencia, si no te dan el toque, te quedas en ella, si te lo dan, esperas a que te den un ultimatum y la cambias a otra. Por eso puede que alguna vez hayais escuchado onda cero a las 23 y a las 8 de la mañana punto radio (caso posiblemente ficticio). Además que luego es un choteo de mucho cuidado porque aunque una frecuencia se le haya asignado a una entidad, luego la usan otras, etc. Basta con echar un vistazo las atribuciones de frecuencia en castilla y león para la FM. Por ejemplo, punta radio aranda de duero emite en 93.8FM, pero, umh, no veo la asignación de frecuencia en ninguna parte... o buscad la asignación de radio maría en valladolid (100.8) o mortal FM (90.2).
En este país las cosas funcionan así.
"Periodismo" al poder
Las razones de no haber puesto la integral seguramente sean varias... no ha preguntado la integral (porque no tiene ni idea de qué es), no ha puesto la integral porque su jefe le ha dicho que eso hará que la gente no lea su artículo o es posible que no sepa escribir una integral en su editor, jaja.
Otras lecturas: malaprensa
Los videojuegos españoles vistos por españoles
Recordar que Nae es diseñador en Digital Legends, esribe en ojgames, anaitgames y además es un tío que sabe muchísimo de videojuegos, sobretodo a nivel nacional. En persona es una espectáculo.
En los comentarios he leído que exelweiss tiene un blog lo cual ha sido unra grata sorpresa.
6.19.2006
Estudio de sexismo en videojuegos
Las joyitas que se pueden leer son muchas y muy buenas, empezando por las que pone Flush en su bitácora (la de los lemmings, pag. 434 es para llorar) y terminando por la que comentan en el AOEII en la que el investigador o investigadora (JAJAJA!), yo me decanto por investigadora, argumenta que es sexista debido a que para generar más ejércitos no se hace referencia al amor y al cuidado de los hijos:
"""
Aunque hay que hacer construcciones, recoger alimentos, cultivar, comerciar...,
no hay ninguna referencia a amarse, reproducirse, cuidar de los hijos e hijas,
educarlos..., como medio de conseguir una civilización.
"""
Ya me imagino llevando a las madres a cuidar a los hijos mientras se quedan huerfanos . No se han dado cuenta de que es un videojuego?
Increible. Solo espero que este libro no se haya pagado con fondos públicos y que esos investigadores e investigadoras no vuelvan a investigar, por favor.
6.17.2006
Tomb raider
Para mi tomb raider es el mejor juego de la historia, es todo lo que podía esperar de un videojuego, es el videojuego que yo hubiera creado. Teniendo en cuenta que siempre me gustaron las películas de indiana jones era de esperar. En mi habitación aún tengo posters de Tomb Raider, uno junto a la vista de la ciudad de final fantasy 7 y otro pegando al de sega rally.
Pero la cosa no queda ahí, mi pc se llama qualopec, mi pocketpc qualopy, mi mail es qualopec en gmail.com, el fondo de pantalla de mi PC de sobremesa tengo a lara tirándose de cabeza a la primera piscina de la segunda pantalla (donde aparece el oso), también tengo la versión para pocketpc, escucho la música de vez en cuando (una joya), tengo todos los game40 en los que hablaban de tomb raider, snif.
Una lástima que se deteriorara tanto con el paso del tiempo. Me ha alegrado ver algunas pantallas de aquel mítico tomb raider. ains... :)
EDIT: *Parte* de la música se puede descargar de croftinc y no solo la de TR1.
(*) los blogs se están conviertiendo en el marca, poco texto, muy sensacionalista y bien mascadito, además de muchas imágenes y videos.
6.16.2006
Pruebas con AO
No había trabajado todavía con GLSL, el lenguaje de OpenGL para shaders, y me ha sorprendido la facilidad y la potencia para hacer todo tipo de cosas, las que antes se hacían sin shaders y las que ahora son posibles gracias a los shaders.
En un par de días, miré la referencia de GLSL (pdf) que por cierto tiene agradecimientos a un español, y programé un sistema muy simple que me permite trabajar con shaders.
Lo primero que programé es la generación de mallas; además de la subdivisión y smootheado de las mismas, he creado un sistema de extrusión y generación por revolución. Creo que además añadiré algo que permita hacer un dupliverts a lo largo de un spline y que el sistema de extrusión permita hacerlo también usando un spline.
Con una textura basada en perlin, un cuerpo de revolución y un cubo he creado la escena de la derecha. EL cubo tiene un toon shader muy simple y el cuerpo de revolución iluminación direccional por pixel. El suelo usa el render habitual de OpenGL (el shader program 0 :).
Subdividiendo mucho las mallas y usando un shader adecuado se pueden conseguir imágenes como la de la derecha. Es interesante ver como puedes ajustar la iluminación como te de la gana, por ejemplo en la imagen quito la componente especular (no me gusta la luz especular!) y la atenuación que meto en función de la distancia la varío como quiero :).
Ya que estaba me he puesto a jugar un poco con una aproximación de Ambient oclussion, pero las cosas a la primera nunca funcionan bien:
Otras pruebecillas, algo mejor:
Subdividiendo algo más el suelo (la componente de AO se calcula por vértice):
Ahora estoy probando la generación de unos arbolitos con unos perlin... :)
Gracias a iq por la información de su web acerca de su demosystem.
6.10.2006
Y ahora ¿qué?
Ayer hice la presentación del PFC y en este caso para mi no fue el trámite que hay que pasar para obtener el títutlo, fue una presentación de mi trabajo. Creo que la presentaión fue amena y asequible, duró unos 40 minutos y después de la presentación los comentarios del tribunal fueron alentadores, con tribunales así da gusto.
Como curiosidades decir que no me puse nervioso en ningún momento (se van notando las tablas) y que mi abuela le quitó el diábolo a uno de esos piritis que tienen, además de diábolos, combas, pelotas y esas cosas, y comenzó a lanzarlo al aire mientras el rastas lo flipaba XD.
Al final, una matrícula :)