Heroes III DS (otro que lo está intentando)

Hola.

No me atreveré a anunciar el proyecto de manera "oficial" porque ni siquiera estoy seguro de si acabaré terminándolo, debido a lo ambicioso que es. Me limitaré a contaros lo que tengo por ahora.

He estado desde agosto intentando portar el Heroes III con PAlib. Le abré dedicado en total unos tres o cuatro días completos (algunas tardes me da por trabajar en él, y luego me tiro varias semanas sin tocarlo hasta que me vuelven las ganas [jaja])

Tengo parte del sistema de batalla implementado y todos los sprites y sonidos ripeados del juego original. Estoy usando DualSprites de 64x64 en 256 colores. He decidido usar la DS como un libro para jugar, 90º girada a la derecha desde su posición "normal" (180º girada desde la posicion "Brain Training").

Lo primero que hice fue implementar el movimiento sobre el terreno de batalla por hexágonos, a través de un algoritmo con detección de colisión que es capaz de buscar el camino más corto para ir de un hexágono a otro partiendo de la velocidad que se le asigne a la unidad.

Y después hice un método para determinar el orden de acción de las unidades según un parámetro que bien podía ser el ataque o el daño de la unidad (no estoy seguro de qué depende exactamente).

Tras eso, me di cuenta de que la VRAM de la DS se llena con sólo meterle 32 sprites de 64x64 pixels en 256 colores (recordad que estoy usando DualSprites). Y eso me desanimó bastante, porque cada unidad tiene unos 40 sprites entre todas las animaciones de ataque, defensa, movimiento, muerte, etc. Así que si hay 7 unidades por jugador, más animaciones de héroes (en verdad sólo tienen una: cuando lanzan un hechizo) y de hechizos, máquinas (tienda de primeros auxilios, catapulta, balista y carro de municiones) y botones necesitaría muchísima más memoria de vídeo de la que la DS ofrece.

Sin embargo, no estaba todo perdido. Si conseguía implementar un sistema de archivos usando PAFS y dividía las "tiras" de sprites en archivos más pequeños (uno para la animación de ataque, otro para la de defensa, otro para cuando está quieto sin moverse) y los cargaba dinámicamente cuando fuesen necesarios tal vez podría continuar.

Y aquí estoy intentando figurarme cómo conseguir eso. Repartir la VRAM es realmente complicado cuando se tienen unidades de gran tamaño en pantalla. Suponiendo que en principio sólo pusiera una de las razas, limitándome así a 7 únicas unidades, no sería muy difícil. Pero como quiero meter todas las unidades debo contar con que 14 de los 32 sprites cargados en VRAM tendrán que ser unidades inmóviles en el campo de batalla para que se vea dónde están; 2 para los héroes; si hay máquinas hasta 4 más para las unidades (en caso de que ambos jugadores tengan 4 máquinas basta con clonar el sprite de manera que no gastemos más memoria); y para los botones 1 ó 2 (estos serán de 32x32, así que caben más). Así que alrededor de un 21/32 ~ 65% de la VRAM estará ocupado de forma fija en todo momento, y me queda un 35% para cargar animaciones dinámicamente. Y eso sin tener en cuenta otros elementos fijos en el terreno de batalla como obstáculos, trampas (minas, barreras mágicas) y (me echo a temblar al pensarlo) cada una de las partes del castillo, en caso de que la batalla sea un asedio. Está muy ajustado y es complicado de gestionar. Ah, y aún no me he parado a pensar en si la carga de archivos ralentizará demasiado el juego... Tan sólo espero que no sea así.

¿Alguien que conozca bien el juego, el hardware de la DS y PAlib se le ocurre un mejor sistema para repartir la VRAM? Tal vez me estoy complicando demasiado porque desconozco algo...

Y no me digáis que me rinda y use sprites de 32x32. ¡Si es posible, incluso si es muy complicado, querría usarlos de 64x64, que ya se pierde bastante resolución con respecto a los originales! xD

Perdonad el tocho texto. [tomaaa]

Edit: Adjunto una captura para estimular vuestra contestación XD

Imagen

En esta imagen tomada con el No$GBA se ve un piquero que estaría justo en medio de las dos pantallas, es decir, la mitad del piquero se vería en una pantalla y la otra mitad en la otra. Las unidades se mueven de una pantalla a otra sin problema y se muestra sombreada la zona hasta donde pueden moverse. El fondo es uno de los terrenos de batalla del juego. La rejilla de hexágonos es parte del fondo.
hmm.. curious!!! Danos una demo para testearla!!! xD

salu2!

PD: muy bueno el curro, espero que lo termines ^^ Suerte :D
¿Una demo?... Bueno... Pero no hace gran cosa, sólo se mueve el piquero.

Para que se mueva, simplemente toca donde quieras que vaya, dentro de la zona sombreada.

Para cambiar de pantalla (por si quieres moverte por la parte derecha del terreno) hay que tocar la parte negra, que es el espacio que he dejado para los botones.

Demo (pre-alpha :p): Click
Ánimo y mucha suerte con el proyecto. :)
Y por que no portas en Heroes 1, con algunos extras si quieras??
Lo digo porque seguro es mucho mas sencillo,
y es igualmente divertido.


No se muy bien si se puede abrir una rom y mirar su código fuente (va a ser que no)
Pero heroes ya salio en nintendo para GBC

Animo de todas formas, y suerte con la administración de memoria.
Vaya, y yo que estaba pensando en bajármelo para PC, qué casualidad. Ánimo con el proyecto.
Naxer escribió:Y por que no portas en Heroes 1, con algunos extras si quieras??


Me gusta más el III, y me parece que es el que más le gusta a la gente.

Gracias a todos por los ánimos. A ver si este fin de semana avanzo un poco.
asias por la demo ^^

salu2!
Busca el WolveSlayer. Es un juego en 3D que carga las texturas y el mapa de la SD. Creo que es de codigo libre.
Sí, si yo también puedo hacer eso sin más que implementar un sistema de archivos. Mi problema es que la memoria de vídeo interna de la DS es casi insuficiente para lo que quiero mostrar en pantalla.
solo puedo darte animos y que tengas suerte con este projento


y que acabe bien [looco]
Una idea excepcional y muy apoyada por los foreros, mi mas sincera enhorabuena por este proyecto amigo, ojala lo termines :)
clopezi está baneado por "Clonador"
mucha suerte tio!!

y recuerda, las betas animan a la gente a seguir animandote :P
yo solo se que este juego es lo mejor, y que si lo terminas creo que nintendo deberia pagarte para comprarte ya que serias un maldito crack.

un saludo y no te desanimes
ShySpy escribió:Vaya, y yo que estaba pensando en bajármelo para PC, qué casualidad. Ánimo con el proyecto.


Hola, no se si te interesará, pero en cualquier Game, puedes comprar el Heroes of Might and Magic Collection (del 1 al 4 con sus expansiones) por unos 5€.
clopezi escribió:mucha suerte tio!!

y recuerda, las betas animan a la gente a seguir animandote :P


Sé que las betas gustan, pero si mis progresos no se materializan en nada visible no sirve de mucho sacarlas! Vamos, que el fin de semana pasado me tiré bastante tiempo ajustando algunos de los miles de sprites que tiene el juego y reorganizando código, pero si no hay nada nuevo que se mueva, pues como que el usuario de a pie no va a ver diferencia.

Por cierto, en la demo que puse en la página anterior, la unidad es un alabardero, no un piquero, como dije, y la razón por la que no se puede andar por uno de los hexágonos de la parte izquierda es porque simulé que había un objeto en esa posición para probar la detección de colisión... Como podéis ver, funciona! [looco]
Gori Fater escribió:Sí, si yo también puedo hacer eso sin más que implementar un sistema de archivos. Mi problema es que la memoria de vídeo interna de la DS es casi insuficiente para lo que quiero mostrar en pantalla.


si usas palib usa sprites 3d que puedes mostrar la ostia de ellos.

usa largemaps y sprites de 64x64 normales y tendras mucha mas memoria...

salu2
Plata escribió:
si usas palib usa sprites 3d que puedes mostrar la ostia de ellos.

usa largemaps y sprites de 64x64 normales y tendras mucha mas memoria...

salu2


Je, je, je... Gracias por el consejo de usar 3DSprites, pero mi problema no es que necesite más de 128 sprites en pantalla, sino que necesito más de 128KB de espacio de VRAM para que se muestren todos cómodamente. Pero bueno, es posible meterlos en esos 128KB si se usa PAFS para cargarlos dinámicamente. Ya lo he implementado y me he animado bastante porque funciona muy bien y los tiempos de carga no se notan nada.

Y con respecto a los largemaps... Acaso se puede usar la memoria para los fondos como parte de la memoria de sprites? Hay algún ejemplo por ahí?
tienes algun avance importante para nosotros en forma de betilla??

un saludo
weee! un proyecto interesante.

Animo.
Que tal lo llevas ? espero no hayas salido nada estas navidades y te pusieras a desarrollar a saco xDDD ( esk le tng ganas a ese game :D )


Bueno solo era para darte Ánimos! y le des duro ... y no te preocupes por tardar .. que las cosas buenas aunque tarden , si llegan, merecen la pena :D [tadoramo]

Salu2!
animo y muchisima suerte!!!!!!!!

ese proyecto acabado dara muxo q hablar......
Esto es lo que he hecho durante Navidad:

- Implementar un sistema de archivos en vista de que el juego con seguridad acabará ocupando más de 4 MB. Funciona correctamente, pero a simple vista no parece que haya hecho nada diferente.

- Añadir más alabarderos, aunque no se muevan aún, al terreno de batalla, a través de una función que los sitúa directamente al darle como argumento la posición entre el resto de las unidades del héroe (hay 7 huecos para unidades).

- Corregir el tamaño de muchas (imágenes representando) unidades (mucho trabajo de photoshop) para ajustarlas al tamaño de las pantallas de la DS.

- Añadir los sprites de los héroes que se encuentran en la parte superior del terreno de batalla.

- Optimizaciones para paletas de manera que varios sprites puedan compartir algunas y así ahorrar identificadores.

No hay ninguna diferencia en jugabilidad, así que hoy no hay beta ni alpha. Pero dejo un screenshot:

Imagen

No hagáis caso de los números, son para hacer un debug perro...
muy wapo ^^ se agradece mucho que no lo dejes en la estacada :D

salu2!
animo tio, estamos todos contigo ^^!!!!!!!!!!!!!!
Gori Fater escribió:Esto es lo que he hecho durante Navidad:
....


Ánimo Gori :P Mañana te veo en clase y me cuentas cómo va esto ;)

Offtopic: Por cierto, ¿has mirado lo del cliente de voz IP?, verás que JJ nos canea :P
Este proyecto me ilusionó muchísimo cuando ví que un tipo lo iniciaba (el que seguramente todos conocen pues creo que seriamente es el único que lo planteó) hace bastante tiempo. Mi expectación aumentó al ver esta imagen:

Imagen

Y después un video en su blog:

http://heroes-ds.blogspot.com/


Hace muchos meses que dejó de dar señales...parece que nunca podré ver esto...espero que tú si logres hacer algo, mucha suerte.
El tuyo se ve a pantalla verticual por lo que entendí, y no como el del blog que mostré verdad?
Podria intentar ponerse en contacto con el, si no me equivoco tenia cuenta en este foro, asi que podrias mandarle un MP y ajuntar los dos trabajos.

Muchisima suerte.
BeRz escribió:Podria intentar ponerse en contacto con el, si no me equivoco tenia cuenta en este foro, asi que podrias mandarle un MP y ajuntar los dos trabajos.

Muchisima suerte.


eso seria perfecto, pero por soñar...xd
Shuy escribió:Ánimo Gori :P Mañana te veo en clase y me cuentas cómo va esto ;)

Offtopic: Por cierto, ¿has mirado lo del cliente de voz IP?, verás que JJ nos canea :P


No nos canea, es buena gente. :)

Arkziel escribió:El tuyo se ve a pantalla verticual por lo que entendí, y no como el del blog que mostré verdad?


Sí. Ya intenté ponerme en contacto con el del blog, pero no hubo forma. Me costó bastante encontrar una dirección de correo suya. El usuario se llamaba Kotfire me parece. Yo encontré en una página kotfire@hotmail.com, contacté con él para ver si podíamos hacer el proyecto juntos, y no me respondió. Puede que fuera una cuenta antigua que ya no usara, o que decididamente había dejado el proyecto y no quería saber nada.
Alguna novedad o avance?
No. Tengo la gripe y además se acercan los exámenes, así que hasta finales de febrero no esperes nada nuevo.

Bueno sí, tal vez haya algo nuevo. Estoy preparando un devblog donde tengo pensado explicar cómo hice cada parte del juego y compartir parte del código. Cuando haga los primeros posts pondré aquí la dirección.
atento a cualquier novedad, se me hace la boca agua, ojalá reapareciera el antiguo proyecto de aquel pibe que desapareció hace bastantes meses...estaba tremendooo

Imagen

como el tuyo quede una cosa asi flipo xd

http://www.youtube.com/watch?v=3m9aMipnMSI
Pummm, y apareció xD

Si no recuerdo mal esto que voy a poner aquí lo explique en mi tema.
El desarrollo del HeroesDS está pausado, estuve de examenes y tuve que dejarlo. Más tarde empecé a hacer otras cosas y dejé esto de lado.

No voy a cancelar el proyecto, pero no voy a tocarlo hasta que termine el resto de proyectos que tengo. ¿Cuanto tiempo? pues ni yo mismo lo sé.

Al autor del tema: Tiene muy buena pinta tu proyecto, no me convence demasiado la DS en vertical, sobretodo por el espacio que hay entre las dos pantallas(zona de incertidumbre) a mi por lo menos me distrae demasiado. A pesar de eso tiene muy buena pinta. Suerte!
Gracias por los ánimos Kotfire.

En PAlib se puede seleccionar a través de una sencilla función la longitud de la zona de incertidumbre. Si pruebas la demo que dejé en primera página verás que dicha zona tiene longitud 0 en mi versión. Es decir, que no existe en realidad, no te pierdes ninguna fila de píxeles.

Es más, en verdad la he puesto a una longitud "-1", de manera que la fila de píxeles que se ve en la parte extrema derecha de la pantalla izquierda es igual a la fila de píxeles que se encuentra a la extrema izquierda de la pantalla derecha, en lo que a movimiento de unidades se refiere.
oh a vuelto!!! xDD lo mismo si probarais a unir fuerzas...no supondría tanto sacrificio ni tanto tiempo y aportando ideas de los 2 tal vez quedase algo xaxi.
Por otra parte si quereis ir por separado tendremos 2 proyectos a elegir jajaja suerte
No me referia a la longitud virtual, si no a la real. La separación de pantallas era necesaria para que la portatil pudiera plegarse. 2 pantallas separadas son utiles para mostrar menu/juego, mapa/juego ect pero cuando las 2 pantallas forman 1 a mi personalmente me distrae. Es solo una opinion personal.

Si te sirve de algo, en mi diseño para los combates(todo en papel) la pantalla superior mostraba un minimapa del escenario de batalla o informacion(intercambiables con un boton) y la inferior la zona de combate actual. Para movernos por el escenario usamos la cruzeta de dirección. Lo pensé así para q no se tuviera q coger una lupa para ver las unidades xD. Para el turno del enemigo se usaria un scroll para no perdernos las acciones enemigas y se podria incluir un cuadro con nuestras unidades en la parte inferior de la pantalla para ir hasta ellas con un solo click. Nada de esto esta programado, así que son solo ideas ;)

HAsta otra
Ah, ya te entiendo...

Tu diseño también es bueno, pero es que yo quiero que el juego pueda ser controlado sólo con el stylus. Necesito hexágonos grandes en el terreno de batalla. Si no, no se podrá seleccionar fácilmente un hexágono para que se mueva la unidad.
que algo nuevo en estas 3 semanitas? ^^
una pena que no haya novedades:(
wetlands escribió:una pena que no haya novedades:(


Después de lo que ocurrió con el proyecto de StarLite, que iba bastante en serio y tuvieron que cesar su desarrollo por presiones externas, no sé si debería seguir poniendo por aquí lo que hago...
Haz un hilo...de un juego "nuevo" llamado Heroes de la DS.....y no pongas cosas exactas del heroes 3 simplemente que sea como el juego pero sin que te puedan decir nada....No se es la solcuion que se me ocurre...:P

Yo sigo esperando el homebrew...xD

Aunque las cosas buenas se hacen esperar...:P
Juer, esta bien por lo que veo.

Yo ando haciendo un motor de juegos de estrategia, pero esta mas verde que tu proyecto, aun los soldados son dibujo con una S y el terreno son cuadraditos de colores. Pero las señoras practicas han llegado, y por ejemplo hoy mismo tendre que estar unas 4 horas programando cosas que sinceramente me motivan 0.

De todas maneras, a modo idea, mirate las ulib que hace tiempo postee por este foro. Quizas encuentres respuesta (ami aun no se me ha planteado ese problema).


Con esas librerias es con las que estoy haciendo el motor este... y de momento estoy mas feliz que con las palib.

Animo!
nunca tendremos un port decente de heroesIII ? [decaio]
Perdón por revivir el hilo, pero acabo de descubrir esta página y la scene de NDS

Sólo comentaros que existe una versión de Heroes para Pocket PC

http://www.megaupload.com/?d=GYM937QR

Pregunto, desde la absoluta ignorancia. ¿Sería posible utilizar algo de esa versión para la DS?
que tal un UP? no merece q caigan estos proyectos :s
En Sourceforge han colgado el código fuente del Heroes 2

http://sourceforge.net/projects/fheroes2

¿No podría usarse para portarla a la DS?
Sí, y así sería mucho más facil...
Hay alguna manera sencilla de compilar código fuente y acabar teniendo un archivo nds?

Perdonad si mis preguntas os parecen demasiado básicas, pero es que no tengo mucha idea del tema.
Benito222 escribió:En Sourceforge han colgado el código fuente del Heroes 2

http://sourceforge.net/projects/fheroes2

¿No podría usarse para portarla a la DS?


Por favor portar el heroes II !!!!! Sinceramente creo q es uno de los mejores de la saga; ademas no es tan complicado como el III
52 respuestas
1, 2