Si tuviera tiempo, haría un port. Lo juro! De hecho, me gusta mucho más OpenGL que DirectX. Pero bueno, algún día haré el port o liberaré el código para que alguien más lo haga.
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.
#1
Programación gráfica / Motor para desarrollo de videojuegos 2D: Zak Engine v1.0
17 de Mayo de 2007, 12:51:57 AM #2
Programación gráfica / Motor para desarrollo de videojuegos 2D: Zak Engine v1.0
16 de Mayo de 2007, 02:44:05 PM
El problema de compilarlo con otro compilador es que utilizo las librerías de DX. Tal vez esté pecando de ignorante, pero no logré hacerlas funcionar con otros compiladores aún intentando convertir las librerías al formato que utiliza el MingW y otros.
Como te decía, la única solución que encontré "googleando" fue la de deshabilitar el manifest pero provocaba el segundo error el cual se solucionaba solo al activarlo.
Como te decía, la única solución que encontré "googleando" fue la de deshabilitar el manifest pero provocaba el segundo error el cual se solucionaba solo al activarlo.
#3
Programación gráfica / Motor para desarrollo de videojuegos 2D: Zak Engine v1.0
16 de Mayo de 2007, 02:04:23 PM
Si es que el motor está compilado con el Visual C++ Express al que le instalé el Service Pack 1. Es un problema con el manifest. Busqué en internet para evitarlo, y dice que desactive la generación del manifest, pero si lo hago, da un error de que falta una librería dll. Busco por este nuevo error y dice que es un bug en el Visual Studio, que active el manifest. O sea... es un error recursivo y eterno. ¿Solución? Si deseas utilizar el Zak Engine, debes instalar el Service Pack 1 del Visual Studio (maldito microsoft :P).
#4
Programación gráfica / Motor para desarrollo de videojuegos 2D: Zak Engine v1.0
16 de Mayo de 2007, 03:30:44 AM
Muchas gracias por los comentarios!
Y dista mucho de estar terminada, pero ya al menos es una versión estable y lo suficientemente completa como para ser utilizada profesionalmente (al menos a mi parecer).
Un abrazo!
Y dista mucho de estar terminada, pero ya al menos es una versión estable y lo suficientemente completa como para ser utilizada profesionalmente (al menos a mi parecer).
Un abrazo!
#5
Programación gráfica / Motor para desarrollo de videojuegos 2D: Zak Engine v1.0
15 de Mayo de 2007, 06:02:26 PM
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
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
#6
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:
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:
Si alguien tuvo el drama, si me puede comentar qué es lo que debo hacer para DX 8.1, estaría genial.
Gracias!!!!
Código [Seleccionar]
#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:
Código [Seleccionar]
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!!!!
#7
Programación gráfica / Duda de novato: Limites de un Sprite
19 de Febrero de 2007, 06:20:23 PM
No se si esa placa tiene ese problema, pero de todas formas por el síntoma que describís es muy probable que sea por el tamaño de la textura.
Intenta modificando el tamaño para que quede como textura cuadrada con potencia de 2 a la n píxeles por lado.
De nada! Justo vi tu post cuando lo terminaste de escribir... pura casualidad! ;)
Intenta modificando el tamaño para que quede como textura cuadrada con potencia de 2 a la n píxeles por lado.
De nada! Justo vi tu post cuando lo terminaste de escribir... pura casualidad! ;)
#8
Programación gráfica / Duda de novato: Limites de un Sprite
19 de Febrero de 2007, 06:09:31 PM
Muchas placas de video no soportan texturas que no sean cuadradas y de potencia de 2 a la n píxeles por lado, es decir que las texturas pueden ser de 64x64, 128x128, 256x256 y así sucesivamente. El máximo del tamaño dependerá de la placa vídeo que tengas. En el caso de una GeForce2 creo que su máximo es 2048x2048, una RivaTNT2 creo que es de 1024x1024 como máximo.
Espero que te sirva la respuesta. ;)
Espero que te sirva la respuesta. ;)
#9
Programación gráfica / Esperar a inicialización en pantalla completa
05 de Febrero de 2007, 08:41:33 PM
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]
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]
#10
Programación gráfica / breakout, colision con los ladrillos
04 de Febrero de 2007, 02:55:30 AM
de nada! ;) saludos compatriota! :P
#11
Programación gráfica / breakout, colision con los ladrillos
03 de Febrero de 2007, 10:12:28 PM
Por empezar podrías dividir la pantalla en zonas. Si la bolita esta dentro de una de ellas, chequeas la colisión solo contra los ladrillos de dicha zona.
Otra optimización que podés hacer es chequear grupos de ladrillos encerrados en un círculo. La colisión por círculos es mucho más rápida (obviamente si simplificás la raiz cuadrada para hacerla desaparecer porque es muy lento).
Por ejemplo: raizcuadrada(distancia1^2 + distancia2^2) <= radio1+radio2 te quedaría distancia1^2 + distancia2^2 <= (radio1+radio2)^2.
Luego, si colisionan ambos círculos, recién allí chequeas por cajas.
Otra optimización que podés hacer es chequear grupos de ladrillos encerrados en un círculo. La colisión por círculos es mucho más rápida (obviamente si simplificás la raiz cuadrada para hacerla desaparecer porque es muy lento).
Por ejemplo: raizcuadrada(distancia1^2 + distancia2^2) <= radio1+radio2 te quedaría distancia1^2 + distancia2^2 <= (radio1+radio2)^2.
Luego, si colisionan ambos círculos, recién allí chequeas por cajas.
#12
Programación gráfica / ZakEngine 1.0 RC1 con documentación!
02 de Febrero de 2007, 10:58:16 PM
Gracias! :)
Si, es un tributo al Uridium! :) Amo a ese juego! ;)
Si, es un tributo al Uridium! :) Amo a ese juego! ;)
#13
Programación gráfica / ZakEngine 1.0 RC1 con documentación!
02 de Febrero de 2007, 10:33:00 PM
Acabo de subir screenshots y ejemplos al site. ;)
#14
Programación gráfica / ZakEngine 1.0 RC1 con documentación!
02 de Febrero de 2007, 02:52:40 PM
Sí, en breve voy a estar subiendo ejemplos, screenshots y algún que otro tutorial. El tema es que estoy terminando de escribir un libro sobre desarrollo de juegos y tengo por fecha límite el 16 de febrero así que estoy bastante apretado de tiempo. Pero ya falta poco! les aviso cuando haya novedades. :)
#15
Programación gráfica / ZakEngine 1.0 RC1 con documentación!
02 de Febrero de 2007, 12:59:01 PM
Oops. Perdón. Ahora la saco. :)