MoltenEngine icon indicating copy to clipboard operation
MoltenEngine copied to clipboard

Networking

Open Syncaidius opened this issue 3 years ago • 2 comments

Networking is considered a key area of a game engine to support features such as multiplayer, chat and rich presence.

The following features will be provided and supported, via Molten-specific networking built on Sockets:

  • [ ] Client-server - connectivity and management of players connected to a dedicated/central server
  • [ ] Peer-to-Peer - connectivity and management of directly-connected players via peer-to-peer
  • [ ] TCP/UDP Support
  • [ ] Streaming support - Likely via TCP
  • [ ] Packet-based communication - Data will be sent/received via Packet objects
  • [ ] Packet ordering - Correctly manage the order of received packets via internal ordering system
  • [ ] Vector and custom packing support - Reduce the size of packets where possible
  • [ ] Chat system - In-game chat system
  • [ ] Multiplayer lobby system - Management of players entering a server
  • [ ] Multiplayer authentication, role and permission system
  • [ ] Network prediction abstraction layer - Basic prediction algorithms will be provided via helper classes, but abstraction will be provided to allow more advanced, game-specific prediction to be implemented easily
  • [ ] SHTTP/HTTP Comms - Support for making HTTP request will be supported. Object serialization/deserialization will also be provided for handling XML/JSON data to and from REST/SOAP web APIs

Syncaidius avatar Jun 10 '22 11:06 Syncaidius

Would be nice if the networking library is fully modular, so simple things like "give me a tcp socket" or "do a broadcast to find games" can be overrideen with the steamworks / gog / epicgames / ... api

IceReaper avatar Jun 12 '22 13:06 IceReaper

@IceReaper there will be an abstraction layer, which Molten's own networking API (MNet) will implement, so it will be possible to replace MNet with an alternative networking system via that abstraction layer.

Syncaidius avatar Jun 12 '22 14:06 Syncaidius