Archiv para Abril, 2008

Usando .net en Torque: ejemplo práctico (conexión a postgresql)

Escrito por aserrano. Posteado en C++, Desarrollo, Juegos, Motores 3D, Torque

Si te gusta usar .net, puedes hacer que haga algunas tareas en Torque.

Esto es sólo un ejemplo de como usar .net en Torque.

Todo el código fuente es gratis y lo puedes usar bajo tu responsabilidad.

Si necesitas más referencias ve a la página web de MSDN o GarageGames. Alguna información ha sido extraída de esas páginas.

Para este ejemplo se ha usado Visual C# 2005, Visual C++ 2008 y las librerías de Mono (ms 2.0) para la  conexión a PostgreSQL

Vamos a obtener la versión  de la base de datos  que es muy similar a hacer un “select” o un “insert”.

Como primer paso creamos una DLL (ClassLibrary) en C#.

Editamos el código fuente, añadimos el interface público y cambiamos su nombre. Este interface lo usaremos para exponer su métodos a través de COM.

Añadimos también la funcionalidad Postgres, en este caso, sólo un “select version()”.

[sourcecode lang=”cpp”]

using Npgsql;

namespace Database
{
public interface IPGDatabase
{
String pgVersion();
}

public class PGDatabase : IPGDatabase
{

conn = new NpgsqlConnection(“Server=192.168.11.150;Port=5432;User Id=user;Password=secret;Database=DBl;”);
conn.Open();

NpgsqlCommand command = new NpgsqlCommand(“select version()”, conn);
String serverversion;

[/sourcecode]

Para exponer el interface com debemos editar el fichero AssemblyInfo.cs y cambiar la línea”[assembly: ComVisible(false)]” por “[assembly: ComVisible(true)]”.

Creamos ahora un nombre fuerte a nuestra DLL. Desde el prompt de Visual Studio teclea “snk.exe -k database.snk”. Copia este fichero al proyecto, edita las propiedades del proyecto y ve a la pestaña de firmar. Pincha sobre “Firmar el ensamblado” y elige el fichero recien creado.

Compila el proyecto para crear la DLL Managed

Vamos a registrar la información de ensamblado de la DLL.

Desde un prompt de Visual Studio, ve al directorio donde esté la DLL y teclea

regasm database.dll /tlb:database.tlb /codebase


Copia este fichero al proyecto Torque

Crea una clase en Torque y prepárala para usarla en la consola como el ejemplo de abajo (si tienes dudas ve a la página web de GarageGames)

[sourcecode lang=”cpp”]

class DBVersion: public SimObject
{

public:

DECLARE_CONOBJECT( DBVersion );

IMPLEMENT_CONOBJECT( DBVersion );

ConsoleMethod(DBVersion,getVersion, const char*, 2, 2,”()Returns the postgresql.”)

[/sourcecode]
Importa el fichero .tlb añadiendo la línea “#import “..gamedatabase.tlb” raw_interfaces_only”, y usa el nuevo espacio de nombres recien creado “using namespace database

Si todo ha ido bien, tendremos acceso a nuestra dll managed

Creamos el puntero al interface y llamamos a nuestra función

[sourcecode lang=”cpp”]

HRESULT hr=CoInitialize(NULL);

IPGDatabasePtr pIDatabase(__uuidof(PGDatabase));

long lResult=0;

pIDatabase->pgVersion(&bstrstring);

CoUninitialize();

[/sourcecode]

Como la DLL está devolviendo una cadena BSTR, necesitaremos hacer una pequeña conversion:

[sourcecode lang=”cpp”]

_bstr_t _bstrstring(bstrstring);
strcpy_s(version, (char *)_bstrstring);
return (StringTableEntry) &version[0];
[/sourcecode]

Tiempo de probarlo. Compila el proyecto, ejecuta el motor de juegos torque, abre la consola y teclea:

$a=new DBVersion();
echo($a.getVersion());

Código fuente

¡Disfrútalo!

Notar que esto es sólo un ejemplo. No hay control de errores, el código se puede mejorar,…

Terrenos en Torque usando L3DT

Escrito por aserrano. Posteado en Blender, C++, Juegos, Linux, Motores 3D, Torque

Vamos a hablar de como generar rapidamente terrenos para Torque en Torque Game Engine Advanced 1.7.0.

TGEA 1.7.0 incluye ahora un nuevo sistema de megaterrenos llamado MegaTerrain. Megaterrain nos permite incluir varios terrenos individuales dentro de las misiones de Torque.

Pero nosotros vamos a ver como exportar un terreno para al anterior sistema Atlas 2 usando la herramienta Large 3D Terrain de bundysoft. Decir que la herramienta tiene dos versiones y la que se compra en GarageGames cuesta unos 35$ y lleva el plugin de exportación para Atlas.

Esta herramienta provee un tutorial muy interesante que nos hará un terreno en pocos minutos. Seguidlo y generar un terreno de 1024×1024 pixeles, como se ve en las imágenes.

Una vez finalizado el tutorial grabar el proyecto y usar la opción de exportación File–>Export–>To torque Atlas(garagegames plugin). Este plugin tiene todavia algunos bugs con terrenos grandes.

Con el terreno generado es hora de ponerlo en Torque en nuestro fichero de misión con el siguiente código:

new AtlasInstance(NewTerrain) {
canSaveDynamicFields = “1”;
Enabled = “1”;
position = “0 0 0”;
rotation = “1 0 0 0”;
scale = “1 1 1”;
atlasFile = “scriptsAndAssets/data/export/miterreno.atlas”;
lightmapDimension = “256”;
};

Truco: si no veis el terreno, seleccionadlo con “World Editor inspector” y haceis un drop selection.


Nota legal

(C) Antonio Serrano 2012