Salut,
Je suis en train de finaliser la partire graphique d'un jeu (pour le concours pyweek, pour ceux qui connaissent. Mon jeu est là : https://pyweek.org/e/Mechanism/ ). Jusqu'ici je me suis pas occupé des perfs, mais là j'ai un problème.
J'ai un générateur de terrain qui peut générer des surfaces de taille S*S (S=640 pixels). Le temps de génération d'une image est bien supérieur à celui pour l'afficher à l'écran (j'utilise pygame, un wrapper de la SDL, donc je "blit" les surfaces). En fait, le temps de génération d'une image est comparable à celui que prendrait le chargement de la même image depuis le disque dur. Du coup, je charge plein de chunks en mémoire, et je laisse le joueur s'amuser. Lorsqu'il déborde de la zone chargée, alors je recharge tous les chunks qui sont a une distance plus petite qu'un certain paramètre.
Le problème c'est que le nombre de chunks en mémoire est limité. En effet, avec 4 octet par pixel et S*S pixels, ça me fait environ 1.5Go par image (d'ailleurs, ça me parait beaucoup pour une image de 640x640 pixels, est-ce que je me trompe dans mon calcul ?). Du coup, je dois recharger des chunks super souvent, et ça nuit à l'expérience du joueur. Quelqu'un a une idée?
À noter que pour opti les perfs, je génère mes surfaces avec numpy, donc je peux pas générer des fractions de surface, m'interdisant le génération continue "pixel par pixel" des surfaces voisines. Le faire pixel par pixel en python divise par environ 100 le temps d'exécution...
Edit : au fait, mon simple laptop est capable de charger une centaine de chunks. D'après mes calculs, ça fait environ 100Go de données. Or je pense pas que mon ordi ait 100Go de RAM. Quelqu'un peut me dire où je me trompe ? Ou bien c'est python qui en background swap des trucs sur le disque dur ?
Message édité le 08 septembre 2016 à 13:29:36 par Lagrangien