@ agnasg

agnasg


Una adorable escalera

23-02-2016 4:55 AM

Dediqué 4 horas a hacer esta lovely staircase y mi nuevo sistema de collision detection se niega a manejarla correctamente. El personaje se queda atascascado.
lovely-staircase
Estoy usando un diferente sistema de collision detection porque el builting de irrlicht sucks. De hecho si estudias los foros descubriras que eventualmente alguien saldrá a decir que debes usar un sistema fisico/ sistema de collision detection diferente porque el de irrlicht no sirve. Ahora estoy usando funcollision (archivo completo, con ejemplos y source: http://pyirrlicht.googlecode.com/files/FunCollision_v1.0.zip) que tiene la ventaja de estar libre de la vibración que tiene el interno de irrlicht. Collision detection ha sido un problema en este motor, de hecho tiene su propio segmento de tiempo en el timegraph del proyecto:

timegraph

joomla document.formvalidator NULL isValid not working

14-02-2016 8:09 AM

Este es un error bien complicado de resolver en Joomla 3.4.x porque en google solo aparecen soluciones a viejos problemas que ocasionaban el mismo síntoma.
Esta falla puede generar múltiples errores, incluyendo que el “Save” (“grabar”) no funcione.
El problema puede ser ocasionado por un template desarrollado para 2.x o por un desarrollador incauto que insiste en cargar jquery incluído en template/name/js. Ya no es necesario cargar jquery dado que viene como parte del sistema (está en /media/system/js). En las nuevas versiones jquery se carga especificando algo como esto

JHtml::_('jquery.framework');

Si el jquery no es el correcto se genera el error.

Bryan Cranston cambiando un bombillo

02-02-2016 8:25 AM

Anoche me sentí como Bryan Cranston cambiando un bombillo.  La actividad en mi lista decía:

01-02-16 · (P) Variables handling (cont’d)

La (P) significa que es una task pendiente. Se refiere al manejo de variables para el control del flujo en el script de dialogos de los npcs. Está desde el 29-01 apareciendo sin misericordia. El problema es que esto implica corregir una y otra vez el parser. Lo que genera que esté cargando una y otra vez el juego. Pero me dí cuenta que ahora estaba cargando más lentamente que nunca. Además el fps estaba bajando de 126 a 62 cuando paso al lado de un npc. Me acordé que estuve  modificando la librería de irrlicht, para lo que generé un nuevo dll con un tamaño de 5mb, el original tenía 2mb, esto resolvió el problema del frame rate, pero todavía al pasar al lado de un npc hay un descenso significativo del fps. Así que comencé a revisar todo el game loop para ver si había algo inusual cuando nos acercamos a un npc (claro que lo hay). Así aquí estaba en eso cuando debería estar implementando el manejo de variables, y ahora hoy amaneció otra vez!

02-02-16 · (P) Variables handling (cont’d)

Bryan Cranston cambiando un bombillo:

¿Quieres perder el tiempo? Optimiza antes de tiempo

25-01-2016 7:14 AM

¿Quieres perder el tiempo?  Porque así se pierde el tiempo. Algunos programadores (yo incluído) tenemos la tendencia a hacer sutiles cambios al código, bien por optimización o por elegancia.

psyblast utiliza irrlicht, que como todo motor/framework viene con su propia libreria que intenta sustituir a la Standard template library. Qt también hace lo mismo con resultados mixtos. psyblast tiene soporte multilenguaje por lo que los textos son utf8. Desde hace años yo hago lo siguiente para pasar de iso-8859-1 (o latin 1 o lo que sea) a utf8:

std::string stext="Un string soñado con un hálito de común sin sentido amén de sin razón"
wchar_t wtmpbuf[2048];
mbstowcs (wtmpbuf, stext.c_str(), 2048);

se me ocurrió optimizarlo a:

wchar_t wp = stringw(stext.c_str()).c_str());

donde stringw es un typedef a core::irr::string. Profundo en los cambios que estuve haciéndo en el engine quedó ese cambio, inocente y sin ser testeado suficientemente. El viernes descubrí que los paneles de conversación no estaban desplegando los acentos y las ñ’s. Luego de revisar el font, SQLite, todas las funciones involucradas, finalmente como un acto desesperado se me ocurrió que quizás stringw () tenía algo que ver… 4 horas después. ¿Quieres perder el tiempo?  Porque así se pierde el tiempo. La ingeniería de software tiene toda una serie de reglas para evitar que esto pase… famosas últimas reglas.