帝国引擎游戏SWGB的单位修改小发现
我想大家都知道, 但还是说明一下: SWGB 是 LucasArts 用帝国系列 Genie 引擎制作的星球大战主题游戏, 数据格式和征服者几乎没有区别SWGB 中引入了空军(实际上没有新东西, 就是把帝国的鹰改了一下而已), 俄从 Ykkrosh 老大发布 Genied 那天起就想过用 Genied 使大多数单位都能对空射击, 一直都没有成功, 今天翻出了这个游戏想起了旧账... 于是16进制编辑器直接打开程序. 突破点选择了 SWGB 中的眼镜蛇车 -- 作弊单位小熊即可以对空也可以对地射击. 小熊的 ID 是1204, 搜索... 发现可疑指令一, cmp 比较后跟了一个条件跳转, 改为无条件跳转. 进入游戏, 发现绝地武士也挥着日光灯管追砍飞机了... 汗...{35} 当初就是怕分析程序陷入指数复杂性, 看样子反而白白浪费时间了
打开调试器追踪ID, 果然摸到了射程数据, 于是俄追加了浮点判断指令(由于改动了文件大小又对齐了PE目录), 测试结果很理想: 一架战机冲进骑兵群中就可以大开杀戒, 当遇到炮塔和步兵往往被围殴致死( 毕竟电影里的炮塔也是防空主力吗 :-)
偶到此就已经满意了, 收工. 以下是偶的想法:
1. 俄的修改没有考虑科技的效果, 近战单位加了射程仍然无法对空射击;
2. 没想到对炮塔起作用, 可能和DAT中格式不一样.
3. 这些是细枝末节, ID周围好像有类似当前状态和坐标的数据, 理论上做出背后刺杀的刺客和远距离无法射穿装甲的弓手都是可以实现的;
4. SWGB 中部分单位同时使用两套武器和攻击动画(通过ID和科技开启, 对不同的敌人用不同的套装), 可以用来摆脱投石车的限制;
5. 要是能通过修改程序去除地图大小的65535限制的话, 定是无量功德
6. 要是偶火星了别笑偶. 希望能有帮助, 俄刚发现就上来发贴了.
[ 本帖最后由 气水 于 2010-5-7 01:49 编辑 ] 惊现修改达人!膜拜了 达人惊现。对空问题的确是目前修改中的空白,LZ应该是研究的第一人 对空我没有研究过...不过我在想。。。空中单位改了地形限制吧...为什么小兵就不能打了? 不不, 我的意思不是地形限制, 是单位类型限制. 比如只有动物能设置被捕获, 打包机打包之类 也就是说改变了单位的种类?那真是创举了 今天又有空玩游戏了, 追内存时发现一个可能有价值的地址:
https://farm5.static.flickr.com/4014/4591075957_6991ed9247_o.jpg
运行到动物时是107. 应该是Genied unit.txt中的特性格(可否装载, 转化, 捕获) 我不知道气水说的是不是单位类别编号(Class ID),通过修改程序可以做到新增Class ID吗
0步兵射手
1纪念碑和圣物推车
2贸易商船
3一般建筑(不包括城墙城门塔)
4村民
5鱼
6近战步兵(包括法兰克斧兵)
7果树丛
8石矿
9野生无攻击力动物
10野生有攻击力动物
11尸体和飞行武器
12近战骑兵(包括奴隶骑兵)
13攻城武器(不包括弩炮)
14桥和部分装饰物
15树
18僧侣和传教士
19贸易马车
20运输船
21渔船
22军事船只和英雄破坏者
23火药骑兵
27城墙
30地图启示者(包括旗帜等)
32金矿
35城堡破坏者
36骑射手
39城门
41一块资源
42圣物
43带着圣物的僧侣
44火药步兵
47侦察骑兵(不包括轻骑兵和翼骑兵)
51打包的投石机
52防御塔
54展开的投石机
55弩炮
56防御力1000的单位
58可捕获控制的动物
59 国王
回复 8# 的帖子
理论上是可行的, 但是添加的类型只能按帝国的默认行为行动(话说跳出也可以认为是一种默认行为), 一切都需要手工添加, 大概是不现实程序的信息量与源码的信息量好像不是很相等, 比如地图大小运行时会被下切8位, 欧现在能想到的唯一完美解决办法是重载整个内存管理{40} 实在是本人能力有限 看到LZ后,我深深地感到自己电脑程序知识的贫乏{31} {31} 让帝国出现空中兵种大有发展
比如风筝兵--呵呵
页:
[1]