Popularity growth in hercules emulator usage over other emulators?

Started by Gensokyomail, Nov 23, 2016, 08:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Gensokyomail

In the past two years or so, I've seen quite a big increase in the popularity of using hercules over all the alternative given emulators.

So I have to bring up the question, for what reason? It's understandably nice to have more selections, but from what I've seen, herucles has it worst when it comes to issues, with single digit amount of mobs being able to hitlock a player into not being able to move from a tile, skills functioning incorrectly or even things such as classical skills being entirely broken for years, such as firewall pushing things at complete random and cart revolution not doing knockback, but rather just knocking mobs always to the west.
The only seemingly good improvement it offers over all the other emulators, is that it manages to use a lot less RAM for pretty much everything, but even then thats at best a bonus of +- 1~2GBs for a big server.

Does hercules offer some kind of amazing plugin and administration/management tools, or have I just been incredibly unlucky in servers for some reason all having similar issues?

NovaRagnarok

The latter. As an rA server owner, there's nothing over at Hercules which makes me wish I had picked it instead. But that's just my personal opinion.

Zleepy

rathena is focused purely on renewal with not much focus on customization where hercules is the opposite and much easier to work with.
if you want a fully vanilla server you will probably want to use rathena where if you want easier ways to make new content you'll enjoy hercules much more. another thing is of course if you dev for other games hercules will probably be more what you're used to and thus produce faster progress for you which is one reason i prefer it personally.

yC

We had some discussion on this a while ago, http://forum.ratemyserver.net/general-chit-chat/rathena-or-hercules/

You and Playtester both pointed out the difference in resource usage.  I don't think that is part of the reason? But I am not aware of any extra charge for picking rAthena over Hercules, for those auto-setup ready to go server hosts. 

Terpsichore

Generally, Hercules is more clean, readable and stable out of the box, there's also considerably less legacy code from eA times. Mechanics wise, I have encountered stuff that's broken on rA but that's been fixed on Hercules a long time ago, and vice versa, so it goes both ways.

It is true that rA is more active as far as development of new features goes (content wise, both communities are dead) while Hercules focuses on optimizations and such, which can also be pretty aggravating if your source is heavily customized (my case) since Haru loves to push massive commits that refactor a lot of stuff. This does improve stability though.

Ultimately, at least to me, it doesn't matter much since anything rA pushes, can be applied to Hercules if you know your way around source code. Many of those updates are also irrelevant to Hercules as stuff already works properly and most of what one emulator gets, is applied to the other by the community anyway.


So yeah, rAthena is more active while Hercules is just a better emulator at the core. For out of the box servers, rA is a better option, for owners that can handle C and do their own fixes and changes, Hercules might prove a more attractive option.

Playtester

Quote from: yCYou and Playtester
Wait a sec, who is "you"?

Quote from: Gensokyomailcart revolution not doing knockback, but rather just knocking mobs always to the west.
That's actually official behavior and should be the same on both emulators too, though it's also configurable.

https://github.com/rathena/rathena/blob/master/conf/battle/skill.conf

// Is the knockback direction for Cart Revolution always West? (Note 1)
// On official servers it will knock the target always to the West. If disabled it will knock the target backwards.
cart_revo_knockback: yes

Quote from: Zleepyrathena is focused purely on renewal
Misleading. rAthena is still more focused on pre-renewal than Herc, even though both don't care much about pre-re anymore (I'm pretty much the only one that still cares of all existing emulator devs except maybe exneval of idAthena).
The problem on Herc is also a bit that pre-re things are harder to confirm and Haru doesn't allow the devs to fix anything without solid proof.

The rest of what you said is true.

But a better one-liner to explain this would be:
"rAthena is focused on accurate implementation of skills, behaviors and code structure whereas Herc focuses on optimizations and updates that make the emulator easier to use."

Quote from: TerpsichoreI have encountered stuff that's broken on rA but that's been fixed on Hercules a long time ago
Which stuff?

QuoteSo yeah, rAthena is more active while Hercules is just a better emulator at the core. For out of the box servers, rA is a better option, for owners that can handle C and do their own fixes and changes, Hercules might prove a more attractive option.
For out of the box servers it depends. Herc is easier to setup so people who don't know a thing about coding and using spreadsheets, might find it much easier to set up to their desires.

For coding, it also depends. Yes, Herc's code is a lot more what modern people are used to, but it's also much less documented. I always have a lot of trouble when I want to understand a change Herc did to see if I can use it for rAthena because nothing in the code is commented. Also even though Herc's structure is optimized, it's further away from how Aegis has it implemented, so if you want to simulate an official behavior, it might be harder to add (of course that's only a good thing for rAthena devs and not for server owners usually).

Merging rA -> Herc is definitely easier than Herc -> rA. But you also end up have having to merge a lot more (assuming you want all skill and behavior fixes).


One point not mentioned here is that rAthena is the better choice for "close-to-official" whereas Herc is better if you don't care so much about being official and you rather have a software that uses less memory, CPU and is easier to customize via configurations.

On a final note, I think the popularity increase of Herc has already stalled. I know at least some server owners that switched back to rAthena because Herc isn't so active anymore and is lacking many skill fixes.

Blinzer

I picked hercules purely because of how much more efficient it was memory wise. It's a bit hard to read because of all the pointers at first, but you quickly get used to it and become an efficiency monster yourself. I saw no reason to get rathena because the main feature was "you can customize better" when i'm doing a server which revolves around changing what already exists rather than adding on top of it.



Yuzo

Hercules is better, and Playtester will attest to this.


If you are a newbie, the files are 20x easier to understand. They have already converted all the important files to libconfig format which is so much easier to read than txt. If all you want to do is add items, play around with monsters and skills, herc is your go.


Gosh, I don't know how I can truly express myself without making a post that would 100% get removed and probably get me banned.

Zinnia

anyway once you do heavy customization on sources it doesn't matter which emulator you use

concerning bugs, you'll always have bugs to fix on both rA and herc, but at least on rA playtester is really involved when it comes down to support/bug fix for pre-re servers.

Potatoes

If you're new I'm sure Hercules is great, but there are quite a few things that will irritate you from an rAthena perspective.

For instance, some people like the libconfig files because they're more newbie-proof, but I personally don't and I find it very annoying for automation. It looks cool, but that's about it. Duplicating an item from the item_db.conf 10 times has to be done manually in Hercules, while in rAthena, since it still uses a CSV format, you can easily increase the IDs, either from Notepad++ or a spreadsheet (but according to Hercules' staff, Notepad++ is a bad alternative software).

The latest commits on Hercules are also... not as useful as others may like to admit. They have a habit of breaking compatibility with many changes you may have. Your alternative is HPM hooks, hm. They're decent, but it definitely takes more time to make a HPM hook than to make your changes to the source files directly. HPM hooks also aren't always nice; updates may break (and has broken) previous hooks you will have. So you'll have to spend more time on updating your own stuff. That part is not fun, you have better stuff to do when you manage a server than worrying about your emulator updates, even though people don't like to say it. And updates are a usually a nightmare.

At one point, there was a commit to rename a file header which affected 10~15 files, and... you end up asking yourself: why? How does this help me as a server owner?

Or let's... remake the entire packet structure and break every single custom changes you've ever made because it's cleaner. I mean sure it does, but again, was it necessary?

Or let's... make all functions into fake C class interfaces. Why? No reason, it looks closer to C++, but it's still C. Now if you want to add a new function, you have to do extra steps to link the real function to the fake interface pointer. This whole thing is rather useless but from the looks of it, all methods will be converted to this eventually.

Or let's... add null_po checks to every single function... *sigh*. I almost felt bad for the server owners who had to merge this.

The same goes for all the memory optimizations. It's great, but most hosts can very easily hold large amount of memory (memory's cheap) and make the whole thing a bit useless. It's nice and cool that it consumes less memory, but from a practical point of view, this has no impact on your server.

The list goes on really. Those changes aren't wrong, they're just not what you're looking for when you're developing a server (well, it shouldn't).

I also tend to prefer rAthena for their uncompetitiveness. This goes for both their communities and their staff members. If Hercules releases something new, their members will tend to use that as a reason why people should use the emulator "we got it first guys!". It's just childish. rAthena gets those features later one way or another (then again, these days, rAthena is more updated than Hercules. Not like it matters since Hercules will have those new features later as well.)

nile


Playtester


Yuzo

I will always continue to spread my pro-herc propaganda. go hercules

Bue

Quote from: Potatoes on Nov 28, 2016, 12:35 AM
For instance, some people like the libconfig files because they're more newbie-proof, but I personally don't and I find it very annoying for automation.

The worst part of libconfig is that its LGPL and requires dynamically linking in hercules' libconfig because they modified the lex and bison grammar to support their multiline script syntax. Which means tool developers can't do standalone applications without hauling that garbage library everywhere.

I would have prefer it if they had used Jansson with MIT license to support JSON because its so ubiquitous and can be map to built in data structures for every scripting language out there.

Hell, I would have WAAAAAAY prefer it if they leave it the fuck alone. Because it is not difficult to write a C# or wxwidget GUI to do item editors or load the CSV into MySQL and use an ORM in some scripting language for specialized processing.

Quote from: Potatoes on Nov 28, 2016, 12:35 AM
The latest commits on Hercules are also... not as useful as others may like to admit. They have a habit of breaking compatibility with many changes you may have.

Like renaming 10% of the status enums and offsetting them by one. BECAUSE WHY THE HELL NOT.

Quote from: Potatoes on Nov 28, 2016, 12:35 AM
Or let's... make all functions into fake C class interfaces. Why? No reason, it looks closer to C++, but it's still C. Now if you want to add a new function, you have to do extra steps to link the real function to the fake interface pointer. This whole thing is rather useless but from the looks of it, all methods will be converted to this eventually.

Right? C does not have an implicit this pointer nor does it has a compiler generated vtable/vptr for dynamic method invocation, which means you have to pass the object pointer manually and ensure the context is correct for whatever function is being reference by the function pointer.

Its dumb. But whats even dumber is the perceived benefit from doing it this way.

Quote from: Potatoes on Nov 28, 2016, 12:35 AM
Or let's... add null_po checks to every single function...

Because someone on there dev team don't know how to debug a core dump with gdb or check memory errors with valgrind. (Or mcvs and dr.memory on win32.)

Quote from: Potatoes on Nov 28, 2016, 12:35 AM
The list goes on really. Those changes aren't wrong, they're just not what you're looking for when you're developing a server (well, it shouldn't).

I also tend to prefer rAthena for their uncompetitiveness. This goes for both their communities and their staff members. If Hercules releases something new, their members will tend to use that as a reason why people should use the emulator "we got it first guys!". It's just childish. rAthena gets those features later one way or another (then again, these days, rAthena is more updated than Hercules. Not like it matters since Hercules will have those new features later as well.)

Right??

Also libconfig's C api is backward sideways retard and difficult to get anything done easily.

Neffletics

In the Philippines, most of the wannabe-devs are using Hercules because the people they've met says it's better without even explaining why.

Both of them are good but I still personally prefer rA over Herc. Why? I am used to rA.  /heh
solacero rip