CHANGELOG of Diarkis Server
v0.2.13 からv0.8.1 の CHANGELOG
最新版のサーバドキュメントは こちら です。
NOTE: 別のバージョンのサーバドキュメントを参照される場合は URL の "current" の部分を対象のサーバのバージョンに置き換えることで参照をしていただけます。例:"v0.6.1"
v0.8.1 - Changelog
(UPDATE) UDP server outbound packet count excludes health check echo
v0.8.0 - Changelog
(BREAKING) Notifier is now part of server package
(UPDATE) MatchMaker ticket added a callback on matched member leave and new callbacks
(NEW) Error log now prints file location and function name
(NEW) POST /endpoint/type/:serverType/user/:userID added that stores request body parameters as user data
(BREAKING) Structured error code has changed from uint32 to uint16
(FIX) Code reference generator fixed
(NEW) Mesh added SharedData
v0.6.14 - Changelog
(UPDATE) SIGUSR1 controls debug mode including pprof enable/disable
v0.6.13 - Changelog
(UPDATE) Group added remoteJoinTries configuration
v0.6.12 - Changelog
(UPDATE) User package added panic catch
v0.6.11 - Changelog
(UPDATE) User package checks user struct instance for nil to avoid panic
v0.6.10 - Changelog
(FIX) Group leave bug with on mutex that was crashing the server process
v0.6.9 - Changelog
(FIX) Group fixed removal of the group ID from user data list when leaving a group
v0.6.4 - Changelog
(UPDATE) Static group member node management improved
(FIX) Group panic fixed on join and leave when server stress is very high
(UPDATE) Mesh reliable local command error log is now debug
v0.6.3 - Changelog
(FIX) UDP server outbound packet count excludes health check
v0.6.2 - Changelog
(UPDATE) MAXPROC removed
v0.6.0 - Changelog
(UPDATE) Mesh send and receive loop are now goroutines that match the number of CPU available
(UPDATE) WebSocket server added a new config useCustomPort bool
(FIX) Field and DM bug fix - Correct server type is now used
(NEW) Notifier module added
(UPDATE) Util added GetAsBytesArray, GetAsFloat32Array, ToBytesArray, and ToFloat32Array
(FIX) Bug fix - Room GetRoomID added nil check
(UPDATE) MARS added a verbose log on each announcement
(UPDATE) Room send and leave uses server-side roomID if necessary
(UPDATE) MARS-stats added timeout
(FIX) DM fixed blank cache when message is attempted to send to a non-existing user
(FIX) Field grid calculation corrected
(UPDATE) Field sync is now tick loop based
(UPDATE) Field disabled nearby grid sync
(UPDATE) HTTP GET /field/endpoint/type/:serverType/user/:uid/position/:x/:y/:z added for Field module
(NEW) SyncMap added
v0.5.1 - Changelog
(FIX) Room random join makes sure createdTime is sent to the client
(UPDATE) Debug commands added
(UPDATE) MARS stats no longer require a config file + log added log level set functions
(UPDATE) MARS mars-stats = ms is now exposed for diarkis-server-template
(UPDATE) MatchMaker added a check to make sure host userData.ID and client given UID match
(FIX) User added network protocol type retrieval functions and RandomJoin no longer mixes different network protocol types
(FIX) UDP server RUDP outbound buffer corrected when large number of outbound packets are queued
(FIX) Mesh reliable retry corrected
(UPDATE) Go client added Field module
(UPDATE) MARS default config log level is now info
(UPDATE) MARS stats tool can now be build with diarkis-cli
v0.5.0 - Changelog
(UPDATE) Room property sync added
(BREAKING) MARS CPU performance improvement and stability improvement with large number of servers
MARS data sent over mesh network message is compressed
MARS no longer creates response data on each message
MARS no longer sends retries as it is uncessary
(UPDATE) Mesh network reliable message retry adds counter to interval to avoid unecessary CPU stress
(UPDATE) WebSocket commands fixed and updated
(FIX) Static group no longer synchronize with remote servers and improved broadcast stability
(UPDATE) MARS added a configuration to change MARS sync mode: server roles to sync all mesh data
(UPDATE) HTTP added an endpoint to handle prelight for AJAX calls
(UPDATE) UDP server RUDP outbound buffer stability improved with large number of outboud packets
(UPDATE) UPD server and mesh network memory usage improved
(UPDATE) Room RandomJoin no longer mixes different network protocols
(UPDATE) User added functions to determin which network protool type each user client uses
v0.4.7 - Changelog
(Fix) Fixed room reservation incorrectly creates an extra reservation with empty user ID
v0.4.6 - Changelog
(Update) MARS improved the way it updates internal storage and manually invokes garbage collection to avoid unexpected CPU spike when large number of servers have been updated
(Fix) Mesh reliable retries are now individual goroutines instead of a single goroutine for improved performance
v0.4.5 - Changelog
(Fix) DirectMessage corrected the internal hashmap to manage direct message channels
(Update) DirectMessage now supports clients that re-connect to different servers
v0.4.4 - Changelog
(Fix) Room update get property command was broken after the room property update in v0.4.0
(Fix) Team matchmaking was broken after the room property update in v0.4.0
(Update) Internal mesh network now handles commands locally if the commands are issued from the same server process
(Update) Room logging improved
v0.4.3 - Changelog
(Update) Vault Peek now deletes expired item and invokes delete callback
(Update) Util added To...Array and added more unit tests
(Update) Field Sync bug fixed where there is no near grid reconnection the command next function is not called and combined packets maybe ignored
(Update) MatchMaker Add - adds timestamp in the remote node + Search - simplified result check loop and added debug logs
v0.4.2 - Changelog
(Update) Room TTL update is no longer controlled by member users, but mesh update
(Update) Server added MarkServerAsTakenIf to control the state of the server
v0.4.1 - Changelog
(Breaking) `room.SetOnRoomChange` added event flag to identify what changed using enums `room.MemberAdded`, `room.MemberRemoved`, and `room.PropertyChanged
(Fix) Room property (increment) update to trigger the callback of `room.SetOnRoomChange` fixed
(Fix) Mesh handleResponse checks Callbacked flag
(Update) MatchMaker team mesh command no longer uses deprecated mesh.Command
(Update) Room added SetOnRoomChangeByID
v0.4.0 - Changelog
(Fix) MatchMaker IssueTicket added SearchTries parameter to control when to give up search when finding 0 results
(Update) Util added StringArray and StringMap for concurent array and map operations without mutex lock
(Update) Util added StringArray and StringMap and MatchMaker seen uses util.StringArray
(Fix) Group Members is no longer an array to avoid potential concurrent map read and write errors
(Fix) Room properties are no longer a map internally to avoid potential concurrent map read and writee errors
(Update) Server added Taken() along with Online and Offline
(Update) Mesh pack added support for converting nil to an empty byte array
(Update) Util package added GetAsUint and ToInt... etc.
(Update) Util.GetAsUInt and util.To... aadded
(Update) Util package added generic GetAs... and GetAs...Array functions
(Update) User added GetAs...Array
(Update) Room added SetOnLeaveByID
(Update) HTTP file name renamed and changed the request timeout to be configurable
(Update) Room owner change event added
(Update Internal) Room no longer uses vault Static for allow empty
(Update) Room and User added Setup() for non UDP/TCP/WebSocket servers
v0.3.2 - Changelog
(Update) MatchMaker Ticket allows users that started their tickets at the same time to match right aways
(Update) MatchMaker IssueTicket checks for matching completion with OnMatch first instead of maxMembers
(Breaking) User removed SetAs... and GetAs... now returns two values (the second return value indicates the data validity)
(Update) Room TTL is no longer updated by accessing rooms and their data
v0.3.1 - Changelog
(Update) User data GetAs... added for every data type
(Update) UDP server receives and stores client local address via echo
(Update) Support for Tencent Cloud added
v0.3.0 - Changelog
(Fix) MatchMaker search with join flag false did not send a response with the correct command ID
(Update) HTTP added GET /endpoint/type/:serverType/user/:uid to target specific server type group to create a new user
(Update) Initial user data TTL is no longer connectionTTL * 3 but connectionTTL
(Update) Added SIGUSR1 debug vault data dump and SIGUSR2 debug log rotation
(Update) Room register adds the room immediately
(Deprecated) GET /auth/:uid deprecated
(Update) Group re-join sends a join event message now and user added SetOnNewConnection callback
v0.2.28 - Changelog
(Fix) Room Clock and Tick uses vault Peek to avoid unexpected update of room TTL internally
(Update) Random room join now creates a new room if search for random rooms fail
(Fix) Room reservation bug that incorrectly counts number of available slots to join fixed
(Update) Room added Chat features with chat logs (in memory storage only)
(Update) MatchMaker added IssueTicket
(Update) Group join no longer tolerates invalid group ID and terminates execution immediately
(Update) MatchMaker added host change event
(Update) Room added CancelReservationRemote added
(Update) Room reservation and cancelation commands can now be executed by non-owner clients
(Update) Room TTL min value is now 10 seconds
(Update) P2P metrics added
v0.2.27 - Changelog
(Update) Room CancelReservtionRemote added and the built-in command now usees it
(Fix) Room Reserve - bug fix owner user was added to reserve but never able to save the change
(Update) Room reservation and cancelation commands can now be executed by non-owner joined member users
(Update) MatchMaker IssueTicket implemented
(Breaking) Room added OnTickStop and all event callbacks are no longer arrarys of callbacks
(Update) Room added StopTick
(Update) New module DirectMessage (dm) added and C# added a new class DirectMessage
(Update) Room create added min value for TTL => 10 seconds
(Update) P2P metrics added
(Update) Room added GetRemoteProperty and GetRemoteProperties on the server
(Update) MARS metrics logging added projectID read from envC# Group bag fix - error message string set as group ID
v0.2.26 - Changelog
(Breaking) Room join removed properties from the callback for improved stability
(Update) Mesh added HandleCommand to deprecate Command
(Update) UDP server command executions are now separate goroutines for better throughput
(Update) Room random join added payload length check
(Breaking) MatchMaker added tag
(Update) Room added Exclusive events
(Update) UDP server force disconnect log adjusted and server logging adjusted
(Update) Server logging level for room adjusted
v0.2.25 - Changelog
(Update) Golang version 1.16.7 and above
(UPDATE) Group TTL update is triggered on mesh update NOT user keep alive for better performance w/ large number of members
(UPDATE) Added more verbose logging
(UPDATE) Metrics can now be grouped by server types instead of server network protocol types
(FIX) UDP server packet combine for UDP messages bug fix
(UPDATE) Mesh clears a response callback immediately after executing it
(FIX) RUDP server corrected the size of outbound packet when buffered packet and next-in-line packet size exceeds MTU
(UPDATE) Room added API to get max members and improved logs
v0.2.24 - Changelog
(NEW) MatchMaker and TeamMatchMaker built-in command implemenented
(Update) Internal update only: UDP server client state added P2P enabled flag
(Update) Room module added DeleteRoom
(Update) Metrics API for Prometheus added GET /metrics/v/3 to use gauge instead of counter
(FIX) Internal fix only: Mesh retry timeout - resend of retry fixed (no more delays)
(FIX) RUDP retry timeout configuration corrected
(FIX) Log level of Mesh module corrected
(FIX) Internal fix only: Field command fixed race condition that breaks the command call chain
(UPDATE) Internal update only: Room and Group send buffer add operation is no longer recursive
(UPDATE) Field module reconnection has less synchronization lag
(FIX) Field module corrected reconnect disappearance - Sync returns an empty array of users not in sight when reconnecting
(UPDATE) Field module no longer sends disappearance notifications on reconnect
(UPDATE) Alibaba Cloud support added
v0.2.23 - Changelog
MARS stats tool added number of rooms per server node
Static Group added to Group module
Field module now sync with near by grids
Room module OnDiscardCustomMessage callback now receives SID as well
JSON Metrics format corrected
v0.2.22 - Changelog
Add UserEntity.GetCoordinates() to return X and Y of a UserEntity to Field module
All commands must call next w/ an error when we see an error
Added new env to control application name and node type w/o changing the server code
WebSocket Migrate support added
Added DIARKIS_USE_STRUCT_ERR to switch between plain error response and structured error
Room mapping added sync limit (same as Field module syncLimit)
Added a sanity check for the offset against the length of buffer
WebSocket Room Broadcast internally uses Message and removed 4 byte header for message buffering
DIARKIS_NODE_TYPE renamed to DIARKIS_SERVER_TYPE
Matching TTL check corrected for deletion fixed
v0.2.21 - Changelog
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
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
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
DIARKIS_STACKDRIVER_LOG env added
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 golang.org/x/net 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 :
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)
最終更新