michal-kapala / ubi-gs

Emulators for Ubisoft's Game Service and Ubi.com network
https://gsconnect.ubisoft.com
MIT License
4 stars 2 forks source link

Separate the library & server components (suggestion) #8

Open Lekuruu opened 2 months ago

Lekuruu commented 2 months ago

I was thinking about splitting up the server and the gsconnect utils into separate parts, similar to what kinnay did with NintendoClients. This way, all required serialization utils could be provided with an easy-to-use and well documented python package, so that developers have an easier time implementing servers. However, this is just a suggestion. Leaving the servers in this repository is totally fine as well.

michal-kapala commented 2 months ago

I've already considered creating a standalone package solely for the ease of use (i sincerely hate python's import system).

This project is very similar to nintendo clients (library + example impl), however I am still unsure of the degree of universality of the GS servers. While Quazal SDK was designed as a product with extandability in mind and every game could have its own custom services defined at the protocol level, GS seems to be a more universal proprietary solution with well-defined, centralized service architecture designed specifically for Ubisoft. The router seems to handle most of the traffic and its list of message types looks complete.

The second thing is that there will be more dependency modules (mostly encryption algorithms, protocols and data serialization) and as of now it's easier for me to maintain them in a monorepo. Once I have most of the deps I will look into publishing a GS package.

For now all server implementations go in respective subdirs and all the dependency modules that are candidates for future package are placed in the root directory.