Hacker News new | ask | show | jobs
by chao- 4297 days ago
Some of my earliest lessons in "how not to write software" came from listening to the ranting of a friend who worked on the original eAthena implementation (i.e. back when it forked from the Japanese Athena project and gained the "e" in its name). All of the fragile handoffs between the multiple server types (character, map, login) and the client. Most notable were the mountains of code, network and otherwise, that had to be written in knowingly buggy, inefficient or incorrect manner simply to properly mimic the official server functionality.

There was also one attempt to make an alternative client for the official servers to deal with some of the lackluster interface issues (longstanding, serious/obvious bugs from 2002 that lasted until 2009ish). From what I recall, it was way too much work, and the core features were easier to deliver as a sort of (eula-breaking) addon to the official client.

2 comments

I might be able to give some insight, I helped found the RO emulation community back in 2003. Along with AppleGirl, I (AjS15822) made some of the first English NPC scripts used in all Athena servers, participated in YARE, contributed code to Athena, and ran several of the forums.

It's been a decade so my memory is a bit fuzzy, but here's what I remember about that time:

We started with AEGIS (leaked Korean server files) on the asb-sakray board [1] but it was notoriously hard to setup since it had major MSSQL and ODBC driver dependencies (I wrote guides). We started work on an installer for Aegis but realized we wanted to customize the server even more.

A few emulators started to take hold at this time (YARE probably the biggest) but Gravity (creator of RO) threatened legal action and shut it down.

Enter "Athena"— we discovered a Japanese RO server emulation project on the "Avethes" BBS that had the most complete packet mapping at the time. AppleGirl did most of the first translation of the code (AppleMod) which spawned a ton of other English emulation forks as the YARE developers jumped back on.

It was a really fun time for me— age 14, not much programming experience, in the middle of this massive, open-source MMORPG emulation war. I learned so much about C++, network programming, and server architecture during that time (as did many others). All the different forks openly stole code and ideas from each other so things moved very quickly.

The beautiful thing about writing code for RO private servers was the immediate sense of gratification you got. I could implement a small change to a skill, or a new NPC behavior, and then immediately log into the client and see it in action (and then thousands of users would see it in action when we committed the change).

We weren't concerned so much about code quality in the beginning since Athena strived to be a server modder's paradise— if you wanted raw stability, you went with Aegis instead. Stability came later once all the projects eventually aligned under one flag (eAthena).

I left in 2005 to work on server emulators for Lineage II, and later got bored of servers and jumped to client-side graphics programming, where I've been happily working for the last seven years. (Funny enough, my latest project [2] was used in Lineage II as well as hundreds of other MMOs and games, so I've now written code for both emulators and official. :))

[1] http://forum.asb-sakray.net/

[2] http://www.awesomium.com/

Thanks for the clarification and glad to see RO was a gateway into software for so many people :) I even remember YARE, if only vaguely.

A friend of mine who had a stint in a game studio is convinced he should never have to (re)write a UI in C++ ever again, now that "the web" has created such a lingua franca in the form of HTML, CSS and JavaScript. As evidence of this he often points to Awesomium and has spoken highly of it.

Haha awesome, I would love to meet your friend. :D
I wonder how much server emulation is done by children. I have a similar story except I was 13 and it was for Tibia (and OpenTibia).
Interestingly enough. I also worked on a MapleStory emulator at around age 14. It was all done in C++ and it was an incredible learning experience. I learned about crypto, reverse engineering, networking, packet sniffing, hacking, etc. The strange part was that my current motivation for the entire field revolved around this project I did as a kid. I'm now 21 and working at a game company and teaching. It feels so surreal looking back at it because a lot of the concepts I dealt with at age 14, seem more complicated than some of the network programming I do nowadays.

I still have the source code laying around somewhere and here's a youtube video of its very early stages.

https://www.youtube.com/watch?v=hH5FLfNPSn8

Weren't most of the Lineage 2 servers running on leaked code, not emulators?
Fuck yea, awesomium! I have been playing with that in VR on the rift!
We love the Rift! I'm working on an accelerated build that will run directly on the GPU, details this Fall. :D
I've read parts of the eAthena source code recently (https://github.com/eathena/eathena) and was very impressed with the code quality. Maybe they fixed the code base, or I didn't hit the worst parts, but I left feeling it was in good hands.
Oh yeah, while I haven't read the source directly in years, it is much changed. I was referencing 2004, only six months or so after iRO officially came out of beta. To say it improved since then is an understatement. Based on what I last knew about the scripting capabilities of the Gravity server implementation (circa 2008), I can safely say that eAthena eventually came to provide an easier model for rudimentary content creation and management than the official software.

Never mind security. Trying to wrap your head around the code behind why opening a dialog via item X and performing client action Y on the keyboard would bypass what should have been a server-side security check for a very important game mechanic was a lesson in all sorts of SE principles. Unnecessary coupling and spooky action at a distance, for starters. Repeat this a hundred times and mix in a handful of SQL injection points, plus some fundamental disagreements in how and when the game's content assumed characters would appear on a new map, versus how and when the official servers actually worked.

I am curious if and how eAthena eventually deviated from some of the idiosyncratic behavior of the official game servers.

From what I've heard in the years since I stopped playing, though, is that Gravity took the profits from their microtransaction e-store and managed to actually plow that money into improvements for the GM team's ability to meaningfully manage their servers and community. So my first paragraph likely applies only to a bygone era.

eAthena is somewhat outdated / abandoned due to the old admins that went AWOL. Jguy/Jman stepped up along with other contributors and created rAthena with goals on emulating newer parts of Ragnarok "renewal mechanics"

http://rathena.org/ https://github.com/rathena/rathena

its doing way better then eAthena :)