Page 1 of 1

Seeking Guidance on Building an Emulator for Conquer Online from Scratch

Posted: Sat Jun 29, 2024 10:31 am
by Aldric
Hello everyone,

I am embarking on an exciting journey to build my own emulator for Conquer Online and would love to hear from anyone with experience or knowledge in this area. Specifically, I am looking for a clear outline of the key steps involved in creating an emulator from scratch. Any guidance, tips, or resources you could share would be greatly appreciated.

Thank you in advance for your assistance!

Seeking Guidance on Building an Emulator for Conquer Online from Scratch

Posted: Sun Jun 30, 2024 5:50 pm
by Spirited
Generally, there's not much to it - but it includes some more advanced programming topics. So you should probably study up a bit on threading, asynchronous patterns, and network sockets. But once you're comfortable, you'd just start with your socket system, then add cryptography to decrypt requests and encrypt responses, then add a database for persistence, and then you just handle one message type at time as the client requests it. It's honestly a bit of a pain to set up, but you can absolutely do it.

I'm working on a new wiki right now, but I'd suggest looking at other sources around the patch you want to target. If you want a reference for how I built Comet (a skeleton project that just implements login for a bunch of patches), then you can check that out here: https://gitlab.com/spirited/comet. My full history of commits should be there on the main branch. Best of luck to you.

Seeking Guidance on Building an Emulator for Conquer Online from Scratch

Posted: Mon Jul 01, 2024 7:16 am
by Aldric
Spirited wrote: Sun Jun 30, 2024 5:50 pm Generally, there's not much to it - but it includes some more advanced programming topics. So you should probably study up a bit on threading, asynchronous patterns, and network sockets. But once you're comfortable, you'd just start with your socket system, then add cryptography to decrypt requests and encrypt responses, then add a database for persistence, and then you just handle one message type at time as the client requests it. It's honestly a bit of a pain to set up, but you can absolutely do it.

I'm working on a new wiki right now, but I'd suggest looking at other sources around the patch you want to target. If you want a reference for how I built Comet (a skeleton project that just implements login for a bunch of patches), then you can check that out here: https://gitlab.com/spirited/comet. My full history of commits should be there on the main branch. Best of luck to you.
thank U so much <3
another q , if i want to target the latest Ver , what do i need to focus on , can't find any reference at all

Seeking Guidance on Building an Emulator for Conquer Online from Scratch

Posted: Tue Jul 02, 2024 6:11 pm
by Spirited
Aldric wrote: Mon Jul 01, 2024 7:16 am thank U so much <3
another q , if i want to target the latest Ver , what do i need to focus on , can't find any reference at all
That's unfortunately much harder to do. It requires that you either guess at what's changed (if they're minor offset changes to messages), or you reverse engineer the client by reading its disassembly. You may be able to find a bad project that does it well enough to get by on a higher patch, but latest is always going to be a challenge.

Seeking Guidance on Building an Emulator for Conquer Online from Scratch

Posted: Tue Jul 02, 2024 8:01 pm
by Omicron
Spirited wrote: Tue Jul 02, 2024 6:11 pm
Aldric wrote: Mon Jul 01, 2024 7:16 am thank U so much <3
another q , if i want to target the latest Ver , what do i need to focus on , can't find any reference at all
That's unfortunately much harder to do. It requires that you either guess at what's changed (if they're minor offset changes to messages), or you reverse engineer the client by reading its disassembly. You may be able to find a bad project that does it well enough to get by on a higher patch, but latest is always going to be a challenge.
To add to this, use the mac client.

Seeking Guidance on Building an Emulator for Conquer Online from Scratch

Posted: Wed Jul 03, 2024 4:15 pm
by Spirited
Omicron wrote: Tue Jul 02, 2024 8:01 pm
Spirited wrote: Tue Jul 02, 2024 6:11 pm
Aldric wrote: Mon Jul 01, 2024 7:16 am thank U so much <3
another q , if i want to target the latest Ver , what do i need to focus on , can't find any reference at all
That's unfortunately much harder to do. It requires that you either guess at what's changed (if they're minor offset changes to messages), or you reverse engineer the client by reading its disassembly. You may be able to find a bad project that does it well enough to get by on a higher patch, but latest is always going to be a challenge.
To add to this, use the mac client.
Oh yeah, thanks for the reminder - there's a tutorial on that here as well:
co-private-server-tutorials/client-how- ... g-t15.html