Eso es lo que me he tenido que decir ya un par de veces en el último mes en el trabajo. Resulta que he estado encargado del editor visual de código del proyecto (del que ya hablé antes) y la verdad es que me ha servido para aprender bastante de optimización. El control de edición ha sido creado desde un control de .Net básico (UserControl), y ha sido creado para soportar sintaxis coloreada e intellisense (esa ventanita tan molona que nos da sugerencias de qué poner) . El control ha funcionado perfectamente hasta que hemos llegado a empezar a probar en serio y empezamos a meterles archivos de uns 500 líneas. A partir de ahí ya se ralentizaba el editor. Al final tuve que modificar la rutina de cálculo de líneas a dibujar y dividirla en dos: Una para las líneas en pantalla (que necesita partir cadenas y hacer chorrocientas comprobaciones para saber qué color poner, aparte de meter tabulaciones en el código y medir longitud de cadenas) y otra para las que no se ven, que simplemente se limita a poner tabulaciones al principio y medir la longitud de la cadena, con el consiguiente ahorro de cálculo.
A las dos semanas un nuevo problema: Con archivos de 1800 líneas vuelve a ir lento. Toca optimizar otra vez. Esta vez el problema no fue del editor en sí, sino de una estructura de árbol auxiliar que se actualiza cada vez que se modifica la estructura del documento (teniendo en cuenta que el árbol contaba con unos 900 nodos, tardaba unos tres segundos en actualizarse), por lo que me las tuve que apañar y hacer que solamente actualizase los nodos que se habían modificado en vez de reescribir todo el árbol, con lo que en vez de redibujar 900 cadenas de texto solo dibujaba un par de ellas a pesar de tener que recorrerse casi todo el árbol.
Conclusión: Al principio cuando programas código lo haces de la manera que te parece más adecuada, pero no sabes hasta qué punto te va a llegar a funcionar como tú deseas. No piensas que tal vez la manera que tienes de hacer una búsqueda o de calcular un parámetro se puede hacer tal vez con uno poco más de código, pero que a la hora de ejecutarse reporta una gran velocidad de ejecución cuando se trata de datos grandes -puede que sea un pelín más costoso con pocos, pero lo importante viene en lo “gordo”-. Por lo que me he dado cuenta que es bueno hacer pruebas “bestias” sobre nuestro código para comprobar que soportará casos extremos aunque sean muy pero que muy raros.
Mucho tiempo se ha estado hablando del GPhone, el teléfono de Google, cuando la semana pasada por fin anunciaron la plataforma Android y la Open Handset Alliance, que no se trata sino de una plataforma abierta y libre para el desarrollo de aplicaciones de dispositivos móviles, en la que ya están asociadas empresas como LG, Motorola, Samsung, Telefónica, Intel, Nvidia, Marvel y otras tantas más. Se espera que a partir de mediados 2008 aparezcan los primeros terminales con la plataforma Android Instalada. Ya está disponible la primera versión del SDK, y según he podido ver en la librería de clases, básicamente nos dejan toquetear todo el teléfono y se pueden hacer bastantes cositas.
Y en contra de lo que opinan en error500, en que dicen que la plataforma no va a tener acogida y por eso Google ha tenido que anunciar un concurso de desarrollo en el que reparten 10 millones de dólares en premios, y además, teniendo en cuenta que próximamente aparecerá el Kit de desarrollo del iPhone. Personalmente, el iPhone es bonito, y tiene un interfaz muy intuitiva, pero es caro, cerrado, y personalmente, lo veo elitista. Sin embargo, con la plataforma abierta cualquiera puede hacer aplicaciones libres para el teléfono, puedes utilizarlo con cualquier aparato que lo lleve incorporado y no tienes que dejarte una pasta gansa en un teléfono si no quieres. Por otro lado, la iniciativa de Google es comprensible, yo lo veo como una estrategia clara para que al aparecer la plataforma haya bastantes aplicaciones de calidad para el dispositivo y la gente no se eche para atrás a la hora de elegir un terminal con Android por la falta de programas. La verdad es que me parece una buena idea y espero que tenga éxito. En el post anterior ya dije que me animaron a dar salida a rotor-O-scope, así que ya tengo proyecto para el concurso…
Por fin está la nueva web operativa. La antigua web de Cybernetik Design ha desaparecido, y la he convertido en Blog para poder llevar un ritmo de actualizaciones más dinámico y postear noticias que me parezcan interesantes con respecto al mundo del videojuego, programación y diseño que son tres de las áreas en las que estoy tocando continuamente debido al diseño de juegos indie.
También iré posteando detalles del desarrollo del proyecto que tenga entre manos, así como alguna curiosidad que tenga en la reserva de alguno de los proyectos anteriores y me parezca adecuado compartir con todos vosotros.
Por último aclararos que se sigue manteniendo la sección de descargas de los minijuegos que he realizado así como páginas de referencia para cada uno de ellos.
Bueno, un saludo y espero que disfrutéis con el contenido.