Bennu Game Development

Jueves, 26 de noviembre de 2009 por

¿Quieres programar tus propios juegos?

La solución está en Bennu.

bennu

Bennu es un lenguaje de secuencias de comandos desarrollada para a hacer juegos. Está diseñado como una herramienta sencilla que se puede utilizar para desarrollar tus propios juegos, y que además proporciona soluciones fáciles para las operaciones de sonido y gráficos.

Además puede trabajar bajo cualquier sistema operativo: Windows, Linux, GP2X Wiz...es por eso que resulta sencillo programar y usar tu propio juego en el PC o la consola. El desarrollo de los juegos se puede hacer en 2D e incluso en 3D, reemplazando la plataforma 2D con otra plataforma OpenGL 3D.

Es totalmente gratuito y disponen de un foro dónde intercambiar opiniones con otros desarroladores de código.

Más información en www.bennugd.org/

surfing the wave

Jueves, 5 de noviembre de 2009 por

Después de conseguir ser invitado a google wave (gracias luis) he estado mirando las posibilidades de desarrollo que ofrece este sistema. Puedes hacer dos cosas meter wave en tu página (de momento el api esta en desarrollo...) o meter código en el wave. Si te vas por la segunda opción puedes crear un gadget o un robot. Los robots son participantes artificiales en la conversación, hay que programarlos en python (sí, en python) o en java, en la plataforma google engine. Esto hace que sean un desarrollo que requiere su tiempo. Los gadget al contrario consisten sólo en un archivo .xml que montas en un servidor tuyo.
El contenedor de gadget básico es el siguiente.

<?xml version="1.0" encoding="UTF-8" ?>

<Module>
  <ModulePrefs title="Hello Wave">
    <Require feature="wave" />
  </ModulePrefs>
  <Content type="html">
    <![CDATA[
       Hello, Wave!
    ]]>

  </Content>
</Module>

Si sustituimos la línea Hello,wave por cualquier codigo html/javascript tendremos un wave gadget funcional.
yo por ejemplo he cogido un código de un juego de barcos en javascript (http://javascript.internet.com/games/battleship.html) y lo he metido en esa sección. Guardamos el archivo xml y lo he colocado en http://2geek2curious.com/jorge/barcos.xml. Proporcionamos esta dirección a wave insertando un gadget por dirección y tenemos nuestro gadget en google wave. Podeis probar a meterlo en vuestra cuenta de wave y me contáis...

gadgets para google wave

gadgets para google wave

Geany: el editor pequeño y rápido de GTK

Martes, 13 de octubre de 2009 por

Hace unos días descubrí Geany, un editor basado en GTK que tiene algunas cosas interesantes. A mí me ha gustado mucho que tiene una barra lateral con todos los símbolos (clases, funciones, variables...) siempre útil, característica de los IDEs que se precien. La característica de autocompletado también está presente, lo que hace  más cómodo programar, ya que incluso que sugiere los prototipos de funciones.

Si bien tiene características de entorno de desarrollo como Eclipse, por ejemplo, tarda bastante menos en iniciarse, más o menos lo mismo que el Bloc de notas, Gedit o Kate. La búsqueda en archivos es muy rápida, dado que está basada en el comando grep, mucho más potente. Reconoce sintaxis de todos los lenguajes de programación más usados y de los no tan usados, incluso la de Doxygen.

Así pues, Geany se presenta como el paso intermedio entre un simple editor de texto con resaltado de sintaxis y los entornos de desarrollos más complejos y pesados. Puede que os guste, o puede que no, pero recomiendo al menos probarlo (disponible en repositorios de debian). Visitad la página y a descargar!

Actualización 14/10/09: Se me olvidaba poner algún link para cambiar los esquemas de color en el resaltado de sintaxis: Tenéis algunos aquí y una página web donde crearos los vuestros.

Los lenguajes de programación más populares

Miércoles, 30 de septiembre de 2009 por

En la página web de TIOBE (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) podemos encontrar una comparativa de la populardiad de los lenguajes más usados. En esta página podemos ver la evolución del uso los lenguajes comparados con los valores del año pasado o la progresión más detallada en forma de gráficos. Personalmente me sigue sorprendiendo que java sea uno de los lenguajes más usados... (si alguien conoce otra aplicación de distribución masiva en java que no sea matlab me gustaría conocerla...). La estadística no tiene desperdicio, incluyendo que el PHP sea el tercer lenguaje más usado.

Programming Language Position
Sep 2009
Position
Sep 2005
Position
Sep 1999
Position
Sep 1984
Java 1 1 4 -
C 2 2 1 1
PHP 3 5 - -
C++ 4 3 2 11
(Visual) Basic 5 6 3 4
Perl 6 4 11 -
C# 7 7 22 -
Python 8 8 26 -
JavaScript 9 9 21 -
Ruby 10 25 - -

Backtraces en C

Jueves, 7 de mayo de 2009 por

El otro día me entró la curiosidad de cómo podía saber al ejecutar un programa donde se producía un segmentation fault, por ejemplo, que es bastante común en mi caso :-) con ayuda de algún compañero de trabajo encontramos la página de GNU en la que se refieren a los Backtraces.

Para usarlo, hay que poner un #include <execinfo.h> y las opciones -g y -rdynamic, si utilizas el compilador y el linker de GNU. De esta manera se guardan en el ejecutable todos los símbolos. Aumenta el tamaño de los ejecutables, con lo que conviene sólo usarlo mientras se hacen pruebas. Esta librería tiene tres funciones:

  • int backtrace (void **buffer, int size): Rellena buffer con los size punteros obtenidos del backtrace del thread en ejecución. Devuelve el número de punteros devueltos, menor o igual que size.
  • char ** backtrace_symbols (void *const *buffer, int size): Rellena buffer con los nombres (símbolos) del backtrace, hasta un máximo de size.
  • void backtrace_symbols_fd (void *const *buffer, int size, int fd): Hace la misma operación que la anterior, pero devolviendo los strings al fichero fd, en lugar de al buffer de punteros.

Ejemplo de función de uso (de la página de GNU):

     print_trace (void)
     {
         void *array[10];
         size_t size;
         char **strings;
         size_t i;

         size = backtrace (array, 10);
         strings = backtrace_symbols (array, size);

         printf ("Obtained %zd stack frames.\n", size);

         for (i = 0; i < size; i++)
            printf ("%s\n", strings[i]);

         free (strings);
     }

Estas funciones sólo obtienen los datos correspondientes al thread que llama a estas funciones. Si por ejemplo quieres ver las funciones que se llaman en un segmentation fault, deberías cazar la señal SIGSEGV con la función signal de signal.h y llamar a una función que llame a las de execinfo.h.

Enlace: Backtraces, GNU library