Je lance une discussion sur ce sujet : non pas que je veuille faire un jeu qui s´appuie la dessus mais juste pour en causer, car les idées m´intéressent !
Prenez un Mario Bros, un jeu RPG Maker, etc : ils utilisent du TileMapping : algorithmiquement parlant, c´est un tableau 2D de "blocs"
Pour etre compact, on peut dire qu´un "bloc", c´est 1 octet : partant du principe qu´il n´y aura pas plus de 256 tiles différents dans le monde.
Un monde de Mario par exemple, qui fait 20 tiles de haut, et 1000 tiles de long, coutera donc 20*1000 = 20 000 octets (~ 20 Ko)
L´avantage d´un tel codage pour un "level", c´est qu´on calcule, depuis la position d´un perso, sur quel tile il évolue en 2 divisions (immédiat donc !)
Prenons maintenant Tomb Raider, premier du nom :
C´est le meme codage, mais en 3D. Ainsi, un monde qui fait 100 tiles de long, 100 de large, 100 de haut, fait déja 1 million de tiles, donc 1 Mo si on dit toujours qu´il ne peut y avoir que 256 tiles différents dans les monde.
Pour Tomb Raider, je pense qu´ils se sont débrouillé pour que les mondes ne soient pas trop grand ! (ou alors pas trop haut) pour ne pas consommer trop de mémoire.
Mais maintenant, imaginons que je veuille faire un monde tres tres grand (aussi bien en hauteur qu´en largeur qu´en prodondeur), la je suis coincé !
En effet, 1000 * 1000 * 1000 = 1 Go -> c´est déja beaucoup trop.
Alors sachant qu´il y aura de grannndes zones de vide, on pense tout de suite a la compression. Mais comment compresser cela ? J´avais pensé a un RLE, mais un RLE, c´est en une seule dimension !
De plus, avec un RLE, il devient apres bien difficile de trouver rapidement, pour une position x,y,z (de personnage) donné, sur quel tile il est !
Oui, je sais, c´est pour ça qu´on a inventé le heightmap, l´octree, le BSP, mais ça m´amuse de savoir comment on pourrait s´en sortir avec un codage en Tiles 3D !
Quelques idées ?