collinsmith / riiablo

Diablo II remade using Java and LibGDX
http://riiablo.com
Apache License 2.0
872 stars 99 forks source link

Create D2GS implementation using TCP with Netty #83

Open collinsmith opened 4 years ago

collinsmith commented 4 years ago

78 ended with attempting to create a D2GS impl using TCP with Netty. I think #82 will take a while, so I'd like to look into writing a TCP implementation in the meantime. It would be nice to establish a proper connection protocol and refine a lot of the work that was done with the current D2GS impl written using LibGDX's networking package as well as the experimenting that was done within https://github.com/collinsmith/riiablo/tree/0e5bb72045b66c9d6fc97812587c116471e33175/server/netty/src/com/riiablo/server/d2gs

I'm not sure if it's a good idea, but I'd like to have an API that is protocol agnostic to help with implementing UDP eventually (packets are very basic processed and cached on client threads and executed on main thread and then sent to correct channels).

collinsmith commented 4 years ago

85e5bc95b84d837c897837d8a99a4b299460f1d3 added a TCP implementation of D2GS using Netty. After basic testing, I'm happy with it and it seems to work fine, so I'll proceed to use it as my primary D2GS implementation until I can determine if it has any issues. Once I am satisfied, I'll replace or deprecate the existing D2GS implementation com.riiablo.server.d2gs in favor of this one and close this issue. This implementation should mark a good starting point for updating the APIs to work using a more UDP-friendly vernacular.

collinsmith commented 3 years ago

Netty module has an issue where sometimes the entities are placed at an offset position. Doesn't occur 100% of the time, but they behave correctly (no super adverse effects). This may be an issue with synchronizing the spawned player position (whose world is what's really offset). For now I'll use the original D2GS implementation, but this will be fixed when server authenticates movement commands.