mcpc的跑酷大神排名有哪些

您的当前位置: > 正文
飞檐走壁 我的世界动作跑酷mod
来源:作者:亦真亦假
我的世界已经可以说是无所谓不能了!最近小编就发现了一个神奇的mod,安装完这个mod以后你可以再游戏中飞檐走壁,攀爬天花板、攀爬墙壁、飞行动作、侧跳等等,简直是化身波斯王子!
新版动作灵活MOD特点:
& 攀爬天花板
& 攀爬楼梯
& 使用全新的动作来代替掉落
& 在攀爬时可以来回的跳跃
& 可以沿着天花板上的藤蔓和铁栅栏攀
& 新的游泳动作
& 新的飞行动作
& 更加快的冲刺
& 侧跳以及后跳
& 匍匐前进
& 头着地的跳跃
& 可蓄力的跳跃
& 可配置的MOD设置
操作方法:
攀沿天花板:
这个MOD可以使你攀沿在天花板上的铁栅栏
当你在够得着的铁栅栏下方,跳上去并按住 Grab 按钮后可以进行攀沿
攀登藤蔓:
当你装了这个MOD后,即使藤蔓没有方块靠着,也可以进行攀沿
当你靠近藤蔓后,按住Grab按钮和跳跃按钮后,开始攀登藤蔓。但要小心的是,当你松开按键后你会摔下去
新的游泳和潜水动作:
当你跳入水中,水至少要有两个方块深才会有用
按住跳跃键,你可以浮到水面上,并且你再也不用当心你松开跳跃键后会往下沉
当你往前游泳时,你所游向的方向是你鼠标所指的地方
当你在水中,你可以按下潜伏键来下潜
新的飞行动作:
这个MOD实现了更加真实的飞行
它完全是标准的飞行动作,飞行的方向不再由方向键控制,而是你的鼠标
蓄力的跳跃:
这个MOD可以使你跳的更加高
当你按住Grab按钮和跳跃按钮时,你会发现一个蓄力的图标出现了,蓄满松开后就可以跳的更加高!不再是只可以跳两格了!!
当你开始移动之后,你之前所有的蓄力将会消失
这个MOD可以使你的像海豚一样!
当你开始冲刺,按住Grab按钮后,按下你的空格!你就会像海豚一样跳过去。但要注意的是!如果你用这个动作来着地,你所收到的伤害会加倍!!
侧跳和回跳:
这个MOD可以使你迅速的闪避
当你双击你的方向键(不包括前进),你可以进行一段小距离的短跳。
这个MOD增加了爬行功能,以便你通过只有一格空间的地方
当你按住潜心按键后按下Grab按钮,你会趴下来进行攀爬。当你在攀爬的时候,你可以放心的松开Grab按钮
这个MOD可以使你滑行!
开始冲刺!然后按住Grab按钮,最后按下潜行键,你就会滑行一段距离!
更加快的冲刺:
当你按住冲刺按钮,你会跑的更加快,而且不用双击你的方向键了!
当你进行例如冲刺和攀爬之类的动作的时候,你的体力值会消耗。而体力值消耗的速度取决于你的难度!假如你的难度足够高,当你的饥饿值没有的时候你的体力也不会恢复!
可更改配置:
当你在游戏中按下F9,可以更改MOD的难度,不同的难度体力的消耗也不同。
你也可以在游戏目录中的smart_climbing_options.txt中更改具体的设置。
MOD安装方法
ModLoader or Forge or MCPC+版本:
安装ModLoader or Forge和Player API(放进.minecraft.jar)
把&Smart Moving Universal for ModLoader or Minecraft Forge or MCPC+.zip& 放进&mods&文件夹内即可
Standalone版本:
* 它不需要任何api支持也可以用
* 你不在乎其他mod,只想用Smart Moving+原版
解压缩&Smart Moving Universal Standalone.zip& 将里面的文件放入 &Minecraft.jar& 中
别忘了删除里面的&META-INF&
MOD适用版本为1.5.1
下载地址:/share/link?shareid=441842&uk=
(window.slotbydup=window.slotbydup || []).push({
id: '864236',
container: s,
size: '250,120',
display: 'inlay-fix'Minecraft 的多人游戏是如何发展起来的?
诸如 Bukkit 或者 Spigot 这种服务器端又是怎么出现的?
按投票排序
:更新 EULA 事件承蒙大家的厚爱,小弟的编年史上日报啦! 实在感谢所有人的支持!最后的部分已经在更新啦,我的语文功底不好,每次下笔都要斟酌,文笔也不是很通顺.. 所以还请各位原谅~=========================这个问题太想自问自答了,因为这段血泪史完全可以写成精彩纷呈的长篇小说!作为在 Minecraft 业界打滚多年的人,必须得给大家侃侃背后的故事!// Survival Multiplayer 时代(2010)让时光回溯到五年前的 8 月 9 日的凌晨。我们的故事主角兼 Minecraft 创始人,Markus 'Notch' Persson,正二十四个小时宅在家里,撑着双眼死瞪电脑屏幕,双手则 迅速地敲着键盘,废寝忘食地调试着程序。再过一个小时就是 8 月 10 日了,Minecraft 生存多人游戏(Survival Multiplayer,SMP)正式发布的日子。你看 Notch 这妖魅的小眼神Minecraft SMP 的名字听上去很高大上,但其实就是一个叫做 minecraft_server.jar 的文件罢了,小巧绿色又便携。使用方法也非常简单,双击打开,它就会自动在默认端口上设置好一个 Minecraft 的服务器,别人只需凭你的 IP 即可进入。理所当然地,一些基本的命令也包含在其中:/kick 用来踢人,/gamemode 用来从生存转创造... 现在看来,第一个版本的 SMP 相当简陋,但玩家们正沉醉于和朋友一起玩生存的乐趣里,再简陋也赞不绝口。SMP 的发布,正是迎合 Minecraft 迅猛上升的用户注册量。截至 2010 年 5 月,Minecraft 的付费用户已经达到两万,YouTube 上以 Minecraft 作为关键字的视频日益增长,而此时,这个游戏还只是在 Alpha 阶段!而 SMP 的出现,更让 Minecraft 的知名度登上又一巅峰:什么!?可以和好基友在开放式的 LEGO 世界里生存、探险、搞基(?);还可以开创造起个斗兽场战个痛或者堆满 TNT 然后炸地图;最给力的是神似编程的红石系统,直接令 Minecraft 一跃成为游戏开发工具!哪个 AAA 级游戏有这么爽的体验?!即使从五年后看来,SMP 的第一个版本也有相当高的游戏性在 SMP 发布仅仅两个月后,Minecraft 的付费用户就翻了个 1.5 倍,两个月就赚了一百多万!SMP 的巨大成功并没有让 Notch 怠慢,没过多久就向玩家们宣布了 Beta 版本的到来。而 Notch 也正式注册了 Mojang AB 的商标,为之后发行游戏铺路。// hMod 时代(2010 ~ 2011)SMP 好玩归好玩,可是不能在上面装 mod 这一点让不少玩家很苦恼。当然了,可以通过反编译 minecraft_server.jar 修改里面的代码,比如调整一下玩家的默认速度什么的,然后每个玩家一走起路来就跑十公里远,上天入海不是梦。毕竟 Mojang 也没有做什么签名验证,也没什么坑爹的全程联网验证(育碧:...),要修改几个变量然后重新编译,理论上来讲不难啊。可行归可行,问题是修改起来太麻烦:代码全部被混淆(obfuscated)了!什么叫代码混淆呢?举个栗子,比如说原本的代码是这样的:private String playerName = "你爸爸"; // 定义玩家名称
private double health = 20.0D; // 定义玩家血量
private float walkSpeed = 1.2F; // 定义玩家速度
public void chat(String message) { // 定义一个说话的函数
Server.broadcastMessage(this, message); // 向服务器里的函数传递参数
没学过 Java 是不是也很清晰明了?这修改起来还不容易,简直就是填空嘛,小学生都会。问题是在编译的时候,代码被 Mojang 事先混淆了,可能到你手里的时候就变成这样了:String a = Base64.decodeFromBase64("5L2g54i454i4");
double b = 20.0D;
float c = 1.2F;
public void d(String a) {
bl.aE(this, a);
尼玛这叫一个狠哪,若是没有原本的代码,你看得懂吗?你或许说,上面这几行,我也能猜出个大概吧?嗯,b 是血量,因为玩家血量最高就是 20,然后 c 是... bl 是... aE 是...别忙着翻桌,我们再来看看真实个例,下面是 Minecraft 1.8 里面的 aap 类:public class aap extends um {
private static final Logger b = ;
public float a = (float) (Math.random() * 3.793D * 2.0D);
private int c;
private int d;
private int e = 5;
private String f;
private String g;
public aap(amp paramamp, double paramDouble1, double paramDouble2, double paramDouble3) {
super(paramamp);
a(0.25F, 0.25F);
b(paramDouble1, paramDouble2, paramDouble3);
this.y = ((float) (Math.random() * 360.0D));
this.v = ((float) (Math.random() * 0.2322D - 0.1161D));
this.w = 0.2322D;
this.x = ((float) (Math.random() * 0.2322D - 0.1161D));
public aap(amp paramamp, double paramDouble1, double paramDouble2, double paramDouble3, aio paramaio) {
this(paramamp, paramDouble1, paramDouble2, paramDouble3);
a(paramaio);
public aap(amp paramamp) {
super(paramamp);
a(0.25F, 0.25F);
a(new aio(apg.a, 0));
protected boolean q_() {
return false;
protected void g() {
F().a(10, 5);
public void j() {
if (k() == null) {
super.j();
if ((this.d & 0) && (this.d != 32767)) {
this.d -= 1;
this.p = this.s;
this.q = this.t;
this.r = this.u;
this.w -= 0.93033D;
this.T = j(this.s, (aL().b + aL().e) / 2.0D, this.u);
d(this.v, this.w, this.x);
int i = ((int) this.p != (int) this.s) || ((int) this.q != (int) this.t) || ((int) this.r != (int) this.u) ? 1 : 0;
if ((i != 0) || (this.W % 25 == 0)) {
if (this.o.p(new dl(this)).c().r() == big.i) {
this.w = 0.2322D;
this.v = ((this.V.nextFloat() - this.V.nextFloat()) * 0.2F);
this.x = ((this.V.nextFloat() - this.V.nextFloat()) * 0.2F);
a("random.fizz", 0.4F, 2.0F + this.V.nextFloat() * 0.4F);
if (!this.o.C) {
float f1 = 0.98F;
if (this.C) {
f1 = this.o.p(new dl(sr.c(this.s), sr.c(aL().b) - 1, sr.c(this.u))).c().K * 0.98F;
this.v *= f1;
this.w *= 0.4863D;
this.x *= f1;
if (this.C) {
this.w *= -0.5D;
if (this.c != -32768) {
this.c += 1;
if ((!this.o.C) && (this.c &= 6000)) {
private void v() {
for (aap localaap : this.o.a(aap.class, aL().b(0.5D, 0.0D, 0.5D))) {
a(localaap);
private boolean a(aap paramaap) {
if (paramaap == this) {
return false;
if ((!paramaap.ad()) || (!ad())) {
return false;
aio localaio1 = k();
aio localaio2 = paramaap.k();
if ((this.d == 32767) || (paramaap.d == 32767)) {
return false;
if ((this.c == -32768) || (paramaap.c == -32768)) {
return false;
if (localaio2.b() != localaio1.b()) {
return false;
if ((localaio2.n() ^ localaio1.n())) {
return false;
if ((localaio2.n()) && (!localaio2.o().equals(localaio1.o()))) {
return false;
if (localaio2.b() == null) {
return false;
if ((localaio2.b().k()) && (localaio2.i() != localaio1.i())) {
return false;
if (localaio2.b & localaio1.b) {
return paramaap.a(this);
if (localaio2.b + localaio1.b & localaio2.c()) {
return false;
localaio2.b += localaio1.b;
paramaap.d = Math.max(paramaap.d, this.d);
paramaap.c = Math.min(paramaap.c, this.c);
paramaap.a(localaio2);
return true;
public void i() {
this.c = 4800;
public boolean T() {
return this.o.a(aL(), big.h, this);
protected void f(int paramInt) {
a(ua.a, paramInt);
public boolean a(ua paramua, float paramFloat) {
if (b(paramua)) {
return false;
if ((k() != null) && (k().b() == aip.bU) && (paramua.c())) {
return false;
this.e = ((int) (this.e - paramFloat));
if (this.e &= 0) {
return false;
public void b(eu parameu) {
parameu.a("Health", (short) (byte) this.e);
parameu.a("Age", (short) this.c);
parameu.a("PickupDelay", (short) this.d);
if (m() != null) {
parameu.a("Thrower", this.f);
if (l() != null) {
parameu.a("Owner", this.g);
if (k() != null) {
parameu.a("Item", k().b(new eu()));
public void a(eu parameu) {
this.e = (parameu.e("Health") & 0xFF);
this.c = parameu.e("Age");
if (parameu.c("PickupDelay")) {
this.d = parameu.e("PickupDelay");
if (parameu.c("Owner")) {
this.g = parameu.j("Owner");
if (parameu.c("Thrower")) {
this.f = parameu.j("Thrower");
eu localeu = parameu.m("Item");
a(aio.a(localeu));
if (k() == null) {
public void d(adq paramadq) {
if (this.o.C) {
aio localaio = k();
int i = localaio.b;
if ((this.d == 0) && ((this.g == null) || (6000 - this.c &= 200) || (this.g.equals(paramadq.b_()))) && (paramadq.bg.a(localaio))) {
if (localaio.b() == ahw.a(apg.r)) {
paramadq.b(rl.g);
if (localaio.b() == ahw.a(apg.s)) {
paramadq.b(rl.g);
if (localaio.b() == aip.aA) {
paramadq.b(rl.t);
if (localaio.b() == aip.i) {
paramadq.b(rl.w);
if (localaio.b() == aip.bq) {
paramadq.b(rl.A);
if ((localaio.b() == aip.i) && (m() != null)) {
adq localadq = this.o.a(m());
if ((localadq != null) && (localadq != paramadq)) {
localadq.b(rl.x);
this.o.a(paramadq, "random.pop", 0.2F, ((this.V.nextFloat() - this.V.nextFloat()) * 0.7F + 1.0F) * 2.0F);
paramadq.a(this, i);
if (localaio.b &= 0) {
public String b_() {
if (i_()) {
return aG();
return eq.a("item." + k().a());
public boolean az() {
return false;
public void c(int paramInt) {
super.c(paramInt);
if (!this.o.C) {
public aio k() {
aio localaio = F().f(10);
if (localaio == null) {
if (this.o != null) {
b.error("Item entity " + D() + " has no item?!");
return new aio(apg.b);
return localaio;
public void a(aio paramaio) {
F().b(10, paramaio);
F().h(10);
public String l() {
return this.g;
public void a(String paramString) {
this.g = paramString;
public String m() {
return this.f;
public void c(String paramString) {
this.f = paramString;
public void o() {
this.d = 10;
public void p() {
this.d = 0;
public void q() {
this.d = 32767;
public void a(int paramInt) {
this.d = paramInt;
public boolean r() {
return this.d & 0;
public void t() {
this.c = -6000;
public void u() {
this.c = 5999;
能猜得出来算你狠。于是,虽然 SMP 的第三方修改成为可能,但基本没有服主会闲的蛋疼去玩这个。除了代码被混淆之外,由于 Minecraft 长期都是 Notch 一个人开发,所以内部的业务逻辑也写得很乱,或者说实在太有 Notch 特立独行的代码风格了,窝们实在猜不粗来呀!Notch 表示:“你丫反编译我的代码还瞎逼逼”(设计对白)不过就是有些人点错天赋了,就在 SMP 发布后没多久的 2010 年年底,一位叫 hey0 的大神在自己的个人网站上发布了 hMod。hMod 一出,激起千层浪,众人纷纷惊呼:民间奇才!hMod 是个什么玩意儿?我尽量简单地解释一下。以往的 SMP modding 模式(也就是上面提到的,直接修改源代码),我们画个流程图出来:hMod 的原理,就是将那些不可读的代码,通过 hey0 君敏锐的观察能力,“翻译”成可读而清晰明了的东西。还记得刚才那堆乱七八糟的代码吗?有兴趣的同学可以自行阅读“翻译”过后的。(“翻译”这词实际上并不准确,实际上 hMod 是对 SMP 的半封装,详细的技术细节在此略过。)这实在太伟大了!要在服务器上加入自己原创的内容,顿时简单了起来。不过如此伟大的 hMod 更新了几个月,原作者就突然潜水,小道消息是说回老家结婚去了,然后由另一位现已就职 Mojang 的大神 Dinnerbone 继续填坑。还没填到一半 Dinnerbone 就不干了:靠,代码真乱!于是拉上几个志同道合的同志一起推翻重做,扛起“翻译”的任务,Bukkit 计划就这么诞生了。// Bukkit 时代(2011 ~ 2014)Bukkit 计划实际上分为两部分:Bukkit API 和 CraftBukkit。废话不多说,我们再画个流程图:原理和 hMod 是一样的,但 Bukkit API 写得更好之余,最重要的成就就是加入了事件系统,不过这个话题说下去完全可以另起炉灶了,所以咱们暂且跳过。好了我知道你们都在吐槽上面的魔法是什么鬼,那么我尽量简单讲一讲,没有面向对象编程基础的同学可以跳过下面这几段。Bukkit API 里全部都是抽象的类与方法,打个比方有个方法叫 getOnlinePlayers(),返回当前玩家数量。为什么要抽象?为什么我们不直接整合实现(implementation)?比如我发现下面这行代码就可以返回当前玩家数量,这不搞定了吗,分两步干嘛。aJ.e();
问题是我们的这行代码的基础,是通过破解 Minecraft SMP 的源代码对吧?更准确的说,是通过破解 Minecraft SMP 当前版本的源代码作为基础。而代码混淆这个过程,是每个版本都会重新进行一次的。上面那行代码或许在 Minecraft SMP 1.7 能用,但到 1.8,可能就完全报错了。因为或许在 1.8 里,要获取当前玩家数量的代码是这样的:b.aX();
所以,在 Bukkit API 的部分里,这个方法是抽象的,留给相应版本的 CraftBukkit 去实现。并且这么一来,有了抽象的接口作为参考,新版本的 SMP 发布时,Bukkit 团队也能更方便地更新 CraftBukkit。在这里也顺便吐槽一下,常常见到有人说用 Bukkit 开服,其实是错的 —— Bukkit 里全是抽象的接口而已,开个鬼啊。正确的说法是用 CraftBukkit 开服(其他服务器端另计)。所以下次你见到谁跟你炫耀说“我会用 Bukkit 开服务器你造吗”,记得高大上的回他一句:“乖,那个叫 CraftBukkit。跟我读,科阿哇夫特巴可以特。”好了话题扯远了,那么有了 Bukkit 能做些什么呢?能做的事太多了!比如用 Bukkit API 的自定义命令功能,加个叫 /launch 的命令,然后输入 /launch &谁谁谁& 就将目标玩家喷上天,这无论在原生 Minecraft 里或者 SMP 里都是做不到的!效果请参见左下角~ 这些基于 Bukkit API 的小程序被统称为插件(plugin)好了,我知道你们又要吐槽了。当然不是!这种插件实在太肤浅了,Bukkit API 真正最广泛的应用是用来开发小游戏(minigame)。你没听错,在游戏里开发游戏!只要有足够的人力物力,依靠着 Bukkit API,要弄出个 Minecraft 版《无主之地》或者《使命召唤》是绝对可行的!国外知名服务器 Hypixel 近日推出的新游戏 Warlords,武器到装备的模型都是完全自制的。Warlords 的核心玩法其实就是抢旗,但又加入了武器收集,附魔系统和角色系统等等,目前平均在线玩家 2000+,称其为小型 PvP 网游也绝不为过毫不夸张地说,Warlords 甚至要比 Steam 上不少免费的 FPS 好玩;光是收集要素就足够吸引了!毫不夸张地说,Warlords 甚至要比 Steam 上不少免费的 FPS 好玩;光是收集要素就足够吸引了!另一知名大服 Wynncraft,则主打 RPG 玩法,照搬了当今网络上 MMORPG 的很多元素:饶有趣味的任务,广阔宏伟的地图,专门刷经验升级的地城... 倒也弄得趣味横生我们还是先回到 2011 年,回到 Bukkit 刚刚发展起来的时候吧:那时大众对 Minecraft 多人游戏的概念,还只是停留在与好基友一起玩生存的程度。真正将 Bukkit 计划推向大众视野的,当属在 2011 年发展起来的 MCSG(Minecraft Survival Games)服务器。听过《饥饿游戏》吧?熟悉里面的设定吧?而 MCSG,就是饥饿游戏在 Minecraft 的翻版:24 个玩家在开放式的地图里生存,到处开箱寻找物资,谁生存到最后就赢。SMP 可能也弄得出来,但是想做复杂一点,将箱子的物品完全随机化,或者将玩家数据保存在 mySQL 数据库里,又或者加入一堆炫目的技能,那是 SMP 绝不可及的。而以上这一切,利用 Bukkit API,小 case 啦。当然 Survival Games 远远没有如今的 Warlords 吸引,但是在当年却可谓掀起了一阵 Minecraft 潮。在 YouTube 上实况大型服务器里游戏的实况主越来越多,即使是如今已经超过千万订阅的 SkyDoesMinecraft —— 就是那个玩了 Flappy Bird 的小伙 —— 也是玩 Minecraft 发家的(好吧,这个看名字就知道)。好了,我知道你看到这里有点无聊了。所以下面重点来了!!v(??ω??)????因为也是在 2011 年,一个名为 Buycraft 的东东进入了服主们的视野。Buycraft 是一个 CMS 系统,服务器的玩家可以通过在前端用 Paypal 或者信用卡购买东西,来获得服务器上的增值服务。用 Minecraft 赚钱不再是梦!真是爆炸性的大新闻。......(超燃 BGM 响起)这岂止是爆炸性,简直是历史性!!!这不正是现在手游最喜欢加入的课金系统吗?!!你嫌你的装备太差吗??你觉得打怪升级太慢吗???你羡慕那些满身神装的高富帅吗????快来买 VIP 会员吧!!!!!!一个月只需 10 美刀,即可让你得到最尊贵的享受!!!!!!!!!!!双倍金钱!!!三倍经验!!!!换装系统!!!!!宠物陪伴!!!!!!房间防踢!!!!!!!非 VIP 说话全是灰色的!!!!买了 VIP 你就算骂脏话我们也帮你加个白色高亮!!!!!!还有高端洋气上档次 VIP 字样的前缀!!!!!别人死了最多就一句死亡信息!!!!!!!!你死掉我们在你死亡的地点放个七彩烟花!!!!!!!!!让整个世界都知道你死了!!!!!!!!!!!于是,Minecraft 的多人游戏到这里已经完全发展起轻工业来了,首先是开发难度低兼成本小,插件还不一定要自己开发,网上现成的一堆,实在不行开价让别人来做;然后就等着收钱吧,五十美刀一个月的 VIP 照样有人买!Bukkit 计划也从此声名大噪,越来越多的热心人士加入了开发行列,每一个更新都是无数服主欢呼的时刻。和 SMP 一样简单的开服流程也让服务器越来越多,保守估计也有几十万 —— 甚至有了 Minecraft Server List,Minecraft Servers 这样的网站,只是列出互联网上公开的服务器地址,同时暗中通过竞价为某些服务器提升排名,一个月就能赚上万。吃惊吧?更恐怖的在后头呢。刚才提到过的,2012 年迅速崛起的小游戏服务器 Hypixel,也是通过增值内容付费的方式,赚了个盆满钵满!根据我一位认识 Hypixel 开发者的外国朋友的可信消息,高峰期的 Hypixel,日均 30000+ 玩家,一年的净利润 $1000000+。除以 12,一个月九万多美元,也即五十七万人民币。一个月五十七万。
一个月五十七万。
一个月五十七万。
一个月五十七万。
一个月五十七万。可能有人会质疑以上的数字,那么我晒晒亲身经历吧:学生党一枚,有多年编程基础,闲着没事也写写插件。我曾经在 2013 年 9 月在一家名为 Minecade 属下的 SkyDoesMinecraft 服务器工作过三个月,月薪一千。2014 年年尾帮 ArkhamNetwork 服务器做过外包项目,六百。还有一些零零碎碎的小项目,在此不表。而无论是 Minecade 还是 ArkhamNetwork,甚至还挤不进大服务器的行列。可以想像得见一线服务器的员工们,一个月能赚多少了!所以说如今 Minecraft 的多人游戏完全是一条成熟的产业线,服主带着充足的资金聘请员工,为服务器开发高质量内容吸引玩家;玩家则购买增值内容甚至主动捐款来令服务器盈利。这样的良性循环在整个游戏界来讲都是很难得的。与此同时,单人游戏的体验也在稳速提高,1.5 的红石更新,1.6 的马匹更新,1.7 的世界观更新,而勤快追上步伐的 Bukkit 计划又让服务器们得以争先抢后地在 CraftBukkit 新版本发布的第一时间更新服务器上的内容,为的就是吸引人流。原本就蓬勃的 Minecraft 游戏界在 2013 年进入了黄金时代。有充足的利润打底,服务器们开发的新内容一次比一次高质量,Quakecraft、Hide and Seek、Prison、Factions、Arcade 等游戏模式的名字已经深入民心,玩家们也乐意付钱,于是两边和乐融融,近年来游戏业流行的 Freemium 的模式竟然在他们身上得到最好的实现。Minecraft 在这一年突破 1000 万销量,很大程度上要归功于辛勤的服主们。黄金时代终究是要过去的。狂喜的人们似乎没有发现,一朵乌云已经慢慢逼近......// 辉煌背后Bukkit 时代看似辉煌,但实际上有不少隐患出现:第一是 Bukkit 本身的衰落。2012 年 2 月,Bukkit 的开发团队(Dinnerbone,EvilSeph,Grum,Tahg)收到来自 Mojang 的 offer,于是欣然应邀加盟 Mojang;作为条件,他们不能再开发 Bukkit,而是负责开发新版本的 SMP 和其他与 Minecraft 有关的工作,比如编写 Plugin API。Dinnerbone 和 Grum 这两位可以说是对整个 Bukkit 计划贡献最大的人,反编译和反混淆由 Grum 全权负责,然后 Dinnerbone 则接过代码坐在电脑桌前除了上厕所外不停歇地码上二三十个小时(这就是爱啊 &3),为的就是以最快的速度将新版本的 Bukkit API 和 CraftBukkit 呈现在大众面前。如今他们走了,虽然有人接班,但是他们都没有了 Dinnerbone 和 Grum 的那份旁人难以理解的激情,更新对他们来说更像是一份义务而不是责任。这也不能怪他们,但伴之而来的就是 CraftBukkit 的更新越来越慢,当初两天就能更新完,现在要花上两个月;而Bukkit 在 1.5 后鲜有再加入新的 API,意思就是上文提到的“翻译”活越来越少人肯去做,导致许多 SMP 的新功能都无法单纯地利用 Bukkit API 实现,必须还得配合之前提到的那种直接修改源代码的蛋疼方法...作为过来人,我可以肯定地告诉你们:阅读 Minecraft 的源代码太蛋疼了...第二是收费泛滥。服务器们收费的方式推陈出新,以 Hypixel 为例,VIP 出完了出 VIP+,VIP+ 出完了出 MVP,MVP 出完了再出 MVP+... 几十美金几十美金地收... 国内一线 MMO都没这么贵啊就算玩家们乐意,他们的家长也不乐意呀!不少熊孩子一个月花了几千美刀在 Minecraft 上,而家长们又怎会了解 Bukkit 服务器们的商业模式,于是出现了家长们愤怒地在推特上向 Notch 投诉并要求全额退款,否则要将 Mojang 告上法庭的啼笑皆非的情况。Mojang 躺着也中枪:关我屁事啊!?第三是版权问题。CraftBukkit 内置了 Minecraft 反编译过后的源代码,无形中已经侵犯了 Mojang 的版权;更搞笑的是,Bukkit 计划采用的是 GPL 协议!一个开源计划里却包含了反编译过的商业代码,这一点本身能够不被大众口诛笔伐实属幸运。Mojang 当然知道 Bukkit 计划是怎么回事,不过他们对这些第三方服务器端也就是睁一只眼闭一只眼,只要你不把 Minecraft 重新打包一次就拿出去卖,你改成 Q 块世界我也不管你。延伸阅读:我知道你们还没完全消化这几段的内容
(o?Д`)=з
但敬请记住这几个关键词吧:Bukkit 衰落、收费泛滥和版权纠纷。因为故事要进入高潮阶段了。淡定,淡定// Bukkit 与 Spigot 的冷战(2013 ~ 2014)自从原开发团队离去后,先不提越来越慢的更新和越来越落后的 API,CraftBukkit 的性能也饱受诟病。许多人都自己私下制作了 CraftBukkit 的优化版本,当时最出名的是 CraftBukkit++,着重优化了农作物生长的部分,能显著提高 TPS(ticks per second,TPS 越低,服务器就越卡,和我们玩游戏时说的 FPS 帧数很相似)。但是每个优化版本都只是优化了一小部分,这个优化通讯,这个优化实体,这个优化 AI,这个优化地图加载... 有没有一个版本的 CraftBukkit,能集齐百家所长呢?有的,那就是由 md_5 大神开发的 Spigot。md_5 同学的头像,橙色的史莱姆来来来,先上个功能列表:TPS increasesOptimized growth, decay and chunk tickingAutomatic conversion between online and offline mode.Auto stack merging for items and experience orbsChunk garbage collector to prevent chunk leaksConvert your offline mode server to online mode without losing player dataConfigurable values for many vanilla/Bukkit messages (e.g. whitelist, no permission)Disabling of random light updatesOptimized anti x-ray (Orebfuscator)Efficient Netty networking engineSmart crash and hang detection / preventionReverse compatibility with CraftBukkit pluginsEntity activation and tracking ranges to ensure client-side and server-side resources are only used when neededPrevent server load caused by maps in item framesAutomatic restarts upon a server crashAutomatically stays up-to-date with the latest CraftBukkit changesAbility to disable TAB command completeCustomization over what the console logsFine control over growth rates, chunks, and ticksOptimized tick loopMemory-reducing nibble arraysMore accurate benchmark timings reportsConfigurable chunk packet sendingThreaded chunk compression是不是不明觉厉?总之,你只要知道 Spigot 是个牛逼哄哄的强化版 CraftBukkit,只要换上它你的服务器立刻流畅几倍,提供的 API 和配置文件都更丰富,并且完全开源免费。有兴趣想知道 Spigot 有多牛逼的,我们不妨来做一个小测试:我随便从网上下载了个 1.6 时代的大型地图,先用 Spigot 开,然后进入服务器在里面跑跑跳跳,两分钟后关服,重设地图,再用 CraftBukkit 开,重复以上步骤。由于我使用的 Spigot 和 CraftBukkit 都是 1.8 版本,加载 1.6 版本的地图肯定会有许多错误,可以藉此做压力测试。我们以服务器的日志作为。可以见到的是,尽管两者对 NBT 错误和实体位置错误的处理都是简单粗暴地扔出错误信息,但 CraftBukkit 在一分半钟里“Can't keep up(臣妾跟不上)”了三次,2400 ticks 里整整跳过了 615 ticks,TPS 只有 (00*20 ≈ 15;而 Spigot 全程淡定地在后台做优化,即使抛出的异常比 CraftBukkit 更多,TPS 仍然稳定地保持在 20。还值得一提的是,CraftBukkit 关服的时候用了 44 秒,Spigot 只用了 2 秒。或许大家还理解不了上面说到的 15 TPS 是什么概念。15 TPS 意味着服务器在二十分钟内会有五分钟都完全无法响应你的请求。你拿一把钻石剑砍人十次,可能就有三次明明砍中了对方也不会扣血,因为服务器正忙着处理别的事儿呢,没空理你的请求,自然也就不会做攻击判定。而 Spigot 做过多线程相关的优化,所以自然没有这类问题。正常人能做到 Spigot 这个地步也就足矣,之后就只需时不时更新一下,就可以自我陶醉于众人的喝彩声里了。md_5 也完全可以凭着他的编程实力随便加入个一线服务器赚大钱,但他并没有止步于此。我们都知道,Minecraft 是个吃内存的游戏。服务器也同理:1GB 内存最多只能带给 10 名玩家最好的游戏体验,玩家数一超过 15 服务器就会开始卡;而现在市面上的 VPS 虚拟主机最多也就 8GB 内存,只能容纳 80 个玩家。于是初期的服主们大多采用的做法是,开多几个服务器,每个服务器上的插件、地图、配置全部一样,玩家的数据则储存在一个统一的 SQL 数据库内。然后玩家们就用类似 , 这样的 IP 进入服务器的不同分支。嗯,听上去不错。问题在于,跨服务器之间的通讯将变得极为困难。例如,玩家将无法直接在游戏内从 server1 的世界传送到 server2 的世界,聊天消息也无法互通,甚至服务器是否满人还得玩家自己连连看才知道,间接令玩家的体验大大降低。而 md_5 正想着手解决这个问题。Bungeecord,就是 md_5 与他的 Spigot 团队提供的解决方案。Bungeecord 如同一座桥梁将不同服务器无缝地连接在一起,同时还向开发者提供了容易扩展的 API,整合了跨服通讯等实用的功能。详细的技术原理我们就撇开不谈了,只说说结果吧:如今,所有一二三线的服务器都在使用 Bungeecord。Bungeecord 无疑是 Spigot 交出的一份完美的答卷如果说 Spigot 让 md_5 一炮成名,那么 Bungeecord 就足以让他被捧上神坛。Spigot 论坛变得越来越热闹,而另一边厢的 Bukkit 论坛却不断的流失着用户。这事儿想起来也很喜感:明明 Spigot 只是 Bukkit 的扩展,但结果青出于蓝而胜于蓝,2012 年还在通通用 Bukkit,2013 年就已经是 Spigot + Bungeecord 的天下了。像是一夜之间,Bukkit 论坛兴旺不再,原本为 Bukkit 团队喝彩的人们都跑去 Spigot 喝彩了。Bukkit 团队:“...”Bukkit 团队完全可以和 Spigot 合作,为 Minecraft 业界一起打造出耀眼的未来。不过在 Spigot 刚刚流行起来的时候,EvilSeph(还记得吗?2012 年初加入 Mojang 的其中一位)不知道何故从 Mojang 辞职,反而回到了 Bukkit 开发团队里。EvilSeph 作为 Bukkit 的创始人之一,自然看 md_5 们不顺眼,所以不知从哪一天起,Bukkit 论坛不再允许任何与第三方服务器端有关的讨论。就连提到名字都不行。夹杂点私货吧,笔者曾经在 Bukkit 论坛询问过一条关于 Bukkit API 的问题,问题描述里我这么写:“...这个问题似乎在某个以 S 开头的服务器端里也存在着。(暗指 Spigot)”。然后该贴子就被删除了。我以“Stop hating 3rd party unofficial builds(不要再对第三方服务器端们心怀仇恨了)”为题发贴,贴子被封锁,两天后被删除。以上是管理员 TnT 给予我的解释。从此我几乎不再上 Bukkit 的论坛越来越糟糕的性能和 API,还有封闭的言论自由都令越来越多原本忠实地守在 Bukkit 的人一再失望(包括我在内),而此时的 Spigot 论坛却友善地接纳了这一群 Bukkit 支持者。在 Bukkit 论坛的管理员们忙着删贴、十多天都不审核插件平台(BukkitDev)上的插件的时候,Spigot 论坛推出了 Premium Resources平台和 Services & Recruitment 版块。前者是个交易平台,开发者可以自由地上传自己写的插件,并向下载者收取一定金额的费用;而后面这个论坛版块更厉害,服主们可以在这里招揽人才,时不时都会有一线服务器过来招人,有实力的人则在这里推广自己的服务,我自己就在上面发过 ,专门帮人订制小游戏。现在还活跃在 Bukkit 论坛的,大多都是初来乍到的新手;就以现在我打这行字的时点来做个统计,Spigot 论坛在线人数 197,Bukkit 论坛 26,相差整整 7 倍多!现在国外是凌晨时分,要是高峰期的话,估计距离会拉得更远吧。Bukkit 和 Spigot 之间不知不觉进行起来的冷战,持续了一年多,终于又在无声无息中以 Spigot 的彻底胜利告终。// EULA 危机(2014)“泥嚎,我们又见面了”这事儿又得从我们的主角说起 —— 唉你说你忘了主角是谁了?“靠尼玛我都多久没出来过了!?”2014 年 6 月。瑞典。Notch 正一边喝着啤酒,一边舒服地倚在阳台的躺椅上晒太阳。这天是星期日,刚好适合休闲 —— 不过反正是不是周末他也是照样宅在家里,最多拖着日渐发福的身躯去楼下跑跑步,顺路光顾一下就隔着两条街的 Mojang,和自己的属下们谈笑风生。真是美好的一天呀。突然,他好像想到了什么,利索地坐直身,抓起摆在一旁的手机。就在几个小时前,他在推特上发了一张自己正在制作的游戏的图片,一句话也没说,深藏功与名。嗯,是时候看看有多少转发和评论了,他心想,随之点亮了屏幕。他满意地看见屏幕上方原本黑不溜秋的状态栏上出现了一排浅蓝色的推特图标:看来他发的图片有不少人关注嘛。Notch 故作淡定地点开推特的客户端,发现竟然有几百多个人@了自己!尼玛人气这么高!?他镇定地喝了一口啤酒,转眼又赶紧开始阅读起来...Vermanion @vermanion · 1m 看起来好棒!md_5 @md__5 · 3m 要不这次直接让我们来帮你开发多人模式算了?GameSpot @gamespot · 7m 又有新作了!能否重现 Minecraft 的辉煌!?Tiger Tang @TigerHixTang · 26m 什么时候发布??下载地址咧?????IGN @IGN · 1h独立游戏制作人 Markus 'Notch' Perrson
刚才发布了他的新游戏。题材暂时未知,我们只知道游戏会采用与 Minecraft 近似的第一人称控制,还有图片里显示出的显而易见的方块风。...很好很好!反馈挺不错的嘛。让我继续往下看...Wah Wong @wahwong · 1h 你个混蛋...你谁啊?Cesar Leavey @cleavey · 1h 你们俩等着收法院传票吧。...你又是谁啊!?Romina Victor @romina1960 · 1h 你收钱收得够爽了吧,够了,别再祸害我儿子了!我收谁钱了啊??新游戏预购都还没开始啊!!!Notch 疾步走入屋里,拿起话筒,拨通了 Jeb —— 他在 Mojang 的接班人 —— 的号码。电话那头安静地听完 Notch 的血泪控诉,长叹了一口气。“老兄,咱们 Mojang 这个月都收了三百多封投诉信了,推上几个@而已,很快就习惯啦。”.......好啦好啦好啦,全部是我瞎编的。不过我觉得我这个猜测也猜得八九不离十了 —— 因为 Mojang 的人确实对自己的游戏被滥用以赚钱感到忍无可忍了。就在 2014 年 6 月 12 日, 官方博客更新了一篇文章,光是标题就金光四射,足以将所有 Minecraft 玩家的眼球聚焦于此:“”(咱们来谈谈商业化吧!)服主们见到标题,心里一颤,卧槽绝对没好事。虽然心里老大不乐意,但总得点开看看吧,说不定是虚惊一场呢?Mojang 一开始先小步跑到服主们面前,主动送上鸡汤:“我们先把话说在前头:无论是小型的合家欢服,还是站在业界前线的大服;也不管你是用 SMP 开服,还是用第三方的服务器端开服 —— 我们都不介意,你们能够这么做实在让我们太高兴了。”正所谓攻心计嘛,大家都知道这么一说,接下来就肯定没好事。果然,刚送完温暖,Mojang 就严肃地声明道:“然后呢,其实从法律角度上来讲,你并不能利用我们的产品赚钱。”你并不能利用我们的产品赚钱。眼见服主们通通哭了,赶紧再端上一碗鸡汤压压惊,“不过之前有一个例外:在与 Minecraft 有关的视频里放个广告赚钱,这一点我们是允许的。现在我们决定为 Minecraft 的多人服务器们,再制作一个‘例外’。”“咦?例外?”“不过你必须遵从下面的这些规则...” Mojang 露出了温柔的微笑,却让人不寒而栗。文中的规则大致归纳如下:你可以利用服务器赚钱,以下两点除外:禁止出售影响
的内容。任何破坏游戏平衡度的物件 / 特权不得出售。例如:屠龙宝剑、隐形药水、食人猪宠物等等。作为反例,纯属装饰用途的物件则可以出售,例如不会攻击生物的宠物,或者围绕玩家身边的酷炫粒子效果,又或者超帅但毫无防御能力的全身装甲,则可以出售。我们希望所有的玩家都能享受平等的游玩待遇,不管他们是否付过钱。禁止出售披风。披风是我们赠予给某些玩家的专属礼物,我们不希望别的玩家也拥有这些披风(指的是某些 mod 可以将原本属于玩家 A 的披风穿到玩家 B 身上),这无疑伤到了赠礼者和被赠者的感情。这就是 Mojang 提出的新用户协议()。好吧,那我们来仔细研究一下。披风并不适用于 Bukkit 的服务器们,所以第二点问题不大。然而我们来看看第一条...也就是说不管是红金会员橙金会员黄金会员绿金会员青金会员蓝金会员紫金会员黑心会员白金会员所拥有的特权还是双倍金钱三倍经验四倍伤害五倍防御六倍速度安倍晋三之类的效果加成或是屠龙刀倚天剑斜阳弩邪影枪魅影刃凌波戟龙吟斧王大锤打狗棒孔雀翎蚊须针等等的稀有武器又或是让海蛇大狗碧狼荒鹫碧池朱雀玄武青龙白虎麒麟来做你的强力宠物,只要是买了之后就能拥有 gameplay 上的优势的,统统给我滚蛋。服主们:“...”当然了,会员制度其实可以搞,不过就算你傻乎乎地买了咱们的黑心...黑金会员,我们也只能送你一只不会咬人只会屁颠屁颠跟着你的狗狗作为宠物;或者帮你放放烟花;或者帮你改改前缀;或者给你戴个南瓜头盔。要不,也可以给你几百颗钻石啦,不过这些钻石必须是展示用途,你可以将它拿在手上和其他玩家炫耀道怎么样呀我有钻石你没有噢红红火火恍恍惚惚何厚铧黑乎乎,但是绝对不能用来合成钻石剑之类的工具。必须是装饰用途。Mojang 之后还在官推友善地提醒大家:“新 EULA 将于 2014 年 8 月 1 日生效。” 如果在限期过后我们还发现你用我们的游戏来坑懵懂少年们的钱,我们就有权利告你上法庭哦。服主们的反应也很友善,双方之间的气氛一派祥和。祥和个屁阿!!!!!这什么鬼阿!!!!!还有没有天理阿!!!!!!谁会肯买那种装饰用的狗屁碗糕阿???!!!!!说好的自由市场咧?????说好的良好产业链咧???????什么叫能够出售纯属装饰性的物品阿!!!!!!你以为你摩尔庄园阿???!!你以为你暖暖环游世界阿????!!!靠个换装系统就能掳获少男少女们的心阿?????!!!!Minecraft 里塔麻只有五种装甲阿!!!!!!!!五种阿!!!!!!!!换装个头阿!!!!!!!!!!!粒子效果又是什么鬼阿!!!!!!!!谁会傻逼到花几十美金就为了买一堆粒子效果围绕着自己转阿!!!!!!!!!你以为你太阳阿!!!!!!!八大行星围绕着你转阿!!!!!!!!!!!!如果服主们没钱赚了!!!!!服主们就完蛋拉!!!!!!!如果服主们完蛋拉!!!!!服务器们也就完蛋拉!!!!!!!如果服务器们完蛋了!!!!!!!!!!那 Minecrafter 们还玩个蛋阿!!!!!!!!!!!!!!!可以想象得到,新 EULA 一出台就顿时掀起了哄然大波,Notch 的每一条推特下以肉眼可见的速度增加着对 Mojang 甚至对 Notch 本人的谩骂与指责,但同时也有饱受 RMB 玩家欺凌的人士为新 EULA 争辩和叫好;而许多 Minecraft 社区直接干脆地为 EULA 事件开设了新的板块或是专贴供玩家讨(dui)论(ma):Reddit 上双方观点争持不下,不过已经算是比较理性的;Bukkit 和 Spigot 论坛上的们则大多是服主们在叫苦喊冤;像
这种较多低龄玩家集结的地方已然沦落为反 EULA 者们的狂欢派对,在版块里连续翻上几页全部都是 F**k EULA 的贴子,形同,无比壮观。当你看到就连平时冷清的 Bukkit 论坛都讨论得如火如荼的时候,你就知道这事儿有多严重了整个六月,围绕着 EULA 的讨论就从没停息过。推特上
成了最热门的标签之一;change.org 上的“驳回 EULA”有两万多人签署;各大 Minecraft 社区仍然在进行口水战;就连一贯与国外脱节的国内 Minecraft 社区们,也在热烈地讨论着 —— 不过 EULA 再怎么改也不会轮到他们头上就是了。服主们郁闷,玩家们郁闷,Notch 更加郁闷。他每天起床一打开电脑,只是失望地看到无数人在推特上或是邮件上寄来对他个人的攻击。他在个人博客 抱怨道:“有一些私人 Minecraft 服确实引入了游戏内付费的系统:像是经验加成啊,解锁游戏模式啊之类的。有些的费用甚至高到了离谱的地步。我都不知道我已经收到过多少封邮件是关于家长们想要要回自己孩子在一些完全不在我们控制之下的服务器上花的几百块钱。收费本来就没被允许过,但我们在来得及粉碎这些内购之前就已经被翻天覆地的工作给淹没了。”“人们还在让我将 EULA 转回以前的那个版本。这让我很难过。” 他随后又以个人身份接受了 Rock, Paper, Shotgun 的,当被问到应该如何令 Minecraft 玩家界在保持创新的同时杜绝内购被滥用的情况时,Notch 也迟疑了。“这很复杂,也令人很困扰,所以我尽量不去思考这个问题。几年前根本没这些事情,因为那时人们还不至于用 Minecraft 来经营生意。可现在呢?难道我们要聘人全天候工作就为了解决这些?对这个问题,我确实没有什么好的答案哪。”那么实际上新 EULA 的成效又如何呢?像 Hypixel,HiveMC 等等一线服的服主们还是比较服从新 EULA 的。理由很简单:Mojang 要是真派人去搜查服务器们有没有违反 EULA,必然最先审核他们的服务器。Hypixel 的服主 Hypixel
—— 没错服务器就是以他自己的名字命名的 (;?д?) —— 在服务器上的论坛上,向玩家们详细地阐述了目前的情况,并告知玩家们服务器的未来走向。Hypixel 属于第一批能够从反 EULA 大潮里脱身的服务器,后来 Mojang 在反对声一片里照样开始执行新 EULA,也证明了这是个明智的决定。Mineplex 则有点打擦边球的味道,虽然最后将所有原本触犯 EULA 的会员特权移除,但又同时让会员每个月会得到一定金额的游戏内货币,变相还是违反了 EULA。Mineplex 服主 Gregory Bylos 在个人网站上发布公开信,先代表服主们对 Mojang 员工遭到小学生们的频繁骚扰表示歉意,并认为,新的 EULA 对 Mojang 曾经多番支持、鼓励过的服务器太不公平(见下文),也令 Minecraft 多人游戏界再难有让人眼前一亮的创新当然这只是对一线服务器而言。对三线的服主们来说,EULA 与否其实不重要:因为他们的服务器规模小,大不了换个名字东山再起即可。而不少一线的服主已经早就注册并设立好了公司来处理税务和发放工资,要是他们违反了 EULA,Mojang 是可以起诉该公司的!这必然导致了这类服务器降服在 Mojang 的淫威之下。当然也有作死的,比如我曾经工作过的地方 ,就敢明目张胆地反对 EULA。虽然这厮早就沦落为三线服务器了(至于为什么就越出了这部编年史的范围了,有人感兴趣的话再说吧),毕竟也是触犯了 EULA,我作为前员工衷心祝愿他们快点死吧死吧死吧死吧死吧(全身怨气)....咳咳又跑题了。再来看看二线的服务器,既有完全遵守 EULA 的 ,也有稍微擦边的 ,甚至有直接在首页宣传 VIP 三倍经验的 。可以观察到的现象是,在 Minecraft 界待得越久的服务器底气似乎就越足,遵守 EULA 的二线服务器反而都是刚刚进来闯荡的新人。比如 Shotbow 就是和 MCSG 同一代的服务器,早期出道,原本是一线的元老人物,因为游戏模式越出越没意思,都掉到二线边缘了。Minecraft 主创 _jeb 在发布新 EULA 前曾在 Reddit 上埋怨服主们“变得越来越猖狂,目的就是骗小孩子的钱,影响了 Minecraft 和 Mojang 的形象”。并给出了一个地址作为举例,不过该链接现已无效Mojang 的 Grum 倒是很亲切地跟大家开 IRC 茶会,莅临解答玩家和服主们的问题。但对于玩家们表示的不满嘛... 基本都漂亮地抛回去了。如果说这是服主们对 EULA 的态度......这是服主们对 Mojang 下决策者的态度......那么 ...那么 Mojang 的态度大概就是这样在 Notch 以及 Mojang 看来,新 EULA 比旧 EULA 更好。这在客观事实上是成立的:旧 EULA 根本没允许过游戏内收费这种模式,也没有允许过第三方客户端们的存在。但是他们却忘记了一点:旧 EULA 从来未被强制执行过,而新的 EULA 直接判了无数走在前沿的服务器们死刑。收费泛滥的确是 Minecraft 多人游戏界急迫需要解决的问题,但是正如不能因为飞机可能失事就拒绝乘坐一样,Mojang 也不能因为部分服务器的恶习就将整个 Minecraft 多人游戏界矫枉过正。Shotbow Network 的首席程序员 Austin Smith 在推特上感叹道:“我只能希望 Mojang 可以探下头聆听一下这个如此深切地溺爱着他们的社区,然后将他们手上朝向服务器们的大铁锤放下,用一把精细的手术刀取而代之。”EULA 事件是对整个 Minecraft 多人游戏界的沉重打击。其一是不少一二线服务器被迫裁员甚至倒闭,不少人都丢掉了饭碗。如果只是做兼职的还好说,但是不少人是真的将经营服务器 / 开发插件作为自己的主要工作的,新 EULA 的强制执行无疑令他们叫苦连天。其二是人才流失,许多本来对 Minecraft 满怀热情的人们都离开了。比如插件 ProtocolLib,可以说是 Bukkit 上最重要的插件,没有之一。它实现了对 SMP 源代码跨版本方式的调用,也极大简化了原本十分繁琐的抓包过程。其开发者
是多年献身于 Bukkit 界而从没要求过一点回报的人,我也曾经受过他的指导,实在受益匪浅。他时不时能零零碎碎地收获几笔捐款,其中虽然有一笔来自 Mineplex 开发者 libraryaddict 达 $1100 的捐款,但全部款项加起来还不过 $1500。虽然用金钱来衡量前辈有点不当,但我私以为就以 99.9% 的一二线服务器都在使用 ProtocolLib,他的回报后面就起码应该再加两个零。而他在 EULA 事件后宣布退出 Bukkit 开发者的行列,对整个 Minecraft 界都是一大损失。刚才去 BukkitDev 看了看,发现 Comprenix 大神两个小时前才上来过 —— 可能是查看 ProtocolLib 有没有新 ticket 吧 —— 即便他之前还在论坛上声称不再接触与 Bukkit 有关的事物... 唉,有点泪目其三最严重,那就是整个多人游戏界都开始衰退。 Gregory Bylos 一语成谶,原本 2014 的前半年服务器们就处于井喷期后的低迷,MCBrawl 的 Minecraft Party,Mineplex 的 Arcade Games,Hypixel 的 Quakecraft,HiveMC 的 Hide n' Seek,这些精妙而引人入胜的游戏模式即便再好玩,也不可能流行长达半年以上;新 EULA 出台后,往后新游戏的质素更是一落千里,Mineplex 出了个 Mine-Strike,Hypixel 出了个模仿 Mineplex 的 Arcade,HiveMC 最近出了个 TheLab,但无论是创意还是耐玩度都大不如前,都是玩几个小时就能弃的东西;服务器的开发成本被大幅削减,很大程度上都是因为 EULA 新规的引入。EULA 事件带给整个 Minecraft 业界甚至游戏业界的影响是如此深远,以致连英国的《卫报》(The Guardian)都对此事件进行了大篇幅的。面对着四处飞散而来的指责,Mojang 早早地就陷入了公关危机;而就在这种时候,Mojang 仍然回绝了所有试图采访的媒体,孤身陷在沼泽之中,其糟糕的公关也算是给之后的一连串事件埋下了伏笔。2014 年 8 月 1 日,新 EULA 开始生效。这标志着黄金时代的彻底结束,也同时给 Minecraft 多人游戏界下了一道沉重的枷锁:它永远也不可能再重现那份辉煌了。// DMCA 危机(2014)如果说 EULA 事件是一朵肆意狂暴的乌云,那么 DMCA 危机的严重程度犹如陨石撞地球,一切毁于一旦......(未完待续)======================== 以下部分暂时施工 ========================DMCA 危机Spigot 时代其他服务器端(Cauldron,Sponge,TridentSDK 等等)展望未来
15.11.28 - 公布了几个空= ̄ω ̄=--------------------------------------------------------------------想了一想,事情要这么说起。 一、无米不成炊 (上)
一个第一版仅用6天发布第一版的游戏,陌陌的走了1年多。回到5年前,从0.0.11a第一版稚嫩的世界来看,现在的世界已经初具雏形。地形、河流、树木、甚至tnt也被加入到了游戏中。↑Minecraft 0.0.9a (May 16, 2009)
↓Classic版↑Minecraft 0.0.9a (May 16, 2009)
↓Classic版但notch想,这样的世界或许太孤单了。其实很早之前的Pre-classic的rd-132328就出现了很多乱跑的npc,但是那并不成功。但notch想,这样的世界或许太孤单了。其实很早之前的Pre-classic的rd-132328就出现了很多乱跑的npc,但是那并不成功。↑Pre-classic中的人类↑Pre-classic中的人类
终于,脑洞大开的notch想到了个好点子。于是,5年前的夏天,minecraft发布了Minecraft_server.jar。这个简单的jar使得你可以简单的和朋友在同一个世界游玩,此后Minecraft的知名度迅速增长,u2b的相关视频也变多了。(下)
当你畅想Minecraft Mods的时候,请不要忘记一个叫mcp的组织(嗯…组织?)。 mcp,也就是Minecraft coder pack,是开发模组的基础。mcp简单来说就是让Minecraft被混淆的代码变成你看得懂的java代码。众所周知,Java程序非常容易反编译。然而你会发现,mc在编译时混淆过,反编译出来的都是这些东西。public int a()
return this.n;
public String b()
return this.o;
public String c()
return "itemGroup." + b();
public abp d()
if (this.t == null) {
this.t = new abp(e(), 1, f());
return this.t;
public abstract abn e();
public int f()
↑反编译的部分Minecraft
代码是给人看的,而混淆后的代码简直太xx不是人看的了!然而这时候,一群mc真爱粉站了粗来,“我来!”。↑反编译前后的方法(左:原Minecraft反编译;右:MCP,注:1.7.10)
说真的,我光是找到对应的方法也很困难的,因为这些混淆的代码实在太酸爽了。靠着这个团队日日夜夜的阅读理解,才有了后来开发者的便利才使得mc的模组如此丰富。当然第三方的forge、modloader什么的也得益于此。所以mc的多样化一定要好好谢谢这群有爱的mcp作者们。
除了客户端?剩下则是服务端。bukkit的横空出世,反编译反混淆minecraft的服务端。具体接着看。二、白饭不好次(上)
(注:本部分的内容可能被误认为有地域针对性,但是实际上本部分内容不针对任何个人、集体、组织、地区,相关内容均马赛克处理。)
绝对有理由相信,有超过10%的Minecraft玩家不太熟悉下面这个画面:
甚至,有玩家都认为Minecraft是免费游戏。不仅是这样,大批游戏站都可以免费获取到盗版Minecraft。
甚至,有玩家都认为Minecraft是免费游戏。不仅是这样,大批游戏站都可以免费获取到盗版Minecraft。
不要问为什么我提起这些内容,以后你就懂了。
不要问为什么我提起这些内容,以后你就懂了。(中)
Bukkit API太好了,Bukkit API太好了,Bukkit API太好了。因为重要所以说三次。看到这里,终于开始走正题“发展”了。Bukkit API是什么?类似于Forge API,Bukkit API是通过对Minecraft服务端反编译、反混淆,并实现的接口。简单地说Bukkit能有这么多插件(plugin),完全要感谢Bukkit API。而Bukkit API的实现是基于对Minecraft服务端的反编译、反混淆,所以这项工作直接关乎Bukkit的更新速度。
Bukket的前身是hey0开发的hMod,本质上和Bukkit API类似。然而hMod横空出世后不久,作者hey0就不见了(惊恐脸)。随后Bukkit的主力Dinnerbone接下了担子,然而负责填坑的Dinnerbone看了看代码——这都shenmegui!代码的层次结构都很混乱。于是便推翻了原来的hMod,重新反编译、反混淆。来自Minecraft中文Wiki——
Bukkit 是一个社区软件、开源工具和减轻开发插件的负担的。它由 hey0 的
拓展而来。因为一些开发者参与了 hey0 的 Mod 开发,因此两个插件有相似的地方。然而,hey0 编写的 Mod 被移植到 Bukkit 应用程序设计接口(API)上。
Bukkit API是给开发者看的,但是真正给Minecraft看的还是CraftBukkit。举个例子,Bukkit API给了你一个原来在Minecraft里叫a的方法,因为a你看不懂,所以Bukkit API就改叫他b,这样子你就看懂了。但是但是,Minecraft里面没有b只有a咋办?于是CraftBukkit帮你在用b的时候调用了Minecraft里的a。再来梳理下,开发者用Bukkit API开发,CraftBukkit实际开服,问题解决了,真棒。(下)
“解决你妹啊!”
得益于Bukkit API,服务器的小游戏大量出现。不仅小游戏,一些管理插件粗线啦,能使得我们能更方便的管理服务器。
但是但是,还记得第一章(上)中提到的MCP吗?开发者开发了基于MCP的Forge等API来编写模组(Mod)。不错,这些Mod基于MCP,但是Bukkit的插件基于Bukkit API,这尼玛根本不是同一个东西啊喂!所以那时的服务器就变成了这样子:
A.玩联机Mod(官方+Forge)
B.玩联机插件(CraftBukkit)。很坑爹的,逼着你选择。而且很长时间都没有人给出合理的C选项。
僵局被打破。终于MCPC-Plus出现啦!由国外Md5大神制作,兼容了CraftBukkit和Forge。其实说白了,就是Forge+Spigot+CraftBukkit的服务端整合包。的确解决了问题,但是其稳定性还是差上一点,毕竟CraftBukkit和Forge的基础都不同。(片花)
你可曾想过这个谜之Realms按钮是什么?
日,随着1.5的发布,Minecraft Realms也出现了,一个官方服务器,随后支持了小游戏、冒险等功能。本来它应该是官方的很好的服务器平台,但是你为什么不太了解呢?其实,问题的答案wiki里也不难得到。摘自Minecraft中文Wiki——
然而,Realms本身仅仅是作为朋友之间的服务器而存在的,而并不是构建一个大型服务器。……价格为$13/月(约合81人民币元/月,因实时汇率而波动)
Realms只能为满足以下条件的设备与玩家服务:你必须有Mojang账户你需要一个已付费版本的Minecraft……你的年龄必须超过十三岁才能加入Realms
不仅因此,因为某些原因,在中国并不能直接使用Realms,也对Realms在中国的推广造成了很大影响。与其说Realms是Mojang为了挽回市场做的失败的尝试,不如正视Realms遭冷落的原因。(尾巴)
你可能注意到了Spigot并没有提到,所以在这里简单带一带。Spigot是由Md5及Spigot开发小组制作的纯净服务端。无论是速度还是稳定性都甩了CraftBukkit几条街,而且自带防X-ray。由于基于CraftBukkit,所以兼容所有CraftBukkit的插件。在50人以上,TPS明显高于CraftBukkit。这里说一下,刻(Tick)是Minecraft线程循环周期的一个周期,每秒20刻,也就是50毫秒一刻。看过log的应该有看过这些吧:[17:10:16] [Client thread/INFO]: Warning: Clientside chunk ticking took 192 ms
[17:10:20] [Client thread/INFO]: Warning: Clientside chunk ticking took 145 ms
[17:10:20] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 6165ms behind, skipping 123 tick(s)
↑从Log中拷贝的一部分这提醒了你该刻在Minecraft线程中运算用时太长了,说人话就是卡。而类比TPS——每秒的刻数,当然最大是20,且越大越好。三、永远都爱撕逼再次卖个关子,公布几个空:三八大战蓄势待发,请大家等我码字~
开过简单的服,没什么技术含量,也不了解历史,所以就从自己的视角写写故事吧。2012年过年期间,刚刚经历完大一上学期的我回到了家,无聊的打开了B站,发现了一个叫做“蓝色铁卷门”的台湾主播制作的冒险视频。视频中minecraft这个游戏刚刚由beta版本更新到1.0正式版。虽然只有几集,不过作为了minecraft启蒙视频却相当的优秀。之后的一段时间里,B站首页(还是只是游戏区来着?)被各种minecraft视频占领。minecraft在国内火了起来。于是,在老司机的带领下,加了一个mc游戏群,装了Jre6,下载了群内的minecraft1.1的客户端,开始了多人服务器的冒(求)险(生)。开学之后,便打起了在学校内网开个服务器的主意。最终在mcbbs的服务器懒人包区,找了一个1.1版本的CraftBukkit懒人包,在学校里的一台Server2003的PC上开起了服。回想起来,那台酷睿2+2G内存的老惠普可真是不容易,各种Can't keep up。CraftBukkit是对BukkitAPI的实现,也就是说,Bukkit社区设计了一套插件系统的API(BukkitAPI),再对minecraft官方服务器端进行反编译反混淆,将BukkitAPI实现,由此做出的成品叫做CraftBukkit。Bukkit社区本身也做的很好——至少针对我这种拿来主义者,可以方便的查阅和下载CraftBukkit和插件。了解了Bukkit社区之后,在学校内网的开服全都是开的CraftBukkit的“纯净服”。当每次minecraft新版本发布一段时间之后,水桶的插件慢慢跟进,就到了我浏览器一开就是十几个标签,忙里忙外几个小时的时候。打开Bukkit社区首页,下载CraftBukkit,然后开始搜索各种插件,下载后开始调试……客户端倒是方便,直接在旋律启动器里下载对应版本的简单整合,然后稍加配置。由此经过了1.2.X、1.3.X、1.4.X的数个版本,直到玩儿腻了纯净版……是时候玩儿一玩儿带MOD的服务器了。这要说一说MOD是怎么回事了。水桶社区的CraftBukkit方便了服主开服和管理,甚至基于BukkitAPI还能给服务器做丰富多样的小游戏。但是,另外一个阵营,MOD大军,却能完成对游戏本身的修改和扩展。minecraft的官方服务器端是不开源的,于是就有了一群(一个?)点错天赋的人,对minecraft进行了反混淆,做出了可读的源码包Minecraft Coder Pack(现在叫做MOD Coder Pack,简称MCP)。于是,开发者们可以方便的用MCP进行MOD开发,开发好之后直接就可以打到minecraft上用啦!——然而这样还是不方便。不同的开发者之间,同时针对MCP进行修修补补,未免相互误伤,于是,就有了各种MOD API。其中,就有Forge Mod API。Forge基于MCP开发,也就是说,当你对原版的minecraft程序文件打上了Forge,再一运行游戏——咦?多了一个mods的目录——于是,你就可以将丰富多样的mod扔到mods目录里玩儿游戏啦!当然,除了Forge,还有着其他类型的MOD API,他们为minecraft扩充了游戏性的方方面面……回到正题,MOD固然好,但是在真正的开服过程中,服主需要很多的管理类功能却是插件完成的。单机玩家就自己玩儿而已,直接打MOD就行,用不到插件。哥们几个关系好,带MOD联机玩儿一玩儿,有没有插件无所谓。但是,对于那些要开公共服的服主,minecraft是这样一个开放的游戏,没有有效的管理插件是根本不行的。于是,服主们需要一个既支持插件,又支持MOD的方案。刚才也提到,即使是同样基于MCP,不同MOD都有可能发生冲突。再看看CraftBukkit和Forge,这完全是两条路上的人,用着不同的反混淆的源码做出来的东西。想要在CraftBukkit上打Forge,省省吧。就是这样一个水火不容的问题,让每次更新服务器时都想打一些MOD的我最终放弃了给我的服务器加MOD的想法。——宁可失去一些游戏性,也不能承受因为失去管理插件而带来的类似于熊孩子毁掉服务器这样的灾难。然而现实生活中就有这么一群点了奇怪技能树的人们。MCPC+服务器端诞生了。之前的MCPC不知道是通过哪种方式将水火不容的BukkitAPI和ForgeAPI整合了起来,在MCPC死掉了一段时间之后,MCPC+出现了。没错,MCPC+继任了已故多时的MCPC,将Spigot和Forge整合在了一起。感谢MCPC+,总算开启了我的1.4.X工业服。而也是通过MCPC+,孤陋寡闻的我才知道了Spigot的神优化。从此告别“Can't keep up”。也是从第一次开MOD服开始,我也才开始学习客户端的整合——毕竟不同于插件,MOD基本上是服务器和客户端同时需要的。之后,MCPC+更名为了Cauldron。还记得那段时间里,minecraft是那样的繁荣。玩家们在游戏中做着浩瀚的工程,游戏在不断的加入新特性,社区和开发者们再不断的跟进第三方服务器、插件和MOD。直到大萧条的来临。这段历史不太了解,因为中间间隔了许久没有开服,不常关注。这是在哥们几个又想玩儿MC的时候我才发现。EULA,DMCA,公司转卖。连续不断的事件一次一次的冲击着社区对这个游戏的热情。CraftBukkit一度长时间的没有更新,一些常用插件或是死气一片,或是几更人手。最终,CraftBukkit“死掉”了。Spigot依然在继续开发,不过为了遵循法律法规,需要用户自行构建服务器端。所有和BukkitAPI相关的第三方服务器端,“死掉”了。不过在一些网友自行开设的下载站上,还可以看到持续更新的CraftBukkit和Spigot服务器端下载。 而Cauldron这种吃力,受众又少的东西,也不见了踪迹。虽然有一个Kcauldron的接过盘继续更新,无奈MCP只出了1.8(不是1.8.X),Forge也只能出到1.8。Kcauldron也只是在1.7.10上踱步。BukkitAPI死了,人们在用各种方式挽救着——各路网友提供下载的CraftBukkit和Spigot,还有依旧更新的一些插件。还有一群人们,商量着如何继续将MOD和插件整合的大业——不过此插件,非彼插件。Sponge——一个基于ForgeAPI的插件API体系被提了出来,现在已经做出了服务器端,也筹划将Bukkit的一些热门插件移植(Sponge和Bukkit并不兼容——Bukkit已经死了),虽然现在并没有多少插件,虽然,Forge也才更新到1.8(并不是1.8.X)。五月份开过一次1.7.10的Cauldron服,放在我的WindowsAzure上。结果试用突然到期,所有数据全都死在Azure里了。七月份重新整合了一次1.7.10,可能是用了早几个版本的Cauldron,一些老插件总是出先奇怪的问题,无奈只能去掉那些插件了。前两天发现了一个用C++写的minecraft服务器端Cuberite,目前兼容1.7.X~1.8.X,效率极高,资源占用极低。不知道以后会如何发展。还有一个C#写的minecraft服务器端,没有尝试。minecraft第三方服务器的现状如同进入了黑夜,Bukkit余烬未灭,四周星星之火。
Emm.....12年开始玩MC吧,当时中国有一批比较早的服务器。像幻想都市,雾之湖什么的。
在13年的时候呢,有个服务器叫做史前大陆,是个百人服务器吧,在当时中国的MC界,貌似百人服务器也是很大型的服务器了。在那个服务器玩得最久,一年左右。也是在12、13年,籽岷开始做MC视频了吧。。(貌似orz.....)
在去年的时候呢,好像中国的玩家一下子暴涨(应该是由于MC手机版火起来的原因吧),然后服务器的发展完全是飞速,在人数上体现出来了。现在中国也有万人服了。
但是低龄游戏玩家的增多,导致服务器玩家基础不好,所以有一些抵制低龄玩家的正版服出现了。比如revcraft。
还有一些服务器看到多出这么多的免费劳力,哇塞开始做建筑服务器了。比如linscraft。
然后在2014后半年,好像很多MC服务器的主机被黑了。当时事情闹得挺大的,挺恐慌的,这个事情直到现在。都还有很多熊孩子用DDNS来黑服。
对这些事情不是很敏锐,自己也创建过服务器吧,只能说现在不会再MC上面投太多钱了~~但是一直在玩。
这个答案貌似很弱智...将就着看就行了!
今天喝了点酒,语言表达不清楚,就说得通俗些了。我目前在某mc游戏服务器内部工作 也算是2011年的老玩家。服务器由某好友创办 以小游戏与创新插件为主吸引玩家。 自然也会有人购买增值服务,借此也会对服务器进行宣传,我们则从中获得收益,来支持服务器的正常运作。我有时也会小个外包或者自主开发一些游戏,发布在平台上。算是外快,多的时候可以月入700欧这样(我不止做了上述两件事的时候)总之这是一个漫长的过程,有时间会开贴慢慢说。
11年左右入坑并且和别人开过服的厚着脸皮来答一发最早Minecraft只有minecraft_server.jar这个服务端。它的功能只有whitelist、bannedlist,还有简单的出生点格子保护、OP的Give权限。这些东西虽然足以维持一个小型的、朋友之间的服务器。但是一旦玩家增多,minecraft_server.jar就满足不了需求了,比如权限系统,Bukkit里Essential插件的出现,一直到它成为了每个Bukkit服务器必不可少的插件,都是玩家、管理员对权限系统的需求。再比如娱乐性,商店插件,原版做不到自动地贩卖等交易,所以Bukkit里的各种商店插件就被开发出来了。所以,总结来说,就是需求带动了Minecraft多人游戏的发展,从2~4个玩家的朋友圈内娱乐,再到20+玩家的社区内娱乐,最后到现在的100+玩家的公共服务器,更多的权限管理与娱乐性是必不可少的,更是大势所趋,所以Bukkit能够出现以及发展到现在这个样子。
12年接触的mc,bukkit在当时对我来说如同圣坛,后面Spigot起来后就很少关注了
服内人数好少。钱越来越难挣了。想退mc圈了。
不知道您怎么看1.8更新的物品名就是前面加了个minecraft:个人感觉mod API要出了?给mod做的铺垫?比如我弄个mod叫abc,有个物品叫abcstone,物品名字就是abc:abcstone??不过1.9预览版都出了,还是一点要出API的意思都没有,我想多了?
从11年暑假开始玩,貌似那个时候是1.0正式版吧…那个时候只有官方提供的开服务器的东西(弃坑多年忘了)我记得是封装的一个exe,玩起来各种不方便。后来12年年初到了mcbbd(uid45220)知道了水桶服这么个东西,也就是bukkit,后来各种懒人包层出,我弃坑的时候大概是1.3.1吧,那时候是水桶服的黄金时代,后来的就不知道了。那时候觉得bukkit的插件平台真牛逼,官方就是个垃圾,看我们金立语音…(唉唉唉…?乱入…)我是一个普通玩家角度来看的,有错误别喷我⊙_⊙
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 跑酷大神排名 的文章

 

随机推荐