Gracias Gracias:  0
Resultados 1 al 3 de 3

Tema: Programando juegos con Irrlicht

  1. #1
    Miembro
    Fecha de ingreso
    Nov 2006
    Mensajes
    32

    Programando juegos con Irrlicht

    Viendo en el foro que somos muchos que estamos con la idea de programar un juego con un final un tanto decente, propongo que entre todos aprendamos y discutamos los temas con Irrlicht junto a un compilador de C++, ya sea CodeBlok, DevCpp o Visual C++ Express.
    Muchos participamos y aprendimos con el Tema de Cibertronic sobre Blitz3d, pero después de comenzar a realizar nuestros proyectos Blitz nos queda un tanto corto y necesitamos una herramienta más potente.
    Y que mejor que algo potente y además libre.
    Irrlicht es una buena opción por varios motivos. Encontramos abundante documentación de el por la red (mucha en ingles), su foro es muy activo, su estructura de programación es bastante sencilla incluso para los que recién comienzan en c++ y en su página tenemos muchos ejemplos de donde podemos tomar ideas aprender y usarlos en nuestros propios proyectos.
    Yo en el momento lo estoy usando con CodeBlok y les dejo la página de Irrlicht donde Álvaro F. Celis (muy visto en todos los foros de quienes buscamos información de programación de juegos) hizo un tutorial de cómo instalar y ejecutar Irrlicht con CodeBlock:

    http://irrlicht.sourceforge.net/tut_codeblocks.html

    Su página principal es :
    http://irrlicht.sourceforge.net

    Su foro:
    http://irrlicht.sourceforge.net/phpBB2/index.php

    y su Wiki que siempre esta actualizandose
    http://www.irrlicht3d.org/wiki/

    Espero puedan instalarlo y comenzar a utilizarlo y entre todos poder comenzar juntos su aprendizaje.
    Un saludo Paio

  2. #2
    Inteligencia Artificial Avatar de KiusteR
    Fecha de ingreso
    Feb 2009
    Ubicación
    Argentina, Chubut
    Mensajes
    132

    Post Respuesta: Programando juegos con Irrlicht

    Buenisimo Paio... instalando...

    Che Paio, con el tiempo podría hacerse una serie de actividades (de lo simple a lo complejo)..así que recomiendo que cuelges un post (en este hilo)
    dedicado a subir exclusivamente los avances y los codigos (por ej "Irrlicht - Actividades")...aver si se entiende...así no se rompen la cabeza buscando codigos en el futuro , para una mejor organizacion.

    Saludos y que esto siga adelante
    AMD Dragon PLatform:
    _CPU AMD Phenom II X4 810
    _AsRock M3A780GXH/128M
    _ATI HD4870 xFx
    _4X 1GB Mem DDR3 1600Mhz
    _Thermaltake Mid-Tower m9

  3. #3
    Miembro
    Fecha de ingreso
    Nov 2006
    Mensajes
    32

    Respuesta: Programando juegos con Irrlicht

    Bien como decía Irrlicht tiene una gran bentaja y es su gran cantidad de documentación tanto en su página como en sus foros.
    Estos están todos en ingles pero para eso se creo google translator (o similares jeje)
    Aquí les dejo traducido el primer Tutorial de Irrlicht, El famoso "Hello Wolrd".
    Espero sea útil.

    Tutorial 1: HelloWorld


    Este tutorial muestra cómo configurar el IDE para utilizar el motor de Irrlicht y cómo escribir un simple programa HelloWorld con él.
    El programa mostrara cómo utilizar las bases de VideoDriver, el GUIEnvironment, y la SceneManager. Microsoft Visual Studio se utiliza como un IDE, aunque ud también será capaz de comprender todo aunque este utilizando otro distinto, o incluso otro sistema operativo.
    Tienes que incluir el archivo de cabecera <irrlicht.h> para poder utilizar el motor. El archivo de cabecera se puede encontrar en el directorio include de SDK del motor Irrlicht. Para que el compilador encuentre este archivo de cabecera, debe determinar el directorio donde se encuentra. Esto es diferente para cada IDE y del compilador que use. Vamos a explicar en breve cómo hacer esto en Microsoft Visual Studio:
    • Si utiliza la versión 6.0, seleccione el menú Extras -> Opciones. Seleccione la pestaña de directorios, y seleccione "Incluir" en el combo box. Añadir el directorio include de la carpeta del motor irrlicht a la lista de directorios. Ahora, el compilador se encontrara el Irrlicht.h archivo de cabecera. También tenemos la irrlicht.lib que encontrar, a fin de permanecer en ese cuadro de diálogo, seleccione "Bibliotecas" en el cuadro combinado y añadir el lib/VisualStudio directorio.



    • Si el IDE es de Visual Studio. NET, seleccione Herramientas -> Opciones. Seleccione la entrada de los proyectos y, a continuación, seleccione los directorios VC + +. Seleccione 'mostrar los directorios de incluye archivos "en el combo box, y añadir el directorio include de la carpeta del motor irrlicht a la lista de directorios. Now the compiler will find the Irrlicht.h header file. Ahora, el compilador se encuentra el Irrlicht.h archivo de cabecera. También tenemos la irrlicht.lib que se encontrar, a fin de permanecer en ese cuadro de diálogo, seleccione "Biblioteca para mostrar los directorios de archivos' y añadir el lib/VisualStudio directorio.


    Con su IDE creado de esta manera, usted será capaz de desarrollar aplicaciones con el motor Irrlicht.

    Vamos a empezar!

    Después de haber creado el IDE, el compilador sabra dónde encontrar los archivos de cabecera del motor Irrlicht para que poder incluirlo en nuestro código.

    # include <irrlicht.h>

    En Irrlicht, todo se puede encontrar en el espacio de nombres' irr '. Así que si desea utilizar una clase del motor, tienes que escribir irr:: antes de que el nombre de la clase.
    Por ejemplo, para utilizar el IrrlichtDevice debe escribir: irr:: IrrlichtDevice. Para deshacerse de la irr:: delante del nombre de cada clase, le decimos al compilador de el uso de este nombres a partir de ahora, y no tendremos que escribir irr:: nunca más.

    using namespace irr;

    Hay 5 sub names en el motor de Irrlicht. Echa un vistazo a ellos, puede leer una descripción detallada de ellos en la documentación haciendo clic en la parte superior del menú "Namespace List' o usando este enlace: http://irrlicht.sourceforge.net/docu/namespaces.html igual irr namespce, no queremos estos 5 sub nombres ahora, para que este ejemplo sea simple. Por lo tanto, le decimos una vez más al compilador que no queremos escribir siempre sus nombres.

    using namespace core; namespace fundamentales;
    using namespace scene; namespace de escena;
    using namespace video; namespace de vídeo;
    using namespace io; namespace io;
    using namespace gui; namespace gui;


    Para poder utilizar el archivo Irrlicht.DLL, tenemos que enlazar con el Irrlicht.lib. Se podría establecer esta opción en la configuración del proyecto, pero para hacerlo más fácil, usamos un comentario pragma lib para VisualStudio. En las plataformas Windows, tenemos que deshacernos de la ventana de la consola, que aparece al iniciar un programa con main (). Esto se hace por la segunda pragma. También podríamos utilizar el método WinMain, aunque perderíamos la independencia de la plataforma entonces.

    # ifdef _IRR_WINDOWS_
    # pragma comment (lib, "Irrlicht.lib")
    #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
    # endif


    Este es el método principal. Ahora podemos utilizar main () en cualquier plataforma.

    int main ()
    {


    La función más importante del motor es la función createDevice () . El IrrlichtDevice es creado por él, que es el objeto raíz para hacer todo con el motor.
    CreateDevice () tiene 7 parámetros:

    • DeviceType: Tipo de dispositivo. Este es objeto puede ser Null-device, uno de los dos programas renderizadores, D3D8, D3D9, u OpenGL. En este ejemplo utilizamos EDT_SOFTWARE, pero para probar, puede cambiar si desea a EDT_BURNINGSVIDEO, EDT_NULL, EDT_DIRECT3D8, EDT_DIRECT3D9, o EDT_OPENGL.

    • windowSize: Tamaño de la ventana o FullScreenMode. En este ejemplo utilizamos 640x480.

    • Cantidad de bits de color por píxel. Este debería ser de 16 o 32. El parámetro es a menudo ignorado cuando se ejecuta en modo ventana.

    • fullscreen: especifica si queremos que se ejecute en el modo de pantalla completa o no.

    • stencilbuffer: Especifica si queremos utilizar el buffer (para dibujar las sombras).

    • Especifica si queremos tener vsync activado, esto es sólo útil en el modo de pantalla completa.

    • eventReceiver: Un objeto para recibir eventos. No queremos utilizar este parámetro, y lo ponemos a 0.
    Always chek the return value to cope with unsupported drivers, dimensions, etc. Compruebe siempre el valor de retorno por no soportados drivers, dimensiones, etc

    IrrlichtDevice *device =
    # ifdef _IRR_OSX_PLATFORM_
    createDevice ( video::EDT_OPENGL,
    dimension2d<s32>(640, 480), 16,
    false, false, false, 0);
    # else
    createDevice ( video::EDT_SOFTWARE,
    dimension2d<s32>(640, 480), 16,
    false, false, false, 0);
    #endif
    if (!device)
    return 1;


    Establecer el título de la ventana con un buen texto. Tenga en cuenta que hay una "L" en frente de la cadena. The Irrlicht Engine uses wide character strings when displaying text. El motor de Irrlicht usa cadenas de caracteres cuando muestra el texto.

    device->setWindowCaption(L "Hello World! - Irrlicht Engine Demo" );

    Obtener un puntero a VideoDriver, el SceneManager y la interfaz gráfica de usuario, para que no siempre tener que escribir device-> getVideoDriver (),
    device-> getSceneManager (), o device-> getGUIEnvironment ().

    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();


    Añadimos una etiqueta con hola mundo a la ventana, usando el entorno gráfico. El texto se coloca en la posición (10,10) de la esquina superior izquierda y (260,22) de la esquina inferior derecha.

    guienv->addStaticText(L "Hello World! This is the Irrlicht Software renderer!",rect<s32>(10,10,260,22), true );

    Para mostrar algo interesante, se carga un modelo de Quake 2 y lo mostramos. We only have to get the Mesh from the Scene Manager with getMesh() and add a SceneNode to display the mesh with addAnimatedMeshSceneNode(). Sólo tenemos que obtener la malla del Administrador de Escena con getMesh () y añadir un SceneNode para visualizar la malla con addAnimatedMeshSceneNode ().Comprobamos el valor de retorno de getMesh () para saber si hubo problemas de carga u otros errores.
    En vez de escribir el nombre del archivo sydney.md2, también sería posible cargar un objeto Maya (archivo. Obj), un completo mapa Quake3 (. BSP) o cualquier otro formato de archivo compatible. Por cierto, este modelo cool de Quake 2 llamado Sidney fue modelado por Brian Collins.

    IAnimatedMesh* mesh = smgr->getMesh( "../../media/sydney.md2" );
    if (!mesh)
    return 1;
    IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );


    Para que la malla se vea un poco más agradable, cambiamos su material. Desactivamos la iluminación, porque nosotros no tenemos luz dinámica, y la malla negra sería totalmente lo contrario. Luego establecemos el marco de bucle, de manera que la animación predefinida STAND se utiliza. Y por último, aplicamos una textura a la malla. Sin esto la malla se veria de un solo color.

    if (node)
    {
    node->setMaterialFlag( EMF_LIGHTING, false );
    node->setMD2Animation( scene::EMAT_STAND );
    node->setMaterialTexture( 0, driver->getTexture(
    "../../media/sydney.bmp" ) );
    }

    Para ver la malla, colocamos una cámara en el espacio 3d (0, 30, -40). La cámara mirara a (0,5,0), es decir, aproximadamente el lugar donde esta nuestro modelo MD2.

    smgr->addCameraSceneNode(0, vector3df (0,30,-40), vector3df (0,5,0));


    Bueno, ahora tenemos creada la escena, dibujemos todo: Corremos el dispositivo en un while () bucle, hasta que el dispositivo no se desee ejecutar más. Esto sería cuando el usuario cierra la ventana o presiona ALT + F4 (o lo cierra una ventana de código clave).

    while (device->run())
    {


    Todo puede ser señalado entre una llamada a beginScene () y endScene () . La llamada beginScene () borra la pantalla con un color y el buffer de profundidad, si se desea. Then we let the Scene Manager and the GUI Environment draw their content. Entonces dejamos el SceneManagery el GUI dibujar su contenido. Con la llamada a endScene () todo se representa en la pantalla.

    driver->beginScene( true, true, SColor(255,100,101,140));
    smgr->drawAll();
    guienv->drawAll();
    driver->endScene();
    }

    Después de hacer todo con el bucle, tenemos que eliminar el Irrlicht Device creado antes con createDevice (). En el motor Irrlicht, usted tiene que eliminar todos los objetos que ha creado con un método o una función que empiece con "create". Estos objetos son simplemente borrados llamando -> drop(). Consulte la documentación en irr:: IReferenceCounted::drop () para más información.

    device->drop();
    return 0;
    }


    Eso es todo. Compilar y ejecute.

Temas similares

  1. Respuestas: 1
    Último mensaje: 12-05-2011, 21:21
  2. Respuestas: 0
    Último mensaje: 04-07-2009, 14:10
  3. Juegos con el 3d max
    Por carpenadavid en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 30-10-2008, 18:45
  4. Irrlicht, blender y animacion
    Por gngmx en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 11-10-2007, 03:07
  5. Juegos en la TV
    Por mondiola en el foro Todo menos Infografía
    Respuestas: 2
    Último mensaje: 15-05-2006, 23:52

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •