CHANGELOG of Diarkis Server

CHANGELOG from v0.2.13 to v0.2.21 of Diarkis Server

Latest document is this.

v0.2.21 - Changelog

v0.2.21 Document

  • Field module NPC transport on auto-scale added

  • Structured error data added to the server and C# client

  • Field distance calculation now uses trigonometric formula for better accuracy

  • WebSocket server connection loop removed secondary loop to read message chunks in one go in order to avoid potential CPU stress

  • WebSocket server connection loop exists when state is discarded and FIN command does not update session TTL

  • User bug fix - WebSocket was not supporting userData.OnNewConnection

  • GetSidFromPayload now does not crush with invalid payload

  • Make the WebSocket read loop wait untill all commands are handled and then resume

  • MatchMaker added more validations for invalid matching ID

  • Metrics API added MatchMaker Search Count

  • user.GetCCU() added

  • Field added ServerSync to synchronize server-controlled data and added Npc to manage server-controlled data struct

  • Field UserEntity added GetSID() GetID() and GetDistance()

v0.2.20 - Changelog

v0.2.20 Document

  • WebSocket server is now able to handle packets exceed 8000 bytes and handle fragmented packets

  • Auto-port-finding range increased from 100 to 1000

  • Group join is now possible without having the origin server node and this makes Group completely de-centralized

  • Field grid division and assignment fixed

v0.2.19 - Changelog

v0.2.19 Document

  • Update Golang version to 1.16.7

  • Room migrate bug fix: redundant reconnect of the owner user

  • WebSocket normal packets update session TTL

  • TCP normal packets update session TTL

  • Vault update mutex lock no longer fails to unlock when panic

  • WebSocket now supports Field disappear

v0.2.18 - Changelog

  • UDP/RUDP batch send and read added (configurable) for improved performance on Linux

  • HTTP auth response JSON malformed when there are MARS and HTTP only in the cluster - fixed

  • Mesh SendMany checks type of error to determine if it has to send the same message to the next node


  • Connector added GetOpenPort

  • WebSocket server added optional packet encryoption and decryption

  • WebSocket server added Migrate function

v0.2.17 - Changelog

  • HTTP removed a configuration realtimeServers and now auto-detects available node types in the cluster

  • Mesh added mesh.GetNodeTypes

  • WebSocket server now handles EOF and no longer disconnects

  • WebSocket server added SetPublicEndPointWithPort added for setting up a pod with nginx

  • bin/tools/findport added for finding an available port for websocket + nginx

  • Connector server type added for deploying Diarkis with external server such as UE4 etc

  • DIARKIS_NODE_TYPE env option added to change node type

  • Room module added room migration

  • Random Join Room added polling to match maker to make sure random rooms are available for random search

  • WebSocket server added optional encryption and decryption by AES-256-CBC

v0.2.14 - Changelog

  • Room module - Join sends response before reconnect push packet (previously it was reconnect packet and then response packet)

  • User module - user.Get and user.Set no longer uses cached user object

  • Mesh module - Added a new function IsMyNodeOnline()

  • Config module - Added a new function ReadProperty()

  • HTTP server - Added a new configuration "realtimeServers" to dynamically manage real-time server nodes besides UDP, TCP, and WS

  • Removed UDP source address validation from RUDP SYN, ACK, and FIN handling operation to improve the handling of client address change

  • Added entry in boilerplae go.mod

  • Room join retrieves the node of the room's outbound endpoint BEFORE join operation and uses it for reconnect push AFTER the join operation for improved stability

  • Mesh moodule added GetMyNodeEndPoint()

  • MARS resets storage map when a database is deleted to avoid potential memory leak

  • Healthcheck added public UDP communication check for UDP server

  • UDP server manages RUDP connections by SID if SID is provided w/ SYN, ACK, and EACK

  • UDP server validates RUDP connection with SID if SID is provided w/ SYN to protect itself against SYN flood attacks

  • HTTP server added SetAllowOrigin(allowedOrigin string)

  • HTTP server added a new configuration useFixedPort to bind with fixed port instead of auto-srearch port

  • MARS stats tool added - ./bin/tools/ms <MARS address>:<MARS port>

  • HTTP server added HandleStaticFiles(uriRoot string, fsPath string) method

  • MARS stats tool added ./bin/tools/ms

  • Health check and MARS config path prefix is now of CWD

v0.2.13 - Changelog

  • Fixed metrics API for Prometheous: Metrics type counter was not correctly parsed in the latest version of Prometheus

  • src/ directory and symlinks from the server-side code removed

  • Mesh SendRequest local command is handled as remote command and remote command handlers are no longer go routines (all this to avoid concurrent map access)