回滚数据的最有效方法.转回时间

And*_*rew 5 c++ arrays

所以,我有一个3d平台游戏.而且我想要一个按钮,如果你握住它会让你"回到过去".值得庆幸的是,游戏相当简单,只有一个实体,因此每帧必须保存的唯一内容是.

struct Coord {
float x;
float y;
float z;
}

structure Bool6 {
bool front;
bool back;
bool left;
bool right;
bool top;
bool bottom;
}

struct Player {
Coord Pos;
Coord Vel;
Bool6 Col;
}
Run Code Online (Sandbox Code Playgroud)

但是我担心这是很多数据,特别是因为我的游戏理论上运行在60fps左右,所以保存5秒左右(300帧)的数据可以在滚动后访问.我认为每个框架都是这样做的

Player Data[300];

for (int i = 299; i > 0; i--)
{
   Data[i] = Data[(i-1)];
}
Data[0] = "THIS FRAMES DATA";
Run Code Online (Sandbox Code Playgroud)

然而,这听起来意味着在存储每个帧时只需要大量的处理能力.

它们是一种更有效的方式来存储这些数据,保持所有数据的有序性吗?

还有一种方法我可以告诉阵列插槽它什么都没有?如果播放器在所有阵列插槽填满之前或回滚之后尝试回滚,那么它们不会出现问题?我相信C#我会把它设置为等于NULL ...但是这在c ++中不起作用可能是因为我正在使用结构.

非常感谢!

Pie*_*ter 1

我认为 300 个相对较小的元素组成的数组根本不会减慢您的速度,您尝试过对其进行分析吗?

也就是说,您可以将其存储在向量中,并将迭代器保留为“当前”并更新它。