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


发新话题
打印

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

引用:
原帖由 hudihutian 于 2007-9-27 14:18 发表
所有角色的坐标信息和动作信息?

omg

地图如果是1000000x1000000像素的,每秒60帧,仅仅记录主角的坐标信息每秒要多少字节?
这个能有多少字节?
就按你来说坐标的单位达到1000000,
1000000换算成十六进制是F4240.

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

何况这还是最愚蠢最笨拙的办法。

Halo应该只是保存玩家操作信息和AI取值,数据量要小很多。


TOP

引用:
原帖由 xphi 于 2007-9-27 16:19 发表


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

实际4个字节就足以表现一个角色的方向,角度,当前的状态操作。 6个坐标值是怎么来的= =.



TOP

引用:
原帖由 xphi 于 2007-9-27 16:25 发表


3维空间中位置坐标需要x,y,z 3个值,方向向量也需要x,y,z三个值。还仅仅是位置方向。
引用:
原帖由 xphi 于 2007-9-27 16:19 发表


这个计算太奇怪了,一般来讲,记录一个物件的位置,方向,需要六个座标值,这个值就是你这里计算的35K的3倍,算是100K吧,如果场景中有1000个物件的话,就需要100M,每分钟100M,还仅仅只是位置信息……。
首先申明,我前面已经提到HALO的录像是存储操作信息和AI取值。这样的优点是数据非常小,缺点是不能自由取段播放和倒放。

其次,我也很蛋痛,希望证明录像通过完全记录时间轴上的路径位置和状态数据的方式,虽然数据量会多很多,但也不是完全不现实的。

首先地图是多大?

很显然,地图坐标大小和画面分辨率毫无关系,HALO也不是一个像素级别移动的游戏。
你前面提到地图取值达到1百万*1百万,并没有提到场景的高度,我理解为是一个纯平面的场面,才导致前面的算法并未加上Z轴,而且这个1百万也太不严谨。

我们重新假设来场景的地图取值。
假设场景为1平方公里见方,高100M的空间。地图最小移动尺度为2cm.
那么地图单位就为50000*50000*5000。
这里可以使用一个优化算法,就是把整个地图平均分成(ABCD)等16个区,那么每个区的坐标就是3125*3125*5000.
还有halo的地图并不是所有坐标角色都能到达,对于主角来说,至少有一半以上的地形不能去到,对于npc和敌人来说,便有更多地方不能去了。
这些不能到达的坐标,可以在地图取值中删掉。
在这里,我们优化掉一半。那么得到3125*3125*2500.
那么一个人物地图坐标就是312531252500=48C4507514+分区A=11个字节
坐标我们只记录人物的运动状态,静止状态不用记录。假设人物70%时间在运动,30%时间静止。

人物视角角度坐标。
我们假设精度达到水平方向2000*垂直方向2000,去除人物瞄准的死角,比如正上方和正下方。
得到面对角度坐标为2000*1600=1313340=7个字节
坐标我们只记录准心的运动状态,静止状态不用记录。假设人物60%时间在瞄准,40%时间固定视角。

人物动作状态。
根据HALO的动作数量,3个字节足以表现所有状态。
我们只记录运动改变状态,静止或者延续状态不用记录。假设人物50%时间在改变状态,50%时间保持静止状态或者延续状态。


人物武器种类和副武器种类 2个字节,这个不需要每帧做记录,每次更换武器记录一次。我们假设1s更换一次武器。

手雷
4种手雷每种两个。使用4字节。每次手雷数目变化的时候记录。假定平均2s记录一次。

武器弹数
每把武器使用2个字节,一共4个字节,消耗的时候记录。假定平均0.5s记录一次。

装备装置
一个字节,消耗或者改变的时候记录。假定平均30s记录一次。

护盾
2个字节,消耗或者改变的时候记录。假定平均2s记录一次。

这样我们得到主角的全状态记录数据。因为halo3的回放是30Fps,所以我们只按照30Fps来计算。

主角一分钟数据量
位置坐标
11*70%*30fps*60=13860字节

瞄准坐标
7*60%*30fps*60=7560字节

动作状态
3*50%*30fps*60=2700字节

武器种类
2*60=120字节

手雷
4*30=80字节

武器弹数
4*120=480字节

护盾
2*30=120字节

总共一分钟主角占用24kb的数据


我们假设战场上有1个重要npc,4个次要npc,20个敌人,其中重要npc的数据是主角的40% ,次要npc的数据是主角的25%,敌人的数据是主角的10%.
总共人物数据是24+24*40%+24*4*25%+24*20*10%=一分钟106KB

即使把其他战场上的多余数据如弹道,物体移动,和场景破坏等整体数据加起来算作主角的2倍。

也不过一分钟318kb的数据,半小时时间10mb不到。
这还没做过数据压缩。

所以说录像通过完全记录路径位置和状态数据的方式,文件虽然大,也还是算行得通的。

[ 本帖最后由 zo 于 2007-9-27 18:34 编辑 ]


TOP

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