※ 引述《hylkevin (19s)》之铭言:
: → spfy: 虽然有人解释但我还是想不通倒转要怎么实作 不可能把林克附
: → spfy: 近所有物件的轨迹都长期记录起来吧?
: 记录一个物件在空间中的姿态(pose: 包含位移跟旋转)
: 一般是用一个4x4的浮点数(float: 有小数点的数字, 4 byte)矩阵
: 也就是说纪录一笔位置, 内存大小是4x4x4=64 byte
对不会改变大少,伸缩的物件而言
一般用 2 个 vector3 就好了, 6 个float浮点数, 6x4=24byte
struct vector3
{
float x, y, z;
};
struct location_t
{
vector3 position;
vector3 orientation;
};
: 假设他每秒记录30笔pose (30fps), 并假设每个可移动物件都纪录10秒
: 则一个物件的时间倒转记录是64x30x10=19.2 kbyte
: 超过一定距离的物件不能时间倒转, 甚至都不会加载
: 所以假设他同时间最多有1000个物件会被加载(实际上应该没这么多)
: 他用来存时间倒转资讯的总内存用量在每个时刻都不会超过19.2mbyte
: 由此可知时间倒转其实负担并不大
: 对于一个现代的系统来说, 19mb通常是可以忽略的大小
这个要看游戏引擎跟物理引擎怎么写
场景物件不见得都会被记录 尤其是最佳化过的游戏
不过内存就上面算的 并不是很大的量
拿波斯王子举例 20年前的游戏 都可以记录王子跟附近敌人10秒的运动轨迹
TOTK 只需要纪录10秒内 经过物理引擎计算的物件就好