tesseract2048 / d2gs

Multithreaded Game Server for Diablo II 1.13c Closed Battle.Net
82 stars 50 forks source link

D2GS_Build_20150103 does not work #11

Open Rong-Yao opened 9 years ago

Rong-Yao commented 9 years ago

Hello tesseract2048, i've tried the compiled binary of https://raw.githubusercontent.com/tesseract2048/d2gs/master/Binaries/D2GS_Build_20150103.zip which you posted, still it does not work. Normal D2GS from pvpgn.pl works, when i update it to Build_20150103 it stops. And i've tried to do this, i started my working d2gs which is the old one from pvpgn.pl, then when i saw it working fine, i've turned it off and extracted any file from Build_20150103 into it, trying to start it again, D2GS.exe just closes without error or log shown. I'm using windows 7 x64 sp2 as an os.

tesseract2048 commented 9 years ago

Checklist:

Rong-Yao commented 9 years ago

I have it installed, also dependency walker shows that files are there also msvc is up to date, just should i have msvc2010 (Microsoft Visual C++ 2010 Redistributable) or VS2010, because i have msvcr100.dll installed for both x86 and x64 versions there.

EnableGSLog is 1 and still do not save any logs, D2GS.exe closes before it writes logs.

Naki commented 9 years ago

If there is no log at all, it can be Patch_D2.mpq file size check: main.c, Line: 73 You can disable it & compile D2GS or check is Yours mpq file have same size.

tesseract2048 commented 9 years ago

Thanks, @Naki. That could be the solution.

HarpyWar commented 9 years ago

There is no d2server.ini in archive with binaries. It's no longer needed? BTW, binaries can be uploaded into Release section of the github project's page.

d2gs.reg should be saved in ASCII/UTF8 encoding and regedit path should be replaced to [HKEY_LOCAL_MACHINE\SOFTWARE\D2Server\D2GS], there are x86 still exist,

About previous issue, there is should be log line added before return -1. Sometimes users try run mods with different Patch_D2.mpq size.

tesseract2048 commented 9 years ago

Thanks @HarpyWar .

d2server.ini is fetched from D2CS during initialization.

I am having difficulty debugging this project since I no longer work with Windows. Could you fix the other issues and send a pull request please, thanks?

HarpyWar commented 9 years ago

Where can I get file Patch_D2.mpq with size = 4153804 ? The original file from v1.13c has different size = 6755058.

All the original files of clean Diablo 2 versions (en): http://cdn.pvpgn.pro/diablo2/

tesseract2048 commented 9 years ago

Okay. I believe we can make this verification optional (namely let user specific the size, or disable it). How about that?

HarpyWar commented 9 years ago

@tesseract2048 I think Patch_D2.mpq verification can be disabled, because it doesn't affect on anything on a server side. But this file should be equal on a server and a client side, otherwise client can not create/join games or it may cause a client crash.

Also, what is profit from the changing registry path from D2Server/D2GS to D2Server/D2GS113? As I see, there are only 4 optional parameters were added (GEThread, GSShutdownInterval, ListenPort, SYNProtect) that are replaced by default if no exist, and all other parameters are the same. Users will be happy if the registry path will be the same that are described in docs over the internet for all the previous D2GS versions, otherwise it adds a confusion.

Next issue. I can't run this D2GS, because it can't connect to D2CS. Does it work with original D2CS, or only with modified D2CS from https://github.com/tesseract2048/pvpgn?

Your D2GS

02/10 19:05:19.037 D2GSConnectToD2xS: Connected to D2DBS Successfully
02/10 19:05:19.037 D2GSSendClassToD2DBS: Send connection class packet to D2DBS
02/10 19:05:19.146 D2GSConnectToD2xS: Connected to D2CS Successfully
02/10 19:05:19.146 D2GSSendClassToD2CS: Send connection class packet to D2CS
02/10 19:05:19.256 CloseConnectionToD2CS: Close Connection to D2CS
02/10 19:05:19.256 CloseConnectionToD2CS: Connection lost, restart D2GS

Original D2CS

Feb 10 19:04:53 [info ] pvpgn::d2cs::server_accept: accept connection from 95.213.159.36
Feb 10 19:04:53 [info ] pvpgn::d2cs::d2cs_conn_create: created session=20 socket=468 (3 current connections)
Feb 10 19:04:53 [error] pvpgn::d2cs::d2cs_handle_init_packet: got bad connection class 145
Feb 10 19:04:53 [info ] pvpgn::d2cs::d2cs_conn_destroy: [468] closed connection 20 (2 left)
tesseract2048 commented 9 years ago

Patch_D2.mpq verification was used for hacking prevention (as it is possible for attackers to replace Patch_D2.mpq and therefore be able to create dupe). And it is okay to disable it.

The registry path modification allows both version of D2GS run on the same server (namely, 1.13c and 1.11b), therefore they should have separated configurations.

This version of D2GS works only with modified D2CS (https://github.com/tesseract2048/pvpgn), for this D2CS_D2GS protocol are incompatible with previous one.

HarpyWar commented 9 years ago

Do I understand correctly that two different D2GS versions can be run at the same time on one machine (IP address)? If yes, could you explain more about it? AFAIK, Diablo 2 uses port 4000 to connect to a server, and it can not be changed.

tesseract2048 commented 9 years ago

The way I was doing this was building a reverse proxy listen at port 4000, in front of two D2GS instances (these two, of course, listen different ports, say 4013 & 4011).

The proxy is implemented by receiving and parsing 0x68 packet from client, then detect game version, and afterward back up communication between client and backend D2GS instance (by switching packets in rest lifetime of the connection).

This has proven to be efficient & effective, and handled up to 2000+ connections.

wujiabo commented 9 years ago

@tesseract2048

Hello, could you upload the original d2gs and d2gssvc code for 1.11b version? I came across many sites,but can't find the code for d2gs.exe and d2gssvc.exe.

the d2gs.exe has a icon"d2gs1.10", but can used in 1.11b. d2gssvc.exe has a green character icon.

do you have the original code?

Many Many thanks.

Rong-Yao commented 9 years ago

I cannot find Patch_D2.mpq with size 4153804

b1nn commented 8 years ago

My original 1.13c patch has 2.108.703 bytes

HarpyWar commented 7 years ago

Patch_D2.mpq can be of different size, even for original version. It depends on what initial Diablo 2 game version did you have before applying a new version patch from Blizzard, and "full" or "partial" patch. Possible it also may depends on a game locale. For example, 1.11b -> 1.13c and 1.12a -> 1.13c will be different size.