1.0
版本列表
- Exp 版本
- Snapshot 版本
1.0 - Exp 1
发布于 26.07.03。
大家周末好!本周隆重介绍我们正在开发的一张新地图——量筒的密室杀手!该地图作为还原 Hypixel 体验的又一部新作品,希望大家喜欢!
先简单介绍一下玩法吧。一共有多张地图,每张地图都有 1 名杀手、1 名侦探和若干名平民。杀手要杀死所有的其他玩家;侦探要杀死杀手以获得胜利。地图内会随机刷新金锭,除侦探外的其他玩家都可以攒 10 个金锭获得一把弓。
以下是更多细节:
核心玩法
- 实现了整套的密室杀手判定系统
- 使用了标记方块,用于便捷地判定地图的重生点和金锭生成点
- 实现了玩家的头颅,使用皮肤即可实现 4 向旋转
- 新增了假玩家,用于进行调试
- 新增了死去的玩家实体,用于模拟 Hypixel 的尸体
- 新增了弓实体,继承自《冒险世界:筑梦》,用于模拟侦探掉落的弓
技术性
- 使用了 TypeScript 实现了密室杀手的系统
- 继承了起床战争的库文件,改进后成为
lib.ts - 游戏使用
MurderMysterySystem系统进行全局调控 - 系统会在世界加载完毕后初始化,并在游戏结束后变为无效系统
- 一个新的系统也会在上一个系统无效化之后初始化
- 系统分为 5 个阶段:清除、加载、等待、游戏、游戏结束
- 但是,目前使用一张特定地图,还没有使用清除或加载阶段
- 每个阶段都会注册
MurderMysteryComponent中的组件,作为功能单位 - 为系统内置了一套玩家管理系统,使用
MurderMysteryPlayer - 通过
data.ts注册地图数据
1.0 - Snapshot 1
发布于 26.07.05。
根据 Exp 1 的测试结果,修复了一些问题。
杀手飞刀
- 现在杀手可以按住鼠标右键飞刀了!
- 飞刀需要蓄力 0.5 秒,射出刀后需要 5 秒的冷却时间
- 杀手飞刀会穿过玻璃板和屏障,穿过玻璃板还会有破碎音效和破碎效果
- 击中其他方块后会消失
- 击中玩家后,则该玩家立刻被淘汰
- 侦探射出去的箭可以和杀手飞刀相碰
神秘药水
- 现在地图图书馆支持神秘药水了!
- 使用 1 个金锭购买,使用炼药锅即可
- 喝下神秘药水会在 4 种药效中的随机一种切换
开发者注:因为本次更新仓促,Hypixel 中的许多有趣特性和细节并未来得及在本版本中实现,在下周的测试中会实现这些功能。
漏洞修复
- 修复了侦探在弓填充期间死亡后依然在信息板中显示填充中的问题
- 现在任何时刻,玩家都不再能与除规定外的方块交互
- 修复了旁观者进入游戏后会出生在错误位置的问题
- 修复了侦探退出游戏后未分配弓的问题
- 修复了杀手退出游戏后会导致报错的问题
技术性
- 为杀手飞刀新建了一个新物品
murder_mystery:iron_sword MurderMysterySettings类:- 在
game设置下新增子设置项thrownKnifeSpeed: number和thrownKnifeCollideArrowDistance: number
- 在
1.0 - Exp 2
发布于 26.07.12。
新的周末!在该版本,我们处理了很多问题,并引入了一张新地图——档案馆!同样地,这张地图还是会先在管理群内部进行内部测试后再公开测试。
新地图
- 新增地图:档案馆
- 档案馆中有岩浆,跳进去就会死亡
金锭生成机制
- 全面更新了金锭生成机制
- 现在地图内存在大量的金锭生成点
- 现在只有距离玩家在 xz 坐标周围 5 格范围内的金锭生成点才会尝试生成
- 最多选中 8 个范围内的金锭生成点
- 对每位玩家,每 16 秒尝试生成一次
- 被选中的金锭生成点中,只有大约 15% 的概率可以实际生成
- 如此可以控制玩家大约每 2 分钟出一个弓,不会导致金锭泛滥
神秘药水
- 现在每局有 5 种不同的神秘药水
- 每一局,不同颜色的药水都对应不同的药效,例如这一局中蓝色药水对应隐身,下一局就可能对应失明
- 在一开始,并不知道神秘药水有什么药效,只有喝下才能从名字看出是什么药效
- 最多同时拥有 3 瓶药水
- 最多同时拥有 1 种药效
- 不能在炼药锅正在酿造时酿造新药水
- 新增了无敌效果,该效果会阻碍所有除掉出地图之外的伤害实施
杀手飞刀
- 现在杀手的飞刀模型会横过来
- 现在杀手的飞刀需要短按右键触发,再次短按右键取消蓄力,以同步 Hypixel
- 修改了杀手飞刀碰到箭的粒子效果
特性更改&漏洞修复
- 修复了一些英语翻译中的标点错误
已知问题:目前神秘药水无法追随当前所使用的版本,可能会在后续解决 - 修复了地图中栅栏门无法交互的问题
- 修复了地图中可能会因存在标记方块而导致无法近战打中标记方块内部玩家的问题
- 修复了因游戏区域未添加常加载区域导致神秘药水未能正确工作的问题
- 现在游戏结束后不再能够拾取金锭
- 现在游戏开始倒计时设置为了 15 秒
- 现在会在游戏剩余 60 秒时通知平民将取得胜利
- 现在侦探会在杀手获得剑的同时获得弓
- 统一了侦探、杀手和平民的弓箭位置,除了杀手的弓在 3 号位外,正常情况的弓都在 2 号位,箭都在 4 号位
- 现在右侧的信息板的剩余平民会同时显示侦探的数量
- 现在会在游戏开始 60 秒后提醒未杀过玩家的杀手杀人
- 现在地图图书馆会尝试恢复 10 扇栅栏门的状态
技术性
- 更新了行为包和资源包的版本
- 更改了注释内的译名“角色”为“身份”
- 拆分出了标记方块
goldblock和spawnpoint为一个简易工具,从该工具中获取坐标数组 - 现在地图不再从地图内的标记方块获得信息,而是从
mapData的描述中获取信息 - 提取出了多个瞬间显示的标题选项
instantTitleDisplay: minecraft.TitleDisplayOptions可用 - 移除了飞刀物品
murder_mystery:iron_sword lib.ts:- 为
ItemMatchOptions接口扩展了typeId: string为includeTypeId: string[],接收字符串数组,只要在数组内的物品就都会检查通过 - 更新了
TickingAreaUtils的remove方法,现在试图移除不存在的常加载区域时不会报错 - 新增了
DimensionUtils的getLocationsFromVolume方法,从BlockVolumeBase中提取出该区域的所有坐标点 - 更新了
BlockUtils的fill方法,现在支持使用特定的方块状态
- 为
MurderMysterySystem类:- 显性移除了
goldPoints和spawnPoints属性,和getMarkPoint方法,现在需要在mapData属性中获取 - 新增
globalGoldSpawnTimes属性,以判断一共尝试了多少次金锭生成
- 显性移除了
MurderMysteryComponents类:- 新增了
playerIntoLava组件,当玩家落入岩浆则视为掉入岩浆死亡 - 新增了
recover组件,用于恢复地图场景 - 重新设计
generateGold组件,使之特性如前文所述 - 重新设计
mysteryPotion组件,使之特性如前文所述 - 重新设计
murdererKnife组件的部分功能,使之特性如前文所述 - 更新了
preventDamage组件,现在在拥有playerIntoLava组件时不再阻碍熔岩伤害
- 新增了
MurderMysterySettings类:- 新增了
goldSpawn属性,及其子设置项spawnRadius: number、spawnChance: number、spawnInterval: number - 新增了
murdererSword属性,及其子设置项knifeSpeed: number、knifeCollideArrowDistance: number、knifeThrowTime: number - 移除了
game的generateGoldInterval属性和goldIntervalMultipliedByPlayerAmount属性,现在迁移到了goldSpawn中
- 新增了
MurderMysteryPlayer类:- 新增了
mysteryPotionUnlocked: [boolean, boolean, boolean, boolean, boolean]属性,代表神秘药水的解锁情况 - 新增了
throwingTime属性,标记杀手飞刀蓄力时长,单位游戏刻 - 移除了
killPlayer方法,该方法的功能与setDead重复且在玩家无敌时难以控制 - 更新了
setDead方法,现在返回布尔值,并且当玩家拥有抗性提升药效时不能杀死该玩家 - 合并了
getDetectiveBow方法和getNormalBow方法为getBow方法,现在所有身份在获得弓箭时都调用此方法
- 新增了
- 数据文件
data.ts- 新增了
playerIntoLava?: MurderMysteryPlayerIntoLavaComponent组件、endPortal?: MurderMysteryEndPortalComponent组件、door?: MurderMysteryDoorComponent组件、recover?: MurderMysteryRecoverComponent[]组件,实装了playerIntoLava和recover组件的功能
- 新增了
1.0 - Snapshot 2
发布于 26.07.13。
旁观抬头传送
- 现在死亡玩家或旁观玩家可以通过抬头传送到仍存活的玩家的位置
- 抬头时会弹出来一个 UI,以传送到对应玩家处
- 同时,还将显示对应玩家的身份
定位指南针
- 现在在游戏剩余 30 秒时,会给予杀手一个指南针,并对所有玩家提醒
- 指南针会提示剩余平民和侦探的位置
开发者注:指南针目前仍然存在一些问题,原定预计为平民指出弓的位置,然而实测发现指南针指向的是世界出生点的位置,而不是玩家重生点的位置。因此,指南针只能用于杀手的定位。后续的版本中,我们会弃用指南针作为定位系统,而改用原版的定位栏解决问题,这需要 26.30 的脚本系统,所以从下个版本起,将全面提高游戏需求版本到 26.30
特性更改&漏洞修复
- 实装了地图档案馆的末地传送门功能
开发者注:地图档案馆中还有一个功能,但不会在该版本中加入 - 现在系统在开启下一张地图之前会先进行常加载区域预加载,防止现场传送加载过慢
- 现在不再默认关闭摔落伤害和火焰伤害了
- 现在英雄只能是平民了
- 现在在开始游戏前,不再试图清除画
开发者注:然而,目前我们仍然没有添加对阻止玩家破坏画的支持,因为基岩版引擎几乎不允许我们这么做。我们后续可能会使用一些绕弯子的方法阻止类似问题的发生,但不会是现在 - 现在熔岩不再能造成任何 Minecraft 层面上的伤害
- 修复了侦探的弓箭冷却完毕后仍然被扣除 10 个金锭的问题
- 修复了死亡的侦探退出游戏后仍然掉落弓的问题
- 修复了已击中方块的箭仍然能阻止飞刀的问题
- 修复了若用飞刀攻击假玩家会导致报错的问题
技术性
lib.ts- 修复了
EntityUtils.isInVolume方法错误计算区域的问题
- 修复了
MurderMysterySystem类:- 更新了
setMap方法为getMapData静态方法,获取一张随机地图的数据,或获取特定地图的数据,现在脱离系统也可以使用该方法
- 更新了
MurderMysterySettings类:- 在
game设置下新增子设置项showRoleInSpectatorTeleportUI: true
- 在
MurderMysteryComponents类:- 新增了
playerIntoEndPortal组件,当玩家落入末地传送门则视为掉入末地传送门死亡
- 新增了
MurderMysteryPlayer类:- 新增了
compassUnlocked属性,确定玩家是否已解锁指南针 - 新增了
getName方法,返回字符串,以获取玩家的名称 - 新增了
getCompass方法,为玩家添加指南针 - 新增了
removeCompass方法,为玩家移除指南针
- 新增了
- 数据文件
data.ts- 实装了
endPortal组件的功能
- 实装了
1.0 - Exp 3
发布于 26.07.18。
暑假快乐!本周快照新增了定位栏功能!这回,躲猫猫玩法可能就不再适用了……啊,剩的人数很多吗?那当我没说 ;)
定位栏
- 升级了指南针为定位栏!
- 现在杀手在剩余 30 秒时会获得一个定位器
- 这个定位器会追踪剩余的所有玩家
- 距离越远,显示的小点就会越小
- 如果追踪的是其他杀手,会显示为红色
- 现在平民在侦探死亡后会获得一个定位器
- 这个定位器会追踪侦探掉落的弓
特性更改&漏洞修复
- 提高了末地传送门的检查频率
- 改进了游戏结束的副标题表述,现在显示的内容会同时随着游戏结束原因和玩家角色发生变化
- #1 在剩余最后 1 名玩家时,杀手将拥有速度 I 效果
- 特别地,如果本局游戏只有 2 名玩家,则不会施加这个效果
- #15 现在多出的玩家成为旁观者后会正确地变为旁观模式
- #17 现在进入末地传送门等出图死亡方式不再能生成尸体
- #18 修复了一处错别字
- #19 修复了两处可能存在的脚本报错
- #21 修复了首任侦探死亡后,继任侦探击杀杀手不显示英雄的问题
- #22 修复了杀手在飞刀蓄力期间切换快捷栏后,蓄力不停止的问题
- #25 新增了一个施加夜视效果的设置,开始游戏后对所有玩家添加夜视
- #27 为神秘药水新增了权重,现在更容易获取缓慢、隐身药水,而更难获取无敌药水
技术性
- 为使用定位栏,提高了游戏的版本需求到 26.30
- 现在
playerWaypoints游戏规则将强制被设定为off - 为
tsconfig.json增加了"noUncheckedIndexedAccess": true,修复了一些可能由调用数组索引导致返回undefined的报错 - 新增了
murder_mystery:locator自定义物品 - 更新了
MurderMysteryGameOverReason枚举,现在其对应的内部的字符串首字母小写,以对应语言文件 MurderMysterySystem- 从
enterGamingStage方法提取出了assignRole方法 - 从
enterGamOverStage方法提取出了gameOverNotice方法 - 新增了
murdererGetSpeed方法
- 从
MurderMysteryComponents- 升级了
compass组件为locator组件,以满足上文要求
- 升级了
MurderMysterySettings- 在
game设置下新增子设置项applyNightVision: boolean,修复了showRoleInSpectatorTeleportUI的类型
- 在
MurderMysteryPlayer- 移除了
compassUnlocked属性,现在不再使用指南针 - 移除了
getCompass方法和removeCompass方法,现在不再使用指南针 - 新增了
getLocator方法和removeLocator方法,以使玩家获取定位器 - 新增了
showLocatorBar方法和hideLocatorBar方法,使不同玩家显示不同的定位栏
- 移除了
lib.ts- 更新了
TickingAreaUtils.add方法,现在会在已存在常加载区域时返回undefined - 尝试修复了
UIUtils可能导致的玩家无响应报错问题
- 更新了
1.0 - Snapshot 3
发布于 26.07.19。
在昨天测试的基础上,我们还新增了一张地图!
新地图
- 新增地图:暗景秋色!
- 这是一张夜晚的地图
- 这张地图还拥有神秘药水的功能,会在下个版本加入
特性更改&漏洞修复
- 修复了仅剩最后 1 人时杀手没有速度的问题
- 现在杀手的速度效果不再显示粒子
- 现在玩家的定位栏不再会留到下一局
- 为了显示清楚,现在弓的定位栏不再显示为一个弓的图标,而是显示为一个天蓝色的圆点
- #31 修复了玩家会饥饿的问题,现在使用和平模式
技术性
data.ts- 新增并实装了
time组件,用于调控一张地图使用的时间
- 新增并实装了