用阴谋论解释355
事先声明:本文并非严格意义的论文,因为缺乏证据,所以用了阴谋论的角度写。欢迎各位提出反对意见,让大家进行讨论,但希望最起码能描述论证过程。那些“我不同意,所以你就是无理”的论调无聊之极,希望不要出现。当然,也欢迎灌水。阴谋,必先有动机,以此动机作为准则展开。假设你是koei,你会如何开发355呢?你面对的最大问题就是创新。前面一堆真三国无双,人物故事的创新是很有限的,不能脱离故事的核心,更不能凭空创造一些人物(因为凭空创造一个人物的代价很大,要从市场学角度分析可行性,之后就是投入大量的资源对这个人物从背景到外型进行设计)。那么创新的对象就变成了游戏系统。
回顾355的宣传片,抛开美术和剧情上的东西,就可以看到这几点(至少):
1、尸体不消失;
2、场景;
3、连舞系统。
这就是动机,游戏的设计就要符合这个动机进行。换句话说,动机就是最大利益所在,一切利益也要归顺于最大利益。
而这就导致了本腐最不满意的地方出现,起码这几个:
1、心灵传动小兵,还有突然出现又突然消失的景物;
2、三步以外的贴图崩坏;
3、连舞系统;
4、敌兵的绝对防御。
总的来说,355就是为了大视觉而牺牲了小视觉。
为了抛开一些麻烦,这里先设定一个前提:假定游戏的所有图形处理都在GPU中进行。
用面向对象编程的语言来描述,游戏中的每一个兵(包括自己),可以归为一个“人类(不清楚概念的,可以查查面向对象编程中“类”的定义)”的实例。
这个“人类”的属性包括:动作、体力、位置、状态(站立,倒下,攻击,防御)等等。
而玩家角色的属性在实例化的时候有所扩展,添加了连舞值、无双值、特技值等。
值得注意的有两点:一、动态阴影也算是一个“人类”的实例,只是它的数值跟随着主人的变化而已,简单的理解就是实际上玩家在一控二。它的扩展属性则包括光源(判断阴影方向)等等。二、尸体,实际上还是一个实例。
记住这句话:实例存在就一定要占用内存空间。
游戏进行的时候,在内存中出现的情形是这样的:
内存空间是由一个个格子在长宽高方向连续排列而形成的空间,空间中每个格子都有自身的不重复的编号。
那么,不妨把战场想象成一个1000 X 1000 X 1000的空间,而在战场中的人物则是一个10 X 10 X 10的立方体。和355不同,354的景深开尽了也不是全场,这样做可以保证内存空间的低使用率,减轻cpu运算,从而获取流畅的速度。
显然,战场中能容纳的人数十分有限。为了防止溢出,程序不会容许同时存在“人类”的实例数超过一定数量。所以尸体不可能永远不消失,因为它始终占用了一个实例大小的空间。于是就出现了“走一段距离,然后回头尸体不见了”的现象。
还有另外一个更重要的原因就是cpu的运算。人物有运动,就必然存在运算。同屏人数多,运算量大,大量运算同时进行,就会出现等候,甚至死锁。这就是卡的本质。
完全服务于动机,Koei定出了牺牲式的解决方案是:
一、心灵传动的人和物。隐形士兵就是一个未实例化的“人类”,它占用了一个相对较小的空间。这是一种预生成,这个“人类”被指明要生成一个小兵,当且仅当内存空间能够分配出一个新的实例空间。形象一点说,就好像轮回一样,尸体消失了,或者士兵走出了一定范围,就会有新的士兵出现。这样就保证了同屏人数,但显然这个预生成做得不太好。相信大家也见过忽然出现的小兵和自己行动的诡异帅旗了吧。
二、三步以外的阴影消失和贴图崩坏。阴影消失同上理可以解释。而贴图崩坏则是为了防止gpu运算量。
三、敌兵的绝对防御。回到前面描述的内存空间,当人物攻击时,在那10 X 10 X 10的立方体X相邻的位置取一个1 X 1 X 1的方格k,附上攻击状态。当另外一个10 X 10 X 10的立方体Y靠近,就会通过编号判断Y内的方格是否与之邻接,是则攻击成功,否则失败。由于一个攻击动作存在多个瞬间,所以这种判断要进行很多次。这是最简单的攻击判定。加入防御事件之后,当一个角色防御,则将他防御面的100个方格设为防御状态,判断与k邻接的Y内的方格是否防御,是则攻击失败,否则成功。而绝对防御则免却这个设定的麻烦,只要把Y的属性设定为防御,判断时候只需要将k和Y的防御属性作比较就行。所以koei就是用绝对防御来减轻内存和cpu的压力,让它们全心全意服务于场景和人数。
然而这个解决方案却不能解决问题。或者说只是杯水车薪。
卡的原因,除了兵多,还有连舞系统。
简单的出招设计可以这样:设置一个temp记录已实现的动作数。每按一下攻击键,判断temp值,从而判断下一个动作。这种方法通常会使用函数的递归实现,从而使得时间复杂度大增。
假如是堆栈,则只需要可以通过判断盏顶元素(现在的动作)来判断下一个动作。一定的时间片内,每按一下攻击键的运算流程如下:判断盏顶动作,确定下一个动作,实现动作,将此动作就会被放入堆栈。当按下攻击键盘超出了这个时间片,则会清空堆栈,所以再按的话动作就重新开始。这个相信355和354都是一样的。然而355却增加了一个连舞系统,也就是每次动作检验都要检验连舞值,if语句包含了两个元素,使得时间复杂度增大了,从而增大了cpu的压力。
然而,koei为了维护前面所说的动机,使得355的问题和解决方案出现失衡,并且牺牲了不该牺牲的东西,创新的东西又不完善,最后就导致问题解决不了又出现新问题。
写着写着无心机无耐心写了,所以思维和文笔有点混乱,大家就见谅凑合着看吧~ 喜欢“欢迎灌水”那句。。。 感觉...............专业....................我的意思是...................我......................基本上...............看.....................看..................看不懂 其实已经不专业了,因为专业名词都忘得七七八八~
看多点书书就有这个好处,什么都可以懂一点~
看不懂的原因主要是本腐写得缺乏逻辑吧~ 先支持!等晚上回家慢慢看,现在不方便 看完了,原来就是分析355进退两难的尴尬程度!355再晚一年出,可能就不存在要照顾玩家的配置而牺牲游戏质量的情况了!
PS:我发了上面一贴后,论坛就关掉升级了 萌版看出端倪了~ 我准备更新配置后再玩 不如把钱拿去买部360~
而且直接就可以玩中文版了~嘻~ 饿觉得把356做成象3国全面战争那样9好咯
自从玩了3国全战,再看暗昌的酸果汁系列94垃圾 鱼翅...熊掌...暗荣想兼得??????? 其实某腐的意思就是:创新很卡。。。
其实一直有这样的怀疑。。小地图上红色满的。但是身边就几只兵,然后经常被虚空中伸出来的刀剑砍中。。。。。 不是很懂,但是我觉得绝对防御这种东西应该占不了什么运算量的吧 。。。
顺便提前恭喜腐大人完成升级 原帖由 bkvm 于 2008-11-6 18:40:00 发表
不是很懂,但是我觉得绝对防御这种东西应该占不了什么运算量的吧 。。。
顺便提前恭喜腐大人完成升级
嗯嗯,所以本腐就在说明koei用绝对防御来减低运算量~
谢谢了喔,此贴把bk召唤出来了~ 任何游戏尸体消失是肯定的,至少现在是这样的,放在那里只能越放越慢,而且以后硬件发展了尸体还是会消失,硬件永远跟不上软件啊,有多的资源做点什么光影效果啊,谁会去做尸体啊 当然,这是肯定的,而koei却没有好好解决这个问题,还把尸体不消失作为卖点了,这就是本腐想批评的~
而且本腐也觉得尸体不消失没有什么意思,与其将资源用在这上面,还不如用在那些心灵传动的小兵身上~
页:
[1]