Creeping Towards a Solution | Veterancraft Dedicated Server | Forum

A A A

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 4 characters - maximum search word length is 84 characters

sp_Feed Topic RSS dirt
Creeping Towards a Solution
sp_BlogLink Read the original blog post
Topic Rating: +2 (2 votes) 
September 20, 2014
3:02 pm
frelling
Senior Tech
Forum Posts: 3264
Member Since:
August 18, 2011
sp_UserOfflineSmall Offline

1.0          Overview

In all likelihood it looks like Sponge is the best bet for a Minecraft 1.8 solution that offers an API for server modifications (i.e. plugins, mods, etc.). There is always the chance that saner heads will prevail regarding the Bukkit drama and it will come to an end. However, we can’t afford to just stand around and let the winds push us whichever way they want. We have to keep moving forward despite of any wariness we might have of the road we’re traveling on.

2.0          Development Strategy

That said, the following sections outline our strategy; with the appropriate disclaimer. Our plans are not cast in stone. They are subject to change without notice as more information comes in. The information provided herein is given simply for the benefit of VeteranCraft members to get a behind-the-scenes peak at what we have planned.

2.1          MEMES

We have been actively developing our Minecraft Enterprise Management Environment & System (MEMES) for the past 2 months. MEMES is the successor to our unfinished CraftBukkit Enterprise System (CBES). The purpose of this system is to provide a flexible deployment environment under which we can publish multiple Minecraft-based servers and manage our hardware, software, and Minecraft-based Server Instances (MBSI) from a centralized management console. It is not a control panel like McMyAdmin or Multi-Craft, although it will incorporate many of their common features.

2.2          Plugin API Adapter

Most of our in-house plugins have been designed to maximally isolate the Bukkit API from business and controller logic. The motivation for doing so, other than it being a good design pattern allowing for maximum code flexibility, was to minimize the conversion efforts once the forever-promised, continually-delayed Minecraft API was released. We all had expectations that it would come out with 1.8, but it has now – once more – been delayed to 1.9, or even 2.0.

Our most recent plugin – JCOpenBlocks – took this design approach to another level. It was designed to use our AddOn Adapter API, which isolated it from the Bukkit API. In turn, a Bukkit Adapter took care of interfacing the AddOn API to Bukkit. The isolation isn’t 100%, but it’s darn close to it and its very lightweight. Dynmap developers use a similar approach for their mods allowing Dynmap to be used with many different Minecraft-based server configurations.

Our litmus test will be coding a Forge API for the same, which would provide an easy jump to a Sponge API once it is released. Or, if Microsoft publishes an official Modding API, then we code that. If the results of our design experiment prove to be as expected, we will begin conversion of all our in-house plugins to this “common” API. Once that is done, all we will ever have to do is create an adapter for whatever modding API de jour is available, without impacting our plugin designs. We'll probably still have to tweak some here and there as we streamline our AddOn API, which is far less cumbersome than porting or rewriting plugins.

2.3          Third-Party Plugins

These transition problems would be much easier if we didn’t depend on some key third-party plugins to provide additional player and management features. Our key player plugins are GriefPrevention, mcMMO, DynMap, Essentials, iConomy, LogBlocks, Multiverse, and Votifier.

Fortunately, some already have Forge equivalents (Dynmap, Essentials). We recent saw that the developers of GriefPrevention are also on board with Sponge - GriefPrevention Official Thread. As far as the rest are concerned, we’re hoping that their developers will make the move. If not, we will have to find a comparable Forge/Sponge solution or roll our own.

2.4          New Hardware

Our existing hardware is old in terms of technology. While a quad-core E3-1230v2 with 16 GB of RAM and a 100 Mbps network is still sufficient to run a fairly large Minecraft server, it has no room for growth. Furthermore, while our data center is connected to some high-quality network carriers, it could be better.

Two months ago, we replaced our old Remote Test Server (RTS) with a new hex-core E5-1650v2 with 128 GB of RAM and with a 1 Gbps network (500 Mbps guaranteed) at OVH’s Montreal data center. OVH provides very cost effective Enterprise level services while keeping equipment costs as low as possible without sacrificing quality. A key benefit is that OVH has its own carrier network that is well connected throughout North America and Europe. This will lower overall latency for all Veterancraft members. Equaling that benefit, OVH services also provide DDoS protection, which is something our current data center cannot provide unless we want to pay an exorbitant monthly fee for a solution that is very limited in capabilities.

Anyone that has played on our Vanilla Minecraft Server (vc18.java-craft.org) is playing on our RTS. The primary purpose of the RTS is to serve as a test bed for MEMES and to provide a live test server for plugin development and testing. When we do switch over to Forge/Sponge/new Bukkit, we will deploy a duplicate server. The RTS will continue in its capacity as a test server but also host MEMES and other backend services. Both servers will be connected by a private 1 Gbps network, so as to maximally secure data flowing between them.

This new hardware and system architecture gives us the capability to easily deploy different Minecraft-based servers that can be controlled by MEMES. This greatly reduces administrative overhead in that we can manage players, features, bans, sponsorships, etc. system-wide, rather than on a server-by-server basis. As an example, we have already tested the deployment of a TerraFirmaCraft server. However, while we have the capability to add other Minecraft flavors, we're keeping it simple for now. We are primarily focused on providing a CraftBukkit-like experience before we consider anything else.

3.0          In Conclusion

I realize that everyone has pretty much taken a “wait-and-see” attitude toward Minecraft given the Bukkit drama, Microsoft buying Mojang, and the emergence of Sponge or similar projects. Like I said earlier, these are our plans as they stand right now. If I had to guess on the likelihood of a Forge/Sponge solution, I'd peg it at 75%. It’s too early to be more accurate. Sponge has some great minds behind it which would indicate a better chance for success; but, with great minds come egos, which might have some detrimental effects. Time will tell.

Human beings, who are almost unique in having the ability to learn from the experiences of others, are also remarkable for their disinclination to do so. - D. Adams
September 20, 2014
3:21 pm
summertree
Texas
Member
Members
Forum Posts: 112
Member Since:
April 5, 2013
sp_UserOfflineSmall Offline

When you refer to "a flexible deployment environment under which we can publish multiple Minecraft-based servers," do you mean something like Arda is a server, the End is a server, the Nether is a server, OR is a server?  Or are all of those things one server, and the test server is another, and maybe we'd even have an additional, disconnected world that would have specific mods already included, like Harvestcraft, or Industrialcraft, or Galacticraft?

September 20, 2014
3:33 pm
frelling
Senior Tech
Forum Posts: 3264
Member Since:
August 18, 2011
sp_UserOfflineSmall Offline

summertree said
When you refer to "a flexible deployment environment under which we can publish multiple Minecraft-based servers," do you mean something like Arda is a server, the End is a server, the Nether is a server, OR is a server?  Or are all of those things one server, and the test server is another, and maybe we'd even have an additional, disconnected world that would have specific mods already included, like Harvestcraft, or Industrialcraft, or Galacticraft?

Theoretically, the answer is "yes" to all; though it probably won't be good to segregate a main world from the nether on different server instances.

Human beings, who are almost unique in having the ability to learn from the experiences of others, are also remarkable for their disinclination to do so. - D. Adams
October 25, 2014
1:48 pm
frelling
Senior Tech
Forum Posts: 3264
Member Since:
August 18, 2011
sp_UserOfflineSmall Offline

Here it is a month later. The good news is that the API-fever has died down and many have settled into two distinct camps – Sponge and Spigot. On the other hand, neither of them is expected to release a 1.8 solution until sometime mid-November. The CraftBukkit site has been relatively quite and we expect that it will remain so.

It is good to see that Spigot is still a contender. We weren’t sure how the Bukkit/DCMA issue would affect it, but it seems that md_5 has things under control (see 1.8 Progress Check). This makes Spigot the closest thing to a one-for-one replacement for CraftBukkit.

However, that is not to say that we are making a decision as to which way to go. There are a lot of factors that have to be considered. Some of the key factors are explained further below.

Our Goals

Vetrancraft’s key goals have always been world longevity and easy of use. While many servers wipe maps after major releases, we maintain our primary world as long as backwards compatibility can be maintained. So far, we have never had to face a mandated wipe over the past 3 years. Similarly, since CraftBukkit was a server-side solution, our members were never forced to add client-side mods in order to play on Veterancraft. Our desire is to stay as true to those goals as possible; but we also understand that some compromises may be unavoidable.

Ease of Use

Since Spigot will now be a direct API implementation as opposed to being based on CraftBukkit updates, it will continue to support our needs for world longevity and ease of use. On the other hand, since Sponge is based on Forge, it will require a Forge installation on each client. It is doubtful that this will change since Forge adds upon standard MC client-server protocols for its needs. Fortunately, Forge installation is painless and wouldn’t affect ease of use too much. Many members already use Forge for other client-side mods. However, it may prevent novice Minecraft users from coming to Veterancraft.

Backwards Compatibility

We don’t see an issue with backwards compatibility for either solution provided that we are careful. Spigot should present no challenges given its server-side only architecture. Since Sponge is based on Forge, it does provide the opportunity to add features previously unavailable through CraftBukkit/Spigot. For example, this forum post suggests the use of Forge MicroBlocks and other block mods. While these open up many building possibilities, they come with strings attached. First, they require client-side mods complicating ease of use. Secondly, they use custom blocks, which can greatly affect backwards compatibility. Most modpack-based servers (e.g. FTB, Tekkit, etc.) require map wipes with new releases simply for the fact that block ids changes as different mods are added/removed. This definitely does not support our need for backwards compatibility.

If we go with a Sponge solution, we will not entertain block-based mods or others that require client-side mods. However, we hope that with Minecraft’s switch to string-based block ids (e.g. “minecraft:stone” vs. 0x01) will provide a means to avoid map wipes. For now we have to take a wait-and-see attitude.

We do have a “backfill” tool on the drawing board that will let us add new ores and possibly items to older worlds for either solution. It may be possible to extend it to manually make older worlds compatible with newer Sponge/Forge mods.

Plugin Technology

For now, we are ignoring the fact that both “technologies” present different modding APIs. As mentioned above, we’ve already begun using an API-agnostic solution for our internal plugins so that we can easily adapt them to either technology. However, that also assumes that our major third-party plugins (e.g. mcMMO, Grief Prevention, etc.) will similarly be available under either implementation.

Time To Market (Update Delays)

A key metric for either technology is its time-to-market. That is to say, how long does it take for all the ducks to be lined up after an official Minecraft release before it can be deployed on our server? Over the past three years, we’ve seen this figure be as low as a week and as long as three months.

Historically, we have always been dependent on CraftBukkit to release a stable build. In addition, we’ve been dependent on third-party plugin developer updates when major API changes occur. Commonly, many developers waited for a stable CraftBukkit release before beginning. This is a key reason why we only use plugins for which source code is available since it allows us to make temporary patches without having to wait for official plugin releases. Lastly, there is the time for us to update our own plugins. For the most part, with JCShops being the notable exception, our plugins rarely required updates. When they did, those changes happened in parallel with CraftBukkit updates.

Now that Spigot is a direct implementation of Minecraft changes, rather than a derivative of CraftBukkit, it wouldn’t change our dependency chain from what we have become accustomed to. There will be an initial lag as Spigot re-invents some private tools used by CraftBukkit to make updates easier, but other than that there should be no additional delays above what is normally required.

Using Sponge would add a dependency on Forge. This is a key concern since Forge updates have always taken much longer than CraftBukkit – its far more complex. This is okay for modpacks such as FTB/Tekkit since they generally are released on prior Minecraft versions. For example, most FTB packs run on MC 1.6.4 even though we are at 1.8. However, if we choose Sponge as the de facto modding solution, Forge delays would have a significant impact on overall time-to-market.

Case in point: At this time, Sponge is being developed on top of Forge for 1.7.10. Forge 1.8 development is underway, but there have been no public releases. On the other hand, Spigot has been busily working on its 1.8 release. On a side note: be wary of non-Forge sites offering a 1.8 solution. Those are Trojan horses and will cause you a lot of grief. You should only download Forge from files.minecraftforge.net.

Summary

This review of key topics may sound like we are leaning toward a Spigot solution. Truth be told, we are hoping that Spigot will be it as it would significantly reduce our conversion and implementation efforts. However, it is still too early to make a decision based on promises. We have to wait until the rubber meets the road. Hopefully, the next few weeks will show a definite forerunner and even so, we will still consider the other solution as a backup, should promises turn to dust.

Human beings, who are almost unique in having the ability to learn from the experiences of others, are also remarkable for their disinclination to do so. - D. Adams
Forum Timezone: America/New_York

Most Users Ever Online: 442

Currently Online:
33 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Emulated: 3206

ryanpitts: 1300

Dalferes: 747

Pherian: 660

Okarim: 594

Member Stats:

Guest Posters: 10

Members: 13138

Moderators: 3

Admins: 2

Forum Stats:

Groups: 8

Forums: 45

Topics: 6229

Posts: 27411

Newest Members: BlakeLox, OliverCeD, BillieHielm, SuzanVug, OscarBub, KarenLew, NancyFub, ChrisOpemo, EmilioRot, howardwiliams2, ArchieSmoor, Robertprums, Apofautt, RobertIcona, JohnnyKnima, frequency-drive.ru OVT01, JamesZoozy, Richardbouct, frequency-drive.ru DPI16, frequency-drive.ru NAG16

Moderators: terrorisly: 424, mudwog: 127, LightWarriorK: 2154

Administrators: meatbawllz: 2475, frelling: 3264