[PAlib duda] Muchos datos

ya hice todo lo anterior por lo que ya os di calo. Ahora mi problema surge cuando quiero tenes multitud de datos.
ya que es un rpg lo que estoy intentando desarrollar, necesito objetos.

Ponte que tengo 200 objetos, entonces que, ¿ al principio de la aplicacion me declaro un array de estructuras tamaño 200, y luego le introduzco datos?¿y eso no ocupara mucha memoria, y me petara? ¿no hay otro metodo mas eficaz?

Gracias por vuestra ayuda, y no os preocupeis, seguire dando calor con la programacion por que.... ME GUSTA PROGRAMAR

nota: habia pensado dividirlo en archivos de lectura, pero deseo que toda la aplicacion este en el mismo archivo, el .nds
Joder, y yo quiero ser millonario nos a jodido...

Enserio crees que vas a conseguir eso sin usar archivos externos???

A partir de los 100 sprites en ram empieza a ir petadillo si tiene que hacer muchos calculos...
joder, pero no me refiero a tener tantos sprites simultaneos, me refiero a tener muchos datos, estructuras en mi caso. mas o menos ¿cuanto puedo crear y rellenar simultaneamente para que no me pete?
pisha, se que la puta nintendo DS tiene 4 putos megas.

uff, lo siento, pero estoy harto de oir que tiene cuatro megas, cuatro, lo que viene despues del 3, y si llegas a 5 ya te has pasao y sin decimales (por si habia algun listillo).
por favor, considero que todos los que estamos en este foro conocemos lo de los cuatro megas (pega decirlo), cuatro megas de los cojones, asi que por favor, dejadlo ya.
A lo mejor si pones para expansión de ram...
Rigle escribió:A lo mejor si pones para expansión de ram...

La expansión de RAM es lenta como ella sola, asi que no es solución en la mayoría de los casos...

4 MB dan de sobra para cualquier juego diseñado para la DS si los administras bien, lo digo por experiencia. Igual que 512 KB de VRAM principal... Es suficiente para alguien que sepa usarlos, si no sabe como arreglárselas para quedarse sin memoria igual debería programar para otro sistema (como ordenador, por ejemplo).

Y lo único que se me ocurre es que hagas un array de punteros a struct de tipo "objeto" y vayas usando malloc y free para administrar la memoria. De todos modos... ¿cómo de grande es tu struct? Suponiendo que sea de 10 int y 10 float, y hagas un array de 1024 structs: 20 * 4 * 1024 = 80KB
Como puedes ver... hay memoria de sobra...
float, o no, a dicho float ! :P
Como bien dice antoniond tienes ram de sobra, en mi proyecto de cutre motor de juegos de estrategia no me rompí la cabeza y reservo el array de unidades de un plumazo en función del numero de jugadores y me olvido de ello( hablo de 400 unidades). No creo que merezca la pena estar haciendo malloc y free sobre una estructura que puedes estimar fácilmente su tamaño total y este no supone un gran gasto de memoria. Hay cosas mas importantes a optimizar, pero bueno, si estimas que sera absolutamente necesario, como ya te dicen, puntero a array de punteros , todo dinámico y a correr.
inxi, ya esta. Gracias antonio, como siempre, me has respondido y me has ayudado, y ati tb zark, es bueno saber una experiencia real y no teorica.
Y ahora que ya se todo esto, procurare sacar una beta cuanto antes.
ZarkGhost escribió:float, o no, a dicho float ! :P
Como bien dice antoniond tienes ram de sobra, en mi proyecto de cutre motor de juegos de estrategia no me rompí la cabeza y reservo el array de unidades de un plumazo en función del numero de jugadores y me olvido de ello( hablo de 400 unidades). No creo que merezca la pena estar haciendo malloc y free sobre una estructura que puedes estimar fácilmente su tamaño total y este no supone un gran gasto de memoria. Hay cosas mas importantes a optimizar, pero bueno, si estimas que sera absolutamente necesario, como ya te dicen, puntero a array de punteros , todo dinámico y a correr.

Oh, no!!! He dicho float!! Mejor no digo que también las uso en el juego que estoy haciendo... Oh, no!! Ahora me matarán por hereje... [+risas]

En realidad eso es hasta que el motor del juego esté listo, luego lo pasaré a fixed point, ¿eh? Jejejeje.


PD: Tampoco es plan andar haciendo un puntero a un array de punteros hombre... Por tener unos cuantos bytes ocupados siempre no te vas a morir. XD

EDIT: Se me olvidaba. XD De nada, hombre, para eso estamos.
vale, xD, la cosa de no leer detenidamente... xD

yo en el zelda (he perdido el codigo en un formateo, toda una lastima) no llege a llenar nunca la ram, lo que hacia era tenia una funcion que iniciava lo principal y definia a que mapa saltar (otra funcion indicaba como era el mapa al que "llamaba" con esa funcion), y cada vez que cambiaba de mapa borraba toda la ram, y cargaba esa funcion con lo inicial indicando que mapa tocaba, y ya despues funciones de iniciar enemigos y tal aparte...

Pero lo maximo de grande que era cada mapa era igual de 1024 x 784, no se si tu haces algun cambio de mapa o es un mapa gigante, por lo que andes escasito de ram ya de por si y no puedas aprovechar esos cambios para liberar al ser solo un mapa...
10 respuestas