游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 思想·杨凯

[讨论] 兵法——感悟与构想

[复制链接]

5

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
QQ
发表于 2004-11-17 16:51:00 | 显示全部楼层

Re:兵法——感悟与构想

楼上的问题个人觉得是数值的细化以及平衡性的问题,还是可以解决的。

关于真实死亡我并不赞同,因为毕竟是游戏,毕竟很多人都是因为在现实世界里当不了英雄才会去游戏里过一把英雄的瘾,这也是绝大部分游戏的乐趣之所在,如果连这点都没有的话,那我真的怀疑这个游戏的可玩性了。

4

主题

91

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2004-11-17 18:16:00 | 显示全部楼层

Re:兵法——感悟与构想

楼主想法不错,但并不是你首先提出想法的,我想,希望进行多人战争而非单人pk的玩家一定不在少数的.你讲的死亡,兵器,阵法其实是一个系统,一个连锁反应,它涉及到游戏的角色能力设定,pk规则设定,装备设定等几方面,讨论这个问题的面就很广,要讨论的问题也很多,比方说致命攻击几率这个参数的计算,实现起来并非那么简单,最起码需要向主程序提供以下参数:进攻方的角色能力,武器能力,武器类型导致的附加能力,进攻的方式判断,防守方的防御能力,盾牌能力,盾牌类型导致的附加防御能力,至于要计算攻击速度,也只能简单的以角色能力来判断,更详细的瞬时速度计算根本不能实现.如果硬要模拟真实的物理状态,那现在的计算机计算能力根本无法胜任.

10

主题

188

帖子

198

积分

注册会员

Rank: 2

积分
198
QQ
 楼主| 发表于 2004-11-17 23:03:00 | 显示全部楼层

游戏的优化

游戏的优化

说了那么多乱七八糟的东西,来谈点真正的技术吧。

一、计算的优化

很小的时候,就听说了那个高斯的故事,1+2+3……+98+99+100=? 老师还没写到10,高斯已经计算出了正确的答案,5050。后来,我在课堂上,老师真的让大家计算这道题目,1+2一直加到100。我知道那个取巧的方法,但结果,还是算错了……我只想着去取巧去了,而没有真正想清楚为什么要这么做。我想,如果高斯做个程序员,一定会是个程序优化的大师。

小学的时候,参加了一个计算编程的竞赛,其中有一道题目,让我印象很深。不引入新的变量,交换x和y的值。很长时间里,我都以为这是不可能,直到后来知道正确的答案。我被其中的巧妙折服了。

答案是这样的:
x=x+y;
x=x-y;
y=x-y;

就这么简单。但我却一直以为是不可能的。这就是个优化程序的简单技巧吧。因为不需要引入第三个变量,所以,程序执行的速度会得到提高。

一个很常见的问题,排序。把一大堆数据按照从大到小的顺序排列起来。通常的做法是这样的,比较两个相邻的数据,如果它们的排列顺序与期待顺序相反,那么,就交换它们。就这样,不断的重复比较下去,直到最后,它们会整齐的按照你的期望,排列起来。

第一次看到这个问题的时候,我立刻反应出了其中的潜在隐患。那就是比较并且交换的次数。如果有100个数据要排序,那么,比较的次数是,100^2/2=5000次。当然,可能没人觉得5000次很多。但如果是一万个数据呢?要比较的次数立刻变成了五千万次。估计你的电脑一开始排起来,就会很长时间不听你说话了。

解决的方法,是为数据分组。比平均值大的,分一组,比平均值小的分一组。如果分下来的组依然很大,那么,在按照上面的方法再拆分一次。直到最后,所有组都小于100为止。然后在对这些数据排序,所需要交换的次数便会小于五十万次了,是五千万的百分之一。然后,再把这些数据拼接起来吧。

如此一来,需要排序的数据增加,就不会带来几何级数的运算增长了。一百倍的数据,只需要一百倍的时间而已。我并没有测试过,每次拆分组的时候,应该拆成多为好,修改这个筏值测试性能的改变,估计会是件有趣的事情。

拆分,其实是一件很有趣的事情,比如,寻路。

当地图的增大,会让寻路的计算产生几何级数的增长。大概也就是因为这样原因吧,即时战略游戏的地图不会无限制的增加下去。没办法,对你而言,让自己部队穿越整个地图只是点下鼠标而已,但电脑可就惨了……当然,它的日子如果不好过,它会让你知道的。:)

不过,现实中,如果你要穿越一个复杂的城区,你会在起步前的那一刻,就决定自己每一步踩在那个位置吗?其实,我们前往一个目标的时候,都把这个目标分解了,分成了好多个小目标,先穿越这个街道,然后,通过一扇门,然后转过一个弯,顺着路一直往前走……在通过那扇门之前,没有人会去更多的考虑后面的弯该如何转……

所以,一个遥远的寻路,就应该被分解,先寻找地图上的瓶颈处,然后寻找到达目的地需要经过那几个瓶颈地带,并把这些目标依次排列起来。剩下了,就是一个个目标依次抵达就可以。


二、近似的优化

玩《圣女之歌》的时候,觉得他们的美工真的很棒,然而我却替他们哭,他们遇到一个极白痴的程序设计师。

在许多场景,绘制得非常的有魄力,但,人物呢?却是无数的锯齿。

我想,他们的程序员之所以这么做,大概就是因为电脑运算负荷太重造成的吧。

第一个是去锯齿。一根线条划过去,如果只计算是否穿越某个像素,那么,显示出来的,就是黑与白并且带有强烈的锯齿。但如果同时计算线条在某个像素上占有的面积,根据面积的大小,显示不同程度的灰色。那么,锯齿就被去掉了,在视觉上就是光滑的。不过,你也能看得到,这个计算事实上是费时的。

不过,为什么要计算得那么精确呢?人的眼睛,事实上远没有那么高的要求,只需要几个级别的灰度,单字节的近似运算,就能得出相当漂亮的结果了。不信,你可以自己去试试。这同样也是处理半透明的技巧。

第二个是图像缩放。《圣女之歌》竟然会完全找不到方法,难过。要解决这个问题,有点小技巧。第一个是为图像建立二分之一,四分之一的小图作为备用。当图像不能原大显示的时候,不用去计算每个像素的具体值,只需要去计算x和y轴上的对应值…………感觉要说清楚需要花不少篇幅……:)

总之,我想说,在图像的处理上,精确是没有任何意义的。人眼每时每刻都要接受太多的信号,它没有可能去分析自己看到的东西是否精确。如果运算速度不够,那么使用近似值吧。

《圣女之歌》如果使用了这些简单的技巧,那么,它拿最佳美工奖就是当之无愧的了。



三、游戏的优化

这里有太多的人,总在抱怨什么实现不了。其实,问题不在什么实现不了,世界上没有不能实现的事情,问题只在于,实现需要多少的资源。

很多时候会去想,暴风雪究竟是如何在组织一个公司啊。玩通星际的剧情后,会耐住性子,慢慢的读制作人员名单,然后想象这些都是什么样的人,他们都干些什么工作……

如果不能超越暴风雪,那么,做的游戏,有一半已经进入垃圾桶了。

这便是游戏世界的绝望。只有第一,没有第二


对一个游戏而言,究竟什么才是最重要的呢?策划吗?美工吗?程序吗?或者是音乐音效?

如果做游戏的人,只能看到这个层面,那么,做出来的游戏,永远都只是垃圾,或者是近似于垃圾的东西。

72

主题

710

帖子

783

积分

高级会员

Rank: 4

积分
783
发表于 2004-11-17 23:42:00 | 显示全部楼层

Re:兵法——感悟与构想

楼上,算法写反了……-_-!

应该是这样的吧:
x=x+y;
y=x-y;
x=x-y;

不过不影响表达思想哈^_^

10

主题

188

帖子

198

积分

注册会员

Rank: 2

积分
198
QQ
 楼主| 发表于 2004-11-18 00:28:00 | 显示全部楼层

Re:兵法——感悟与构想

抱歉,所以,我一直觉得我不如高斯 :)

3

主题

145

帖子

184

积分

注册会员

Rank: 2

积分
184
QQ
发表于 2004-11-18 09:33:00 | 显示全部楼层

Re:兵法——感悟与构想

还是不知道如何解决隐藏参数的问题
做成FPS类型的或许可以 。。。。

1

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2004-11-18 14:47:00 | 显示全部楼层

Re:兵法——感悟与构想

你们都是高手 呵呵 我是新人,不过我发现高手们都特别爱吵架!呵呵,何必呢!就算是想表现自己高人一筹,也用不着嘛!大家大可像一些高手那样假装谦虚或假装恭维,来显示自己的渊博,这至少符合我们中华民族几千年文明的结晶——中庸嘛,大家和气,大家和气!!

10

主题

188

帖子

198

积分

注册会员

Rank: 2

积分
198
QQ
 楼主| 发表于 2004-11-18 18:16:00 | 显示全部楼层

Re:兵法——感悟与构想

Osiris:
这个世界,没有绝对的真相,有的,只是真相在人脑中的影像。你在现实中,知道自己的敏捷吗?知道自己的攻击力吗?

如果你在现实中,你不知道自己能力的具体数值,你会怎么做呢?

发现自己,理解自己,设计自己。这便是游戏的乐趣所在。

18

主题

585

帖子

590

积分

高级会员

Rank: 4

积分
590
发表于 2004-11-19 21:37:00 | 显示全部楼层

Re:兵法——感悟与构想

现实中的敏捷,我在和别人跑400的时候,能看出来.
现实中的攻击里,我在和别人打架的时候能看出来.

10

主题

188

帖子

198

积分

注册会员

Rank: 2

积分
198
QQ
 楼主| 发表于 2004-11-20 12:27:00 | 显示全部楼层

Re:兵法——感悟与构想

是的,比试。比试能看到自己能力的相对值。简化一些比试的过程,也许会产生一个很有意思的解决方法……:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-1-12 12:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表