» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 22 12
发新话题
打印

[其他] 突然想到了halo3回放模式的一个问题

目前计算机的随机序列都是伪随机,只要保证随机种子是一样的,就能保证产生完全相同的随机序列,所以Halo3的战役模式下只要记录一个初始随机种子,游戏初始状态,玩家的输入序列就可以了。但是这样的保存问题就在在于要计算出某个特定时间的状况必须由初始状态一步步推算出来,这就是Halo3的战役模式录像不能随意的跳至某一时刻的原因。相对的还可以观察到Halo3多人对战的记录是可以分节后退的,这就是因为多人对战里不需要计算AI,一个分节点只需要记录某一时刻全局状态就可以了,这个数据量相对战役来说小很多。

对伪随机有兴趣的可以去看看 Knuth 的The Art of Computer Programming 的第二卷。


TOP

爱因斯坦是决定论的坚定拥护者,不过从现在混沌力学,量子力学的成果来看,决定论基本上已经本证明是错误的了,也就是说,绝对的随机是完全可能存在的。



TOP

上班的时间怎么操,晚上回家才能继续。


TOP

至少现阶段的结论是爱因斯坦错了,科学论题都是等着去被证伪的,以后的事以后再谈。

TOP

引用:
原帖由 江西恐龙 于 2007-9-27 14:56 发表
hudihutian你还没回答下面的问题呢——
——A和B两个玩家,游戏一开始就按住“↑”键不动,不操作任何键。直到冲进敌人堆里被打死,他们的死亡瞬间将会是一致么?

其实就连2D游戏都有很丰富的随机性,格斗之 ...
计算机目前还没有使用真随机数的,你还是相信hudihutian的好。

TOP

一般来说,程序员都回想些办法来使每次产生的随机序列不一样,也就是每次的随机种子不一样,这个种子最常用的就是当前的系统时间。因为每次程序开始的时间都不同,从人使用的统计学角度来讲,这个值几乎就是一个真随机数,所以看起来计算机似乎也有了真的随机型。

TOP

所以即使每次都完全相同的输入,除非刻意去做到种子一样,比如回放录像,基本都会都到不同的AI反映结果。

TOP

有空在这里扯,随便找本书看看不就知道了,这个随机数是计算机的最基本知识啊,写过程序的话就不会有这么多问题了吧。

TOP

引用:
原帖由 zo 于 2007-9-27 16:02 发表

这个能有多少字节?
就按你来说坐标的单位达到1000000,
1000000换算成十六进制是F4240.

两个坐标F4240F4240一共是10字节。
10*60*60=一分钟游戏内容不过花掉35kb保存数据。

何况这还是最愚蠢最笨拙 ...
这个计算太奇怪了,一般来讲,记录一个物件的位置,方向,需要六个座标值,这个值就是你这里计算的35K的3倍,算是100K吧,如果场景中有1000个物件的话,就需要100M,每分钟100M,还仅仅只是位置信息……。

TOP

引用:
原帖由 zo 于 2007-9-27 16:23 发表

怎么可能三倍。

实际4个字节就足以表现一个角色的方向,角度,当前的状态操作。 6个坐标值是怎么来的= =.
3维空间中位置坐标需要x,y,z 3个值,方向向量也需要x,y,z三个值。还仅仅是位置方向。

TOP

引用:
原帖由 大头木 于 2007-9-27 16:27 发表


只记录动作就行了啊,要是真的把所有信息,坐标等都记录下来,那想慢放,想回放不就可以实现了。
记录动作的话信息量不会少,要记录方向,速度,质量等等问题。

TOP

引用:
原帖由 枉凝眉 于 2007-9-27 16:32 发表
晕,记住物体实时的坐标干什么
只要记住所有物体的指令坐标,在哪个时间点发出什么样的指令,剩下的让机器自己运算出来了
好比让主角从a点到b点跑了一条直线,录像只要记住指定的起始时间、指令的具体内容就行 ...
游戏里的物件不是一个孤立的存在,不像做Flash,制定轨迹就可以了,如果记录轨迹的话,还要记录物件之间的交互,记录量会更加的大。

目前大部分的游戏录像,包括SC,Halo3,几乎所有的模拟器,都是记录玩家的输入序列和机器初始状态,然后重新“玩”了一次游戏,就这么简单而已。

TOP

SC,模拟器的录像文件都是可以拿来看的,不相信的人自己去分析一下录像文件就完了么,我没兴趣再去和考猜来思考问题的人讨论了。

TOP

引用:
原帖由 zo 于 2007-9-27 18:30 发表



首先申明,我前面已经提到HALO的录像是存储操作信息和AI取值。这样的优点是数据非常小,缺点是不能自由取段播放和倒放。

其次,我也很蛋痛,希望证明录像通过完全记录时间轴上的路径位置和状态数据的方 ...
只看了第一段,后面部分还没看,我首先指出你的一个计算上的基本问题。

在记录物件的位置时,即使在一个1km^3的空间中记录,以2cm为精度,那么也只需要x,y,z三个坐标值,每个值的极限大小为50000,对于每一个值我只需要用一个16位的无符号整数字(0-65535)来表示就可以了,一个坐标值占用2字节,所以一共只需要6个字节,不知道你在那里优化了半天怎么还需要11个字节。

TOP

你后面的计算我看了一下,不可靠的推测太多了,特别是对某些物件使用数秒的时间单位进行采样,这肯定使不合理的,比如在Halo3中,2秒的时间我都可以丢出去2、3个手雷了。

此外,你对于场景中的物件这个概念的理解有问题。对于一个主角,由于是一个活动的模型,以Halo为例,就是一个人的样子,是包含了很多个物件的,头,手,躯干,武器。此外场景中的所有可以移动的物体都是物件。

所以我们也来简化的算一下:
每个物件位置6个字节,方向矢量以球面坐标来计算,取极低的精度,每维只用一个字节,总共三个字节,场景中共有1000个物件,每秒30帧的采样率计算,每分钟在不考虑数据结构,文件结构,附加数据的情况下,供需消耗(6+3)x1000x30x60=16,200,000个字节,也就是16M的数据量,事实上这个数据还是很不充分的。

TOP

 22 12
发新话题
     
官方公众号及微博