Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Looverlib 1.0

Iniciado por Loover, 02 de Febrero de 2005, 06:11:12 PM

« anterior - próximo »

Loover

 Acabo de colgar la libreria 2d en la que he estado trabajando desde hace bastante tiempo. Algunos de vosotros ya la conoceis, o al menos habeis visto los ejemplos.

Looverlib es una libreria 2d open source implementada bajo c++ y Direct3d por lo que utiliza aceleración por hardware para el render. No usa DirectDraw ni ID3DXSprite, sino Direct3d 9.0 montando todas las imágenes sobre texturas de una manera completamente transparente para el usuario, aprovechando de esta manera la aceleración por hardware al 100% y permitiendo sprites de tamaños increibles incluso con alpha blending activado.

LooverLib no es muy extensa, cualquier proyecto que la use utilizará apenas unas 7 clases, pero es muy potente, tremendamente intuitiva, está completamente documentada y... posiblementes esto sea lo mejor, es Open Source bajo licencia LGPL.

Con esas 7 clases tendrás una solución completa a todo lo que un juego 2d puede pedir gráficamente. Formatos de imágenes, mapas de bits, mapas de durezas, filtros tipo photoshop, animaciones por script, superficies de cualquier tamaño, scrolls cortados en el tamaño de bloque que tu desees realizando descarte autómatico incluso cuando están rotados o escalados, fuentes de texto con herramienta para crearlas incluída (MudgeFont), entintados, fades, transparencias, alpha blending, color key, primitivas gráficas, posibilidad del uso de entidades y un largo etc.

A ver si podeis visitar la web, bajaros el código, consultar la documentación, ver los ejemplos, etc, etc, etc :)

¡Un saludo!

Web de LooverLib



IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

 Enhorabuena por el proyecto Loover, muy completo y tiene pinta de ser muy sencillo de usar, genial :)

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

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

zwiTTeR

 Saludos Loover,

Ya sabes que yo soy grafo xD , pero he estado pegandole una ojeada a los ejemplos y se ve muy bien, por lo que veo se pueden hacer todo tipo de efectos graficos , mola, solo decirte... que enhorabuena por el trabajo, creo que has hecho una gran labor y seguro que esto ayuda a los que quieran hacer un juego 2d, ^_^' , si algun dia me decido por aprender a programar de forma seria... ten por seguro que usare tu libreria xD, solo desearte mucha suerte y ... espero que mucha gente le saque partido a la looverlibreria xD

TheAzazel

 Te lo has currado mazo :)

Estoy convencido de que mas de uno, le sera muy util :)

enhorabuena!  (ole)  

Loover

 ¡Gracias de veras por vuestras críticas tan positivas!

Venga! A ver quien se moja y hace un ejemplillo o algo.

¿Se ofrece alguien para hacer un logo  :P ?
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

sés

 Solo he echado un ligero vistazo a los ejemplo y tiene muuuuuy buena pinta.

La única pega que le veo es el uso de DLLs. Para un ejemplo simplón tienes que sar varias DLLs que engordan mucho el programa.

Qué quieres, las tengo manía :P
Soy indeciso... ¿o no?

Loover

 Gracias de nuevo.

CitarLa única pega que le veo es el uso de DLLs. Para un ejemplo simplón tienes que sar varias DLLs que engordan mucho el programa.
Y si no uso DLL donde meto el código? En un bocata de jamón? :) (ñam)

Si prefieres engodar el .exe siempre puedes usar la .lib y linkarla estáticamente. Tienes el código fuente completo para compilar como libreria dinámica, estática o como te plazca. Eso sí, si modificas el código de la librería, ya sabes, hay que publicarlo, es LGPL. Lo que no implica que tengas que publicar el código del juego, pero eso ya lo sabrás.


Solo he usado una libreria, la LooverLib para lo que es la librería en sí. Y la ilu.dll y devil.dll que son para el manejo de imágenes. No me parece mucho, la verdad.

Si incluyo en cada ejemplo las dll es para que la gente no se moleste en tener que bajar los binarios y pegarlos al lado del .exe cada vez :) 2 megas y pico que ocupa el ejemplo más grande no es demasiado para los tiempos que corren.
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

sés

Cita de: "Loover"Y si no uso DLL donde meto el código? En un bocata de jamón? :)
¿En una librería estática?

El resto (que no son tuyas) puedes dejarlas cono DLL, pero ya que la tuya dices que es ligera (son unas pocas clases, ¿no?), ¿por qué no dejarla en una librería estática?

Entiendo que si una librería ocupa un güebo de megas y que todas sus partes son "necesarias", se deje como DLL para compartirla entre aplicaciones (aunque no estoy del todo de acuerdo), pero si es una librería ligerita, ¿para qué una DLL? O sea... ¿por que "imponer" una DLL?

Bueno, soy totalmente anti DLLs, los que están a favor podéis ignorarme xD


Volviendo al tema, es tu librería y la distribuyes como mejor te parezca. Sigue siendo un buen trabajo.
Soy indeciso... ¿o no?

Loover

 Creo que edité mientras contestabas Sés porque he dicho justo lo mismo que tú al final, xD

No impongo nada, lo doy todo y la gente que lo use como quiera. El que quiera usarla estáticamente, adelante, solo tiene que recompilarla como librería estática.

Por cierto, usando UPX, la libreria pasa de 500k a unos ciento y pico.

;)
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Loover

 Bueno, ¿que os ha parecido la documentación? ¿Se entiende todo? Y el código de los ejemplos, ¿tambien se entiende?

Ese tipo de cosas son las que más me interesan. Bueno, y que alguien se ofreza a hacer un loguito, snif.
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Haddd

 He bajado los ejemplos de scroll y animación. Le he echado un vistazo al código y la verdad es que me parece realmente bueno. Recuerdo la librería que hice yo en 2D y calculo que estaría a un 40% de la que tu has hecho. Has resuelto el problema de las animaciones y de los bloques, aunque no entiendo cómo lo haces realmente porque si cargas todo el fondo de un bitmap enorme, pierdes en realidad la ventaja más importante de los bloques que es el ahorro de memoria.

Enhorabuena  (ole)  

Loover

 Gracias Hadd!

CitarLe he echado un vistazo al código y la verdad es que me parece realmente bueno. Recuerdo la librería que hice yo en 2D y calculo que estaría a un 40% de la que tu has hecho

Bueno, eso es porque tu te has centrado en el 3d, ¡y con que resultados! ;)


Citaraunque no entiendo cómo lo haces realmente porque si cargas todo el fondo de un bitmap enorme

Bueno, te pegaría un tirón de orejas y te díria que te toca leer la documentación pero mejor lo explico rápido. Para cargar un fondo, tienes dos opciones. O lo montas como una imagen en un objeto LOV_Image, con lo que podrías usarlo por ejemplo como mapa de durezas, como base para aplicar máscaras o historias (como en el ejemplo del generador de mapas tipo worms). En este caso es simplemente un array de bytes, vamos, un mapa de bits. Nada de bloques.

Otra opción, la que tienes que usar si quieres dibujarlo en pantalla. Es pasarlo de un objeto LOV_Image a un objeto LOV_Surface (lo que puedes hacer automáticamente) o bien cargarlo directamente desde el fichero gráfico como LOV_Surface. En este caso (ver métodos Add de LOV_SurfaceManager) puedes dejar que LooverLib lo corte en bloques "texturas" del tamaño máximo que pueda, esto dependerá del tamaño máximo permitido por tu tarjeta y de la forma que el recorte sea más óptimo. O bien puedes indicar que lo corte en bloques de un ancho y un alto dado (esto es bueno para scrolls). Y es más, activando el parámetro mBlockCull, puedes indicar que los bloques que queden fuera del vierPort, no se dibujen. Y todo esto de forma transparente, permitiendo al usuario cargar imágenes no portencia de dos tan grandes como quiera (como esos fondos gigantescos de la cueva) y haciéndolo todo automáticamente.

Es decir, el uso de bloques internameten de manera transparente para el usuario resuelve varias cosas de un plumazo:
- Posibilidad de cargar imágenes no potencia de 2
- Posibilidad de hacer scrolls fácilmente
- Simplicidad increible al implementar la clase de fuentes (al estar en un bitmap, basta con dividirlo en bloques, y ya pasa a ser otra LOV_Surface más)

Pero claro, esto es util para scrolls no tileables, como el fondo de la cueva.

Aunque lo mismo no te referias a esto y te referias como bloques a "tiles" de un editor de mapas tipo mario. Bueno, eso ya depende del editor en cuestión, por supuesto que usando mapas de tiles se ahorrará memoria. En un futuro, me gustaría dar la posibilidad de usar un editor de tiles de los que circulan por ahí y que LooverLib lea esos mapas y los dibuje, pero esto realmente, no es nada complicado. Basta con cargar esos tiles como LOV_Surface y dibujarlos según indique el mapa. Nada que no pueda hacer cualquiera de vosotros. No sé si meterle más cosas, o dejarla ya así, por no complicar más la libreria.

Un saludo!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Loover

 Para los que hayan probado el ejemplo de Imágenes y nos le haya funcionado, lo siento. Se me había olvidado poner una imagen ("tierra2.png") en el zip.

Mira que no me lo habeis dicho ninguno de stratos sino un colega! xD
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

javiel

 Enhorabuena

Por lo que he visto me parecen muy guapas las librerías. Muy currado el trabajo.

Segun dices son opensource. No se si has pensado portar las librerías a linux. Tampoco se si es posible hacerlo usando OpenGL. Lo digo desde la mas completa ignorancia. No se si es posible hacerlo con lo que tienes.

Muy buen trabajo, y 1 saludo
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Loover

 Todo es posible.

A largo plazo sería algo que me gustaría mucho. Separar el render en un plugin y portarlo a opengl. Y dar la posibilidad de usar D3d u ogl. Y de esta manera portarla a linux e incluso a mac.

Ahora no me veo con fuerzas, pero, es opensource. Cualquiera que se animara a ayudarme con este proyecto sería bienvenido.
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!






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.