作者zxcvforz (塔欧兹)
看板Minecraft
标题Re: [情报] Nolagg作者退出Bukkit插件开发
时间Fri Dec 21 22:23:48 2012
※ 引述《kalijason (?)》之铭言:
: Bukkit插件NoLagg作者bergerkiller
: 在2012/12/12宣布退出Bukkit插件的开发
: 原文: https://gist.github.com/4330229
: 文章很长 大意应该是..
随手译了一下,没润稿没校稿大家加减看吧
以下译文开始。
==
经过好几天测试、爬讨论、思考各种可能性之後,我决定不再开发 Bukkit 插件。
在我说明理由之前,先说说是如何发展到现在这地步的:
我的插件开发经历
在 2011 年初,我的 ICT 课完结题目是要用 Java 写一个 3D 的掷骰游戏。
当时我是 Java 新手,在 3D 模组与材质方面则不是,我学 Java 越来越深入,
也越来越知道该怎麽使用它。这个课题我做了大概 5-6 个月後,完成了游戏。
游戏本身很简单,但是它让我深入了解到游戏引擎是如何运作的。它让我懂得
一些例如游戏时脉回圈等概念,像是时脉速率会如何影响到物理效果,
还有像是画面运算与音效的基础概念。
放假之後,我接触到 Minecraft。我很意外发现它用的 3D 程式库跟我用的一样:
LWJGL。当时我没有多想,但是我一上朋友的伺服器,一切都不同了。
那是个 Bukkit 伺服器,而我也很快就发现了 Bukkit 插件开发的世界。
我从很简单的东西开始,像是封锁 IP 和箱子交易。之後做出 TrainCarts,
这是来自我找到的一个插件徵求串。那一年後来我还从之前没做完的插件做出
MyWorlds。到最後其他的插件也都完成了,有部分原因在於我需要某个功能,
或是因为那插件具有挑战性。
在这段期间,开发真的很有乐趣。我可以专心制做新的东西,几乎不必回头去看
旧程式码。当 Minecraft 进入了大量更新的时代後,一切都不同了,
而我的插件也不例外。TrainCarts 和 NoLagg 在当时需要不断花心力维护,
占去很多可以用来开发新功能或改善功能的时间。最後我不想再这样浪费时间,
所以着手制做 BKCommonLib 程式库。
1) 最初是因为 Bukkit 里的 YAML 组态真的很难用。然後我开始移植数学函式和
物质比较。没过多久,我所需要的所有工具几乎都进 BKCommonLib 了。
看来一切都很好,但这只有最初。後来更新的量大增,包括 CraftBukkit 和 MC
本身的解译所需的心力。有一次,我才刚修好 NoLagg 里的栏位参照,下一版更新
就公布了……时间还不到一个礼拜。我发现我没办法这样维护所有插件,所以所有
会一直变动的程式码都进了 BKCommonLib。
在 2012 年夏季,我喜欢上 Spout 和 Spout Vanilla 开发,因为它让我又能够
再度专心投入於游戏本身。它让我想起自己游戏专案的许多时光,但不只这样,
它还教导我很多我连想都没想过的东西。我对於界面、javadoc、记忆体回收、
资料储存和同步处理的知识都是因为他们而学会的。
我从 9 月到现在开学 (我 2011-2012 年间从高中毕业),所以这占掉一些时间。
我几乎所有时间都花在清除掉直连 CraftBukkit 的参照,把他放进 BKCommonLib
里的 SafeField/Method 里。我主要目标是提供一个稳定的环境,让我不必
那麽频繁更新我的插件。我不想要老是在更新插件,因为我真的很想要从之前
中断的地方继续开发 Vanilla。
(译注:这里不知他讲的是 Minecraft 官版的意思还是专案叫做 Vanilla。)
在我几乎要完成这项工作时,Bukkit 心血来潮想了新点子出来:「让我们把
CraftBukkit 所有套件路径都改成动态的!」我知道我这下惨了,所以我所能
想到的只有想办法绕过这个设计。在一开始,我把插件里所有用到 NMS 的地方
都拿掉。没多久我就发现我在之前几个月就已经几乎要完成这个了,剩下需要
最佳化的地方也没很多。还需要做的就是拿掉 NMS World 和 WorldServer,
改用 org.bukkit.World。在 BKCommonLib 里的所有公用函式都接受 bukkit
类别,但这仍然不够。差远了。很多插件都继承 CraftBukkit 提供的类别,
我也知道这些东西都无法固定也无法丢进程式库里。我手上的选择只有:
.全面改用 reflection 和变数储存类别,并给 BKCommonLib 里所有的
CB 类别都外包一层类别
.修改类别载入程式来重新导向到正确的类别 (要修改位元码)
.把我的插件改经外部程式传递而不用类别载入程式
上面这些我全都做了,我发现类别载入程式的方法最耐用也最安全。它的效果
完全就是我所想要的。然後讨论串就出现了。永远没有结论的讨论,一再反覆
出现的论点,没有人愿意听,没有人懂。当时我心中对於 Bukkit 所剩无几的
支持就这麽消逝了。我无法忍受这种不愿意会体他人处境的态度。
Bukkit 团队,我可以了解你们维护更新很难。我了解你们想要维持程式乾净。
但是你们把自己的问题怪罪在错的人身上了。
.大家都有心要写有用的问题报告,但是却都被忽略,被当做轻微问题搁置
一旁。
.大家都有心要改善你们的软体,但是你们让人等好几个月,甚至毫无回应
就直接关闭问题报告。
.大家都有心要修改自己的程式让它更安全,但是你们从来没有说过这是个
必需。
而我们这些「有心」的人得到的是什麽?我们这个 NMS 核心开发小组得到:
.你们所有插件都是垃圾,都用我们不鼓励用的程式码。不要再用 NMS 了。
用 API。
.问题在你们身上,因为伺服器管理人用的是你们的插件错的版本。
.我们有太多故障问题了,现在你们除了这些还可以每一版多加 100 个
版本错误的相关问题。
.你们的插件造成重大伺服器问题,像是世界损毁。结果整个讨论里就只有
提出一个实例。
.你们的插件会默不出声直接当掉,而不是因为我们改程式!(现在插件用
reflection 和不安全的程式码,所以当掉时可能没错误讯息)
所以现在,2012 年 12 月 12 日,我受够了。
.伺服器管理员的错却怪在我身上?
.他们把我这 3 个月在 BKCommonLib 花的心力全部毁掉?
.他们除了根本不适用我的论点以外都提不出任何实在的论点?
.为什麽好几个月前一个伺服器管理员用了旧版插件造成的问题却怪我?
就算他们决定撤销套件版本管理,我也不会再回去碰叫做 CraftBukkit 的那堆
没人管理的位元码。他们不给支援,不想要你用它。想用的人在 Bukkit 社群
不受欢迎。在 Bukkit API 皇民下还有谁愿为我站出来?我看不到任何针对
CraftBukkit 的管理行为!www.craftbukkit.org 在哪?
我要到哪去才能投入插件开发而不是 API 本身?
我也很难相信自己竟然变成在这个没人管、没支援、问题百出的软体下做开发。
在 2011 年夏天的时候那麽多人用,那麽稳定。那段使用 CraftBukkit 不必
担心版本相容性的时光到哪去了?
Bukkit 以前真的很好,真的很棒。我帮了很多人让他们上手投入开发行列。
我很喜欢帮助别人解决疑难,而我也很喜欢把看似无解的难题解开。
不过那段时光已经过去了。CraftBukkit 已死,剩下的只有镶了半边金的东西
叫做 Bukkit。
CraftBukkit 开发已死,也不会再复生。就算继续用它也看不出有何未来。
有些人很有勇气试过要解决这问题,但最後还是没用的。CraftBukkit 只需要
撑住 Minecraft API 出来之前的期间。就是这麽微小的目标。但是他们却
决定要「彻底清理」只留下用 Bukkit 的人,其他都排除掉。
无法依赖 Bukkit 的人必须要不断更新到累死。我不想当那个人。我也可怜
dev-bukkit 团队,因为他们现在处理插件更新事倍功半。我祝你们好运。
关於未来
我怀疑 CraftBukkit 这烂摊子到最後只会剩下 Bukkit。Bukkit 插件在未来
几个月会是主流。这就是为什麽我要参加 Spout 开发 BukkitBridge 和
Vanilla。至少这样我有个稳定的平台可以开发新功能,而不是烦相容性。
当时机到来,我会把我的插件全部移植到 Spout 伺服器。对於像是 NoLogg
这类插件,可能会少掉一些功能,因为他们本来就内建了。我也怀疑我可能
根本不需要 NoLagg,因为老实说,为什麽一个伺服器会需要用插件来做到
没有延迟?
对於我留下的其他插件,我也不会让他们断尾。我会等 CraftBukkit 1.4.5
R0.3 出来後,修正我所有插件专门就适用这个版本。之後任何新版本出来,
可由其他人更新,但我不会再更新。
等 R0.3 的更新阶段结束,我会在论坛发邀请串,让其他人回应接手我留下
的东西。在有人接手前,我会想办法精简我的程式码让它更好理解,我在这
几个月本来就已经有在做这个了。如果你有兴趣,请传私信给我或等我发文。
无论如何,在那段期间请不要期待我大量参与讨论,因为我得到处跑不少
地方。不过,我会想办法先修正掉还不熟我程式码的人较难修正的问题。
祝福大家圣诞快乐,也祝我自己有个与去年全然不同的新年。
.Bukkit 板工:祝你们管板好运。
.Bukkit 粉丝:祝你们监督板工好运。
.Bukkit 开发:祝你们满足板工和粉丝好运。
还有,拜托,不要伤心或生气;过去这几天里已经够多时间引发这些情绪了。
当然,我也很愤怒,但有时我们还是得放手让它过去。对我来说,我花太多
时间在 CraftBukkit,有时我甚至睡不到 3 小时。这在以前从来没发生过,
也是个很明确的警告,让我知道我正在伤害自己。
Peace
完毕。
想接手我的插件吗?请见 (连结略请见原文)。
==
以上译文结束。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.63.66
1F:推 FLJX:无偿付出阿... 12/21 22:38
2F:→ qmaper:唉~一直小更新小更新真的是搞死一堆插件作者 12/21 22:47
3F:推 H45:官方本来就没释出API 全部都是靠社群在弄 规格参差不齐不意外 12/21 23:40
4F:推 olys:可惜了 感谢翻译 12/21 23:41
5F:推 slcgboy:所以最根本的问题就在於官方跳号的速度... 12/22 00:07
6F:推 jeffffliu:12/24 ~12/26 箱子的材质变成圣诞节箱子 12/22 00:34
7F:推 GR3eeeN:Thx for ur translation. 12/22 03:53
8F:推 tsubasawolfy:他对官方更新速度不知道有没有怨言XD 12/22 09:06
9F:推 willy69wu31:(正在调查spout 12/22 13:55
10F:推 Foremanytz:spout网页中有写到,spout将以plugin支援各游戏 12/22 17:56
11F:→ Foremanytz:实作minecraft的spout plugin叫作 Vanilla 12/22 17:56
12F:→ andychay2:官方就1.2 1.4这两次被骂超惨阿XD 尤其是1.2那次 12/22 22:32