This project was an attempt to re-create fully functional D2GS — Diablo II Game Server, ie. the part responsible for creation and maintaining games in so called “closed Battle.net” mode. If you ever played Diablo II on Battle.net, you should be familiar with the concept. If not, please take a look at PVPGN site for details.

Despite the name, this project is multiplatform (Win32/Linux) one, and, of course, open source. I started my work on it in late 2005 having only d2gs.exe file and almost no knowledge on Win32 programming and reverse engineering. Unfortunately (as with a lot of my projects) I didn’t have enough time / will power / cola to finish this one up, so it has only educational value (if any).

Requirements: Dev-C++ on Windows, GCC on Linux.

Sources and Win32 binary: d2gs-0.003.zip (comments are mostly in Polish ;-))

 

4 Responses to D2GS Linux

  1. Hristo says:

    Is this real?? I’ll try it now, thanks alot!

  2. Hristo says:

    Hm weird, I don’t see the version for Linux…

    • Hristo says:

      Aah, I should use GCC, I saw it now. But here’s my log:
      [email protected]:/home/trinity/d2/d2gs# gcc d2gs.c
      In file included from d2gs.c:22:0:
      d2gs.h:32:1: error: unknown type name ‘HANDLE’
      d2gs.h:36:1: error: unknown type name ‘CRITICAL_SECTION’
      d2gs.c:24:1: error: unknown type name ‘BOOL’
      d2gs.c:24:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘M00406c00’
      d2gs.c: In function ‘d2gs_LogEvent’:
      d2gs.c:51:5: error: unknown type name ‘SYSTEMTIME’
      d2gs.c:58:14: error: request for member ‘wMonth’ in something not a structure or union
      d2gs.c:58:24: error: request for member ‘wDay’ in something not a structure or union
      d2gs.c:58:32: error: request for member ‘wHour’ in something not a structure or union
      d2gs.c:58:41: error: request for member ‘wMinute’ in something not a structure or union
      d2gs.c:58:52: error: request for member ‘wSecond’ in something not a structure or union
      d2gs.c:58:63: error: request for member ‘wMilliseconds’ in something not a structure or union
      d2gs.c: In function ‘main’:
      d2gs.c:114:28: error: ‘PHANDLER_ROUTINE’ undeclared (first use in this function)
      d2gs.c:114:28: note: each undeclared identifier is reported only once for each function it appears in
      d2gs.c:114:46: error: expected ‘)’ before ‘M00406c00’
      d2gs.c:121:79: warning: comparison between pointer and integer [enabled by default]

    • argasek says:

      Hi,

      I’m really sorry to disappoint you, but there’s no compiled binary for Linux. An the one for Windows doesn’t work either :(. This was an experimental project and it didn’t go over an initial phase – the application itself does nothing besides creation an event loop. I had to give up further development due to time contraints and overall complexity: there are (or, at least, there were no D2GS Windows sources available at that time, so my only way to figure it out was by disassembly / educated guessing). I even contacted some other guy from Russia, who came up with a similar idea as me, and progressed even further, however I’ve lost contact to him.

      If anyone wish to continue my work, I can only say it’s a really challenging task, as the D2GS binary is tightly bound to Diablo’s *.dll files, meaning the code parts which are supposed to run on Linux won’t execute without doing some clever hackery in a fashion similar to Wine’s.

      Cheers

Leave a Reply

Your email address will not be published. Required fields are marked *

Set your Twitter account name in your settings to use the TwitterBar Section.