Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - McKrackeN

#1
Hola!!

Les comento que ya publiqué la versión 1.0 final de mi motor para el desarrollo de videojuegos 2D Zak Engine. Se trata de un motor muy estable basado en DirectX 8.1 y 9 con documentación completamente en castellano. Está orientado tanto para los que recién se inician en el desarrollo de juegos por su facilidad de uso, como para profesionales por las capacidades que posee.

Para quienes no lo conozcan, dejo acá una lista de las características principales:

   * Sprites animados
   * Mapas de tiles generados a partir del formato de los editores Anaconda Map Editor y Mappy
   * Sonido y música en diversos formatos (wav, mp3, ogg, etc) a través de la librería gratuita Audiere
   * Sistema de scripting (AngelScript)
   * Bitmap Fonts creados a partir de la aplicación Bitmap Font Creator
   * Sistema de partículas
   * Controles visuales (botones, cajas de edición de textos, ventanas, etc)
   * Módulo que encapsula un sistema de red cliente/servidor para juegos multijugador basado en la librería gratuita Enet

Para quienes deseen probarlo, pueden hacerlo en el sitio oficial http://www.zakengine.com.

Un abrazo!
Juan Pablo "McKrackeN" Bettini
http://www.zakengine.com
#2
Programación gráfica / Problema con fonts en DX
22 de Febrero de 2007, 09:09:02 PM
Tengo un drama con los fonts en directX. En realidad, mi problema radica en calcular el ancho en DirectX 8.1 de cada uno de los caracteres. En 9.0 anda perfecto. El código es el siguiente:

#ifndef USING_DIRECTX81
TEXTMETRIC textmetric;
_pDefDXFont->GetTextMetrics(&textmetric);

// si textmetric dice que es truetype tengo que hacer otra cosa

HDC device = _pDefDXFont->GetDC();
GetCharWidth32(device, 32, 255, _characterWidth);

#else


static HDC hdc;

hdc = CreateCompatibleDC(NULL);
SelectObject(hdc, _pDefDXFont);

GetCharWidth32(hdc, 32, 255, _characterWidth);

DeleteDC(hdc);

#endif


El tema es que me devuelve valores completamente diferentes en el arreglo de enteros _characterWidth en el caso de usar DX 9.0 contra DX 8.1.

El código completo es el siguiente:


bool Widget::SetFont(ZAK_FONT_TYPES ft, int size)
{
static wstring strFt;

switch (ft)
{
case FT_ARIAL:
strFt = L"Arial";
break;
case FT_COURIER:
strFt = L"Courier New";
break;
case FT_TIMES:
strFt = L"Times New Roman";
break;
case FT_VERDANA:
strFt = L"Verdana";
break;
case FT_TAHOMA:
strFt = L"Tahoma";
break;
default:
Log.Trace("%s: %d", Message::getMessage(Message::CantCreateFont).c_str(), strFt.c_str());
return false;
break;
}

_pDefDXFontType = ft;
#ifdef USING_DIRECTX81
LOGFONTW fontDesc = { size, // Alto (px)
0, // Ancho (px)
0,
0,
FW_DONTCARE,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
L""};

wcscpy(fontDesc.lfFaceName, strFt.c_str());
#else
D3DXFONT_DESC fontDesc = { size, // Alto (px)
  0, // Ancho (px)
          FW_DONTCARE, // Grosor (número de 0 a 1000)
  1, // MipLevels (normalmente 1 o D3DX_DEFAULT)
  FALSE, // Itálica
  DEFAULT_CHARSET, // Set de caracteres
  OUT_DEFAULT_PRECIS, // Precisión
  DEFAULT_QUALITY, // Calidad (influye en velocidad de render)
  DEFAULT_PITCH, // Pitch
  L""}; // Nombre de la fuente

wcscpy(fontDesc.FaceName, strFt.c_str());
#endif

// Si ya existe una fuente creada en _pDefDXFont, la libero
if (_pDefDXFont != NULL)
_pDefDXFont->Release();

HRESULT hr = D3DXCreateFontIndirect(g_renderer.GetDevice(), &fontDesc, &_pDefDXFont);

if (FAILED(hr))
{
// No se pudo crear la fuente
Log.Trace("%s: %s", Message::getMessage(Message::CantCreateFont).c_str(), strFt.c_str());
return false;
}

if (_characterWidth)
delete [] _characterWidth;

_characterWidth = new INT[255];

#ifndef USING_DIRECTX81
TEXTMETRIC textmetric;
_pDefDXFont->GetTextMetrics(&textmetric);

// si textmetric dice que es truetype tengo que hacer otra cosa

HDC device = _pDefDXFont->GetDC();
GetCharWidth32(device, 32, 255, _characterWidth);

#else


static HDC hdc;

hdc = CreateCompatibleDC(NULL);
SelectObject(hdc, _pDefDXFont);

GetCharWidth32(hdc, 32, 255, _characterWidth);

DeleteDC(hdc);

#endif

if (FAILED(hr))
{
// No se pudo crear la fuente
Log.Trace("%s: %s", Message::getMessage(Message::CantCreateFont).c_str(), strFt.c_str());
return false;
}

_size = size;

return true;
}


Si alguien tuvo el drama, si me puede comentar qué es lo que debo hacer para DX 8.1, estaría genial.

Gracias!!!!
#3
Hola!

Desarrollé el motor Zak Engine y desearía saber si alguien sabe cómo esperar a que la aplicación haya terminado de inicializar el modo pantalla completa. Por ejemplo, yo ejecuto la aplicación, comienza a inicializar cambiando la resolución y demás, y debería mostrar una pantalla negra y de a poco aparecerá con un efecto de fade el logo del motor y luego desaparece con el mismo efecto. Mi problema es que para cuando inicializó, ya me muestra el logo como si en realidad ya estuviese actualizando y funcionando mientras el sistema está intentando cambiar la resolución. No sucede así en modo ventana puesto que inicia mucho más rápido.

¿Hay alguna manera de esperar a que finalice el cambio o simplemente tengo que hacerlo a mano esperando un tiempo?

[EDIT]
El motor corre bajo DirectX 8.1 y 9.
[/EDIT]
#4
Programación gráfica / ZakEngine 1.0 RC1 con documentación!
01 de Febrero de 2007, 09:03:30 PM
[EDIT]
Creo que este mensaje debería ir en General -> Proyectos, no?
[/EDIT]

Hola a todos! Por fin tuve tiempo de armar la documentación del motor
que ya está en su primer versión release candidate.

Todo completamente en castellano (excepto obviamente las clases, objetos y métodos puesto que sino quedan nombres kilométricos).

Les comento para los que no conocen el proyecto:

El Zak Engine es un motor gratuito basado en DirectX 8.1 y DirectX 9.0 desarrollado para facilitar la creación de juegos 2d. Entre sus facultades en constante crecimiento se encuentran:

   * Sprites animados
   * Mapas de tiles generados a partir del formato de los editores Anaconda Map Editor y Mappy
   * Sonido y música en diversos formatos (wav, mp3, ogg, etc) a través de la librería gratuita Audiere
   * Sistema de scripting (AngelScript)
   * Bitmap Fonts creados a partir de la aplicación Bitmap Font Creator
   * Sistema de partículas
   * Sistema de red cliente/servidor para juegos multijugador basado en la librería gratuita Enet

También estoy trabajando en el desarrollo de un módulo para manejo de Widgets (ventanas, cajas de texto, botones, etc) que soporte inclusive drag & drop.

En fin, espero que les sea de utilidad y cualquier sugerencia, bug, etc. soy todo orejas (que no me faltan).

http://www.zakengine.com
#5
Hola, gente.

Disculpen que repita el thread aquí, pero me equivoqué antes y lo coloqué en "Proyectos".

Quiero presentarles un desarrollo que sigo desde hace bastante tiempo que es un motor para el desarrollo de videojuegos 2d completamente gratuito al que bauticé Zak Engine.

Se trata de un motor basado en DirectX 9 y entre sus facultades se encuentran:

* Sprites animados
* Mapas de tiles generados a partir del formato del editor Mappy
* Sonido y música en diversos formatos (wav, mp3, ogg, etc) a través de la librería gratuita Audiere.
* Sistema de scripting (AngelScript)
* Bitmap Fonts creados a partir de la aplicación Bitmap Font Creator
* Sistema de partículas

Para descargarlo, buscar información y bajar tutoriales, entren en la página http://www.zakengine.com que además cuenta con un foro que espero se pueble de mucha gente con ganas de desarrollar y de aportar su grano de arena a esta comunidad.

Desde ya, espero que visiten la página a diario puesto que intento subir algo nuevo todos los días o al menos bastante seguido.

Nos vemos!
#6
Proyectos / Zak Engine: motor para el desarrollo de juegos 2d
19 de Septiembre de 2006, 09:01:58 PM
Hola, gente.

Quiero presentarles un desarrollo que sigo desde hace bastante tiempo que es un motor para el desarrollo de videojuegos 2d completamente gratuito al que bauticé Zak Engine.

Se trata de un motor basado en DirectX 9 y entre sus facultades se encuentran:

* Sprites animados
* Mapas de tiles generados a partir del formato del editor Mappy
* Sonido y música en diversos formatos (wav, mp3, ogg, etc) a través de la librería gratuita Audiere.
* Sistema de scripting (AngelScript)
* Bitmap Fonts creados a partir de la aplicación Bitmap Font Creator
* Sistema de partículas

Para descargarlo, buscar información y bajar tutoriales, entren en la página http://www.zakengine.com que además cuenta con un foro que espero se pueble de mucha gente con ganas de desarrollar y de aportar su grano de arena a esta comunidad.

Desde ya, espero que visiten la página a diario puesto que intento subir algo nuevo todos los días o al menos bastante seguido.

Nos vemos!





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.