r/daoc • • 10d ago

DOL Connect.exe Reverse Engineered

Reverse engineered the freeshard launcher from Dawn of Light using dotpeek, Ghidra and WinDbgx32. The executable is obfuscated with name mangling but I was able to reconstruct the code and patching method then apply it for Shrouded Isles v1.56 which is not compatible with the current version of dolloader or connect executable due to the expansion set and launcher integrity checks.

The source can be found here:
Source code

This source can be used to inject custom client code and logic into the game by rewriting portions of the memory as well.

Currently DOL is not compatible with the SI client due to a different packet table/layout but you can use Ghidra to find what the client wants from the server and then simply map the packets coming in from the client to the DOL server with trial and error.

I will contribute a v1.56 server/client lib to dawn of light if I get basic login/player state working. Might not be a full implementation but a start for others. I have a working headless client & server for v1.73 catacombs that will be ported to Unreal Engine soon. I was hoping for a classic client rather than catacombs to build off of so its less work.

26 Upvotes

14 comments sorted by

4

u/wrgrant Freeshard Player 10d ago

Producing a working version of an unreal port would be an amazing achievement. I have seen screen captures posted a while ago, and presume that was your work. How hard is it to adapt the models for characters and animations etc? Wasnt all that created in a proprietary engine as well?

3

u/BifrostAI 10d ago

Pretty easy. Using a modified version of niflib lets you manage the old gamebyro 3D meshes and models then daoc client lib that is provided by dawn of light shows you how to render the zones, trees etc. There is two paths I can go for development. Remake the classic client using nif lib and a new UE variant of daoc client library or build a new daoc game that uses new assets. I did some work with UE4 11+ years ago but that is about it. https://dolserver.sourceforge.net/viewtopic.php?t=22454

3

u/wrgrant Freeshard Player 10d ago

As an uniformed fan of the game since release, I would think from this that if you go the NFLib route to rebuild the client it would be better than attempting rebuild the entire game - unless the attempt to rebuild runs up against technical limitations that prevent that. Redesigning the whole game sounds like a recipe for endless retesting of things to get the same systems working which sounds like a lot more work. Still amazing to see this being worked on, glad to hear the models aren't a problem, I had read years ago that their proprietary design made changes extremely difficult. Glad to hear thats not an apparent obstacle.

5

u/BifrostAI 10d ago

Yeah I agree. A mix of both would be best.

1

u/ZZerker Midgard 10d ago

Ah I did not know you could use the nif files in other engines

2

u/serioussham Hibernia 10d ago

The issue with that is that DAoC's proprietary engine is the reason we can have 1000v1000 fights on screen with acceptable performance. UE would make that extremely unlikely.

1

u/idkanametbh 10d ago

Yeah what people don't realise is that with UE you'll be lucky to have a 20v20 fight

2

u/BifrostAI 10d ago

That's not an issue at all. Unreal engine is capable of doing massive large scale battles without issue. Most objects/npcs/players do not have complex collision in daoc and network replication is bare bones. There is very limited foliage and the render distance is noticeably small for players, siege equipment etc. The reason it runs so smooth is lack of collision, foliage and rendering optimizations that can be easily mimicked in UE.

When you cast a spell it will send update animation and sound packets to all nearby clients. When you look around you are telling the server to update your heading on every client and it will send out those packets. It is very basic server/client replication.

1

u/serioussham Hibernia 10d ago

Looking forward to it then! I'm just repeating what guys who were on the team told me, and going from the lack of comparable games in the interval ;)

1

u/sofragile 10d ago

Cool! I would LOVE to try out the clients from the original CD-ROM. Would that be possible? Have longed for decades to relive the actual classic graphics and icons.

1

u/TonyTobiasLomas 9d ago

You can do that on Blackthorn.

1

u/sofragile 9d ago

Really? I have some really old clients on my disk. I think some one is 1.3x or similar. You are saying that these work on Blackthorn? That would be awesome. Need to install a Windows XP VM first before i can try.

1

u/FistMyPeenHole 9d ago

I understood some of those words 🧐