欢迎光临散文网 会员登陆 & 注册

关于冒险一号

2022-09-05 22:42 作者:道家深湖  | 我要投稿

在《原神12》和《魔城传说》两个mod上遇到问题后,我终于决定认真下来研究玩法了。我们有很多教人怎么写mod的代码的教程,但“如何设计一个好玩的mod”,这种教程我是还没看见。

冒险一号简单来说,就是一个类似暮色森林,专门用来实验新维度冒险mod该怎么做的实验mod。

在这里摘抄一点企划案:


具有X个“色”。色,这里是指类似AFK的种族,FGO的职介,原神的元素那样,一种抽象的属性。具有色属性的东西用“彩”形容。

游玩流程:

1,进入模组维度。

2,随机进入一个色的群系。简单地建造基地,于此同时,制作彩木(T1)套装的镐或剑。从现在开始,随机地会遇到“无色运气套装(T1~T2)”。于此同时,他可能遭遇一些T1小怪。注意,T1彩色没有盔甲,只有剑。T1的盔甲是无色运气套装。

3,玩家用木镐或者石镐挖掘彩矿,直接得到彩宝石,跳过烧炼的过程。

4,玩家用彩宝石打造彩剑与彩盔甲(T2)。两者可以被强化,但不强化也可以。打造的产物有随机波动,波动范围待定。

5,玩家现在可以进入地下结构了,地下结构里有T2彩怪。T2怪和结构里会产出大彩(T3)套装的材料。

6,玩家收集齐T3后,可以去天上的结构打T3彩怪了。打完巨怪可以获得无色套装(T4)的材料。

7,T4装备可以挑战最终BOSS(无色)。

Tier碾压

A攻击B,如果A的攻击等级小于对方的防御阶级,则伤害改为1,1.12.2版本无击退。

如果大于,则无视护甲,并且会立刻清空无敌帧。超过的差值,会转化为对应的增伤比例。

玩家防御阶级的话,每件护甲增加0.25,因此存在一个保护程度的问题。比如,玩家的防护等级是0.75,怪物的攻击等级是1,那么怪物在攻击的时候,就会有1-0.75=25%的增伤。

是否要每件0.2,凑齐套装之后额外加0.2?待定。这件事取决于是否要避免玩家混搭。实际上,后面有套装效果,我是不打算在防御阶级上做文章的。

每色物品(非方块)需求:

T2彩材料“宝石”

T3彩材料“神石”

T1剑

T1镐

T2剑

T2镐

T2盔甲套装

T3剑

T3镐

T3盔甲套装

每色方块需求:

彩泥土

彩木板(树直接就是木板)

彩石头

每色实体需求:

彩T1怪

彩T2怪

彩T3怪

每色结构需求:

地下结构:俗称地塔。随机生成在Y=50。含有T2怪的刷怪笼。初版仅为一个地牢一样的小房间。

天上结构:俗称天塔。随机生成在Y=200。含有T3怪的刷怪笼。初版仅为一个地牢一样的小房间。

特殊结构需求:

运气小屋:在地表与各种深度的地下随机生成,含有无色运气套T1、T2的成品装备。之后可能参考泰拉瑞亚,制一些随机道具。初版仅为含有一个箱子的房间。

世界生成需求:

新维度海平面高度为Y=128,地表基本平整。以棋盘格形式,按顺序生成各个色的群系。群系大小在配置文件,且至少为16。

地表:随机生成木头棍子。

浅地层:含有3层彩土,3层黏土,3层沙子,3层原版石头。3的数字规定,是为了让需要这个材料的人能一直挖到爽,而不用担心上面的东西总是掉下来。

深地层:浅地层以下都是深地层。这期间散布着运气小屋与该色矿石。

基岩层:最下方Y=0一层是平整的基岩。

特殊物品需求:

传送石:在主世界使用则传送到模组维度;在模组维度使用则传送回主维度。传送的目标位置是相同XZ坐标,从上往下数第一块脚踏实地的地方。

版本1.0:

制作T1、T2、T3的一个颜色的所有内容,以及世界生成。无色的新道具(T1、T2、T4)忽略。

怪物暂时用盔甲来提升防御等级,先做成一样的怪,但是留出配置系数的空间。注意,由于T1没有护甲,所以可能要做一套测试用护甲。

每个颜色要做成枚举,有几个补正值,方便以后修正。

尽管教程很难产,但是做出维度和群系对我来说倒不难。靠着之前的研究获得的理解,以及理想境里摸明白的现成代码,俩小时内我就写好了新的颜色架构和新维度。

这个模组与一般的模组代码不同,一般的模组都是把物品放在ModItems类里,列举书写,方块在方块类ModBlocks里,如此云云;但我的ModItems和ModBlocks里却几乎没有主要内容。

EnumSuit驱动

在我的EnumSuit里,多一个枚举,就会多一整套的东西出来,包括对应的物品、方块、群系,因为它们的架构都是完全一致的。如果想要获取SET_ONE对应的二阶头盔,那么就要EnumSuit.SET_ONE.getTierMap().get(2).getHead()。ModItems里并没有直接获取的方式。这些玩意的注册名都是靠固定规则搭配套装的名字动态生成的。甚至,连它们在lang里的翻译文本,也是动态拼接的。“测试套装二阶头盔”并没有属于自己的key,它是通过“测试套装二阶”和“头盔”的翻译拼出来的。

动态拼接的本地化文本

这些都是代码架构的事,不提也罢。

后来我花了几天实现了新的属性,并且测试了一版世界生成。嗯,当然不包含任何的结构,只有泥土、树木、和二阶矿石,以及测试怪物。

测试版截图

在判断世界生成已经初步没bug了之后,我用time set 0指令把时间设为白天,接上一个gamemode 0开始测试生存。

原定地表上是一阶怪。由于我没有修改,所以它们会在晚上生成。白天,它们并没有燃烧殆尽。相反地,它们追着手无寸铁的我。我根本打不过。20血,1阶防御,打上去连击退都没有,算上测试护甲值后,一次1点生命都不到。我只能狂奔。

所幸野外现在是白天,不会再刷怪了。这样我不至于腹背受敌,至少我知道,甩开这三只怪我就安全了。

这个破怪

这地面很平整,只有几个柱子。没有墙可绕,没有房子可躲,没有坑可跳。我就硬跑。

跑几步我回头看下,草,还在。

跑几步我回头看下,草,还在。

跑了几百格后,我终于甩开了。

然后我就又发现了新的问题。

首先,砍树很慢。我和原版的木头硬度一样,但我砍出来,一个方块是一个木板,也就是资源产出效率为25%。

然后。做不了门。

我注册了矿词,让我的套装木板作为木板存在,但是……门他不走矿词!

每一种木材都有自己对应的门,这些配方是单写的。我没有对应的门……所以我最后单独给每个木材注册了门的配方。当然,配方不是走json,而是java代码批量注册的。

另外,考虑到服务器玩家总会在各种时机加入游戏,我决定在地面上放一些类似闪光弹的东西,让玩家在一穷二白的时候快速离开怪物。至于怎么防止玩家一直用这玩意嘛……大概是怪物被晃瞎的时候,获得抗性提升吧。

然后,挖矿。我把石头生成放到了比较靠下的位置,一开始我可以做炉子,却不能做火把——没有煤,然后木板也不能烧成木炭。但没有煤和木炭,就做不了火把,也就没法往下挖……去他妹的。所以我特殊设定我的木板也能烧木炭。

先想这么多。累了。摆了。

关于冒险一号的评论 (共 条)

分享到微博请遵守国家法律