TGFC俱乐部>>游戏业界综合讨论区>>
- 翻页: ##1 ##2 ##3 > (1/3页)
- 刷新/显图/登录/注册/WEB
标题:突然想到了halo3回放模式的一个问题
时间:07-09-27 13:00
作者:美版游戏饭丝

众所周知,Halo3 回放的录像文件记录的只是玩家的操作序列,然后引擎根据这个操作系列重新把画面实时计算出来。但是,敌兵的动作是怎么记录的?AI计算出一个动作之后,也把其按照时间点为顺序保存到录像脚本文件中么?





回复列表 (126)
#2 golden 2007-9-27 13:02
保存的就是一段代码,包括你控制的mc还有其它ai,影院模式只是把代码还原成图像,你可以在任何一个位置任何一个角度看自己的游戏过程。

===================
#3 江西恐龙 2007-9-27 13:07
不可以回头,只可以快进……这个可能是技术上无法解决的一个问题。也算是一个大遗憾。

===================
#4 骷髅上帝 2007-9-27 13:09
也不可以选择某特定时间,只能从本关开始.不过还是很爽.

===================
#5 hanzo 2007-9-27 13:13
要记录所有敌兵的实时坐标和动态的话录像文件绝对不可能这么小,其实这是得益于halo3里AI逻辑的稳定,记录主角一人的行为足矣,牵一发而动全身

===================
#6 cowboyblues 2007-9-27 13:16
原帖由 hanzo 于 2007-9-27 13:13 发表
要记录所有敌兵的实时坐标和动态的话录像文件绝对不可能这么小,其实这是得益于halo3里AI逻辑的稳定,记录主角一人的行为足矣,牵一发而动全身

神经网络?



===================
#7 hudihutian 2007-9-27 14:01
只要你有本事手动玩两次,输入的按键顺序和时间是一摸一样的,那么游戏的过程和结果也是一摸一样的,这就是录像的原理。

根本不需要记录其他东西。

===================
#8 shinkamui 2007-9-27 14:06
这是不可能的。敌兵的ai反应绝不是固定不变的,即使输入量(包含干扰等)完全相同,计算的时候也会用随机加权方式选择反应事件。

个人估计应该是类似视频压缩那样的方式,有全信息帧和增量帧组成,然后再压缩。当然,记录应该不是坐标类信息,而是事件的起始点坐标,时间,以及事件本身的id,这样的信息足以描述完整进程了。

===================
#9 江西恐龙 2007-9-27 14:08
我不太认同HANZO和hudihutian的说法,AI设计里肯定有随机性。你们的意思是只要保证主角的操作数据完全一致,场景、敌人的反应将会是100%一致?

举个简单的例子——A和B两个玩家,游戏一开始就按住“↑”键不动,不操作任何键。直到冲进敌人堆里被打死,他们的死亡瞬间将会是一致么?

我认为程序设计的时候肯定要大量的随机性,任何敌兵都有不同的百分几率来做出不同的反应。HALO3的回放模式,应该是记录了主角+敌兵的所有行动数据。

===================
#10 hudihutian 2007-9-27 14:10
随机?计算机有随机?

随机全部都是伪随机……

计算机只是根据公式处理0和1而已……

===================
#11 hudihutian 2007-9-27 14:11
谁能制造一个能产生真正随机数的方法或者公式?

嗯,这个人起码比爱因斯坦要强……

===================
#12 大头木 2007-9-27 14:14
应该是保存所有角色的坐标信息和动作信息。
容量也不会很大。
马里奥赛车A那种混战的都能用这么小的容量进行回放也没什么。

===================
#13 mouseguard 2007-9-27 14:17
原帖由 hudihutian 于 2007-9-27 14:10 发表
随机?计算机有随机?

随机全部都是伪随机……

计算机只是根据公式处理0和1而已……


是伪随机, 只不过根据取样的不同会有几十种结果而已, 在我们看来已经是随机出现了, 我相信以恐龙的推断至少会发生10+种不同的死亡方法和时间

===================
#14 hudihutian 2007-9-27 14:18
所有角色的坐标信息和动作信息?

omg

地图如果是1000000x1000000像素的,每秒60帧,仅仅记录主角的坐标信息每秒要多少字节?

===================
#15 hudihutian 2007-9-27 14:20
原帖由 mouseguard 于 2007-9-27 14:17 发表


是伪随机, 只不过根据取样的不同会有几十种结果而已, 在我们看来已经是随机出现了, 我相信以恐龙的推断至少会发生10+种不同的死亡方法和时间


伪随机实际上就是根据公式去计算而已,只不过公式复杂一点,算法复杂一点,比如遗传算法等等,不过说到底公式绝对是一定的(即使“公式变化了”,怎么变化这个公式也是一定的)。

既然公式一定,输入什么,就会得到唯一一个输出,所以根本不存在随机的问题吧。

===================
#16 大头木 2007-9-27 14:22
原帖由 hudihutian 于 2007-9-27 14:11 发表
谁能制造一个能产生真正随机数的方法或者公式?

嗯,这个人起码比爱因斯坦要强……


为什么一定要通过代码来实现随机呢?现在随机都是通过时间的方式再加个随机函数,总也有重复的。

但如果是真的需要一个随机的数据的话可以增加一个硬件,就像彩票那样的一个马达,通过这个硬件产生的
随机的数据流来取得随机数,实现起来也简单,就像wiiremote的里面的动作感应可以取得数据样,加一个里面混有无数钢珠的马达,取得的数据也可以当作是随机数据了。

===================
#17 hudihutian 2007-9-27 14:24
原帖由 大头木 于 2007-9-27 14:22 发表


为什么一定要通过代码来实现随机呢?现在随机都是通过时间的方式再加个随机函数,总也有重复的。

但如果是真的需要一个随机的数据的话可以增加一个硬件,就像彩票那样的一个马达,通过这个硬件产生的
随 ...


不通过代码通过什么?

所谓通过硬件的随机数据也是伪随机啊,只是公式超复杂罢了(那么多球球装来撞去,你算给我看看……,不过碰撞公式大家都知道)

===================
#18 超越神的牛肉人 2007-9-27 14:26
我只想问问为啥都说回放的时候画面要比打的时候画面来得强……
想了整整30秒想不出结果
我就睡了:企鹅饮酒:

===================
#19 大头木 2007-9-27 14:28
原帖由 hudihutian 于 2007-9-27 14:24 发表


不通过代码通过什么?

所谓通过硬件的随机数据也是伪随机啊,只是公式超复杂罢了(那么多球球装来撞去,你算给我看看……,不过碰撞公式大家都知道)


没有啊,这个和彩票的原理类似,难道彩票产生的数据就不是随机的了?如果这样的话就扯到哲学上了,这个世界都是完全规律的,没有随机了。

===================
#20 hudihutian 2007-9-27 14:29
原帖由 大头木 于 2007-9-27 14:28 发表


没有啊,这个和彩票的原理类似,难道彩票产生的数据就不是随机的了?


当然不是随机的,所谓随机目前只存在于微观粒子的世界中吧……

===================
#21 大头木 2007-9-27 14:30
原帖由 超越神的牛肉人 于 2007-9-27 14:26 发表
我只想问问为啥都说回放的时候画面要比打的时候画面来得强……
想了整整30秒想不出结果
我就睡了:企鹅饮酒:


大概是因为已经可以提前得到下一帧的情况下可以提前对下一帧进行渲染的原因吧。

动画播放还有个双缓冲呢。



===================
#22 hudihutian 2007-9-27 14:31
原帖由 大头木 于 2007-9-27 14:28 发表


没有啊,这个和彩票的原理类似,难道彩票产生的数据就不是随机的了?如果这样的话就扯到哲学上了,这个世界都是完全规律的,没有随机了。


恭喜您,爱因斯坦也是这么想的……

不过貌似杨振宁同学通过实验否定了这种想法…………

===================
#23 大头木 2007-9-27 14:33
原帖由 hudihutian 于 2007-9-27 14:29 发表


当然不是随机的,所谓随机目前只存在于微观粒子的世界中吧……


从宇宙大爆炸开始的那一瞬间,世界就没有随机了.........因为都遵循物理学,都存在算法。:企鹅结冰:

那么随机这个词造出来还有啥意义。

===================
#24 hudihutian 2007-9-27 14:34
原帖由 大头木 于 2007-9-27 14:33 发表


从宇宙大爆炸开始的那一瞬间,世界就没有随机了.........因为都遵循物理学,都存在算法。:企鹅结冰:

那么随机这个词造出来还有啥意义。


爱因斯坦就是这么想的呀…………

随机这个词在他看来就是一个“迷信”的词汇吧……

===================
#25 大头木 2007-9-27 14:37
原帖由 hudihutian 于 2007-9-27 14:34 发表


爱因斯坦就是这么想的呀…………

随机这个词在他看来就是一个“迷信”的词汇吧……


爱因斯坦能不能通过物理算法算出我下一贴会回几个字,会不会回帖:D

===================
#26 hudihutian 2007-9-27 14:39
原帖由 大头木 于 2007-9-27 14:37 发表


爱因斯坦能不能通过物理算法算出我下一贴会回几个字,会不会回帖:D


有什么计算不了,只不过超级复杂罢了,算了也不合算,没价值。

你不就一团分子么……

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

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

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

===================
#29 Ashley 2007-9-27 14:45
原帖由 xphi 于 2007-9-27 14:40 发表
目前计算机的随机序列都是伪随机,只要保证随机种子是一样的,就能保证产生完全相同的随机序列,所以Halo3的战役模式下只要记录一个初始随机种子,游戏初始状态,玩家的输入序列就可以了。但是这样的保存问题就 ...

正解!


我说你们不去操黑佬,怎么跑来讨论爱因斯坦啊...

===================
#30 xphi 2007-9-27 14:48
上班的时间怎么操,晚上回家才能继续。

===================
#31 hudihutian 2007-9-27 14:50
原帖由 xphi 于 2007-9-27 14:42 发表
爱因斯坦是决定论的坚定拥护者,不过从现在混沌力学,量子力学的成果来看,决定论基本上已经本证明是错误的了,也就是说,绝对的随机是完全可能存在的。


爱因斯坦错了,并不代表其他人对了,可能在更深的层次上,还是爱因斯坦对了…………

从某个角度上说,你永远无法证明爱因斯坦错了…………

===================
#32 yangzhicai 2007-9-27 14:51
回放模式的过场除快进能跳过不看吗

===================
#33 xphi 2007-9-27 14:53
至少现阶段的结论是爱因斯坦错了,科学论题都是等着去被证伪的,以后的事以后再谈。

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

其实就连2D游戏都有很丰富的随机性,格斗之王或者街霸,你进入游戏后不进行任何操作,你的死法绝对是不一样的。

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

其实就连2D游戏都有很丰富的随机性,格斗之 ...



计算机目前还没有使用真随机数的,你还是相信hudihutian的好。

===================
#36 existzero 2007-9-27 14:58
live对战也可以重放啊,难道大家其实是生活在虚拟世界?世界上其他人都是ai?:哇哦(赵叔专用):

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

其实就连2D游戏都有很丰富的随机性,格斗之 ...


随机种子……

如果随机种子一样,那就是一样的……

比如某游戏选定开始游戏的日期加时间为随机种子,那么如果随机种子一样,过程输入一样,结果肯定一样……

===================
#38 索尼来也 2007-9-27 14:59
原帖由 xphi 于 2007-9-27 14:58 发表



计算机目前还没有使用真随机数的,你还是相信hudihutian的好。


那么按着前不动这玩几次这游戏会怎么样?:黄脸问号:

===================
#39 hudihutian 2007-9-27 15:01
简单的说,好像走在路口,只要你选定的路是确定的一条(某一随机种子,其实这个种子也是公式产生的,伪随机),那么到达的地方就是绝对一样的……

===================
#40 索尼来也 2007-9-27 15:02
还是好奇按前不动会怎么样,试试把:D

===================
#41 hudihutian 2007-9-27 15:05
其实想验证,可以这样,开始模拟器玩,暂停,即时存档,按住上,继续……

反复load几次看看……

当然你的键盘要能稳定60帧输入吧…………



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

===================
#43 江西恐龙 2007-9-27 15:07
任何动作有百分比的发动几率就是随机了。何必纠缠在随机是真随机还是假随机呢?

以格斗之王为例子,敌人在我方100个象素点位置时,我方角色会有20%几率做出轻拳攻击,有30%的几率做出重拳攻击,有50%的几率会跳跃……这难道不是随机性?

——A和B两个玩家,游戏一开始就按住“↑”键不动,不操作任何键。直到冲进敌人堆里被打死,他们的死亡瞬间将会是一致么?
你敢回答说“士官长的死法100%每次都一样”?

===================
#44 xphi 2007-9-27 15:07
所以即使每次都完全相同的输入,除非刻意去做到种子一样,比如回放录像,基本都会都到不同的AI反映结果。

===================
#45 hudihutian 2007-9-27 15:10
原帖由 江西恐龙 于 2007-9-27 15:07 发表
任何动作有百分比的发动几率就是随机了。何必纠缠在随机是真随机还是假随机呢?

以格斗之王为例子,敌人在我方100个象素点位置时,我方角色会有20%几率做出轻拳攻击,有30%的几率做出重拳攻击,有50%的几率会 ...


那个百分之几是可以由算法算出来的,当然不叫真随机……

一个无理数你知道n位,那么第n+1位是多少?这个才能叫随机……

如果有xo模拟器,你只要开始游戏之后,能够save state,然后反复load,一直按住某键,排除一些外部干扰(比如手柄的机械性能),结果当然是一样的……

当然这是纯理论,跟真正玩起来tm有什么关系

===================
#46 江西恐龙 2007-9-27 15:15
你看看你,又开始谈随机的真假了……我们能不能不讨论真还是假呀。

你在本帖子里第一个回复是——
只要你有本事手动玩两次,输入的按键顺序和时间是一摸一样的,那么游戏的过程和结果也是一摸一样的,这就是录像的原理。根本不需要记录其他东西。

我对你这句话的回复是——
我不太认同HANZO和hudihutian的说法,AI设计里肯定有随机性。你们的意思是只要保证主角的操作数据完全一致,场景、敌人的反应将会是100%一致?
举个简单的例子——A和B两个玩家,游戏一开始就按住“↑”键不动,不操作任何键。直到冲进敌人堆里被打死,他们的死亡瞬间将会是一致么?

你到现在还没有回答我的问题哦……:企鹅左右筛沙:

===================
#47 hudihutian 2007-9-27 15:17
原帖由 江西恐龙 于 2007-9-27 15:15 发表
你看看你,又开始谈随机的真假了……我们能不能不讨论真还是假呀。

你在本帖子里第一个回复是——
只要你有本事手动玩两次,输入的按键顺序和时间是一摸一样的,那么游戏的过程和结果也是一摸一样的,这就是 ...


种子,随机种子,我默认随机种子一样了:肥雀青筋:

实际上百分之九十九以上的情况,随机种子就是时间

===================
#48 宋江 2007-9-27 15:20
原帖由 hudihutian 于 2007-9-27 15:10 发表


如果有xo模拟器,你只要开始游戏之后,能够save state,然后反复load,一直按住某键,排除一些外部干扰(比如手柄的机械性能),结果当然是一样的……

当然这是纯理论,跟真正玩起来tm有什么关系


不要想当然,XO当然没有模拟器,但是有CHECKPOINT.
在每一个CHECKPOINT后你死亡,然后在当时的情景下重新开始,和SAVE/LOAD是一样的.
你觉得每次周围的环境互动,是会完全一样的么?
你可以去试,我告诉你,一定是不一样的.

不要说什么真随机假随机,这里讨论的随机,无非就是一个随机函数取出来的值,对于玩家来说,这就是真正的随机,因为人脑无法应对这种不确定性.
再扯远,那就是纯粹的瞎扯了.

===================
#49 hudihutian 2007-9-27 15:22
原帖由 宋江 于 2007-9-27 15:20 发表


在每一个CHECKPOINT后你死亡,然后在当时的情景下重新开始,和SAVE/LOAD是一样的.


随机种子变了你根本看不到……

变没变也不知道……

===================
#50 大头木 2007-9-27 15:23
不用多说了,实践是检验真理的唯一标准。

恐龙回去,将两台X○对完全相同的时间,同时开始游戏,然后按着前,

录像试试看。

或者,让两个X○同时开始,然后什么按键也不懂,然后看敌兵的反应。

===================

1/3页 ##1 ##2 ##3 下页


[登录后才可回复]