【Modding Tree 模组树】快速入门-消灾解饿漫画
写在前面:Readme和第一个教程有大量Github教程和无用信息,这些东西想学的早就学了,不想学的也不会因为做个简单游戏就去自学,我就略了。
这一系列文章需要Javascript基础,大概需要在(https://zh.javascript.info/)里学到第一部分第五章结束,HTML及CSS知识需求不必多说。
Getting Start 开始模组树是一个增量类放置游戏引擎,最初是作为Prestige Tree(声望树)的高扩展性版设计。
下载模组树(https://gitee.com/idlegame/the-modding-tree)并解压后,使用浏览器打开index.html即可运行游戏,你可以在每次修改游戏后通过刷新页面的形式重新进入游戏查看改动。
js/mod.js保存了大多数游戏基本信息,你可以将 modInfo.name 的值改为任何你想要的游戏名然后刷新网页查看。modinfo.id需要设置为一个唯一字符串(意为不要和日后游戏中任何字符串重复,建议http://tool.pfan.cn/random),且之后的设计中尽量不要更改,因为它用于确定存档文件(savefile)位置。
测试Mod时应该关闭游戏中设置的离线进度。
下一节将稍微深入系统,并使用TMT(The Modding Tree)真正创建一个Mod。
Making a Mod 第一个模组js/mod.js中可以定义游戏基本信息,现在可以很方便接触到的内容是 modInfo 对象里的字段(它们在上文应当已经设置过了),后面还可以设置版本号、版本日志、毕业祝贺文本,乃至“非每Tick调用函数”等。你还可以更改modInfo.pointName来更改游戏中的基本点名称显示文本。
js/layers.js中可以定义游戏层的相关内容,这里已经有一个基本层了。
这是该文件的第一行。addLayer即创建新层的函数,"p"是层id,在TMT中用于指代该层。由于这一层在游戏中已经有调用了,推荐不要改动此id。
layer是一个对象,可以设置其特性。目前,你可以更改以下字段:
其它的字段多涉及声望货币的计算,暂时不需关注。
js/layer.js中可以设置升级
升级是一个大的特性,它可以用于里程碑(milestone)、解锁物品购买等。
在层函数传入对象的末尾添加 upgrade 对象:
upgrades对象内的键暂且可认为是一个两位数ab,表示第a行的第b个升级。
键的值中,name和description分别为升级项名和描述,cost对应的是升级所需的花费。
当然,如果只是这样运行,这项升级不会有任何效果。为使其提供增益,需要在其它文件中进行设计。由于这里的获得点数计算放在js/mod.js中,我们切换到该文件进行设置。
需要注意的是,这里的数值都需要以对象的形式出现而非不能以基本数据类型出现,加减乘除也需要经过函数进行,但函数的值可以为基本数据类型,比如不能写x=x+y,而要写x=x.add(y),x=x.add(1)(假设y=Decimal(1))。这方面的内容将在之后的文章展开叙述。
mod.js中,在函数里加入代码:
来做一个进阶的升级,12是写在11后的。
this.layer和this.id自动和当前环境(p层,12)绑定。那么effect的返回语句也并不难懂了。
mod.js中的那个函数里需要再加上这一行
再做一个升级。
这次id设为13,cost改为Decimal(5),effect内的代码改为
这次要修改的是layers.js中该层的gainMult()函数:
这样这个升级就能使点数翻倍增长了。
后记感觉很混乱?混乱就对了,这个东西就是作者写的一个快速入门,真东西还得看文档。
文档不多,每篇内容也都不太多,但精力有限,慢慢来。