【项目复盘】杀戮尖塔mod开发复盘-抢劫商人
杀戮尖塔mod开发复盘 - 抢劫商人
一、成果介绍
本次开发的mod名为“抢劫商人”,已发布至
- steam杀戮尖塔的创意工坊https://steamcommunity.com/sharedfiles/filedetails/?id=3235423149
- 以及githubLiuliy1/RobbingMerchantMod: Allow you to rob merchants in SlayTheSpire。
截止本文撰写时已有近2w浏览量与5k+订阅。在刚发布时也登上过周热门榜,因为本次开发只想体验一下mod开发的工作流,便没有继续维护,后续也没有再获得曝光以及数据增长。
二、开发流程
整个mod的开发流程大抵如下
- 需求分析
- 在官方GitHub上查询开发的接口模板
- 反编译游戏源码和其他mod进行学习
- 在idea中编写代码
- 测试并发布
开发过程中使用的是Java语言,如果没有mod开发基础就得加上学习java的环节。不过对java知识的要求并不多,只要看得懂别人的代码以及官方给出的示例就基本能写。
三、需求分析
在我看来,所有的mod开发的需求分析都十分简单。mod开发的需求就两类:
- 1、增加游戏内容
- 2、修复游戏痛点
我的出发点是便是第二类,因为在游玩时总会有出现想在商人处购买关键物品却缺钱的情况,无能狂怒后只能含恨离场。
从此萌生了抢劫商人的想法。然后在游戏社区逛时也发现其他人有说这个问题,那既然大家都有需求,这mod做出来的数据肯定不会太差,于是就确定了mod的主题。
再之后便是架构设计,想想这个mod需要什么:
- 面对商人的时候需要有一个按钮可以点击就抢劫
- 选择抢劫会进入战斗,战斗怎么设计
- 战斗赢了可以0元购,怎么改商品的金钱
- 在抢劫中途SL能不能正常触发各种情况 (也就是数据的保存)
四、学习教程
需求确定之后就要着手开发,但是此时对整个开发流程还是一头雾水,只能去站在前人的肩膀上。
知乎上这个大佬的教程:杀戮尖塔MOD制作详解(1)基础环境搭建 - 知乎:
里面详细描述了从创建项目到在游戏中测试的流程
以及创建角色,卡牌,遗物 (可惜从前文的需求分析中我们确定了这个mod不需要这些内容)
GitHub上的basemod教程:Hooks · daviscook477/BaseMod Wiki · GitHub:
这个教程就提供了接口的案例,比如要添加怪物该怎么写之类的:
不过也并不全,有些我的疑问并不能在上面得到解答(可能是我没看懂
1 |
|
- GitHub上的ModTheSpire教程SpirePatch2 · kiooeht/ModTheSpire Wiki · GitHub
- 教了如何将你的代码填补/修改到游戏原本的代码中 (正是我们需要的修改商人)
- patch的写法(重中之重)
- 还要尖塔wiki:杀戮尖塔/尖塔奇兵(Slay the Spire)中文维基|攻略百科|考据资料|Steam - 灰机wiki - 北京嘉闻杰诺网络科技有限公司
- 用于查询游戏的某些卡牌或怪物名字、编号之类的信息
- 唯一真神 杀戮尖塔mod制作教程
- 比前文的教程更加详细了讲解了各个部分
- 重要的是有高级技巧的写法:patch、保存数据
- 反编译其他大佬的mod
- 最简单的方式是直接扔进idea
- 上文的教程中也有提供反编译的工具
- 很多教程没写到的功能可以在其他大佬mod中发现并以借鉴,毕竟教程是稀少的但是mod是海量的,本mod的商人房间的代码就借鉴了著名mod的dowanfall的实现
五、 动手开发
文件目录如下:
上一部分教程中已经涵盖了的大部分内容,这里就不再赘述,简单讲一下这次开发的实际内容。
第一部分,建立类:
- 建立注册类RobbingMerchant,实现接口 EditStringsSubscriber, PostDeathSubscriber
- 用于整个mod的初始化
- 加载文件
- 建立怪物类 MerchantInRob 继承AbstractMonster用于实现与商人战斗时的商人。包括:
- 商人的各项数据
- 行动方式
- 图片渲染方式
- 建立抢劫后商人类 MerchantAfterRob 实现Disposable接口,
- 用于实现抢劫后0元购道具
- 商人的图片渲染
- 商店房间类CustomShopRoom 继承 ShopRoom
- 实现进入商店时的逻辑
- 抢劫按钮的显示
- 商人的显示
- 战斗的触发
第二部分,patch
patch是本次开发十分关键的一个内容
patch的中文翻译是补丁,它的功能也跟名字一样,为游戏源代码打补丁。
我们前面提到的修改商人等功能,都不是脱离原游戏的新增加内容,而是对游戏原本的商人功能进行魔改。
因此我们需要反编译游戏源代码,找到有关内容的函数,甚至是第几行,然后根据patch的格式对源代码添加函数或修改内容。参考 杀戮尖塔mod制作教程
六、测试并发布
在代码测试阶段时,不需要发布到创意工坊,只要将导出的mod文件塞到对应的文件夹中即可。
测试完毕并通过命令的方式上传后,便可在steam创意工坊的界面查看到mod的状态,可以重新修改标题和描述,不过要是更新上传还是需要通过命令的方式。
至此,抢劫商人mod就完成了。虽然整个架构看起来是十分简单,但是我整个mod的开发到完成也用了一个月的时间,主要是对各个接口的实现不太清晰,patch的写法在此之前从未听闻。
在新手入门时,建议综合多个教程以及源码,用比较的方式便可以知道一些接口和函数“为什么要这么写”。
不过在有了开发mod的经验后,后续要是再开发类似的内容想必就能很快上手了。