Jingi Devlog : Phase 5 - Network Core

Published on
3 mins read
––– views
Demo

Introduce

I'm excited to announce the release of Jingi Beta version 0.5.0, marking a significant advancement in the game's development—particularly in networking. This update has been all about setting up the core network infrastructure for the MMORPG capabilities of Jingi.

What’s New?

  • Network Core Development: I've completed the network core for Jingi. This development is pivotal for those of you interested in creating your own ServerCore and might find the insights shared here useful.
  • Why a Custom Network Solution?: The decision to develop a custom network solution stems from my goal to support a large concurrent user load without the need for scene splitting that is common in many game servers. This architecture is also designed to be reusable for future projects, including potential metaverse servers.
  • Technical Insights:
    • Framework Choice: While the choice of programming language isn't critical, I recommend C# and specifically DotnetCore for superior performance and convenience. Despite my extensive experience with Java, Dotnet 7 offers better performance, and its ability to compartmentalize code into DotnetStandard libraries is incredibly handy, especially for use with Unity.
    • Design Overview: The network architecture includes a MasterServer that manages various StateServers, handling secure requests from players. It performs health checks on StateServers to balance the load and currently handles HTTP requests for future web-based player access.
    • Global Accessibility: StateServers are strategically located in different countries to ensure players worldwide can select the closest server for optimal ping. The character database is global, allowing players to access any StateServer with the same character.
  • Performance Testing: Initial tests on VPS solutions in Singapore and Japan show excellent performance and ping, with a two-core setup handling up to 30,000 TCP packets per second, each containing five sub-packets—this is estimated to support around 10,000 concurrent users.
  • Load Balancing: The architecture is somewhat similar to SpatialOS, where the MasterServer monitors the health of StateServers and can spin up additional servers in locations with high player concentrations.

Feedback Wanted

As I continue to refine and expand Jingi’s network capabilities, your feedback is invaluable. Whether you have technical questions about the network setup or suggestions for improvements, please share your thoughts.

Stay tuned for more updates as I push forward with developing this complex yet thrilling component of Jingi!