标题: KOEI的战棋游戏是怎么制作的, 带Debug模式的英杰传已经改好,在贴子最后提供下载
性别:男-离线 岱瀛
(deving)

长平侯
川峡东路经略使
监管使

Rank: 19Rank: 19Rank: 19Rank: 19
组别 经略使
级别 左将军
好贴 1
功绩 2293
帖子 1370
编号 55810
注册 2005-12-22
来自 人间
家族 慕容世家


发表于 2007-1-23 23:20 资料 个人空间 短消息 看全部作者
KOEI的战棋游戏是怎么制作的

我们的曹操传MOD,现在基本上是用Van的编辑器+各种辅助工具制作的,我们以为已经很自动化了。但是,无论哪个MOD,我们总是常常被抨击说太难了,设计不合理什么的。那么光荣的游戏又是怎么做的呢?


写游戏引擎是肯定的,但是他们必然也会和我们一样写剧本的,我们调试,测试麻烦,BUG多等问题,他们一样有啊,他们如何规避这个风险呢?或者说他们如何 更好的处理呢?

从曹操传,或者说从目前我们看来,没有发现他们有什么高招。我只是奇怪一点,Ekd5.exe居然有个倒出函数。作为一个可执行的最终Exe,为什么要有这样一个导出函数呢,没有去试,但是一直有点怀疑。

刚刚,小笨给我看了三国在线的两篇文章,是关于英杰传的反汇编的。第二篇讲到了英杰传有个隐藏的Debug菜单,于是我按上面说,试了一下,果然如此 。不由有点恍然大悟,KOEI原来藏着另外的窍门。


下面转小笨给我看的两篇文章

三国志英杰传中战场随机因素的分析

作者:hblongbow  来自:三国在线


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

这几天对游戏进行了反汇编,发现了几个关于策略杀伤力方面的很有趣的规律,拿出来与各位朋友分享,如有兴趣,可以顺便验证一下。

0、随机数:游戏中使用除法去余数的运算来产生随机数。例如对一个大数除以47,会产生0~46之间的随机余数。

以下用rand(47)来表示上述操作,下文中各种概率都是随机数产生的。

1、关于策略

(1)杀伤兵力类:

策略失败概率:防御方智力第一修正值/(攻击方智力第一修正值-1)/4

策略成功概率 = 1-失败概率;

策略杀伤力 = (基准值 + 攻击方智力第二修正值*2 - 防御方智力第二修正值)* 地形天气因素 * (2%以内的随机增益)

第一修正值 = 智力*等级/100 + 智力

第二修正值 = 智力*等级/50 + 智力

基准值:
焦热=200,火龙=600,猛火=1000,
漩涡=300,浊流=700,海啸=1100,
落石=400,山崩=800,山洪=1200。
地形:
树林中火计为1.25
雨天中水计为1.25
其他情况下为1

兵种影响:
如果防御是方运输队、军乐队或妖术师,则防御方第一修正值加倍,
且如果计谋成功,杀伤力减半。

例如,等级10、智力40的山贼对等级15、智力80的关羽使用山崩计,

山贼的修正值为 v1 = 40*10/100 + 40 = 44
v2 = 40*10/ 50 + 40 = 48

关羽的修正值为 v1 = 80*15/100 + 80 = 92
v2 = 80*15/ 50 + 80 =104

计谋成功的概率为 p = 1 - (92/43/4) = 46%

如果成功,杀伤力为 800 + 48*2 - 104 = 792~806人。

如果山贼对等级12的孙乾用计,则,

孙乾的修正值为 v1 = (74*12/100 + 74)*2 = 164
v2 = 74*12/ 50 + 74 = 91

计谋成功的概率为 p = 1 - (164/43/4) = 5%

如果成功,杀伤力为 (800 + 48*2 - 92)/2 = 402~410人。

作为简化处理,如果双方条件差不多,则计谋成功率为75%左右,

用计方智力高出30点,成功概率一般在85%以上。

(2)混乱类:

失败概率 = 防御方智力第一修正值/(攻击方智力第一修正值-1)/2

修正值计算方法同上。

例如,等级12的刘备对等级10的步兵队使用假情报计:

刘备的修正值为 v1 = (64*12/100 + 64) = 71

步兵队修正值为 v1 = (30*10/100 + 30) = 33

计谋成功概率为 p = 1 - (33/70/2) = 76%

(3)恢复兵力类:

恢复量 = (用计方等级 * 智力 / 20 + 计谋基准值) * (10%以内的随机增益)

基准值:援助 = 600, 补给 = 1200,救济 = 1800。

例如,等级30的马良使用援助计,可以恢复

30*90/20 + 600 = 735~806 人

2、关于混乱状态:

(1)进入混乱状态:

战斗中即时检测,如果士气值降到30以下,则随机陷入混乱,概率60%(除5取余看是否小于3)。

与等级、能力无关。

与中计方当前是否混乱无关(即“变得更加混乱了”和“混乱”效果一样)。

(2)从混乱中恢复:

战斗中即时检测,概率为百分之

(士气 + 统御力) / 3

例如,士气值100的张飞中计混乱后,激励一次就恢复的概率为

(100 + 83)/3 = 61%

士气值24的简雍混乱后,下一回合就自动恢复的概率为

(24 + 36)/3 = 20%,

每回合都用同样方法计算,故两回合之内恢复的概率为 (1 - 0.8*0.8) = 36%,
三回合恢复概率49%,等等。

与曾经陷入混乱的次数无关(即从“更加混乱”和“混乱”中恢复算法一样)。

3、反击:

发生反击的概率 = 被攻击方武力 / 150

与其他能力、兵种等无关。

例如武力62的潘宫反击概率为41%,武力69的董梁反击概率46%等等。


-----------------------------------------------------------------------------------------------------------------------------------
关键在这一篇,更猛.

三国志英杰传中隐藏的DEBUG菜单

作者:hblongbow 来自:三国在线

麻雀虽小,五脏俱全,三国志英杰传这个游戏中还有一个隐藏的DEBUG功能。
在战斗中,点下鼠标右键,会出现“功能”下拉菜单,里面有回合结束、胜利条件、全军撤退等,这个隐藏的DEBUG菜单就在“功能”的最后一项,“游戏结束”的下面,在我们玩的普通版本里不会出现,但是通过修改MAIN.EXE文件,可以使它现形!
允许DEBUG功能后,战斗中屏幕左上角会不断打印当前位置的两个坐标,黑底白字,而且察看敌军角色信息时,
原有的“经验值”一栏会打印出该角色的AI类型。AI类型前辈们已有总结,在此不赘述,常见的有
休息、移动、攻击最近敌等等。
DEBUG菜单里面有7个子功能,其文字说明是未经汉化的日文,所以如果不经过进一步的修改,由于内码不兼容,在显示DEBUG菜单时会死机。
因此可以给这7个子功能取一下中文名称,从上到下依次为:
1. 事件继续:
:“事件继续”一项,实际是“随意移动”。即:
在点击“事件继续”后,人物可以移动到任何地方!并且在无法移动的地方若站上人,防御力极高,几乎普通攻击只能打1滴血。

2. 立即胜利:
本次战役立即胜利。
3. 无人操作(展示方式)

刘备军会自动行动,不需玩家控制.在回合结束时狂点鼠标可以退出这种方式.
4. 控制友军
可以控制友军,例如界桥之战中公孙瓒的部队.
5. 控制所有(包括敌人)
这个够狠,如果用这个模式,大概可以打出2n个99级吧.
6. 部队及友军等级均+5
每用一次,战场上刘备军和友军的每支部队等级均加5,但是策略值和当前兵力不增加.
7. 当前回合数+5
等于说每用一次,自动跳过5个回合。呵呵,除了测试之外,好像没什么用处。

以下是所有的修改。先将MAIN.EXE复制成MAIN.EEE,然后把下面的内容做成一个文本文件INPUT.TXT ,
在DOS窗口中,切换到MAIN.EEE所在目录,执行 DEBUG < INPUT.TXT即可,然后将MAIN.EEE再复制成MAIN.EXE即可。
n main.eee
l 3000:0
a
;禁止战局初始化时清除DEBUG标志
e 5000:6590 90
e 5000:6591 90
e 5000:6592 90
a
;指定DEBUG标志
e 6000:9ED8 02
a
;菜单项:事件继续
e 6000:9F6A A8
e 6000:9F6B C6
e 6000:9F6C A5
e 6000:9F6D F3
e 6000:9F6E C4
e 6000:9F6F 7E
e 6000:9F70 C4
e 6000:9F71 F2
e 6000:9F72 00
a
;菜单项:立即胜利
e 6000:9F75 A5
e 6000:9F76 DF
e 6000:9F77 A7
e 6000:9F78 59
e 6000:9F79 B3
e 6000:9F7A D3
e 6000:9F7B A7
e 6000:9F7C 51
e 6000:9F7D 00
a
;菜单项:展示方式
e 6000:9F80 AE
e 6000:9F81 69
e 6000:9F82 A5
e 6000:9F83 DC
e 6000:9F84 00
a
;菜单项:控制友军
e 6000:9F89 B1
e 6000:9F8A B1
e 6000:9F8B A8
e 6000:9F8C EE
e 6000:9F8D A4
e 6000:9F8E CD
e 6000:9F8F AD
e 6000:9F90 78
e 6000:9F91 00
a
;菜单项:控制敌军
e 6000:9F98 B1
e 6000:9F99 B1
e 6000:9F9A A8
e 6000:9F9B EE
e 6000:9F9C BC
e 6000:9F9D C4
e 6000:9F9E AD
e 6000:9F9F 78
e 6000:9FA0 00
a
;菜单项:等级+5
e 6000:9FA3 B5
e 6000:9FA4 A5
e 6000:9FA5 AF
e 6000:9FA6 C5
e 6000:9FA7 A5
e 6000:9FA8 FE
e 6000:9FA9 2B
e 6000:9FAA 35
e 6000:9FAB 00
a
;菜单项:当前回合号+5
e 6000:9FAE 52
e 6000:9FAF 6E
e 6000:9FB0 64
e 6000:9FB1 2B
e 6000:9FB2 35
e 6000:9FB3 00
a
;"事件继续"的提示讯息
e 6000:A062 "OFF"
e 6000:A065 00
e 6000:A06F "ON"
e 6000:A072 00
a
;提示讯息
e 6000:A07A "OK"
e 6000:A07C 00
e 6000:A0DB "OK"
e 6000:A0DD 00
e 6000:A0EC "OK"
e 6000:A0EE 00
a
;跳过DEBUG方式下的左上角坐标打印
e 5000:8216 EB
e 5000:8217 03
w 3000:0
q

----------------------------------------------------------------------------
7个菜单选项,我们看到,控制友军控制敌军,明显是一种对S制作的调整,回合+5,显然是对回合数仔细测试时候要的。而无人操作方式,这个应该就是KOEI认为关卡是否过难还是过于简单的重要尝试了。

所以,换个角度想,我们制作MOD的时候有时能否故意把弄些和我军一样的人进行电脑K电脑的一次比拼呢。

p.s : 不过我最新试了下,这个展示的功能有点问题


----------------------------------------
我按照原文作者的方法,依样画葫芦,改了Exe,整个英杰由于比较小,就一起打包了,大家可以下下来看。

这,对步步那些追求英杰终极打法的人不知道是不是一种打击。


最后,虽然不认识hblongbow ,但是在此对他表示深深的感谢。

点击下载英杰传






[ 本帖最后由 岱瀛 于 2007-9-27 23:50 编辑 ]


顶部
性别:男-离线 岱瀛
(deving)

长平侯
川峡东路经略使
监管使

Rank: 19Rank: 19Rank: 19Rank: 19
组别 经略使
级别 左将军
好贴 1
功绩 2293
帖子 1370
编号 55810
注册 2005-12-22
来自 人间
家族 慕容世家


发表于 2007-1-31 11:26 资料 个人空间 短消息 看全部作者


QUOTE:
原帖由 炎帝瀑布碎 于 2007-1-25 23:50 发表
这个东西如果能弄出来,做MOD的时候可以省去不少麻烦啊
其实测试是做MOD一个极其麻烦的地方.有时候反复调试的都快吐了.
不过做为编程的门外汉问一句,可不可以在那个DEBUG菜单或类似的功能菜单里加一个拥有 ...

我最近在研究能不能象CS,魔兽那样,给说岳加一个游戏录象功能.打一关录一个,不过初步尝试了下,视频不压缩,直接保存成临时文件最后整合出视频的话,整个临时文件要过几G,不保存临时文件,直接压缩入视频,却要耗用好多内存空间

所以最新再考虑象魔售那样,记录下每个操作成数据文件然后回放应该就可以.如果这个实现了,自然也就能实现胖胖说的回复到前几个回合那的Debug功能了。

其实记录,按关系类型数据库的话就是两个表,一个记录回合信息,一个记录操作信息。

回合信息里有回合数和天气情况.

操作信息里则有战场人物编号(我军到友军\敌军其实都在一场S里有个战场编号的),行动目的地座标,行动方针(攻击,道具,策略,待命),行动子操作(攻击和待命该拦为空,道具是具体哪个道具,策略则是具体哪个策略),然后行动作用对象(待命则该栏为空,其他的就是被作用到的战场人物编号)

记录下这两张表的信息,应该就可以回放,自然就能回转。


顶部

正在浏览此帖的会员 - 共 2 人在线




当前时区 GMT+8, 现在时间是 2024-11-24 22:16
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015688 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP