我有一个像Terraria一样的2D平台游戏,它基于创造世界的数百万个瓷砖。现在我正试图找到一种有效的方法来加载所需的瓷砖。
我有一个2D整数数组,每个数字都与某个平铺纹理相关联。我保存了整个2D数组,现在是6509x6509。我的问题是,当我启动游戏并进入世界时,加载包含2d数组的整个文本文件需要花费大量的时间和内存。我需要一种方法来加载围绕玩家而不是整个事物的世界大块,世界上更远的地方将被释放。
以下是我如何加载世界的代码:
std::ifstream load("game_save");
int offset;
for (int x = 0; x < 6509; x++)
{
for (int i = 0; i < 6509; i++)
{
load >> offset;
world.grid[x][i].render = offset;
load.ignore();
}
}
load.close();
这将读取文件并将其加载到2D数组
这是保存功能:
std::ofstream save("game_save");
for (int x = 0; x < 6509; x++)
{
for (int i = 0; i < 6509; i++)
{
save << world.grid[x][i].render;
save << " ";
}
}
我对如何提出一种更轻松的方式来加载世界感到困惑。任何建议赞赏