Libmod_heightmap

Started by Goku jr, June 20, 2025, 10:08:26 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Goku jr

Buenas a todos!
Despues de mucho tiempo sin escribir por los foros (en discord estoy casi a diario), me paso por aqui a para presentaros un modulo que estoy creando a base de IA, si amigos a base de Inteligencia Artificial.
Yo le pido a una IA, voy probando, voy pidiendole que corrija cosas, que pruebe otras y asi. y aunque el gran grueso de la programacion lo tiene la IA, ha sido bastante duro conseguir esto, muchas horas lanzandole prompts y muchos cabreos por que a veces le pedias correcciones y te pasaba el mismo codigo XD.
EN FIN..

Despues de contaros mi vida os presento a libmod_heightmap, un modulo que a partir de 2 imagenes crea un terreno y lo texturiza a lo voxelspace, creando un efecto pseudo 3D como en juegos de los 90 (Deltaforce, Comanche) era un estilo muy de la empresa Nova Logic.

Seguro que tiene muchos errores que corregir, pero me gustaria que si la probais me reporteis feedback para ir mejorando o añadiendo cosas.

Aqui unas screens y un video :





El modulo esta lleno de funcionalidades las cuales las teneis en el readme del repo asi como un pequeño ejemplo
Pero entre ellas hay funciones de colisiones, funciones de movimiento propias, de camara etc..


Enlace al repositorio
Enlace de descarga con ejemplo

La version subida es para Windows, pero deberia poder compilarse tanto para Linux como para las demas plataformas :D
Ale hasta la proxima. :D

PD: MODULO EN PROGRESO, LAS FUNCIONES Y RENDIMIENTO PUEDEN SUFRIR CAMBIOS

Drumpi

Estoy siguiendo el desarrollo por Telegram, y la cosa avanza a muy buen ritmo, y los resultados son realmente impresionantes :D
Tengo que echarle un vistazo personalmente a esto, a ver qué tal se compara con la VSE, porque hace ya tiempo comencé una prueba de cómo aplicar este tipo de librerías para hacer un juego de plataformas, un laberinto en primera persona y alguna cosilla más :D

Respecto al uso de la IA, sí, trabajar con ella es muy puñetera, al menos, en mi experiencia con ChatGPT. Ayuda muchísimo a hacer cosas muy rápido, cuando no conoces el lenguaje o sus características, y si conoces un poco el lenguaje o alguna técnica de programación, haciendo la sugerencia, podéis hacer juntos auténticas virguerías en poco tiempo. Y cuando tienes un error, ayuda a ahorrar una cantidad impensable de tiempo, especialmente cuando el error se debe a algún "typo" que el compilador se traga (por eso odio la libertad de lenguajes como JavaScript :P).
Lo que sí he notado es que, a veces, la IA entra en bucle, y no puedes sacarla de ahí, o se le llena la memoria y no es capaz de memorizar las cosas, y "se le olvidan". La mejor estrategia en esos casos es iniciar una conversación nueva, sé que es un follón tener que volver a pasarle toda la información, pero así va la cosa... aunque es mejor no volver a meter toda la información, para no saturarla, y centrarse en lo que se quiere lograr.

Por mi parte, mucho ánimo con el proyecto, a ver hasta dónde puedes llegar. Estaría de lujo que pudieras implementar los planos abatidos, además de los sprites en vertical, para hacer puentes, pero si no, siempre puedo usar técnicas similares a las de la recreativa Thunder Blade y demás juegos con el Super Scaler.
Y a ver si saco un ratillo para portar mis ejemplos a esta librería, a ver qué sale, aunque llevo unos meses que no toco código que no sea por trabajo, y en breve iniciaré mi "cura de desintoxicación de ordenadores" :D :D :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Goku jr

Quote from: Drumpi on July 09, 2025, 09:23:53 AMEstoy siguiendo el desarrollo por Telegram, y la cosa avanza a muy buen ritmo, y los resultados son realmente impresionantes :D
Tengo que echarle un vistazo personalmente a esto, a ver qué tal se compara con la VSE, porque hace ya tiempo comencé una prueba de cómo aplicar este tipo de librerías para hacer un juego de plataformas, un laberinto en primera persona y alguna cosilla más :D

Respecto al uso de la IA, sí, trabajar con ella es muy puñetera, al menos, en mi experiencia con ChatGPT. Ayuda muchísimo a hacer cosas muy rápido, cuando no conoces el lenguaje o sus características, y si conoces un poco el lenguaje o alguna técnica de programación, haciendo la sugerencia, podéis hacer juntos auténticas virguerías en poco tiempo. Y cuando tienes un error, ayuda a ahorrar una cantidad impensable de tiempo, especialmente cuando el error se debe a algún "typo" que el compilador se traga (por eso odio la libertad de lenguajes como JavaScript :P).
Lo que sí he notado es que, a veces, la IA entra en bucle, y no puedes sacarla de ahí, o se le llena la memoria y no es capaz de memorizar las cosas, y "se le olvidan". La mejor estrategia en esos casos es iniciar una conversación nueva, sé que es un follón tener que volver a pasarle toda la información, pero así va la cosa... aunque es mejor no volver a meter toda la información, para no saturarla, y centrarse en lo que se quiere lograr.

Por mi parte, mucho ánimo con el proyecto, a ver hasta dónde puedes llegar. Estaría de lujo que pudieras implementar los planos abatidos, además de los sprites en vertical, para hacer puentes, pero si no, siempre puedo usar técnicas similares a las de la recreativa Thunder Blade y demás juegos con el Super Scaler.
Y a ver si saco un ratillo para portar mis ejemplos a esta librería, a ver qué sale, aunque llevo unos meses que no toco código que no sea por trabajo, y en breve iniciaré mi "cura de desintoxicación de ordenadores" :D :D :D
Hola Drumpi,
Gracias por pasarte y responder, lo que dices de la IA, yo en concreto estoy utilizando deepwiki, con ella mira directamente en los sources de los repos y te guia para hacer practicamente cualquier cosa, y a veces un poquito de chatgpt.
Eso que dices de que entran en bucle, me esta pasando a menudo con este proyecto y la verdad que da bastante por saco, pero bueno estoy consiguiendo algo que con mis conociemientos no habria llegado ni de coña.

A parte de lo que has visto por telegram, ahora estoy con la reimplementacion de los billboards, intentando que funcionen con todos los procesos que tengan un grafico, al igual que hacen el scroll o el modo7 (o el difunto modo8) utilizar algo similar a ctype = c_heightmap para que todo proceso que lo contenga se muestre en el mundo del voxelspace. 
lo estoy consiguiendo pero de momento los sprites me aparecen en coordenadas incorrectas, veremos a ver.
Despues quiero mirar el tema de las colisiones, para que puedas chocar contra el terreno y demas, cuando lo tenga listo avisare por aqui, por telegram y por discord, por si alguien quiere hacer alguna prueba.

Saludos!

Drumpi

Lo de las colisiones con el terreno, yo lo dejaría como algo opcional.
Por un lado, a lo mejor al usuario le interesa que los objetos atraviesen el suelo, porque hayan dibujado una cueva, un agujero por el que caerse, porque sea agua o lo que sea.
Por otro, porque la colisión es igual de sencillo que detectar colisiones en un mapa de durezas, igual que se hace con el scroll. Sólo que, en este caso, el mapa de durezas es, en realidad, el mapa de alturas. Con MAP_GET_PIXEL podrán obtener un valor entre 0 y 255 (o más, si finalmente has incorporado los mapas de 16 o 32 bits para dar más resolución), que será la altura de esa parte del terreno, y actuar en consecuencia.

Seguro que hay más de uno que agradece que haya una opción para colocar los objetos pegados al suelo, pero como digo, no siempre es una necesidad.
Aunque tampoco sé en qué es lo que tenías pensado implementar, si sólo la altura del centro, si iba a tener en cuenta el ancho del billboard y los pixels transparentes de la parte de abajo, si iba a comprobar el siguiente pixel y si la diferencia de altura era demasiado, impedir que avance...
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)