Skip to forum content

You are not logged in. Please login or register. → [EN] Diablo → Diablo 2 running and modding private server

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 7


Topic: Diablo 2 running and modding private server

Hello folks,

this is my first post here but it will be long one. I want to ask few questions regarding modding and handling private server. I hope this won't be too overwhelming. If these should be redirected somewhere please point me where. It is a shame that Phrozen Keep ToS are forbidding discussing this things there so I'm looking in other places.

Basically I'm starting my adventure with Diablo 2 modding. I'm embedded software programmer but I have some lacks in knowledge of networking/game programming/server-client architectures so I need some clarification. Some questions may be dumb but better to ask the way than to go astray.

1) I want to run private server and I need additional information how to mod Diablo 2 at server side. If I understand completely if I'm going to make changes to some dlls or game.exe locally these won't take affect when I setup PVPGN server as server is using his own copies of all dlls? Am I correct? If yes maybe some of you know what changes can be done locally? For example handling of some new menus would have to be done locally so I would need to provide dll for every client to render it and write server code which handles it right?

2) Can someone clarify for me what exactly D2GS, D2CS and D2CE (not sure if this one is not the same as D2GS) are responsible for? I saw this diagram I understand that D2GS is emulating the game like game.exe. Is D2CS proxy for easy communication with game running on D2GS and bnet simulator or it does something more?

3) What version of Diablo 2 should I use? Post 1.14a all dlls were merged to game.exe. What this means for running server? I assume I would need to have dlls for 1.14x and D2GS supporting those? How game modding can be done in this situation? Is it possible to run server on version 1.13c and have client with 1.14? (is there even point actually?) I know PoD is doing similar thing. If I'm not mistaken their server runs on 1.13d but clients are 1.13c. So it means that all fixes for 1.13d are present on server, like for this particular patch 'aura stacking bug'? What about differences between two versions? Are there no conflicts with outdated code? PVPGN states it supports versions 1.14 so I'm particulary intrested how this is achieved? Or is just luck that code merged to game.exe does not differ from original dlls and all works toghether?

4) D2GS. I read some history about this tool but I'm a little bit confused. Original one was developed by three guys and supported by Marsgod until 1.13c. Also no source code is available for his dll apart from original release for 1.09d.
There is also version for 1.13c done by Tesseract. If I'm correct this guy took source code for 1.09d and modified it with some cool stuff. But apparently nobody is able to build his source code with PVPGN yes? Or nobody is able to build it only under Windows? Is it working on Linux? I assume running D2GS by Tesseract is the holy grail as it provides source code which can be modified. Does his work also includes things which were developt by Marsgod until he stopped supporting it?
I also saw some posts about people concened about some vulnerabilities of D2GS? Is Tesseract one more safe?

Hopefully I'll get some answers about these.



Re: Diablo 2 running and modding private server

1. From what I can remember, certain files on the server and client must match. If you're looking to modify existing menus, I think Diablo 2 handles it like StarCraft does by using .bin files located in the game's mpq files. To open the mpq files, use MPQEditor and then use BinEdit 2 to open the .bin files. If you want to create entirely new menus, my best guess would be that you need to do some in-memory editing of the executable code.

4. The source code can be built, but nobody has been able to figure out how to completely get it working. For me, I was able to log in and create a character. When I went to create a game, I get a dialog box that says, "Your position in line is: 1". I checked the logs and it seemed that D2GS wasn't able to create a connection to the other software.


Re: Diablo 2 running and modding private server

4) Is problem you described related to only Windows or Linux too?


Re: Diablo 2 running and modding private server

Burznazg wrote:

4) Is problem you described related to only Windows or Linux too?

D2GS code isn't cross-platform. If you use WINE, I'm sure you'll run into the same problem.


Re: Diablo 2 running and modding private server

Hello, welcome!

Meanski from SlashDiablo here.

1) Find my basic guide to opening up the patch mpq here:

A lot of things can be changed within the patch file, some do not even need to be distributed to clients and they can run a clean 1.13c/d patch. I would think these days you could go to town on changing anything within the patch_d2.mpq and make users download it when installing - if you're going for 1.13 then they will need to do a fresh base install anyway (if they're running retail/1.14) so its only adding a small extra step to download the patch file. Most servers are still running 1.13 but a few are on 1.14, one of the other guys will chip in on how to do that.

Anything pre-game (main menus, etc.) will need to be loaded client side. Phrozen Keep is your best bet for that. They also have an active Discord server.

2) D2GS is the D2 game engine emulator. D2CS is essentially your gateway to PvPGN. D2CS handles the realm, character locations, motd, game timeouts, ladders etc.

3) Honestly, doesn't matter too much. 1.14 is easy as new players coming from botnet don't need to download anymore than your patch file. 1.13 is still the most widely used, by far; C and D can interchange, maphack is more widely support.

4) I'm not sure of the exact history as I'm quite new to this whole thing. I don't think anyone has been successful fully with Tesseract's build - Harpy has seen it working previously but if you pull all the current repos and instructions - there hasn't been any recent success. Tesseract does have built in proxy to protect itself against hex crashes but this doesn't seem nessesary now with the work some of the recent server admins have done - we now have ways of blocking these attacks. Source code would be the ultimate... I'd say have a crack at tesseract and let us know how you get on; remember you need his customised version of D2CS!


You can find me on Discord if you have any other questions that require more immediate answers, I've also started a channel for d2 server owners.

Good luck!

Admin of SlashDiablo - Large vanilla-like server
Founder of - Dedicated Discord server for PvPGN/D2GS questions


Re: Diablo 2 running and modding private server

Alright! Things are getting clearer each day. Thanks for your answers.


Re: Diablo 2 running and modding private server

Just adding more info .. the D2GS Tesseracts works fine by blocking the attacks.

But by studying the way he works with some colleagues, he is defective while running the games separately.

In this way, sploits for cloning items (duping) work the same way in Blizzard, where the rollbacks are individual. I do not know to what extent this is advantageous.

Posts: 7

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 1 guest, 0 registered users → [EN] Diablo → Diablo 2 running and modding private server