Thanks for the reply Dacian, I appreciate the background. I was party of the beta for Diablo 20 years ago, so I understand just how much multiplayer was rushed. I spent a lot of time in the legit channel in bnet due to how rampant cheating was.
I would argue skill/competency is only a small part of what BrightLord had to make this a reality. For this to work you needed someone (or even a group, but easier with one person) that had the skill, the time, the passion, and a desire/will to keep the scope and style of the project inline with the original spirit of Diablo 1. I'm going to guess that BrightLord was the first that took the time to decompile and truly understand the D1 engine from top to bottom so he could reimplement. Then on top of that he scoured over the assets (both used and unused) and put together a complete, coherent quest line that feels more like a finished product than what was released 20 years ago. Then add on some more modern conveniences (most of the taken from D2, and why not, the game is awesome), fill in some blanks, add some of your own aspects, and yet still make it all still feel like the Diablo 1 that I installed on a Pentium 3, which I had to clear space on my harddrive for. Of course what has been accomplished here is an unparalleled feat.
While I won't post my resume, I've been working on games for a long time, and I currently work in Xbox services. As far as multiplayer is concerned, I think there are two important questions that need to be answered before you can move forward with the design:
- - Do you care about cheating?
- Do you want a match making system like bnet?
Depending upon the answer to the first question you automatically get the answer to the second question. So if you don't care about cheating, then the current anticheat measure that are in place are sufficient. The obfuscation techniques are good enough to stop the majority of people. However, if you do want to stop cheating, then you have to have a dedicated server side hosting solution like D2/D3 does with bnet. That requires a lot of rearchitecting / refactoring the core game engine to run headless, and allow the client engine to run in a slave mode to the server. That also requires designing and implementing quite a few services and setting up the infrastructure for those services:
- - Player account service
- Match making service
- Game host service
No one is going to create their own data center for a free run game, so you'd host that stuff on GC, AWS, or Azure. Depending upon the popularity of the game that could easily run a few hundred dollars a month hosting those services on one of those cloud platforms. So yeah, combating cheating in a meaningful way means spending a lot of time and potentially a lot of money.
If you don't care about cheating but want to provide a match making service it is a bit easier to implement. Match making in this sense is just like bnet did it with D1 - a place to go to register your game with a unique name and an optional password. I can't remember if D1 used server relaying for peer to peer connectivity or if it used UDP hole punching. Relaying puts the onus of providing yet another service for multiplayer, while UDP hole punching means the players just have to have supporting hardware (which I'm pretty sure is supported among all hardware NATs these days).
Anyway, I know what I'm talking about. I done this kind of thing before, and I would love to see this made a reality for Belzebub. I'll PM BrightLord and see what is going on. Thanks again Dacian.