游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2228|回复: 2

[讨论] [未完成的总结]<<黑暗舞者>>制作报告

[复制链接]

10

主题

69

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2007-4-14 19:54:00 | 显示全部楼层 |阅读模式
当我完成<<黑暗舞者>>后,我觉得我有必要好好的总结一下制作过程中所遇到的问题,以及所获得的东西。

制作过程中我一直没有空闲好好思考一下。

(如果我花太多时间去想,就没有时间去做,如果花太多时间去做,而没有好好的想过,那也不是好事。这种"想"和"做"之间的平衡技巧与经验,可以说是我在这次制作中获得的最大收获。)

因此为了好好清理一下自己的思路,整理下自己的战利品,总结一下经验以在今后利用,我开始撰写这份制作报告。

本来是完全为自己写的,但是既然要花功夫写,为什么不干脆写给大家看呢?还可以获得有价值的回复。
而如果其中恰好有你感兴趣的内容,我会非常高兴的,大多数人都希望自己的工作对别人有价值,不是么?^_-

先声明下本地图最大的两个制作原则:

1.只利用we本身提供的资源,好的设计者要学会如何用最少的资源获得最大的效果。对于我的设计目标来说,we的资源已经太丰富了。我相信,大多数情况下,一个真正的设计师所能获得资源比我少的多。
2.尽量避免使用jass脚本语言,给jass脚本debug对我来说是无尽的时间黑洞。


<<黑暗舞者>>制作报告
       - part1.视觉元素


这个部分我将总结<<黑暗舞者>>中所使用的视觉效果元素,我是如何设计他们,在实现方面遇到的问题,如何解决以及由此引发的一些思考。


1.角色动作效果设计
作为一个动作地图,角色的动作当然是重点,但是既然我选择使用we,我只能利用其中的模型(*注一)。因此我把重点放在了整体动作效果(动作和动作会产生的效果相结合所获得的效果)的设计上。

a.移动动作效果

角色的移动动作效果并没有花费我的精力,我制作过一个残像系统,会在角色开始移动时留下残像,一开始它工作的很好,但是当我制作攻击动作时,这些残像让我设计的攻击残像效果大打折扣,这种混乱的效果让我很不满意,而一个决定性的理由让我最终放弃了这个效果:我的设计鼓励玩家在移动中攻击,攻击本身就会留下残像,因此这个移动残像纯属多余。

b.攻击动作效果

在攻击动作效果上,我花费了大量的精力。让我把一个<<黑暗舞者>>中的普通的攻击残像效果的运作流程拆解下:
  step1.判断角色是否在移动,是则转到step4,否则转到step2

  step2.判断角色的攻击动作是否恢复,是则转到step3,否则转到step4

  step3.让角色作出攻击动作,并且设置IsInHR = True,并且开始一个计时器,让其在0.6秒后将IsInHR置False,然后到step4

  step4.创建一个75%透明度的残象并且作出攻击动作,并且在0.35秒后移除单位

为什么我要这么做?

我曾经直接设计一个技能,技能动作为"attack",让角色在攻击时候使用,这么做很方便,但是却引起了一些问题。

如果我将技能的"允许其他技能"设置为False,那么角色在攻击时候不可自由移动,不可作其他动作。如果这是一个讲究动作精度的高级动作游戏(注意,是游戏不是地图),我会考虑这种设计。但我很清楚地明白我没有能力用we做这种东西,<<黑暗舞者>>从一开始,定位就是追求爽快不讲究细节的。

而如果将其设置为True,追求爽快,那玩家自然会抽筋般的按键,这个时候,角色的动作只会有一种可能性--抽筋。

我自然不会把抽筋作为设计目标……所以自然要限制角色的攻击动作速度,但是又不能限制玩家的按键速度。这样一来,产生了一个结果:玩家抽筋似的按键,怪物不停的被击中,后退,惨叫,甚至被打得抽筋,但是角色却在不紧不慢的挥舞武器……

很奇怪不是么?简单的调整动画速度效果很不好,而且还产生了一些控制上的问题。感谢前人的智慧和多年的游戏经验,我很快想到了在角色不紧不慢的攻击动作中间插入残像,这是一个好办法,并且在仔细的调整了残像持续时间,和角色的动作间隔时间后,它运作得很好,效果也很让我满意。

恩,看起来我思考了一下,问题就解决了。但事实上,设计过程中我犯了上面这些错误中的每一个,真的,是每一个……

每一个错误都花费了我很多时间调整设置,测试其运行效果,而且至今让我庆幸的是,我选择用t(内置触发器)而不是jass(编程语言)来设计,不然我将把90%的时间花费在debug这个不折不扣的时间黑洞里。

而即使是最后的解决方案,我也花了大约4个小时的时间来调整残像的持续时间,残像的透明度和角色的攻击动作间隔。其中我甚至做过在残像的最后0.1秒暂停残像动画,但是在观察效果后我放弃了。

另外,我最终没有把更多的时间和精力花费在这上面,那可能会让我做得更好,但我可能永远也无法完成整个地图。在我发现我花了三倍的计划时间来做这个,并且达到了让我满意的效果后停止了这方面的工作。不得不说,学会放弃也是我在制作过程中的最大收获之一。

c.挥舞武器的光影效果

哦,这个地图的视觉效果里,这个部分的效果/制作投入时间比是最让我满意的,我只花费了一天的时间来制作,其效果就让我满意了。尤其是在之前的动作设计上花费了太多时间后,我感觉这里节约的时间简直是上帝的恩赐……

这得归功于我学会了使用we里一种很好用但是似乎被很多人忽视的计时器-单位的技能释放/持续时间

之前的攻击残像的移除我就用了这种办法,创建时让他释放一个技能,并且设置合适的持续时间(不能设置释放时间,释放时间里单位做的是"stand"动作),然后做一个捕捉结束技能效果的触发,移除触发单位。真是非常好用,在此向大家推荐一下。

而在这里,我用了set custom value to unit来给光影效果单位设置了一个计数用值,让单位释放一个0.03秒的技能,在捕捉技能结束的触发里移动单位,给custom value+1,并且让单位再次释放技能,直到custom calue达到规定值。

哦,这次不仅是说起来简单了,做起来我没有遇上任何问题,顺利的让我自己都不敢相信……

于是我有些飘飘然了,我开始给这个效果动一些手术,让它在结束时候缩小,以形成弧形的挥动效果。但是设置单位大小还牵涉到原模型和单位使用模型时的缩放问题……我还是放弃了这个想法。我简单的估算了一下,做好这个能提高的整体效果与所需投入的时间比非常不划算。

另外,你可能会问,既然如此顺利,办法也很简单,为什么我还是花了一天的时间?

哦,光影效果单位的大小和高度设置为多少合适?挥舞角度多少看起来效果好?速度呢?测试和调整这些的时间是不可避免的。

d.击中敌人以及被击中的效果

这方面我占了一个很大的便宜,<<黑暗舞者>>的定位是追求爽快不讲究细节,因此我不需要对硬直时间等细微的问题作太大的调整,那也将是无尽的时间黑洞。

当然,这个效果还是要做好的。整体效果包括目标被击中时候的动作和产生的效果两部分。先说被击中的动作,专业一点就是硬直,或者叫打击恢复(HR=hit recover,玩D2的应该比较熟悉这个说法)。

开始我用mk牌飞锤(*注二)来暂停敌人的动作,但由于不会产生被击中的动作,我对效果很不满意。之后就是完全的灵机一动,我把通魔技能的动作改成"death",然后让被击中的敌人释放这个技能。

效果出乎我意料的好,我再花了一点时间调整硬直时间的长短(不重要不等于不做),就给这个部分打上了"已完工"标签。

之后是击退,移动单位很容易,但是最后一些没有预料到的细节问题却让我费了很大的力气。

首先是怎么移动:一次性移动的话,距离稍大就会让目标直接飞过身后的单位,因此我几乎是毫不犹豫的选择了每次移动很小的距离,用循环次数来控制移动距离。这里我再次使用了前面做光影效果时候的方法,效果很理想。配合上硬直技能,敌人如同我预期中一样,惨叫着被打退,然后作出一个很痛苦的动作,之后才恢复行动能力。

之后的问题整整折磨了我一天,理由很可笑……为了在击退时,后面的单位不会挡住前面的单位,显然要从后面的单位开始移动。于是,我不得不去回忆很久以前学过的排序方法,给范围内的单位排个序,这步没有引起多大的问题。可笑的是,我居然不知好歹的想制作相互碰撞的效果,在浪费了时间和精力后,看着两个1秒内相互碰撞三次,抽筋般从我面前飞走的敌人,我明白了一个道理:物理引擎为什么会这么贵……现在想起来,我这个念头只能解释为--脑子抽筋……

幸运的是我再次及时放弃了这个念头,事实上,整个地图的制作过程中有着无数次的放弃。一部分放弃让我很后悔,不是后悔放弃,而是后悔没有更早的放弃……

之后是打击的特效,我被一个问题困扰了好久,那就是特效不能创建在释放硬直技能的单位上(*注三)。我不得不把单位的模型改成特效来模拟(*注四)。不过单位有单位的好处,特效不能控制大小等等,而单位可以更好的设置。我浏览了全部的内部模型,其中最适合用来做打击特效的是萨满的闪电箭矢,但这个模型太大了,直接使用效果太过夸张……最后我把它缩小到了原始大小的45%。

这里我所遇到的问题真不少,不是么?但是请相信我,我所花费的时间比我形容的多得多,光是仔细浏览一次全部的内部特效模型就花费了我一整天的时间。而且,很幸运的,我及时意识到了一个问题,开始记录其中有价值的模型以备以后的使用,这个行为让我获益匪浅。

最后,你有没有注意到,<<黑暗舞者>>里面,你所控制的角色被击中时没有特效?

为什么?

我可以找出很多像模像样的理由来解释,但是所有的理由都比不上这个理由更好更真实--我忘记了。

巨大的失误,我把它记在了我的记事本上随时提醒我,我曾经犯下过多么严重的错误。顺便说下,这次制作还让我买了一打笔记本,并且养成了随时记录的习惯。

d.特殊舞蹈的效果

恩,先说下闪光效果吧。特殊舞蹈发动的刹那,屏幕整个随之一闪。这个效果已经被无数人在无数个游戏中使用了无数次,而我也使用了。它真的好用,事实也再次证明了这一点。

顺便说下,这个效果可能有人不知道,我是用fog做的(中文we里可能翻译成迷雾吧)。

尽管好用,我还是花了一点时间来调整闪光的时间,最后把火焰和冰冻的闪光时间定为0.25,而闪电则定为0.10。不要问我为什么,我只能给你两个字--感觉……

这里面火焰之舞没什么好说的,我只是把普通的攻击动画作了次乘法。这个效果和我一开始预设的几乎完全一样(*注五)。我对这个效果不是十分满意,总觉得还可以再添加一些元素。不过我检查了一下整个效果的运作过程,发现这已经是我三个特殊舞蹈中最占用系统资源的-最多的创建单位-最多的点-最多的计时器-以及最大的范围(意味着会击中最多的敌人)-于是我没有再往里面塞东西。

冰冻之舞则遇到了一些问题,我本来计划是做三个站成三角形,面向主角的残像,越过主角,在残像的对面释放暴风雪。但是我发现我不能更改暴风雪的落下角度。另外,它的下落速度太慢了,和游戏的节奏完全不合拍。

之后我尝试了下冰冻喷吐的效果,这个看起来和现在的完成品差不多,但是这个效果的速度依然比较慢,最后我终于在记录中(感谢我之前的工作)发现了一个有价值的效果模型--娜迦族建筑的爆炸效果,它很cool,而且运行的速度和游戏的节奏非常合拍。

奔雷效果我再次使用了前面的计时方法,只不过把动作改成了"walk",于是你就看到了一个向前狂奔的恶魔猎手残像。之后我就遇上了一个问题。

我用unit come within ranger of unit事件来捕捉残像附近的敌人。如果不用jass注册事件,那么这个事件只能设置在预置在地图上的单位上。于是我预设了一个,并且准备在效果开始时把它移到需要的地方。此时我心中暗喜,这帮我节省了一些资源。

现实是残酷的,移动单位不能立刻改变单位的面对方向。我使用了修改转身速度等各种办法,依然没能办到。我开始意识到我在这个地方花费了太多的时间。由于之前获得的教训,我马上放弃了从这个角度去解决问题。最后,愿上帝原谅我,我又奢侈了一次。我把预设单位隐藏了起来,然后创建一个单位作为残像。这可能浪费了一些系统资源,但我的地图还有充足的资源空间,而这次系统资源的浪费为我节省了大把的时间。

e.提示特效

黑暗舞者中的提示特效包括:一个黄色的感叹号,一个急速缩小的光圈,一个急速扩大同时淡化的光圈,

2.灵魂系统

就是那些用特殊舞扁人之后朝你飞过来的东西。这个东西完全没有新意,我添加这个元素纯粹是出于视觉效果不错而且容易做。制作中几乎什么问题都没遇上……

真的要说问题,那就是我创建这些单位时选择了在目标周围的随机点,而不是直接从目标身上。

我是这么考虑的:灵魂数量总是很少的话效果不好,而我也没有设计怪物海,自然要扁一个目标生成不止一个灵魂才行。最后的设计是击中敌人会产生一个灵魂,杀死则会产生3-4个。

这时如果灵魂都创建在目标身上,那么如果不分别控制灵魂的移动,灵魂会扎着堆朝你飞来……这和只创建一个区别不大……

而控制每个灵魂的移动路径马上就被贴上了"吃力不讨好"的标签,我再也没有考虑过这个想法(*注六)。

所以,我选择了创建在目标周围的随机点,最终效果还是让我满意的。

但是一直到发布后,我才意识到一个问题。第一次玩的玩家会不会把这些朝你飞来的东西当成子弹?……而事实上,这些灵魂也都是用单位的箭矢模型做的。

这个问题现在依然困扰着我。我所借鉴的那些带有吸魂系统的游戏,都有足够好的画面细节,可以很方便的传达给玩家"这不是子弹"的视觉信息。而我的地图,能有这种效果么?


3.游戏场景

我没有花很多时间来美化我的场景,我只是在we丰富的地形装饰物资源里选择了一些合适的,然后把它们扔到地图上。

但在另一方面,场景上我花的心思也不算少。让我先来说一段幕后花絮,当我最初制作这张地图时,我起的名字是<<地狱舞者>>。为了配合这个名字,我选择了"地牢"作为基础地形--一个石头黑乎乎,岩浆红彤彤的地方。但是为了照顾玩家的心理习惯,玩家控制单位是红色玩家的颜色,放在这个地形里效果很不理想。后来我发现恶魔猎手默认的名字列表里就有一个"黑暗舞者",并且设计了boss堕落的远古守护者。让一棵树出现在火山口?于是,改名顺便改地形就变得顺理成章了。



(注一.当然,你可以导入外部模型,但如果不是你自己制作的,选择依然被限制。而且1-我没有能力制作,2-恶魔猎手这个内部模型配我的主题真是再合适不过了,3-请看我的两大制作原则之一。)
(注二.山丘之王的风暴之锤。)
(注三.我至今没有明白这是为什么。)
(注四.我这里又占了一个大便宜,地图很小,流程很短,让我使用起系统资源来非常的……只能用奢侈浪费来形容……每次普通攻击如果击中5个敌人,我的触发将生成70多个点,创建8个单位,循环排序要loop4次,之后击退将触发6*5次触发,挥击效果要触发16次……但是我的测试机器是四年前的低配置笔记本,都没有引起lag,因此,请上帝原谅我的浪费-_-!)
(注五.当我完成地图回顾时,发现这种情况完全成了稀有动物,整个地图和我一开始的设计有相当的差距。)
(注六.当我撰写这份报告时,我才想到一个比较好的办法:把一个对点释放的技能的射程改为1,让灵魂单位对随机点施放这个技能。然后设置触发捕捉这个技能。)


//---------------------------补充----------------------//

当我写到这里开始过年了,过完年后被老同学诱惑,沉迷了一段时间的eve……当我摆脱后,就投入了黑暗舞者2得制作

现在2已经完成了,很多情况也不同了。例如,我现在可以算得上是一个熟练的jass脚本语言用户了。文中提到的debug时间黑洞成为了过去式。

而这份东西虽然没有全部完成,但也记录了大部分我遇到的问题与一些方法

所以我先把它发布了出来,如果各位对其中的思考与解决问题的方法有所指教,我感激不尽

7

主题

71

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2007-4-14 20:45:00 | 显示全部楼层

Re:[未完成的总结]<<黑暗舞者>>制作报告

看过之后,想起了我用RMXP做游戏的时候了,和你情况差不多。每一环节都会遇到各种各样的问题等着你去解决。 看来当策划也需要解决能力强的人啊。。。。

42

主题

861

帖子

871

积分

高级会员

Rank: 4

积分
871
发表于 2007-4-14 20:50:00 | 显示全部楼层

Re:[未完成的总结]<<黑暗舞者>>制作报告

JASS做为魔兽争霸的脚本语言一方面与我所熟悉的JAVA程序语言结构差别太大,也很不友好和完善,另一方面由于相关学习资料难于获得,学习成本也比较高(当然不是指金钱),使得我对WE的认识并没有深入到JASS语言本身.呃,在这里我也只能友情顶一下了.楼主把WE玩成这样确实不简单,真正是在用有限的资源创造一流的游戏呀!!

PS:顺路再次感谢一下楼主在http://bbs.gameres.com/showthread.asp?threadid=77111里给我的指点哈.

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-18 11:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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