A Coder’s Corner

Blog de tecnologia y programación

Archive for November, 2005

Lua + LuaBind = Perfecta Combinación

Posted by gfaraj on November 6, 2005

Nota: Este articulo usa Lua 5.0 y Luabind 0.7. Puede que no compile con las versiones mas recientes de estos productos.

Lua es un “embedded language”. Es usado para incorporar scripting en ciertas aplicaciones. Hay un API para C que se usa para registrar funciones de C en el interpretador de Lua. Asi que en los scripts de Lua se pueden usar funciones que han escrito en C. Lo pueden bajar de aqui. Luabind es un API para C++ que encapsula más limpiamente la registración de funciones y agrega registración de clases, entre muchas otras cosas (como soporte para templates, sobrecarga de operadores, etc). Aqui les va mi primera aplicación de scripting con Lua:

#pragma comment(lib, "lua50.lib")
#pragma comment(lib, "luabind07.lib")

extern "C"
{
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
}

#include <luabind/luabind.hpp>
#include <iostream>

int f()
{
    std::cout << "f()" << std::endl;
    return 92;
}

struct A
{
    A() { std::cout << "A()" << std::endl; }
    ~A() { std::cout << "~A()" << std::endl; }

    void blah() { std::cout << "A::blah" << std::endl; }
};

int main()
{
    lua_State* L = lua_open(); // abrimos un interpretador
    luaopen_base(L);           // abrimos la biblioteca base
    luaopen_math(L);           // abrimos la biblioteca de mate
    luabind::open(L);          // requerido para luabind

    using namespace luabind;

    // ahora registramos lo que querramos
    module(L)
        [
            // registramos la clase A
            class_<A>("A")
                // registramos su constructor
                .def(constructor<>())
                // registramos su funcion blah()
                .def("blah", &A::blah)
            ,
            // registramos la funcion global f
            def("f", &f)
        ];

    // ejecutamos un script, llamado lua_test.lua
    lua_dofile(L, "lua_test.lua");

    lua_close(L);
    return 0;
}

El archivo lua_test.lua:

x = f()
print(x)
some_a = A()
some_a:blah()

La salida de este programa es:

Hola!
92
A()
A::blah()
~A()

Como podrán ver, es muy sencillo y practico. Me gusta bastante. Les recomiendo probarlo y usarlo cuando necesiten algo similar en sus aplicaciones.

Posted in C++ | 8 Comments »

Austin Game Conference

Posted by gfaraj on November 5, 2005

Inauguro mi blog con este artículo informativo sobre la Austin Game Conference que asistí los dias 27 y 28 de Octubre en la ciudad de Austin, Texas.

Estas fueron las sesiones a las que asisti:

1. Alternative Reality Games – Experimental Social Structures for MMO’s
La persona que hablo participo en Juegos de realidad alterna como www.ilovebees.com (que tenía relación con el lanzamiento de Halo2), www.lastcallpoker.com, entre otros. Su website es www.42entertainment.com.

Los juegos de realidad alterna son los que te hacen usar el mundo real para jugar ademas del mundo virtual. Para ilovebees, conto la presentadora, hicieron alrededor de 40,000 llamadas a telefonos publicos alrededor de los Estados Unidos. Los que jugaron el juego tenían que escuchar instrucciones en las llamadas para seguir jugando. Claro que sería imposible que todos los que jugaran escucharan las llamadas, pero lo que pasa es que es un juego que se basa en comunidades. Hace que la gente coopere para llegar a una meta comun.

Son juegos muy interesantes, son para la gente que se mete al rollo del juego. El juego te puede dar pistas de varias maneras, como mandarte un email, mensajito al celular, una llamada a tu telefono, un anuncio en la radio, etc.

2. Xbox 360 Live Marketplace
Vimos lo que va a ser posible usando el Marketplace de Xbox 360. El Marketplace es un lugar donde el jugador puede bajar demos, trailers, contenido adicional de ciertos juegos y juegos clásicos. Estas cosas pueden ser gratis o pagadas, los juegos clásicos se podrá bajar un demo de cada uno gratis. Los juegos clásicos incluyen cosas como Robotron, Hexic, y otros que no me acuerdo ahorita. Yo lo veo como un “contra ataque” a lo de bajar juegos de Nintendo viejos en el Revolution. Claro, no se le compara poder jugar Hexic contra poder jugar Ocarina of Time jejeje, pero es algo que podria jalar gente (especialmente gente que juega mas ese tipo de juegos, que es mucha gente).

El nuevo Xbox Dashboard esta muy bueno. La interfase está excelente y creo que se puede ir de un juego al dashboard sin cerrar el juego. Se puede apagar y reiniciar la consola desde el dashboard, y como los controles son wireless no habra necesidad de levantarse del sofa para apagarlo! 😀 Las consolas anteriores no se habían enfocado mucho en hacer la interfase de la consola muy completa. El Xbox 360 presenta una interfase muy completa.

3. Next-Gen Graphics on Windows Vista Revealed
Se revela DirectX 10. Un cambio muy drástico desde DirectX 9. Solo va a poder correr en Vista, ni en XP ni en los anteriores. Le agregaron un elemento al pipeline: geometry shaders. Ademas de vertex y pixel shaders, ahora va a haber geometry shaders. Estos manipulan “primitives” (que puede ser una linea, un triangulo, etc) en vez de una sola vertice o un solo pixel. Los shaders tendran la opcion de generar vertices nuevos, en vez de solo tener una vertice de entrada y otra de saida, podran ser mas de una vertice de salida. Esto puede ayudar a hacer cosas creativas. El lenguaje de shaders sera HLSL (High-level Shader Language) y lo que entendi es que no se podra usar assembler directamente ahora. Esto es mejor porque si se usa un lenguaje de alto nivel, no habria que estar cambiando el codigo a cada rato.

Vista usara DirectX9 para dibujar todo, ya sean las ventanas, botones, etc.. Tengo entendido que ya no usaran GDI. DirectX ahora sera multi-tasking, para soportar varias aplicaciones usando DirectX al mismo tiempo (ya que Vista mismo va a estar usandolo).

4. Blending Character Animation and Physics in Next Gen Games
Esta presentacion fue de Havok. Hablaron de como usar animación en combinación con física y como debería reaccionar el personaje. Enseñaron unos demos muyyy buenos. Es un sistema muy avanzado de física para juegos, la verdad excelente. Fue una presentación más para promocionar Havok creo yo jeje.

5. Introduction to XNA Studio
XNA Studio es una herramienta que pretende mejorar la compilación de un juego, ya sea para Windows o para Xbox. La presentación fue muy abstracta ya que no tienen todavia definido como va a ser el Studio; si va a ser un plug-in para visual studio o si sera una herramienta totalmente aparte. No vi la gran diferencia de usar Visual Studio o usar XNA, pero veremos cuando anuncien algo mas concreto. Vimos algo sobre Visual Studio 2005 Team Server, que es una herramienta que ayuda bastante para desarrollar un producto en equipos. Tiene source control, project management, build automation y asset management. Muy interesante, especialmente para equipos grandes.

6. Increasing Agility of Your Development Time – Best Practices From Experts
Esta presentacion estuvo un poco aburrida :D. Es una presentación de BuildForge que es una herramienta que ayuda a la compilación de un proyecto. Ayuda a no tener que repetir las mismas cosas para cada proyecto. Podria ser muy util para compañias muy grandes..

7. Creating New Realities with Autodesk 3ds Max Software
Esta presentación estuvo muy buena. Estuvo el “technical artist” de Midway y nos enseñó modelos del juego Area-51 en 3dsmax 8. Vimos como usaba Max para aplicar animaciones de un personaje a otro sin mucha ciencia. Tambien estuvo una persona de Autodesk presentando nuevas características de la nueva version de 3ds. La verdad que yo no soy muy diestro con estas herramientas graficas asi que no se exactamente como se llama lo que estan haciendo. Creo que era “pelt mapping” y “unwrapping”. También vimos una nueva manera de animar personajes. Se pueden usar “Bezier curves” para animar, y cambiar a Quaternions y viceversa. Facilita el trabajo de los animadores.

8. Fun Meters for Games – The Ins and Outs of Measuring Player Experience
Discusión de las varias maneras de medir el nivel de la experiencia del jugador. Maneras comunes son las de usar polls y grabaciones de video de gente jugando para estudiar sus expresiones. Hay ciertas ventajas y desventajas de usar estas maneras de medidas. Pueden bajar la presentacion completa de aqui.

En conclusion, estuvo muy bueno e interesante. Aprendi mucho y me puso a pensar en bastantes cosas que se pueden hacer. Solo se necesita gente que quiera trabajar y un poco de $ (solo…!! jejeje).

Posted in Tecnologia | 1 Comment »