C ++ 2D平铺引擎世界加载性能

时间:2015-07-16 02:35:09

标签: c++ multidimensional-array 2d tile

我有一个像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 << " ";

        }
    }

我对如何提出一种更轻松的方式来加载世界感到困惑。任何建议赞赏

0 个答案:

没有答案