Putting Graal Online Back Online
All of the talk over the last couple weeks about people starting up vintage World of Warcraft and Minecraft servers on
#CGHMN made me start thinking about an experience from my youth: an old MMO called Graal Online. It started in 1998, originally as Zelda Online with assets ripped from The Legend of Zelda: A Link to the Past, but quickly evolved beyond that. I played actively through most of 2000 into 2001 before calling it quits around the time the NewMain stuff got started. Technically
it's still around, but now it's a freemium mobile game, a mockery of what it once was.
I remembered seeing the leaked source code to the v1.3.1 server back in the day and I wondered if it was still out there. That set me off on a trip down a deep and twisted rabbit hole.
First Results
I started by heading to
archive.org and searching for software tagged graal. That turned up a
partial client collection taken from the remnants of an old fansite called
Spider's Page of Stuff, as well as a
collection of playerworld backups that included a few historic dumps of the original main world.
The v1.3.1 server source I was looking for wasn't in there, but I did see an "unlimited server" for v1.1. This was a Win32 server with a GUI, rather than Linux as the other one was. Some reading revealed that this server was included with the v1.1.9 release of "Graal Gold." The v1.1.9 client wasn't part of the set, but the v1.1 client was, and that seemed to be compatible. I fired up the server under WINE, connected to it with the v1.1 client, and tested things out.
I ran into two issues early on, both related to one another. First, the v1.1 client was hard-coded to connect to a server at www.graalonline.com, so a DNS override was needed in order to connect to my test server. Second, I was getting failures whenever I tried to leave the online start map. I suspected that it might be trying to pull map data from an HTTP server, so I started one up and watched the logs. Sure enough, I was seeing 404'd requests for files under /levels. A quick redirect to the levels directory in the game data was all it took to fix that; the game worked!
With that milestone cleared, I set up a Windows NT 4.0 VM on my vintage VMware GSX box and installed the Graal server on it, along with a web server for level data. I asked to have the CGHMN DNS server poisoned to direct www.graalonline.com to my VM. With that, CGHMN had its first Graal server!
Digging Deeper
I decided to take a closer look at the Wayback Machine archive of Spider's Page and see if there was anything else of potential use there. Sure enough, I pretty much immediately found the old GServer 1.3.1 source package I had been looking for earlier! I grabbed it and started combing through the code. Excitement turned to disappointment though when I realized that it was missing some needed data files. I would need a weapons.txt with info about available inventory items, and a directory of account data. I figured I could put together some account files by tracing through the parser functions, but I was at a loss for what to do with the weapon data. I set it aside.
I did more reading and found a mention that all Graal clients from v1.1.9 to v1.3 beta included a Win32-based server, like the one I had just set up. I grabbed the v1.3 one and gave the server a try. Much to my surprise, this one didn't seem to require a weapons.txt file, and it had a built-in graphical account manager! On shutdown, it saved the account data to a file called accounts.txt, which the v1.3.1 server source seemed to have an ability to import and convert to its own broken-out directory format. That seemed like it would make getting the v1.3.1 server going a bit easier, but I still didn't have any kind of lead on the weapons.txt file.
Continuing to dig, I came across a mention of
NekoRoy's Graal Site, which was well-covered by the Wayback Machine and held a massive treasure trove of old Graal files, including a bunch of clients and servers that weren't on Spider's Page. That included the Graal Gold v1.1.9 client! I grabbed it and gave it a test. First revelation: unlike the v1.1 client, this one wasn't hard-coded to www.graalonline.com, so I could simply enter another domain or IP and connect. It did still seem to want to get levels from there though, so the DNS redirect was still needed to make it fully functional.
Fork Bomb
Among other things, the file collection on NekoRoy's site included several community-produced forks of the v1.3.9 server, which had apparently been leaked much like the v1.3.1 server. These mostly dated to 2002-2003, though following the breadcrumbs led me to
the GServer-v2 GitHub project. It seems to have been active up until sometime in early 2025. That seemed focused on NewWorld-era stuff though, with support for pre-2001 clients and maps not being a priority.
One thing did catch my eye though: one of these packages, the one for Matriark's GServer 1.3.9 fork, included a weapons.txt file! That, combined with account data from the 1.3 beta server, would probably allow me to get the v1.3.1 server going. At this point, though, I no longer considered that a priority. Nice to have the option open at least.
Stepping into the New Millennium
With the v1.1.9 server going nicely with an early-mid 1999 world, I was still thinking of getting something from the 1.3 era going. I had a dump from early 2000, just before I originally started playing, and it'd be a big nostalgia hit to bring it back to life. I decided the easiest, lowest-friction approach would be to try out the v1.3 beta server and client. Despite being a beta, both seemed perfectly stable.
I transferred everything over to my NT4 VM and fired up the server. Using the GUI account manager I created a guest account, plus an admin account for myself. Because the server seems to only load account data at launch (unlike the Linux v1.3.1 server which used a broken-out format), there would likely be no way to add or edit accounts from an outside source (like a PHP or CGI script) aside from trying to implement the GServer Remote Control protocol. That'd probably be doable, but given the low level of expected demand I decided that just doing things manually was good enough. Aside from that, I suspect that this server was one of the LAN servers with an eight-player cap. I doubt there'd ever even be that many players active on CGHMN at one time, but if demand ever start growing I'll probably have to try something different.
Limitations like that aside, everything seemed to be going well. I did run into one oddity while testing: if you're logged in with the guest account, most of the treasure chests with equipment upgrades don't appear. They only show up if you're using a 'real' account. That one took me awhile to figure out.
Seek the Graal
If you're on CGHMN, give Graal a try sometime!
=>
http://graal.n8fq.retroIf you're not on CGHMN, and retro stuff like this interests you, you should be!
=>
https://cghmn.org#RetroComputing #RetroGaming #blog