I'll preface by saying:
I may be a programmer, but just because I am does not mean I know everything about Networks, Servers, or anything about how any game handles their "server processing". It also means I don't know why some games would have no lag, and others would. In my time as a programmer, I have never been the guy to set up the logic for these things. I know absolutely nothing about Net code or how it works.
If I
had been working with these things, I'm sure I'd be able to relay more accurate information. Alas, I have not, so my knowledge is limited and/or slightly off-point. Many of you might know more than myself. However, I
have worked with Minecraft, and I have a general idea of why it's so god damn shit when it comes to lag.
To quote:
Even with my limited knowledge, I can say that I generally agree on all points.
However, there's a bit more to say on the topic. Any time you're on HC and you run into the question: "What's causing all the lag?" I could probably only have the answer: "I have no fucking idea."
But I'll get back to that. First, in case yeelowsnow's explanation did not make it clear:
World of Warcraft has a MASSIVE datacenter. We're talking thousands of servers. Sometime in between 2006-2010 I believe it was stated that World of Warcraft's servers are more powerful than the ones used by fucking NASA.
Compare that to Herocraft, which is dealing with 1 server per world, it should be no surprise that Herocraft cannot perform as effectively as a large scale AAA ranked MMORPG.
Now this is where my ignorance comes in. I may be incorrect in stating this, but I believe that World of Warcraft (and other MMOs) are able to use these "thousands of servers" for different things. Perhaps one server handles all the logic of combat, one server may handle player's locations in the world, and another is tracking all the changes made to all characters (looting / deleting items)
If I am correct in assuming that, you can see the fault of Minecraft/Herocraft right there. The best anyone can do is assign ONE server to ONE world. I do not believe anyone has found a workaround for this yet. That means that all character locations, combat logic, character changes, and not to mention anyone modifying ANY part of the whole fucking world. It's a lot to take in, and I don't think that you will ever reach a point of "zero lag" because of this.
So, most of HC's lag stems from the Minecraft engine itself. Even if Herocraft has 3 servers, 5 servers, or 100 servers, the most we can ever do is put one server on one world. The only time this is even beneficial is if we split the playerbase across multiple worlds. (This is what network servers like Shotbow do, by the way.)
Minecraft is simply not powerful enough to allow server owners to delegate their processing to other systems. Additionally, Minecraft does not have an elegant form of plugin compatibility. By default, there is absolutely ZERO compatbility between plugins. It's impossible to get multiple plugins to work together or "talk" to each other. Hell, your plugin can't even talk to itself in some cases! And if one plugin changes the same thing another plugin does, bad things happen.
This is why Bukkit exists.
Bukkit is a shared resource that plugins use to achieve compatibility with themselves, as well as other plugins. It also saves plugin developers a lot of time trying to figure out how the flying fuck Minecraft even works.
(WARNING: Incoming ignorant babble based off of loose interpretations and understandings of something much more complex than anything I've ever worked with.)
This compatibility comes at a cost however. A lot of extra processing and nonsense gets churned out when plugins "utilize" Bukkit. Additionally, the more plugins you have, the more garbage you're processing. It adds up pretty quickly... So, inherently, the more plugins you have, the more lag you're causing. The more you use Bukkit, the more processing you'll have to do behind the scenes. The more you use bukkit, the more lag you cause. (And since Bukkit is mostly used to modify/interact with vanilla Minecraft, anything that "strongly" modifies Vanilla MC will be processing a lot of stuff, and possible forcing other plugins to do extra unnecessary work.)
Herocraft does just that. It modifies pretty much ALL forms of damage that can ever be dealt by anyone or anything. It modifies how experience works, how enchanting works, and now, how crafting works. All of this extra "modifying" that we do is a LOT that the server has to work with. If you ever here Kainzo or anyone else blaming "entities" for lag, this is the
primary reason for that. We have to process every god damn entity through our damage handlers, and any other nonsense we do, like modifying their HP / Loot Tables / Granted XP.
Of course, we also have to deal with memory leaks caused by any of our plugins (whether that be Heroes or something like LWC), and that can be a giant pain in the ass.
=====
To Summarize, the lag will always be around. Sometimes it's Minecraft's fault, sometimes it's Bukkit's fault, sometimes it's Kainzo's fault, sometimes it's
my fault. Anyone that touches any sort of Minecraft related piece of code has a potential to cause 3 metric fucktons of lag and not a single person in the world will be able to know who did it, or why they did it, until they get bit in the face by it and start poking around.
I don't play HC right now so I can't say I know much about the current lag situation, but I'm sure it's something stupid, and there's not much we could do about it until we found out what exactly was causing it. Once we find out, which could take hours to months, you're left with one of the following options:
1) Fix the bug that caused it, decreasing lag.
--Often the hardest solution, and equally often is impossible for us to do from our end. If it's a plugin we control, it's...easier. But if it's an external plugin, our only choice is to notify the developer of the issue and hope he gets around to it.
2) Upgrade the server
--A bandaid solution that often only leads to an extra 30 minutes before the server needs restarting. Sometimes that 30 minutes is enough to sate our sanity, but it's expensive, so Kainzo is less likely to resort to this.
3) Remove the plugin(s) causing the problem.
--Sometimes a valid solution, or, when Heroes is at fault, twiddle our thumbs until someone on the dev team finds a solution to the bug
So yea, there you go. There's probably more to say, and I'm probably not 100% accurate in my statements, but you can hopefully piece together an "idea" of where the lag comes from now.