轩辕春秋文化论坛 » 曹操传MOD制作交流 » 在MOD制做中关于BUG的心得


2007-3-18 15:55 炎帝瀑布碎
在MOD制做中关于BUG的心得

[b][font=楷体_GB2312][size=3][color=red]第一次写这种东西,也是兴起之作,希望能给大家一点启发………………[/color][/size]

[/font][/b][color=blue]各位做过MOD的朋友们都知道,MOD的制做过程中,出现BUG在所难免,这些BUG小到错别字,大到影响游戏的正常运行,实在是非常令人讨厌。
所以我在这里,想写一点关于制做中处理BUG的心得(错别字就不提了),希望能有[b][color=DarkOrange][size=2]举一反三[/size][/color][/b]的效果。
其实很多BUG可以利用一下做出有意思的剧情呢。
[/color]
[color=black]EXE修改中的BUG纯属技术问题,在下就厚颜无耻的跳过的(其实是偶一窍不通的缘故),不过多多备份还是要提一下的,毕竟exe中的很多BUG都是不可逆过程,一旦改爆了,就无法弥补,只能从头再来,很是令人不爽。
图像处理也算没有还价余地的技术活,按前辈门的教程处理即可。

[b][size=2]R剧本中的BUG[/size][/b]
无非有那么几种:
[/color][color=black][b]一,人物消失
[/b]这是由于在R形象文件中,缺乏这个人物造型的图片造成的。
解决方法有三个:1,改变人物的R动作
                2,更换人物的R形象(修改DATA序号要重新开始)
                3,自己拿画图工具将其R形象补满。

[/color][color=black][b]二,人物的移动
[/b]有些时候,人物的移动的时候会形同鬼魅,从一些莫名其妙的地方出现。
这时候,就要观察R地形有没有不能移动的部分,如果有可以按分段移动的方法饶过那块不能移动的区域。
如果没有,就要考虑是不是那块可以移动的地方太狭窄了,这样可能会造成人物不能通过。
P.S.说到人物,R剧本中的人物与人物之间的最小的适合间距应该是4个坐标,小了可能会比较难看。

[/color][color=black][b]三,武将不出现的问题
[/b]有些时候,武将出现命令明明用了,武将却没出现。
这时候,要检查一下是不是没用“武将重绘”命令,没有的添上就可以了。
不过做个动作,或移动一下自己也会出现。
同样的方法还适合于用了武将消失命令武将不消失的问题。

[/color][color=black][b]四,关于选择框(同样适用于S剧本)
[/b]先来看看这么一段东西:
假设这里有个选择框:里面有选项1,选项2;选项1和2下面分别各自有选择框:假设选择选项1后会出现子事件选项1'和2';选择选项2后会出现子事件选项1"和2",那么如果我先选了选项1后在其子事件中选了2'会发生什么情况呢?
答案是,剧本会执行完选项1的子事件选项2'后自动去执行选项2的事件。这样就会变得怪怪的。
处理方法可以是这样:在选项1和2之后分别进行变量附值,再由变量测试的子事件引出它们的子选项。
[/color]
[color=purple]R剧本暂时就想到这么一点
[/color]


[b][size=2]S剧本中的BUG:
[/size][/b][color=darkgreen]S剧本是BUG泛滥成灾的地方,各种各样的BUG随处可见,一个一个归类分析实在是不太好办,只好想到哪里说哪里了……[/color][b][color=magenta]而且只说一点典型的易犯的处理简单的…………[/color][/b][color=magenta]
[/color][color=black][b]一,仔细
[/b]说实话,这句话是废话,不过却是相当相当相当相当相当相当重要,不仔细导致的BUG危害是无穷的,不过这种错是挺容易犯的。
写错变量,漏写变量,写错坐标,赋值错误………………………………很多很多都是这个范筹的。
举个例子:Section
          ├2内部信息
          ├36:武将状态测试 XX HPcur=0
          ├5 变量测试 无;18
          └0事件结束
               ├9 变量赋值 19 ture
               └0事件结束
看似一个不起眼的BUG,18写成19了,危害无穷啊,其危害是,此事件发生后,所有和变量有关的测试都无效了。
所以说仔细是第一步,也是最重要的避免BUG的方法。
另外多谢九高层的提示:
“物理攻击命中为0,只有用策略才能打得动的小兵”的抱怨出现在各个贴子里
貌似是因为 把同一个小兵同时使用在了友军和敌军里
这个也是粗心的原因

[/color][color=black][b]二,拿宝物的条件
[/b]现在很多MOD,都是要在战斗中达到某些条件才可以在战斗后得到宝物。
虽然通过赋值和测试办到都很容易,不过某些情况是很容易忽略的。
比如说,胜利条件是击退某武将,拿宝条件是全灭敌人,拿宝条件的测试应该是敌军战场人数测试=0
如果在击退那个武将后用了敌人战场全撤退的命令,在按拿宝条件测试,那么就会造成光击退那个武将就可以拿宝的情况,
但是如果把拿宝的命令放在敌人战场全撤退的命令的前面或不用敌人战场全撤退的命令都不好看。
这时就可以把拿宝条件的测试应该是敌军战场人数测试=0搬到敌人战场全撤退的命令的前面做一个变量赋值的子事件,再在敌人战场全撤退的命令之后按刚刚被赋值的变量做变量测试的子事件拿宝即可。

[/color][color=black][b]三,关于和战斗事件有关的人物
[/b]在S剧情里,有些事件是不可避免的。如果在这事件发生之前,和这个事件有关系的人物撤退了,那就会出BUG,使剧情让人摸不着头脑。
所以那些和不可避免事件相关的人物,都不能撤退,做一个相关人物撤退就game over的测试就可以了。
如果可以的话用子事件,这个人活者怎么办,死了怎么办。

[b]四,关于某些事件触发的测试[/b]
实际上有很多事件的测试条件都有空子可钻,最典型的是进入指定区域测试和区域人数测试。
对于进入指定区域测试,玩家就死活不进入指定区域怎么办?对于区域人数测试同样玩家就死活不进入指定区域(区域人数测试>0)或就占着那块地方不走(区域人数测试=0)怎么办。
其实最简单的解决方法是加一段不可避免的S事件,再用一段S剧情来表达所想要发生的剧情。

[b]五,胜利测试[/b]
某些时候,可能也会发现明明达到胜利条件却不胜利。
这样的情况直接把战斗结束及其它的如战利品等的一些事件放在你需要量的胜利条件的事件里就可以了。
某些时候,可能也会发现没达到胜利条件就胜利了。
可以检查,是不是把某敌将设成了主将,设了就去掉。
在真正的胜利条件下加一个变量赋值,再在下面那个胜利测试处按那个赋值进行测试,这样不发生真正的胜利条件就达不到胜利。
变量可以是ture也可以是false,所以,变量不仅仅是使某事件发生的台阶,也可以作为某事件不能触发的屏障。(这句话衍生意义大了,自己都不敢想下去)

[b]六,剧情BUG[/b]
这个实在是个很令人烦恼的BUG。剧情不合理怎么办?我能想到的只有重新设置一些剧情,利用这些剧情来防止BUG剧情的发生,任何的测试都可以作为手段。
或者,改了这段剧情或添加一些子事件来达到合理的要求。

[b]七,关于战场的物体添加[/b]
翻了说岳的BUG贴子,发现了一种在写剧本中比较容易被忽略的BUG:战场物体的添加。(包括放火,设船,关门,断桥等,下面以放火为例子)
为了剧情需要,在S事件中,添加个几把火是家常便饭。不过火添加之后,那个格子就不能移动了,而且如果那个格子当时正好有人,那么放火后,那个人都没办法动了。这样就可能会影像后续事件的发展。(题外话一句:不要乱玩火)
解决这个BUG最简单的方法就是在不能移动的地形上放火,不过局限性太大,野外的放火就不适用了。如果用武将在指定点的测试,再由此测试引发武将离开这个点,则可避免武将被烧到,可是如果正好周围人比较满,就有可能移动不了,所以有其缺陷。我认为一种可行性较高的解决方法还是应该在放火时插一段S剧情,顺便调整好阵形,避免被火烧到,不过这样子可能前面的走位就白走了,唉,不要乱放火。
其实有一个设定能够很简单的解决:被烧到的那个可以撤退,不过估计会引来骂声一片的说,而且如果那个正好是牵涉到胜负的人物,那么就不得不重打了。[/color]
[color=black][/color]
[b][color=black]八,万恶的AI[/color][/b]
[color=black]由于电脑AI引起的BUG其隐蔽性是比较高的,比较难以发现[/color][color=#000000],而且随机性也比较高,发生几率也比较高,尤其是新手,很容易忽略。要发现只有通过不断而且全面的测试。[/color]
[color=black]通常会造成的后果就是剧情的莫名其妙。[/color]
[color=black]最严重的后果可能要属可恶的NPC占着位置不放,而胜利条件就是另一个武将达到这个地点,这样子只能干着急,活活被万恶的AI给气死。(终于知道什么叫拉完了屎还占着茅坑,这要比占着茅坑不拉屎还可恶)[/color]
[color=black]要解决AI引起的BUG首先要知道在这些AI下,电脑会如何行动:[/color]
[color=black]主动出击:顾名思义,略过,但是如果目标在其一次移动范围内,同时由于目标周围的格子都被己方部队占据而无法攻击到目标的话,在此AI下,电脑是不会动的。[/color]
[color=black]坚守原地:飘过~~~~~~[/color]
[color=black]被动出击:当目标进入其通过一次移动能被攻击的范围内,其便会移动后攻击。[/color]
[color=black]攻击武将:电脑会盯着指定目标攻击,哪怕攻击不到,其都会尽量移动到离目标尽可能近的地方。[/color]
[color=black]到指定点:电脑会以某个坐标作为目标移动,移动过程中,如果有敌人,它会优先消灭敌人。[/color]
[color=black]跟随武将:目标武将到哪里,它就跟到哪里,不会干其它任何事。[/color]
[color=black]逃到指定点:同跟随武将,只是把目标武将改成了目标地点而已。[/color]
[color=black]AI引起的BUG真要处理的话也不算很难,根据剧情及时调整就可以了,不过要注意的是逻辑的严密,多几个变量的测试与赋值、多几个子事件来涵盖所有的可能发生的情况是必要的。[/color]
[color=black]这里暂时先只提一种情况:如果按剧情要求,A组敌人要攻击1号目标,B组敌人要攻击2号目标,而1、2号目标又分别在B组和A组的攻击范围内,那么这样子就很难设定敌人AI了,设为主动出击会导致A组敌人去攻击2号目标或B组敌人攻击1号目标,违背剧情;而如果设置为攻击武将,则及有可能出现炮车,弓箭手冲到你面前贴着你、文官在MP足够的情况下跑到你面前给你挠痒的情况,这就很怪异了。所以,写剧本时要注意尽可能避免此类剧情。[/color]
[color=black]其实最彻底、最有效的解决办法是改exe,改出几个令人满意的AI,不过MS挺难的样子………………[/color]
[b]
九,难度引起的BUG[/b]
这个很容易理解,由于设定上的失误,造成了游戏难度过于BT而过不了关。当然,难度过于简单而造成死不了严格意义上说也属于难度BUG。但是,这个BUG的鉴定却是仁者见仁,智者见智的。根据玩家水平的不同,所体会到的难度当然不同。所以,在下认为,每个关卡提供不同的难度选择是相当不错的做法。
下面来看看引起此类BUG的基本原因:
1,敌我能力差距过大。试想一下风波亭如果必须要打退杨BT……
2,装备过于悬殊或过于克制。三级钢枪VS一级皮铠;一堆弓箭VS一堆镜铠
3,不该出现的地方出现了不该出现的兵种。例如,一堆等待救援的友军附近有一个会放混乱的妖道……
4,剧情不人道。蚂蚁般的敌军铺天盖地席卷而来等等
解决的方法其实也不难,只是比较难以掌握,还是要不断地靠测试来完善。
1,调整整体的等级梯度,不过牵涉较大。
2,改变装备,特别是宝物,宝物的作用最重要是带来特殊的效果,有颠倒乾坤的效果
3,调整剧情,比如一窝蜂上的改成分批上,利用条件引发一些人物的能力改变等。
4,敌军文官不要乱放位置,他们的能力太恶心了,其作用往往是1+1大于2的。

[color=blue]
[/color]
[size=3][size=2][font=宋体][color=red][b]不过总的来说,有两个字是极其重要的:测试  好的MOD需要的是无数次的测试。[/b][/color][/font]
[/size]
[color=red][font=楷体_GB2312][color=darkorange][b]偶还只能算学习制做MOD的新手,写的不好不要见怪[/b][/color][/font]:shy:[/color][/size]

[[i] 本帖最后由 炎帝瀑布碎 于 2007-7-10 20:19 编辑 [/i]]

2007-3-18 16:34 密林繁星
胖胖的衣服瘦了,但是字可不能让它瘦了啊,看起来多吃力,只好擅自编辑了下。

给胖胖一点启示,可以去说岳区,翻着BUG帖,一定会有更多灵感出现的。

2007-3-18 17:08 炎帝瀑布碎
[quote]原帖由 [i]密林繁星[/i] 于 2007-3-18 16:34 发表
胖胖的衣服瘦了,但是字可不能让它瘦了啊,看起来多吃力,只好擅自编辑了下。

给胖胖一点启示,可以去说岳区,翻着BUG帖,一定会有更多灵感出现的。 [/quote]

:titter:多谢[size=2][b][color=Red]才貌双全[/color][/b][/size]的密林大人:shy:,偶一定会按照您的教诲去说岳那里认真体会的:lol:
不过就怕自己能力不够:ph34r:,但偶一定会尽力看懂的!:victory:

----------------------------------------------------------------------------------------------

果然有了一点发现:lol:

[[i] 本帖最后由 炎帝瀑布碎 于 2007-3-18 17:30 编辑 [/i]]

2007-3-18 17:09 司徒苍月
最可怕的是逻辑错误

正如当初的《爱华山之战》

2007-3-18 17:29 司马克
相当不错呀,够我学的

2007-3-18 17:37 src
老师都发到这里了,定当全力支持,这个贴上有很多都对我启发很大.希望新人看看.

2007-3-18 21:04 awei4life
胖胖写得不错~很多问题在刚开始制作时都会碰到:loveliness:
不愧是主角的召唤兽啊:titter::unsure:

2007-3-19 07:20 定点清除
楼主说的这些我都遇到过,只是选择框……由于水平有限又懒惰,所以没做过呢……

2007-3-20 20:03 蜀★子龙
我想制作一个MOD,可以教我么?我可以使用大家做的形象吗?

2007-3-21 08:42 炎帝瀑布碎
继战场物体添加之后,又更新了关于电脑AI引起的BUG。
TF上去:loveliness:

2007-3-21 14:30 awei4life
关于AI我觉得 除非有高人对EXE进行修改 否则暂时用傻办法解决
我个人感觉的傻办法就是在剧本编辑上多用点工夫,虽然烦一点而且可能不是很舒畅
举个例子就是在阵地进攻时,可以逐个对敌人设计AI,例如检测我军某人进入某区域,随后该区域的某些兵种变为攻击该武将的AI,若某人退出某区域后即变为被动出击,或者为了保险起见可以再设置出击部队退守某区域,到位后重新变为被动出击,这样设置AI虽然麻烦,不过却能够稍微实现点立体攻击的形势,比如军师若是靠前,立即会改变敌远程部队的AI,主动攻击军师,而若步兵进入区域,则会立即引起敌人骑兵的注意,凡此种种不一而足,不过也有很多缺点,就是玩家不同出得人也可能不同,这就涉及到每次写剧本时候把可能出现的人全部写进去(不用担心剧本变量不够:loveliness:不行就用全局变量,下关开始的R再重新赋回FALSE就行了:P)
还有一个主要缺点就是:blink: S剧本会写得非常累

我也是新人刚在学剧本编辑,希望论坛的高手大大们能多写出写经验已供我辈学习:Th

2007-6-5 20:40 yeatss
恩恩,感觉有明确战术的S剧本里电脑的AI只有反复测试,然后自己一点一点在S剧本里指定AI算法

2007-6-5 20:59 peacockwang
[quote]原帖由 [i]司徒苍月[/i] 于 2007-3-18 17:09 发表
最可怕的是逻辑错误

正如当初的《爱华山之战》 [/quote]

好像当时爱华山之战是我写得来着,汗!

2007-6-20 19:30 ylh2004
如此好帖,怎能淹没.希望看见的人能更多些.
期待继续更新.

[[i] 本帖最后由 ylh2004 于 2007-6-20 19:31 编辑 [/i]]

2007-7-1 14:50 炎帝瀑布碎
MOD区改版
顺手也把坑填一下
补充了第九部分,关于难度的处理
在新版的EXE和编辑器出来之前就这样了:titter:

----------------

密林要俺接着填,那就尽量继续吧
要开第三部分了:mellow:

[[i] 本帖最后由 炎帝瀑布碎 于 2007-7-2 08:11 编辑 [/i]]

2007-7-4 10:17 chriskid
关于R人物的绕道问题有点疑问,电脑不是会自动选择一条路线到达指定地点吗,就算中途有障碍,只要不是全坐标障碍都会自动绕过去的。
我只是在一些场景中避免人物从人物身上穿过去才用分段

2007-7-4 11:43 炎帝瀑布碎
[quote]原帖由 [i]chriskid[/i] 于 2007-7-4 10:17 发表
关于R人物的绕道问题有点疑问,电脑不是会自动选择一条路线到达指定地点吗,就算中途有障碍,只要不是全坐标障碍都会自动绕过去的。
我只是在一些场景中避免人物从人物身上穿过去才用分段 [/quote]

:titter:偶说的只是一个比较保险的方法,平时的地方不用分段也可以。
不过,兄弟如果能注意一下
有些地方的障碍,特别是场景边缘处的,从外走到里的情况下
不按此法的话
恐怕开一百次,电脑就走100遍不一样的路线了:lol:

2010-12-11 22:35 小偉=]
果然有了一点发现

2011-2-24 13:06 jiangweia
学习了 谢谢分享

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.