[SDL] meilleure méthode?

meilleure méthode? [SDL] - C++ - Programmation

Marsh Posté le 06-09-2010 à 16:57:03    

Bonjour,
Concernant un projet de jeux 2D avec plusieurs calques utilisant un tileset, je me pose une question d’optimisation.
Je vous explique l’organisation de mon code :
J’ai en mémoire en permanence environ 400 tiles (qui sont des SDL_surface de 32 x 32).
J’ai des « layers » qui grosso modo sont justes de tableaux à 2 dimensions contenant l’id de la tile à placer à telle case.
Ces layers (10 grand max) se superposent les uns sur les autres mais il y a d’autres éléments qui bougent entre ces calques (genre sprite qui s’anime)
J’ai une caméra correspond à la fenêtre de mon jeu (mettons 800 x 600) qui affiche donc juste une parti de tous les layers « fusionnés ». Le truc important est que ma caméra, d’une frame à l’autre, ne peut se déplacer que au max de 32 pixels.
Je vois 2 méthodes pour afficher la scène :
1) Pour chaque calque, je blitte les tiles qui seront à l’écran, aux bonnes positions. Ensuite je blitte les sucessivement les couches 2 à 2 (typiquement un truc genre calque / animation par-dessus / calque / etc), en effacant de la mémoire les calques une fois blités.
2) Une autre méthode qui utilise le fait que la caméra scrolle assez lentement serait la suivante :
Pour la 1ere image je garde la méthode 1, mais je n’efface pas de la mémoire les SDL_Surface correspondant à chaque calque. Pour calculer chaque nouveau calque à l’étape d’après, au lieu de recréer ce calque en blittant chaque tile dessus une par une, je m’appuie sur le calque précédent en mémoire et je décale juste la zone calculée (et je re-blitte les tiles manquantes). Une fois ces calques calculés, je les blitte entre eux comme précédemment mais je les garde en mémoire.
 
L’avantage de 1) est que je ne conserve pas mes 10 calques en mémoire, mais l’avantage du 2) est que chaque calque va très vite à être re-calculé (on ne calcule que les tiles qui sont apparus, pas ceux qui ont bougés), mais je dois constamment avoir 10 calques en mémoire.
 
Sauriez-vous me dire laquelle de ces méthodes est la meilleure niveaux perfs ?

Reply

Marsh Posté le 06-09-2010 à 16:57:03   

Reply

Marsh Posté le 06-09-2010 à 21:17:01    

Une barette de ram ça coute pas cher donc 2)

Reply

Marsh Posté le 07-09-2010 à 17:49:17    

Donc mon appli qui est un pauvre jeu 2D prend déjà 20 Mo de RAM?  C'est pas trop ? :o

Reply

Marsh Posté le 08-09-2010 à 16:23:24    

20 Mo, à notre époque, c'est pas énorme [:proy]

Reply

Marsh Posté le 08-09-2010 à 16:35:59    

Ouais mais ils faisaient comment sur les consoles y'a 15 ans?
 
Ca me gene pas d'utiliser ça, mais j'ai l'impression que je passe à côté d'un truc plus intelligent

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed