Non, la taille des maps ne sont pas proportionnels à la ram ...
De toute façon seuls les chunks chargés sont en ram, le reste est dans le disque dur. Donc la ram n'est pas un facteur limitant pour la taille d'une map. Je ne sais pas où tu as lu ça.
Preuve par le code :
Code:
public boolean setBlockState(BlockPos pos, IBlockState newState, int flags)
{
if (!this.isValid(pos))
{
return false;
}
else if (!this.isRemote && this.worldInfo.getTerrainType() == WorldType.DEBUG_WORLD)
{
return false;
}
else
{
Chunk chunk = this.getChunkFromBlockCoords(pos);
Block block = newState.getBlock();
net.minecraftforge.common.util.BlockSnapshot blockSnapshot = null;
if (this.captureBlockSnapshots && !this.isRemote)
{
blockSnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(this, pos, flags);
this.capturedBlockSnapshots.add(blockSnapshot);
}
int oldLight = getBlockState(pos).getBlock().getLightValue(this, pos);
IBlockState iblockstate1 = chunk.setBlockState(pos, newState);
if (iblockstate1 == null)
{
if (blockSnapshot != null) this.capturedBlockSnapshots.remove(blockSnapshot);
return false;
}
else
{
Block block1 = iblockstate1.getBlock();
if (block.getLightOpacity() != block1.getLightOpacity() || block.getLightValue(this, pos) != oldLight)
{
this.theProfiler.startSection("checkLight");
this.checkLight(pos);
this.theProfiler.endSection();
}
if (blockSnapshot == null) // Don't notify clients or update physics while capturing blockstates
{
this.markAndNotifyBlock(pos, chunk, iblockstate1, newState, flags); // Modularize client and physic updates
}
return true;
}
}
}
C'est la fonction setBlock qui gère le placement des blocs. Au début de la fonction on voit que si la position n'est pas valide, il ne pose rien :
Code:
if (!this.isValid(pos))
{
return false;
}
Et voila la fonction isValid :
Code:
private boolean isValid(BlockPos pos)
{
return pos.getX() >= -30000000 && pos.getZ() >= -30000000 && pos.getX() < 30000000 && pos.getZ() < 30000000 && pos.getY() >= 0 && pos.getY() < 256;
}
Conclusion, les maps s’étendent de -30000000 à 30000000 en x et en z et de 0 à 256 en y, donc sur 60 000 000 (longueur) x 256 (hauteur) x 60 000 000 (largeur).
Si le code ne te suffit pas comme preuve, va sur un monde avec les cheat activé et fais
/tp <ton pseudo> 29999999 64 29999999
Tu vas arriver sur le bord du monde, la map continuera visuellement mais si tu tentes d'aller dessus tu vas tomber.
Pour répondre à la question de base, en effet pour avoir un aperçu en entier du monde il faudrait dans un premier temps générer tous chunks, ce qui est particulièrement long.