Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





dx_lib32 2.2.0 ya disponible - final de trayecto

Iniciado por [EX3], 08 de Enero de 2009, 03:09:49 AM

« anterior - próximo »

[EX3]

Lo prometido es deuda. La ultima versión de dx_lib32 ya esta publicada con los nuevos tutoriales, disponibles para Visual Basic 6.0 y Visual Basic .NET, documentación actualizada e instalación preparada para Windows Vista.

Como ya se comento anteriormente, la versión 2.2.0 será la ultima versión que se publicara de dx_lib32. A partir de ahora no habrá mas ampliaciones ni mejoras. Esta versión ha terminado de implementar las ultimas novedades y correcciones pendientes que había planificadas desde hace dos años y da por finalizado el ciclo de estudio y desarrollo de este proyecto. El soporte y ayuda se seguirá prestando en el foro como de costumbre.

Se ha publicado de dos maneras, una como paquete de desarrollo, que es el que incluye los tutoriales y la documentación para desarrolladores, y la otra, el paquete redistribuible para el usuario final. Se trata de un pequeño instalador que contiene únicamente las librerías necesarias para ejecutar un juego desarrollado con dx_lib32 2.2.0. Ambas incluyen las librerías y el componente ActiveX para reproducir OGG Vorbis (http://www.vorbis.com/)

Las novedades mas importantes de esta versión son:

    - Versión compatible con Windows Vista

    - Ligeras optimizaciones de código en la clase grafica.

    - Rotación de sprites variando su eje de rotación (gracias a la colaboración de Lessman/Gorkin, referente a explicaciones básicas sobre matrices de transformación, y Amatar por sugerir su uso)
    DEVICE_SetDrawCenter()

    - Añadido 4 nuevos efectos en la enumeración Blit_Alpha para operaciones de transparencias en DRAW_MapEx() y DRAW_AdvMap() (gracias a Pogacha por su colaboración en el efecto de inversión de color y de escala de grises):
    Blendop_Inverse
    Blendop_XOR
    Blendop_Crystaline
    Blendop_GreyScale

    - Añadido parámetro opcional GrayScale a las funciones MAP_Load(), MAP_LoadFromMemory(), SURF_Load(), SURF_LoadFromMemory() y SURF_ScreenCapture() de la clase dx_GFX que permite cargar gráficos y superficies en escala de grises a partir de una imagen en color.

    - Añadido función para modificar el valor del gamma:
    DEVICE_SetGamma()
    Gamma (Get)

    - Añadido método para aplicar colores independientes a cada vértice en las operaciones de dibujo de sprites con DRAW_Map(), DRAW_MapEx() y DRAW_AdvMap() en vez de un color global que junto a DEVICE_SetSpecularChannel() permiten operar un rango total de iluminación de 512 unidades (64 bits de color), desde el negro absoluto hasta el color base (color de vértice) y desde el color base hasta el blanco absoluto (canal specular):
    DEVICE_SetVertexColor()

    - Añadida función para importar fuentes de texto desde archivo: (gracias al articulo de Karl E. Peterson "Preview Uninstalled Fonts" - http://vb.mvps.org/articles/ap200107.asp)
    FONT_LoadSystemFontFromFile()

    - Añadido parámetro Clear a la función Frame() de la clase dx_GFX para desactivar la limpieza de pantalla antes de borrar.

    - Añadida función para dibujar bloques o listas de píxeles en una sola llamada: DRAW_Pixels().

    - Añadida funciones para precalcular la posición de los vértices de un sprite antes de ser dibujado, por ejemplo para realizar cálculos precisos de colisión o para calcular valores de iluminación por vértice:
    PRECAL_WriteSpriteTransformVertex()
    PRECAL_ReadSpriteTransformVertex()

    - Añadida función a dx_Input para obtener el código ASCII de la tecla pulsada:
    Key_ASCII()

    - Añadido soporte de efectos (FX) básicos para muestras de sonido en la clase dx_Sound.

    - Añadido método en dx_Video para obtener las dimensiones originales de un video:
    VIDEO_GetSize()

    - Añadidos tutoriales de la clase dx_Video.

    - Añadidos tutoriales de colisión en dx_System.

    - Añadida función a dx_System para rotar puntos:
    MATH_RotatePoint()


Correcciones realizadas:

    - Desactivado parámetro RefreshRate en las funciones de inicialización y configuración de modos de video que podría estar provocando que la clase grafica no iniciase correctamente en algunos equipos.

    - Corregido error en dx_GFX en la recuperación de hardware en modos a pantalla completa. El motor de render vuelve a recuperar el control del hardware de video al perder el foco inclusive al realizar cambios del modo de video mediante DEVICE_SetDisplayMode()

    - Corregido error en las funciones DEVICE_GetTotalVideoMem() y DEVICE_GetFreeVideoMem() de dx_GFX que originaban una excepción al ser llamadas.

    - Corregido error en MAP_LoadFromFileInMemory() en la carga de archivos. Ahora soporta todos los formatos de imagen de su hermana MAP_Load().

    - Corregido error en MAP_CopyRectsToSurf() y SURF_CopyRectsToMap() en la entrada de los valores de la estructura GFX_Rect.

    - Corregido error al dibujar regiones de una textura definidas con MAP_SetRegion() cuando los parámetros Width y Height de DRAW_MapEx() eran diferentes a 0.

    - Corregido error en dx_Sound en la asignación de canales libres para los efectos de sonido. Ahora se aprovechan todos los canales disponibles.

    - Corregido error en dx_Sound en la asignación de canales libres para cuando un sonido esta en bucle continuo este ya no es suplantado por el nuevo canal.

    - Corregido error en el control de sonido de secuencias de música en dx_Sound.

    - Corregido error en la función FILE_List() de dx_System.

    - Corregido error en las funciones MAP_AdvCopyRects(), MAP_AdvCopyRectsToSurf(), MAP_CopyRects(), MAP_CopyRectsToSurf(), SURF_AdvCopyRects(), SURF_AdvCopyRectsToMap(), SURF_CopyRects(), y SURF_CopyRectsToMap()

    - Corregido los errores en las funciones de lectura y escritura de pixeles en superificies. Se añaden a la lista dos funciones para el trabajo de píxeles de forma mas directa: SURF_ReadPixelArray() y SURF_WritePixelArray().

    - Corregido error en las funciones *_Hit() de la clase dx_Input que no permitía realizar mas de una comprobación de evento por ciclo. Ahora permite llamadas múltiples en un mismo ciclo permitiendo leer el estado de varias entradas.

    - Corregido error en las funciones de lectura de posición de audio y video. Ahora devuelven el valor en milisegundos, como indica la documentación, y no en segundos como lo estaba haciendo actualmente.


Bugs localizados:

    - Ligeros "artefactos" (conjunto de formaciones de píxeles erróneos) en los resultados de las funciones de Render Targets de dx_GFX, generalmente por la escala de la textura destino respecto a los parámetros de la operación a dibujar.

    - Desincronización de lectura de posición en la función MUSIC_GetCurrentPosition() de dx_Sound al reproducir secuencias de música con la frecuencia de velocidad alterada.

    - Si se intenta asignar la misma secuencia de música en los dos búferes de reproducción simultáneamente solo se escuchara uno de los búferes.

    - La función SYS_Beep() de dx_System puede no funcionar en algunos equipos actuales así como en equipos portátiles.

    - En Visual Basic .NET inexplicablemente falla la lectura de valores de los estados de la estructura Joystick en dx_Input.

Podéis descargar la nueva versión desde la sección de Descargas.

Salu2 y que aproveche...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Loover

¡Muy bien! Pero supongo que seguirás con aquello otro que me comentaste...

Cuentanos, ¿con qué te vas a poner ahora?
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Vicente

Enhorabuena! La constancia que has mostado con este proyecto es envidiable, así que chapeau por ti, por fin te libras de VB!!! :)

Un saludo!

Vicente

[EX3]

#3
Cita de: Loover en 08 de Enero de 2009, 03:11:13 PM
¡Muy bien! Pero supongo que seguirás con aquello otro que me comentaste...

Cuentanos, ¿con qué te vas a poner ahora?
Si preguntas por el TLSA.Core, el wrapper orientado a objetos de dx_lib32 para .NET, y TLSA.Engine, el framework que estaba desarrollando sobre TLSA.Core para dar soporte en C# y añadir funcionalidades mas propias de un motor, la respuesta es no. Despues del batacazo que me di en la compo 72h de la Campus Party 2008 por un pequeño pero puñetero error por un problema con la sobrecarga inexistente de operadores en Visual Basic .NET, unico lenguaje sobre el que puedo desarrollar contra dx_lib32 por lindezas e incompatibilidades de VB6.0 con C#, el TLSA.Core y el TLSA.Engine no resultaron ser usables totalmente y para corregirlo tendria que hacer una reprogramacion completa de todas las propiedades de los objetos del TLSA.Core y añadirles un metodo de clonacion para solventar el tema de la sobrecarga del operador ==. Sinceramente, es una fiesta a la que no tengo ganas de asistir. El proyecto estaba comentado en codigo, por lo que si un dia me entra la vena cambio el nombre TLSA por otra cosa y lo libero como codigo abierto para que quien le interese trastee a gusto, pero vamos, yo no tengo intencion de seguir desarrollando una libreria o un motor abierto al publico.

De ponerme con algo seria con el juego con el que llevo en cabeza años. Me he decidido a meterle mano a XNA aunque primeramente le estoy echando un ojo a un motor de fisicas 2D que hay para XNA llamado Farseer Physics y que quizas me solvente todo el tema de fisica del juego. El problema es que ultimamente entre las pocas ganas que saco despues de tirarme el dia programando macros en VBA y proyectos de banca, el vicio incrontrolable a la XBox 360 y la falta de animos despues de 7 años manteniendo una libreria y no desarrollando el juego no es que programe demasiado en casa que digamos pero poco a poco se intenta (al menos tendre que justificar el gasto del netbook que compre recientemente, que no fue por capricho precisamente si no para enseñar comodamente cosas en las kdd's ;))

Cita de: Gorkin en 08 de Enero de 2009, 06:37:18 PM
Ahora a ver si las futuras noticias son sobre el juego de plataformas y no de la librería, jej.
Pues como ves, esa es a intencion. A ver que en queda la cosa :P

Cita de: Vicente en 08 de Enero de 2009, 04:09:13 PM
Enhorabuena! La constancia que has mostado con este proyecto es envidiable, así que chapeau por ti, por fin te libras de VB!!! :)
Mi constancia es un pedo al lado de lo que dice llevar este otro usuario con su proyecto :P pero vamos, si, VB6.0 me lo he quitado de encima para la programacion en general (incluido en el curro :D), aunque no lo descarto junto a la dx_lib32 para alguna compo 48h que se celebre por el foro, hay que amortizar el esfuerzo invertido, digo yo ;)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Loover

CitarSi preguntas por el TLSA.Core, el wrapper orientado a objetos de dx_lib32 para .NET, y TLSA.Engine, el framework que estaba desarrollando sobre TLSA.Core para dar soporte en C# y añadir funcionalidades mas propias de un motor, la respuesta es no.

Joer que pena, pintaba bien cuando me lo contabas. Pero bueno, estas cosas acaban quemando. De todos modos, la experiencia adquierida, ¡no te la quita nadie!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

La verdad que el proyecto pintaba bien y la idea era en un futuro haberlo portado como te conte fuera de Windows a Mono & TAO.SDL y XNA, pero el tema es ese, que estoy cansado de dedicar tiempo a mantener una libreria como para recrear un port de la misma. Con el tiempo he caido en el vicio de desarrollar librerias y motores cuando lo que realmente me interesa es desarrollar un juego, y ahora que existen herramientas para aburrir, no como cuando empece, que en VB6.0 no habia practicamente nada, asi que haber si ahora que puedo dedicarme a ello y con herramientas como XNA puedo sacar algo, y como bien dices, aprovechar esa experiencia en ello.

Salu2... :)
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Felicitaciones por la última versión hombre.
Subiré mi proyecto con los últimos arreglos a ver si sirve de ejemplo por lo menos.

[EX3]

Esperando con impaciencia vuestros frutos, que practicamente nadie se ha acordado de mandarme nada :D

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

yorch

Enhorabuena por el curro! He mirado las features de la librería en tu web, y la verdad es que ha quedado bastante completa  :)

Por cierto, ¿qué es lo que te pasa exactamente con este "bug conocido"?

Cita de: [EX3] en 08 de Enero de 2009, 03:09:49 AM

    - Desincronización de lectura de posición en la función MUSIC_GetCurrentPosition() de dx_Sound al reproducir secuencias de música con la frecuencia de velocidad alterada.

Para el nuevo proyecto si necesitas/quieres ayuda con XACT, etc... ya sabes ;)



[EX3]

Cita de: yorch en 09 de Enero de 2009, 10:28:46 PM
Por cierto, ¿qué es lo que te pasa exactamente con este "bug conocido"?

Cita de: [EX3] en 08 de Enero de 2009, 03:09:49 AM

    - Desincronización de lectura de posición en la función MUSIC_GetCurrentPosition() de dx_Sound al reproducir secuencias de música con la frecuencia de velocidad alterada.
Me explico. Si yo altero el ratio de velocidad de reproduccion al marcar una posicion de lectura del sample esta ya no coincide con la posicion que deberia, si, por ejemplo, hubiera aumentado el ratio al doble del original la posicion 00:04 pasaria a ser la 00:02 mas o menos. La prueba donde descubri esto lo que hacia era usar el mismo sample en dos bufferes y reproducir primero uno de los bufferes hasta llegar a duracion total - 3 segundos donde comenzaba un fade a silencio mientras comenzaba el segundo buffer a reproducirse. El caso es que me dio por aumentar la velocidad un poco para probar como quedaria el resultado cuando veo que el primer buffer termina antes de tiempo. Comparando los valores que me devolvia la funcion MUSIC_GetPossition de mi libreria descubro que el sample de 16 segundos a esa velocidad solo llega a 14, pero reproduce el sample entero. En los ejemplos en los que me base para aprender como usar DirectShow, que es la API que uso para el tema de musica multiformato y aprovechar el sistema de codecs de WMP, veo que sucede lo mismo por lo que creo que es o bien un fallo de DShow o de la interfaz para VB6.0 (que esto ultimo no seria de extrañar despues de ver unas cuantas funciones fallar en VB6.0 y no en C++) o bien es que nos toca aplicar esa variable de ratio al tiempo del sample a la hora de desplazar el cursor de lectura, la verdad que no tengo ni idea. Otro fallo extraño y "conocido" en mi libreria es la de no poder acceder al mismo sample en DirectShow a la vez, cosa que si puedo hacer en DirectSound.

Cita de: yorch en 09 de Enero de 2009, 10:28:46 PM
Para el nuevo proyecto si necesitas/quieres ayuda con XACT, etc... ya sabes
Te tomo la palabra, la verdad que todavia me estremezco cuando abro el XACT para trastear un poco xD Gracias :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Vicente

Cita de: [EX3] en 10 de Enero de 2009, 05:05:39 AM
Te tomo la palabra, la verdad que todavia me estremezco cuando abro el XACT para trastear un poco xD Gracias :)

Que lo abres para trastear??? :O Esto pasará a la posteridad :p

Un saludo!

Vicente

fjfnaranjo

¡Enhorabuena tío!

Te ha quedado la cosa fina, fina.

Nos quedamos a la espera de info sobre ese nuevo proyecto. O bueno, tómate un descanso, que te lo has ganado ;) .
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)

RobiHm

Congratulations!!   :o

Te has tenido que quedar la mar de tranquilo después de terminar un currele tan espléndido!!
En cuanto saque el tiempo suficiente intento readaptar los "jueguecillos" que híce con tu librería.





Web : Indómita
Blog : MiBlog
Evobas : Evobas
Kobox : Kobox

[EX3]

Cita de: Vicente en 10 de Enero de 2009, 12:02:59 PM
Que lo abres para trastear??? :O Esto pasará a la posteridad :p
No sera con el famoso manual de "Reproduzca un sonido en XACT en solo 15 minutos", verdad?  >:D

Cita de: fjfnaranjo en 10 de Enero de 2009, 12:49:34 PM
Nos quedamos a la espera de info sobre ese nuevo proyecto. O bueno, tómate un descanso, que te lo has ganado ;) .
Mas informacion del dichoso proyecto? Pero si llevo años pregonando de que se trata xDDDD En stratos y algun foro cercano deberia ser minimamente reconocido como un plataformas de mecanica " like prince of persia / another world / flashback " (acrobacias y disparos, vamos) ambientado en un escenario de ciencia ficcion :P

Cita de: fjfnaranjo en 10 de Enero de 2009, 12:49:34 PM
O bueno, tómate un descanso, que te lo has ganado ;) .
Demasiadas pausas (y mucho vicio al COD4 y GOW2 me temo), ya es hora de al menos terminar de planificar sobre papel el asunto y de hacer las primeras pruebas. Ahora que estoy de vacas a ver si puedo ponerme un par de horas al dia minimo ;)

Cita de: RobiHm en 10 de Enero de 2009, 04:26:57 PM
Te has tenido que quedar la mar de tranquilo después de terminar un currele tan espléndido!!
No lo sabes tu bien jeje

Cita de: RobiHm en 10 de Enero de 2009, 04:26:57 PM
En cuanto saque el tiempo suficiente intento readaptar los "jueguecillos" que híce con tu librería.
Lo dicho, espero vuestras creaciones con interes e impaciencia. Todavia queda pendiente la seccion de proyectos de los usuarios en la web :)

Salu2 y gracias!
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Ocho

 :o Muy bueno el manual de dx_lib32. Ya veo que tú también te has tirado un montón de tiempo con tu motor. Desde luego hay que ver con que detalle y organización esta hecho dx_lib32.
Muy buenos y fáciles de entender los ejemplos. Además veo que  muchas de las funciones se podrían usar junto a las de mi propio motor, sin ningún problema.






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.