Diarkis Engine Change Log

Version v0.9.31 - Tag v0.9.31

Versions

  • Server version v0.9.31
  • C# Client version v0.8.2
  • C++ Client version v0.5.17
  • Server Change Logs

    All

  • (FIX) DIARKIS_SHUTDOWN_TIMEOUT may break if depending on the way Diarkis server is initialized. The fix corrects this issue and the env takes effects correctly regardless of the way Diarkis server is initialized.
  • Version v0.9.30 - Tag v0.9.30

    Versions

  • Server version v0.9.30
  • C# Client version v0.8.2
  • C++ Client version v0.5.17
  • Server Change Logs

    All

  • (FIX) Fix command hijacking
  • (FIX) Fix echo stuck issue
  • (UPDATE) Mesh module cache resolved MARS address for as long as TTL lasts
  • (FIX) Vault added DelWithoutOnDelCallback to be used in User module to replace the same user with the ID with a new SID without invoking OnDel callbacks instead new callbacks OnSIDUpdate will be invoked
  • Version v0.9.29 - Tag v0.9.29

    Versions

  • Server version v0.9.29
  • C# Client version v0.8.2
  • C++ Client version v0.5.17
  • Server Change Logs

    All

  • (NEW) Support for Linode (LKS) added
  • (NEW) Dive module added
  • (NEW) Runtime log level change per log name added
  • (UPDATE) UDP config maxRetry default changed from 6 to 10
  • (UPDATE) Log module added LogLevel:$(levelName)
  • (UPDATE) Health check added a new flag mars to test communication with MARS
  • (UPDATE) mars-stats tool revived P2P-SUCCESS and P2P-ATTEMPTS
  • (UPDATE) Moved shutdown timeout management from vault to process and diarkis
  • (UPDATE) Log module name length max is now 10 and formatted logging added file path and improved accuracy
  • (UPDATE) MatchMaker ticket internal add stack errors for better traceability of errors
  • (UPDATE) HTTP debug APIs added
  • (BREAKING) Formatted log performance improved
  • (FIX) SIGUSR1 task + LogLevelChange task bug fixed
  • (FIX) HTTP endpoint API fixed the response when accessed over IPv6
  • (FIX) UDP and TCP Migrate bug fix: The former code was looking at server role instead of server type
  • (FIX) UDP and TCP client migration bug fixed (Migration was failing if the server uses custom type)
  • (FIX) User and Util modile's GetAs...Array's second return value will be false if the array contains one ore more elements with incorrect data type
  • (FIX) Outbound RUDP from the server had room for race condition affecting RUDP seq
  • (FIX) UDP echo was sending the response twice from the server
  • Room

  • (NEW) Room module added RelayTo and RelayToProfile commands
  • (UPDATE) Room state sync added key and value length check
  • (UPDATE) Added an error response to Join Room command
  • (UPDATE) Update no longer accepts a nil or an empty byte array
  • (FIX) Room migrate synchronizer.Decode moved to the error check
  • (FIX) Room migration fixed broken room states
  • (FIX) Room state sync Upsert no longer panic when the callback returns a nil or an empty byte array
  • (FIX) Bug fix Room module SetOnJoinByID callbacks were called while mutex lock as being held and matchmaker team search caused deadlock
  • (FIX) Bug fix: Room state update fails when linkToUser is given true
  • (FIX) Synchronizer bug fix where UDP unreliable sync was actually using RUDP
  • Group

  • (FIX) Random Join error response corrected
  • (FIX) Invalid group ID no longer causes fatal error (panic)
  • MatchMaker

  • (UPDATE) Added TicketLeave command and IssueTicket command sends back response
  • (UPDATE) MatchMaker Ticket create checks parameters
  • (UPDATE) MatchMaker Ticket added optional parameters AddProfileIDs and SearchProfileIDs
  • (UPDATE) SetOnLeaveTicketRoom callback added
  • (UPDATE) SetOnDeleteTicketRoom callback added
  • (UPDATE) MatchMaker Ticket goroutines checks server status to detect offline status
  • (BREAKING) MatchMaker Ticket parameters for search interval, tries changed
  • (FIX) MatchMaker Add always returns error
  • (FIX) MatchMaker Ticket fixes clock time becoming 0 seconds when addTimeout is below 1000 milliseconds
  • (FIX) MatchMaker fixed the case where ticket complete maybe called 2 times
  • (FIX) Bug fix MatchMaker Ticket moving to add phase was broken
  • (FIX) Members lockUser type assertion error that causes panic in MatchMaker Ticket fixed
  • (FIX) MatchMaker Ticket's internal search was missing return when rejecting found ticket rooms that are searcher user's room
  • (FIX) MatchMaker Ticket timeout extension was not working
  • (FIX) Members now updates userData.Data within its own mutex lock to avoid room for race condition when using MatchMaker Ticket
  • (FIX) Bug fix Room module SetOnJoinByID callbacks were called while mutex lock as being held and matchmaker team search caused deadlock
  • Metrics

  • (NEW) Metrics tool fixed and made available from application side
  • (NEW) MatchMaker added new metrics: Ticket complete time avg, min, and max
  • (UPDATE) Changed MatchMaker_Search to be counted per handleSearch and MatchMaker_Empty to be counted per handleSearch's empty result
  • (UPDATE) P2P metrics for success moved from server to p2p and both counter are now atomic.Int32
  • (UPDATE) MatchMaker ticket completion time metrics min now resets on every update
  • (FIX) MatchMaker Search corrected
  • (FIX) MatchMaker Ticket completion corrected
  • Mesh

  • (UPDATE) SendRequest callback is invoked when the request times out
  • Session

  • (UPDATE) Added MessageTo command and function
  • User

  • (FIX) User module fixed latency count
  • (FIX) Fixed the case of when connectionTTL is configured to be too short the user is discarded immediately
  • DM

  • (UPDATE) DM (DirectMessage) module uses Dive module internally for performance improvement
  • (UPDATE) SetOnClearCache callback added
  • (FIX) DM module bug fix: Sent UID was the receiver's instead of the sender's
  • Field

  • (BREAKING) Removed IsUserInSight function
  • Go Client

  • (NEW) DM module added
  • (NEW) RemoveOnPush added
  • (FIX) Group OnLeave fixed
  • C# Client

  • (UPDATE) Room migration added OnMigrate event to the client
  • (UPDATE) C# Packet.ConvertToBytesDictionary(byte[] bytes) added to unpack Room state sync push payload
  • (FIX) UDP Echo and corrected the data type of timestamp
  • (FIX) TCP Heartbeat added timestamp
  • (FIX) Room C# class typo and unwanted Console.WriteLine removed
  • (FIX) Fix panic when clients in Session disconnect
  • Version v0.9.28 - Tag v0.9.28

    Versions

  • Golang version 1.20
  • Server version v0.9.28
  • C# Client version v0.8.2
  • C++ Client version v0.5.9
  • Server Change Logs

    All

  • (BREAKING) Removed server.GetServerType()
  • (NEW) Added support for custom metrics
  • (NEW) Config module added GetAsStruct
  • (NEW) Log module added FormattedMessage
  • (NEW) Log module added new log level above verbose and below sys: network
  • (NEW) Log module added Verbosef, Networkf ... Fatalf added for formatted logging
  • (NEW) Metrics tool added
  • (NEW) Added HTTP debug APIs(GET /debug/server/list/type/$(server_type),GET /debug/endpoint/type/$(server_type)/user/$(user_id)/address/$(public_address))
  • (NEW) Add coderef gen for test package
  • (UPDATE) UDP server handleRUDPInterval configuration forces min value of 10ms
  • (UPDATE) Mesh locally handled send request response with error no longer logs as an error
  • (UPDATE) Metrics of Prometheus and JSON added type
  • (UPDATE) UDP server RUDP max retry changed from 4 to 6 and retry interval uses retry count to delay for performance improvement
  • (UPDATE) When creating a new user, remove user data with the same user ID if there is a previous SID associated with the user ID
  • (UPDATE) Mesh log level adjusted
  • (UPDATE) Mesh module SendRequest added a type validation for the input data
  • (UPDATE) Mesh Send, USend, SendMany, and USendMany also added data type validation
  • (FIX) HTTP server fixes an issue where all nodes are assumed as offline when some nodes are being terminated for endpoint API
  • (FIX) Metrics JSON fixed missing commas
  • (FIX) Vault module fixed vault.GetAll deadLock problem
  • (FIX) MARS no longer pools gzip writer because it somehow corrupts the compressed data
  • (FIX) EventEmitter mutex lock fixed: This also fixes MatchMaker built-in Search command
  • (FIX) Members module bug fix: Add may add more than max members
  • (FIX) Synchronizer bug fix where UDP unreliable sync was actually using RUDP
  • (FIX) Room state update fails when linkToUser is given true
  • Room

  • (BREAKING) Room's on join event and re-connect instruction order changed for improved performance and better flow control
  • (FIX) Room IncrProperty panic fixed when SetOnRoomChange callback is not assigned
  • (UPDATE) Room log level adjusted
  • MatchMaker

  • (NEW) MatchMaker added DebugDataDump for debugging
  • (NEW) MatchMaker added IsUserInTicketMatchmaking(ticketType, userData) bool
  • (NEW) MatchMaker metrics added Ticket add and complete
  • (UPDATE) MatchMaker Ticket performance improvements
  • (UPDATE) MatchMaker markAsComplete error falls back to timeout and ticket fetches room by roomID instead of from user
  • (UPDATE) MatchMaker ticket owner leave automatically cancels ticket
  • (UPDATE) MatchMaker Ticket added server push for ticket timeout when there is no ticket room
  • (UPDATE) MatchMaker Add and Search added parameter checks to avoid panic
  • (UPDATE) MatchMaker log level adjusted
  • (FIX) MatchMaker Ticket no longer allows, the owner user attempting to join its own matchmaking ticket room
  • (FIX) MatchMaker search fixes incorrectly searching unintended server nodes
  • (FIX) When search retry is 0, server target node list is empty
  • (FIX) room.SetOnJoinByID callbacks were called while mutex lock as being held and matchmaker team search caused deadlock
  • DM

  • (FIX) DM module fixed the breakage when node type is custom
  • Session

  • (NEW) Session module added
  • C++ Client Change Logs

  • (BREAKING) Room's on join event and re-connect instruction order changed
  • (NEW) Room added RelayProfile
  • Version v0.9.26 - Tag v0.9.26

    Versions

  • Golang version 1.20
  • Server version 0.9.25-a
  • C# Client version 0.8.2
  • C++ Client version 0.5.3
  • Server Change Logs

  • (FIX) UDP server new connection no longer has race condition duplicating multiple goroutines
  • (FIX) UDP server: outbound RUDP packets are no longer buffered because UDP buffers packets
  • Version v0.9.25-a - Tag v0.9.25-a

    Versions

  • Golang version 1.20
  • Server version 0.9.25-a
  • C# Client version 0.8.2
  • C++ Client version 0.5.3
  • Server Change Logs

  • (BREAKING) UPD server no longer tolerates deprecated client behavior that do not send SID with SYN and FIN packets
  • (UPDATE) MatchMaker Ticket no longer allows the owner user attempting to join its own room
  • (NEW) MatchMaker Ticket added auto-restart parameter
  • (FIX) UDP server blocks possibility of creating duplicate goroutines per connection
  • (FIX) UDP server no longer buffers outbound RUDP packets unnecessarily and Go UDP client SYN and FIN now sends SID
  • (UPDATE) MatchMaker Ticket add and remove uses matchmaker ticket internal ID to create hash to fix server addresses to distribute
  • (FIX) Room IncrProperty panic fix
  • (FIX) UDP server added check for internal callback onNewConnection added
  • (FIX) Room IncrProperty panic fix when no callback for SetOnRoomChange assigned
  • (NEW) MatchMaker added IsUserInTicketMatchmaking(ticketType, userData) bool
  • (UPDATE) Mesh locally handled send request response with error no longer logs as an error
  • (NEW) Log module added Network log level
  • (FIX) USendMany and SendMany receiver failed to relay messages to other destination servers
  • (FIX) HTTP server realtime server selection no longer uses copy for better performance
  • (FIX) MatchMaker bug fix on removeFromMatchmaking on room join error
  • (FIX) Corrected mesh USendMany that was sending sendMany
  • (NEW) AddTo, SearchFrom, and SearchWithRangeFrom are now labeled as experimental
  • (FIX) MatchMaker IssueTicket is no longer public because it is not meant to be used from the application but via StartTicket
  • Go Client Change Logs

  • (FIX) Go UDP client added SID bytes to SYN and FIN packet
  • Version v0.9.25 - Tag v0.9.25

    Versions

  • Golang version 1.20
  • Server version 0.9.27
  • C# Client version 0.8.2
  • C++ Client version 0.5.3
  • Server Change Logs

  • (UPDATE) MatchMaker Ticket no longer allows the owner user attempting to join its own room
  • (NEW) MatchMaker Ticket added auto-restart parameter
  • (FIX) UDP server blocks possibility of creating duplicate goroutines per connection
  • (FIX) UDP server no longer buffers outbound RUDP packets unnecessarily and Go UDP client SYN and FIN now sends SID
  • (UPDATE) MatchMaker Ticket add and remove uses matchmaker ticket internal ID to create hash to fix server addresses to distribute
  • (FIX) Room IncrProperty panic fix
  • (FIX) UDP server added check for internal callback onNewConnection added
  • (FIX) Room IncrProperty panic fix when no callback for SetOnRoomChange assigned
  • (NEW) MatchMaker added IsUserInTicketMatchmaking(ticketType, userData) bool
  • (UPDATE) Mesh locally handled send request response with error no longer logs as an error
  • (NEW) Log module added Network log level
  • (FIX) USendMany and SendMany receiver failed to relay messages to other destination servers
  • (FIX) HTTP server realtime server selection no longer uses copy for better performance
  • (FIX) MatchMaker bug fix on removeFromMatchmaking on room join error
  • (FIX) Corrected mesh USendMany that was sending sendMany
  • (NEW) AddTo, SearchFrom, and SearchWithRangeFrom are now labeled as experimental
  • (FIX) MatchMaker IssueTicket is no longer public because it is not meant to be used from the application but via StartTicket
  • Go Client Change Logs

  • (FIX) Go UDP client added SID bytes to SYN and FIN packet
  • C# Client Change Logs

  • (BREAKING) Room on join and re-connect order changed for better performance and better flow control
  • Version v0.9.24 - Tag v0.9.24

    Versions

  • Golang version 1.20
  • Server version 0.9.24
  • C# Client version 0.8.2
  • C++ Client version 0.5.3
  • Server Change Logs

  • (NEW) MatchMaker Ticket added MarkTicketAsComplete
  • Go Client Change Logs

  • (UPDATE) Go client updated to support new room join sequence
  • (UPDATE) Go client Room keeps SetupOnJoinEvent as deprecated for backward compatibility
  • Version v0.9.23 - Tag v0.9.23

    Versions

  • Golang version 1.20
  • Server version 0.9.23
  • C# Client version 0.8.2
  • C++ Client version 0.5.3
  • Server Change Logs

  • (UPDATE) Room relay profile command added
  • (BREAKING) MatchMaker room's property related function added second value
  • (FIX) UDP server's outbound RUDP packet buffer size is reduced to 5 from 1000 b/c it is impossible to combine that many packets and it consumes memory for nothing + replaced dmutex with sync.RWMutex in RUDP
  • (FIX) UDP server memory leak fixed
  • (FIX) Added getGzipWriter and putGzipWriter functions for improved memory performance in MARS and mesh
  • (FIX) MatchMaker Ticket bug fix: Broadcast may send duplicate message when members are on the same server
  • C# Change Logs

  • (NEW) Room relay profile command added
  • C++ Change Logs

  • (UPDATE) Added GroupBase and TcpBase in vs2017 project
  • (NEW) Added SendTicketBroadcast in base class for MatchMaker
  • (UPDATE) Added arg allowEmpty in Group RandomJoin
  • (UPDATE) Added ByteToBytesList func to Base Class
  • (FIX) Fixed xsx build error
  • (FIX) Fixed tcp initialization for ps4/ps5
  • (UPDATE) Change port bind availability for only xdk
  • (FIX) Fix ProcessStartP2PSyncPush
  • (UPDATE) Support multiple peer address added to P2P
  • Version v0.9.22 - Tag v0.9.22

    Versions

  • Golang version 1.20
  • Server version 0.9.22
  • C# Client version 0.8.1
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) Room join's internal operation order changed (on join)
  • (FIX) Group join random bug fix
  • (UPDATE) Room added Relay that sends a message to all members of the room except for the sender and the message is not combined
  • (UPDATE) Group added SetOnTick callbacks
  • (FIX) Room migration bug fix: broadcast and message buffer interval was lost after 2nd migration and causes message duplicates
  • (UPDATE) Replaced errors.New with util.NewError for improved error traceability
  • (UPDATE) Group's create no longer allows TTL to be smaller than 10 seconds and allowEmpty and join cannot be both false
  • (FIX) Bug fix: User and Util GetAs... functions' second returned value flag will be true if there is a value regardless of validity of the data type
  • (FIX) Fix memory leak in RUDP receive loop
  • (UPDATE) User added GetUserBySID as an alias of GetUserByID
  • (UPDATE) DM added a callback to allow declining to receive messages
  • (FIX) Bug fix matchmaker room GetMemberSIDByUID was broken
  • (FIX) Group and Field modules' Before... and After... functions' syntax now matches Room
  • (UPDATE) MatchMaker Ticket added StartTicketBackfill and StopTicketBackfill
  • (UPDATE) MatchMaker ticket added Kick out by owner
  • Version v0.9.21 - Tag v0.9.21

    Versions

  • Golang version 1.19
  • Server version 0.9.21
  • C# Client version 0.8.1
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) User added GetUserByUID to retrieve user by user ID instead of user SID
  • (UPDATE) MatchMaker Ticket added SetOnTicketMemberJoined, SetOnTicketMemberLeave, SetOnTicketMemberJoinedAnnounce, SetOnTicketMemberLeaveAnnounce events
  • (UPDATE) MatchMaker Ticket auto-cancels when the owner user is no longer available
  • Version v0.9.20 - Tag v0.9.20

    Versions

  • Golang version 1.19
  • Server version 0.9.20
  • C# Client version 0.8.1
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) Room Broadcast bug fix: auto correction of room ID become empty while joining
  • (UPDATE) Members added GetLimit
  • Version v0.9.19 - Tag v0.9.19

    Versions

  • Golang version 1.19
  • Server version 0.9.19
  • C# Client version 0.8.1
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) MatchMaker bug fix: key delimiters could interrupt with user given matchingID
  • (FIX) MatchMaker bug fix: Ticket pauses unexpectedly when room join fails
  • Version v0.9.18 - Tag v0.9.18

    Versions

  • Golang version 1.19
  • Server version 0.9.18
  • C# Client version 0.8.1
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) MatchMaker Remove bug fix: Remove did not delete all documents with the same unique ID
  • (FIX) DM bug fix on payload length check for disconnect command
  • (FIX) DM bug fix: Disconnect did not properly remove cached data on user and delivery disconnect message + Added response on Disconnect
  • (UPDATE) Synchronizer Encode fixed panic case when a nil is passed as *Properties + Room Broadcast auto-corrects input roomID if it is incorrect
  • (UPDATE) DM message added response
  • (UPDATE) Room (Support) Objects with Room state sync fixed initial synchronization of all states and Objects now supports RUDP and UDP again
  • (UPDATE) MatchMaker Remove uses a struct instead of a map to improve performance
  • Version v0.9.17 - Tag v0.9.17

    Versions

  • Golang version 1.19
  • Server version 0.9.17
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) Room bug fix: SetOn...ByID callbacks get invoked on different room IDs
  • (FIX) Room SetOnRoomPropertiesUpdate was broken and minor code cleaning in room and user
  • (FIX) HTTP URI pattern match with dynamic parameters now prevents URIs with extra parameters and/or paths from matching
  • Go Client Change Logs

  • (FIX) Go UDP Client fixed a bug on handling combined packets
  • (FIX) Go UDP client prevents callback invocation if it is a nil
  • Version v0.9.16 - Tag v0.9.16

    Versions

  • Golang version 1.19
  • Server version 0.9.16
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) Go UDP client no longer attempts to invoke nil callbacks
  • Version v0.9.15 - Tag v0.9.15

    Versions

  • Golang version 1.19
  • Server version 0.9.15
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) MatchMaker AddTo and Search...From did not work as expected where there is a single HTTP server
  • (FIX) room.Join panics when message is nil
  • Version v0.9.14 - Tag v0.9.14

    Versions

  • Golang version 1.19
  • Server version 0.9.14
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) MatchMaker added DebugDataDump, DebugDataDumpWriter and Room added DebugDataDump
  • (UPDATE) Go UDP and TCP clients added Die() to add ungraceful disconnect
  • (FIX) Mesh initial sync check now uses dedicated flag to avoid unnecessary complexity in logic
  • Version v0.9.13 - Tag v0.9.13

    Versions

  • Golang version 1.19
  • Server version 0.9.13
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) MatchMaker Ticket added AddTo, SearchWithRangeFrom, and SearchFrom to target specific servers
  • Version v0.9.12 - Tag v0.9.12

    Versions

  • Golang version 1.19
  • Server version 0.9.12
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) MatchMaker timeout notification to the user clients is now sent to all members instead of owner only
  • Version v0.9.11 - Tag v0.9.11

    Versions

  • Golang version 1.19
  • Server version 0.9.11
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) P2P address sync using Room now caches encryption key bytes so that invoking P2P address sync multiple times will not cause the encryption keys to change
  • (UPDATE) MatchMaker search now finds duplicate items with latest TTL per internal search
  • (FIX) Field - bug fix => handleChangeGrid added check for nil on sidmap returned data
  • (UPDATE) MatchMaker Ticket added GetTicketType
  • (UPDATE) Field Sync ignores the call when the server is in offline mode to avoid unexpected server re-connect operations
  • (UPDATE) MatchMaker Ticket added a callback OnMatchedTicketCanceled for non-ticket-owner users to capture ticket time out and or cancel
  • Version v0.9.10 - Tag v0.9.10

    Versions

  • Golang version 1.19
  • Server version 0.9.10
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) Server code references include comments
  • Version v0.9.9 - Tag v0.9.9

    Versions

  • Golang version 1.19
  • Server version 0.9.9
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (NEW) MatchMaker added debug data dump functions
  • Version v0.9.8 - Tag v0.9.8

    Versions

  • Golang version 1.19
  • Server version 0.9.8
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (FIX) Field bug fix on x, y position that are larger than fieldSize
  • (FIX) Field bug fix on disappear not called when grid of a user changes (this happens only on the same server users) + no longer calls on disappear non stop
  • (FIX) Field no longer sends reconnect instruction to the client if it has done so already
  • (FIX) Field added fix for disappear message may not be delivered when reconnecting
  • (UPDATE) Field brought back auto-reconnect when the number of grids change
  • (UPDATE) Field each user sync is a goroutine now and changed default fileSize and fieldOfViewSize to improve performance
  • Version v0.9.7 - Tag v0.9.7

    Versions

  • Golang version 1.19
  • Server version 0.9.7
  • C# Client version 0.8.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (UPDATE) Room SetOnJoinByID, SetOnJoinCompleteByID, SetOnLeaveByID, SetOnRoomChangeByID now supports multiple callbacks
  • (NEW) Room state sync added to room module
  • (NEW) Synchronizer added outbound packet combination
  • (UPDATE) RoomSupport Object is now Room State Sync (Unity sample does not sync when a user joins a room...)
  • (NEW) HTTP server added support for content-type application/json
  • (NEW) HTTP server added ForceEndPointAPIV1Response for backward compatibility
  • C# Client Change Logs

  • (UPDATE) C# client v0.8.0 to support new RoomSupport Object
  • Version v0.9.6 - Tag v0.9.6

    Versions

  • Golang version 1.19
  • Server version 0.9.6
  • C# Client version 0.7.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (UPDATE) Synchronizer module added
  • (UPDATE) Room state synchronization added
  • (UPDATE) Mesh uses struct instead of map for improved performance
  • (UPDATE) Mesh supports struct as data instead of map only for improved performance
  • Version v0.9.5 - Tag v0.9.5

    Versions

  • Golang version 1.19
  • Server version 0.9.5
  • C# Client version 0.7.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (FIX) Removed MAXPROC for better CPU usage
  • (UPDATE) Field overhauled to handle more CCU
  • Version v0.9.3 - Tag v0.9.3

    Versions

  • Golang version 1.19
  • Server version 0.9.3
  • C# Client version 0.7.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (FIX) MatchMaker range compile added support for different pattern cases: 0, 1 keys w/ multiple elements and more than 2 keys w/ multiple elements
  • Version v0.9.2 - Tag v0.9.2

    Versions

  • Golang version 1.19
  • Server version 0.9.2
  • C# Client version 0.7.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (FIX) MatchMaker ticket removed duplicates from search properties and improved performance
  • Version v0.9.1 - Tag v0.9.1

    Versions

  • Golang version 1.19
  • Server version 0.9.1
  • C# Client version 0.7.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (UPDATE) MatchMaker ticket added SetTicketProperty, GetTicketProperty, UpdateTicketProperty
  • (UPDATE) MatchMaker added ApplicationData to Ticket
  • (FIX) Group fixed potential panic when a large number of users join a single room in a very short window of time
  • (FIX) Mesh fixed potential memory leak with split message buffer map
  • (UPDATE) MatchMaker ticket added SetTicketProperty, GetTicketProperty, UpdateTicketProperty
  • (UPDATE) MatchMaker added ApplicationData to Ticket
  • (FIX) Group fixed potential panic when a large number of users join a single room in a very short window of time
  • (FIX) Mesh fixed potential memory leak with split message buffer map
  • Version v0.9.0 - Tag v0.9.0

    Versions

  • Golang version 1.19
  • Server version 0.9.0
  • C# Client version 0.7.0
  • C++ Client version 0.3.2
  • Server Change logs

  • (UPDATE) UDP server outbound packet count excludes health check echo
  • (UPDATE) mesh.OnInitialSync callback added
  • (FIX) Group join and leave panic when server stress is high fixed
  • (UPDATE) Static group remote member node management improved
  • (FIX) Group new user handling corrected on data type assertion
  • (UPDATE) util GetAsBytes and ToBytes fixed
  • (UPDATE) util ToBytes and GetAsBytes fixed when given an invalid hex encoded string
  • (UPDATE) HTTP added OnEndPointAPIResponse and smap internally changed GetAs... To... to use util
  • (FIX) Group leave fixed group ID removal from user data list
  • (UPDATE) Util added CreateAddressID and GetAddressFromAddressID
  • (UPDATE) HTTP OnEndPointAPIResponse callback parameter changed and callback invocation time changed
  • (UPDATE) User package added panic catch
  • (UPDATE) matching.HasTicket() added
  • (FIX) Group redundant join attempts changed from 100 to 4 to improve the server stress
  • (FIX) Group formally redundant join is now called async remote join determines the list of nodes to try first once for better performance
  • (BREAKING) MatchMaker P2P payload format changed + C# client v0.7.0 changed accordingly
  • (UPDATE) Group added remoteJoinRetries config
  • (FIX) Bug fix P2P local address collecting logic does not kick in without having at least one callback assigned to server.OnKeepAlive
  • (FIX) Server corrected the way UDP collects client local address list for P2P - bug fix
  • (FIX) Bug fix - MatchMaker on time out the room is deleted immediately
  • (UPDATE) MatchMaker Ticket removed internal continue for improved stability
  • (UPDATE) MatchMaker ticket added check for state in search and start checks for immediate failure for better stability
  • (UPDATE) MatchMaker added MarkAsCompleteWhenExpire
  • (FIX) Bug fix MatchMaker count as complete
  • (UPDATE) MatchMaker added FindTicket
  • (UPDATE) MatchMaker ticket added functions for the ticket owner to get member data
  • (BREAKING) MatchMaker no longer uses Room, instead it has its own internal room mechanism in order to be used side by side with Room and support multiple tickets being issued
  • (UPDATE) MatchMaker ticket added OnTicketTimeout callback
  • (FIX) UDP server checks packet size to prevent the packet size exceeds buffer size to be sent in order to avoid panic
  • (UPDATE) MatchMaker search improved expired item purge for better performance
  • (FIX) Bug fix UDP server handing health check packet should discard the packet after it is handled
  • (UPDATE) MatchMaker IssueTicket added error check when issuing a new ticket fails
  • (UPDATE) MatchMaker ticket now uses ticket type as part of user data key to control exclusion
  • (BREAKING) Room: 1. NewRoom returns an error if allowEmpty=false and join=false is given. 2. Room support update Obj sends a response
  • (UPDATE) MatchMaker Ticket allows multiple tickets with different ticket types
  • (BREAKING) OnSIGUSR1 OnSIGUSR2 callbacks now requires /tmp/DIARKIS_SIGUSR1 and /tmp/DIARKIS_SIGUSR2 with task name
  • (UPDATE) matching.Client added UserData which is a copy of user property data (copy is made when joining or creating)
  • (FIX) util.ParseID no longer panics with invalid string is given and C# MatchMaker on complete flag bug fixed
  • (FIX) C# Room class Get... checks for room ID and decide not to send message to the server + OnOwnerChange owner ID bug fix
  • (FIX) Room message with invalid payload no longer causes panic
  • (UPDATE) MatchMaker ticket now allows search with range and SearchWithRange added
  • (UPDATE) Room message checks for invalid payload with no message byte array
  • (FIX) Room TTL update edge case bug fix - when a user joins an empty room 2 seconds or less before TTL expires, the room gets deleted even after successful join b/c TTL update loop runs every 2 seconds - successful join updates TTL
  • (UPDATE) MatchMaker Ticket broadcast command implemented ver=1 cmd=224
  • (FIX) UDP server RUDP handle Dat and Rst checks the length of udp packet to avoid panic
  • (FIX) DM bug fix - when the user unexpected disconnect and reconnect before user data is discarded, the reconnect user is deleted intentionally
  • (FIX) MatchMaker bug fix user data update done on a copy instead and caused room create/join to fail
  • (FIX) Matchmaker searchmap bug fix where some keys were never removed causing memory leak
  • (FIX) Bug fix user GetClientAddr now considers UDP enableP2P config and room p2p sync also considers UDP enableP2P config
  • (FIX) MatchMaker ticket bug fix - ticket might hang when ticket.add fails
  • (FIX) Bug fix - User GetAsUint8Array may fail to read correctly if the user data has been encoded and decoded back
  • (UPDATE) MatchMaker ticket leave from room error is no longer treated as an error b/c even if it fails, the outcome is the same that the user is not in the room
  • (UPDATE) User added CreateNewUser and matchmaker now uses that to avoid unintentional override of user data when copying
  • C# Client Change Logs

  • (UPDATE) C# CatchOnReconnect added timeout
  • (BREAKING) MatchMaker P2P payload format changed + C# client v0.7.0 changed accordingly
  • (UPDATE) C# client P2P class added SetEncryptionKeys(...) and it now supports packet encryption/decryption for peer-to-peer
  • C++ Client Change Logs

  • (UPDATE) C# P2P class error handling support added
  • (FIX) Check for packets over 1300 bytes in P2P and treat them as an error. Disconnect cannot be executed when a P2P connection has not been established.
  • Go Client Change Logs

  • (FIX) Go client fixed CatchOnReconnect
  • (FIX) Go UDP client corrected inbound packet handling of combined packets
  • Version 0.8.1 - Tag v0.8.1

    Versions

  • Golang version 1.18
  • Server version 0.8.1
  • C# Client version 0.6.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (UPDATE) UDP server outbound packet count excludes health check echo
  • Version 0.8.0 - Tag v0.8.0

    Versions

  • Golang version 1.18
  • Server version 0.8.0
  • C# Client version 0.6.0
  • C++ Client version 0.3.2
  • Server Change Logs

  • (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
  • C# Client Change Logs

  • (NEW) OnNotification event added for Notifier support to UDP and TCP client classes
  • (UPDATE) C# MatchMaker IssueTicket parameter now has a default value
  • C++ Client Change Logs

  • (FIX) P2P fixed the issue with hole punching when there are multiple local addresses available
  • (UPDATE) P2P added support for WSL2 Ubuntu 20.04 to retrieve local addresses
  • (UPDATE) Socket error reason API added for the application to retrieve the error reason
  • Version 0.6.24 - Tag v0.6.24

    Versions

  • Golang version 1.18
  • Server version 0.6.24
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (NEW) Metrics backported custom metrics for Prometheus from v0.9.x
  • (FIX) Bug fix: Room GetNumberOfRoomMembers gave two 0s as current members and max members if the room was not found
  • (FIX) UDP's RUDP inbound packet buffer memory leak bug fix
  • Version 0.6.21 - Tag v0.6.21

    Versions

  • Golang version 1.18
  • Server version 0.6.21
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (FIX) Bug fix Notifier interval is supposed to be in second
  • Version 0.6.20 - Tag v0.6.20

    Versions

  • Golang version 1.18
  • Server version 0.6.20
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) Sever code reference auto-gen updated
  • (UPDATE) Debug LogLevelChange added debug level in the rotation
  • (FIX) Mesh message TTL fixed
  • Version 0.6.19 - Tag v0.6.19

    Versions

  • Golang version 1.18
  • Server version 0.6.19
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) Group handleRemoteMeshNodeJoin creates response byte array in the mutex lock to avoid concurrent map access
  • (UPDATE) HTTP response added mutex lock for response headers
  • (FIX) Mesh added internal message map cleaner goroutine
  • Version 0.6.18 - Tag v0.6.18

    Versions

  • Golang version 1.18
  • Server version 0.6.18
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (BREAKING) SIGUSR1 LogRotate changed to LogLevelChange
  • (UPDATE) MatchMaker map shrink added length check
  • (FIX) Bug fix: MatchMaker searchmap clean up was incomplete leading to memory leak
  • Version 0.6.17 - Tag v0.6.17

    Versions

  • Golang version 1.18
  • Server version 0.6.17
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (BREAKING) SIGUSR1 and SIGUSR2 callbacks now uses task names to control which callback to invoke
  • Version 0.6.16 - Tag v0.6.16

    Versions

  • Golang version 1.18
  • Server version 0.6.16
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) MatchMaker search improved its expired data purge
  • (FIX) UDP server fixed health check packet handling where it should have not continued when a health check packet is handled
  • Version 0.6.15 - Tag v0.6.15

    Versions

  • Golang version 1.18
  • Server version 0.6.15
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) MatchMaker internal data refactored for improved performance
  • Version 0.6.14 - Tag v0.6.14

    Versions

  • Golang version 1.18
  • Server version 0.6.14
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) SIGUSR1 controls debug mode including pprof enable/disable
  • Version 0.6.13 - Tag v0.6.13

    Versions

  • Golang version 1.18
  • Server version 0.6.13
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) Group added remoteJoinTries configuration
  • Version 0.6.12 - Tag v0.6.12

    Versions

  • Golang version 1.18
  • Server version 0.6.12
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) User package added panic catch
  • Version 0.6.11 - Tag v0.6.11

    Versions

  • Golang version 1.18
  • Server version 0.6.11
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (UPDATE) User package checks user struct instance for nil to avoid panic
  • Version 0.6.10 - Tag v0.6.10

    Versions

  • Golang version 1.18
  • Server version 0.6.10
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (FIX) Group leave bug with on mutex that was crashing the server process
  • Version 0.6.9 - Tag v0.6.9

    Versions

  • Golang version 1.18
  • Server version 0.6.9
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (FIX) Group fixed removal of the group ID from user data list when leaving a group
  • Version 0.6.4 - Tag v0.6.4

    Versions

  • Golang version 1.18
  • Server version 0.6.4
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (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
  • Version 0.6.3 - Tag v0.6.3

    Versions

  • Golang version 1.18
  • Server version 0.6.3
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (FIX) UDP server outbound packet count excludes health check
  • Version 0.6.2 - Tag v0.6.2

    Versions

  • Golang version 1.18
  • Server version 0.6.2
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

    Version 0.6.0 - Tag v0.6.0

    Versions

  • Golang version 1.18
  • Server version 0.6.0
  • C# Client version 0.5.1
  • C++ Client version 0.3.1
  • Server Change Logs

  • (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
  • C# Change Logs

  • (UPDATE) WebSocket now supports wss
  • (FIX) C# bug fix for UDP client local address registration via Echo stops working after server reconnect
  • C++ Change Logs

  • (FIX) Fixed a bug that caused p2p to Disconnect when calling send() API during a p2p hole punch
  • (FIX) Bugfix rudp eack packets are always sent back regardless of sequence number
  • Version 0.5.1 - Tag v0.5.1

    Versions

  • Golang version 1.18
  • Server version 0.5.1
  • C# Client version 0.5.0
  • C++ Client version 0.3.1
  • Server Change Logs

  • (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
  • C# Client

  • (UPDATE) C# cli removed manual P2P test
  • (UPDATE) C# P2P class removed unused private property
  • C++ Client

  • (UPDATE) support cli build for Include in Diarkis namespace
  • (FIX) P2P connection timeout corrected
  • (UPDATE) xbox cmake build added
  • (UPDATE) P2P disconnect is now executed immediately
  • (FIX) RoomCreate command string name was missing
  • (FIX) Fixed a bug that prevented P2P from connecting with more than 3 clients
  • Version 0.5.0 - Tag v0.5.0

    Versions

  • Golang version 1.18
  • Server version 0.5.0
  • C# Client version 0.5.0
  • C++ Client version 0.2.6
  • Server Change Logs

  • (UPDATE) Room property sync added
  • (BREAKING) MARS CPU performance improvement and stability improvement with large number of servers
  • (UPDATE) Mesh network reliable message retry adds counter to interval to avoid unnecessary 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 preflight for AJAX calls
  • (UPDATE) UDP server RUDP outbound buffer stability improved with large number of outbound packets
  • (UPDATE) UPD server and mesh network memory usage improved
  • (UPDATE) Room RandomJoin no longer mixes different network protocols
  • (UPDATE) User added functions to determine which network protocol type each user client uses
  • C# Client Change Logs

  • (UPDATE) Room property sync flag added to UpdateProperties and SyncProperties added
  • (UPDATE) WebSocket classes added for WebGL support
  • (UPDATE) UDP/TCP/WebSocket Connection timeout added
  • C++ Client Change Logs

  • (UPDATE) Room property sync flag added to UpdateProperties and SyncProperties added
  • (UPDATE) UDP/TCP Connection timeout added
  • (UPDATE) DirectMessage added
  • (UPDATE) Added missing Room functionalities added
  • (UPDATE) Custom implementation of getifaddrs / freeifaddrs added for Android
  • (UPDATE) PS4, 5 added P2P with local address list
  • (FIX) Bug fix P2P remote clients closing connection caused other clients to close their connections as well
  • Version 0.4.7 - Tag v0.4.7

    Versions

  • Golang version 1.18
  • Server version 0.4.7
  • C# Client version 0.4.3
  • C++ Client version 0.2.4
  • Server Change Logs

  • (FIX) Room reservation was incorrectly create an extra reservation with empty user ID
  • C# Change Logs

    C++ Change Logs

    Version 0.4.6 - Tag v0.4.6

    Versions

  • Golang version 1.18
  • Server version 0.4.6
  • C# Client version 0.4.3
  • C++ Client version 0.2.4
  • Server Change Logs

  • (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
  • C# Change Logs

  • p2p local address improvements
  • C++ Change Logs

  • (FIX) Fixed a bug that caused hole punch failure when a single local address was used
  • Version 0.4.5 - Tag v0.4.5

    Versions

  • Golang version 1.18
  • Server version 0.4.5
  • C# Client version 0.4.2
  • C++ Client version 0.2.4
  • Server Change Logs

  • (FIX) DirectMessage corrected the internal hashmap to manage direct message channels
  • (UPDATE) DirectMessage now supports clients that re-connect to different servers
  • C# Change Logs

  • (UPDATE) Room class added UpdateObject and OnObjectUpdate event
  • (UPDATE) Room class added SyncObjects and OnObjectSync event
  • C++ Change Logs

    Version 0.4.4 - Tag v0.4.4

    Versions

  • Golang version 1.18
  • Server version 0.4.4
  • C# Client version 0.4.1
  • C++ Client version 0.2.4
  • Server Change Logs

  • (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
  • C# Change Logs

    C++ Change Logs

    Version 0.4.3 - Tag v0.4.3

    Versions

  • Golang version 1.18
  • Server version 0.4.3
  • C# Client version 0.4.1
  • C++ Client version 0.2.4
  • Server Change Logs

  • (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
  • C# Change Logs

    C++ Change Logs

    Version 0.4.2 - Tag v0.4.2

    Versions

  • Golang version 1.18
  • Server version 0.4.2
  • C# Client version 0.4.1
  • C++ Client version 0.2.4
  • Version 0.4.1 - Tag v0.4.1

    Versions

  • Golang version 1.18
  • Server version 0.4.1
  • C# Client version 0.4.0
  • C++ Client version 0.2.4
  • Server Change Logs

  • (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
  • C# Client Change Logs

  • (UPDATE) P2P now supports local addresses to support local peer-to-peer
  • Version 0.4.0 - Tag v0.4.0

    Versions

  • Golang version 1.18
  • Server version 0.4.0
  • C# Client version 0.4.0
  • C++ Client version 0.2.4
  • Server Change Logs

  • (FIX) MatchMaker IssueTicket added SearchTries parameter to control when to give up search when finding 0 results
  • (UPDATE) Util added StringArray and StringMap for concurrent 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 write 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... added
  • (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
  • C# Client Change Logs

  • (UPDATE) Room added a new client event for owner change - C# added the event support
  • C++ Client Change Logs

  • (UPDATE) Supports Room and MatchMaker class P2P connection start notification and address exchange
  • (UPDATE) macos arm64 build
  • (UPDATE) build. warnings C4251, so shared_ptr is not used
  • (FIX) When recvfrom() returns with -1, WSAGetLastError may be initialized by a socket function in another thread and WSAGetLastError may become 0
  • (FIX) add copy operator for xcode build error
  • (UPDATE) update matchmaker p2p addr func.
  • Version 0.3.2 - Tag v0.3.2

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.3.2
  • C# Client version 0.2.02
  • C++ Client version 0.2.4
  • Server Change Logs

  • (UPDATE) MatchMaker Ticket allows users that started their tickets at the same time to match right away
  • (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
  • C# Change Logs

  • (UPDATE) C# P2P added RUDP
  • (BREAKING) P2P success report command ID changed
  • C++ Change Logs

  • (UPDATE) Added more build patterns
  • (UPDATE) windows compile option set /MT /MTd /MD /MDd _ITERATOR_DEBUG_LEVEL=0
  • (UPDATE) ios simulator build
  • (UPDATE) support for android armeabi-v7a, x86_64, x86 build added
  • (UPDATE) support for ios x86_64 build
  • (UPDATE) CPP UDP echo sends local address list byte array
  • Version 0.3.1 - Tag v0.3.1

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.3.1
  • C# Client version 0.2.1
  • C++ Client version 0.2.3
  • Server Change Logs

  • (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
  • C# Change Logs

  • (UPDATE) Echo added local address list
  • Version 0.3.0 - Tag v0.3.0

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.3.0
  • C# Client version 0.2.0
  • C++ Client version 0.2.3
  • Server Change Logs

  • (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
  • C# Change Logs

  • (FIX) C# MatchMaker class bug fix OnJoinResponse event is not raised when search with join flag set to false using a single server
  • (FIX) C# P2P hole punch had a loop hole where sending hole punch packets may not stop when there are more than 2 peers
  • C++ Change Logs

  • (UPDATE) XBox support added
  • (UPDATE) PS5 support added
  • (FIX) MatchMaker Kick fixed
  • (FIX) Mac OS build fixed
  • (UPDATE) added bitcode cmake files for iOS
  • Version 0.2.28 - Tag v0.2.28

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.28
  • C# Client version 0.1.27
  • C++ Client version v0.2.1
  • Server Change Logs

  • (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 cancellation commands can now be executed by non-owner clients
  • (UPDATE) Room TTL min value is now 10 seconds
  • (UPDATE) P2P metrics added
  • C# Client Logs

  • (UPDATE) Room class added Chat methods
  • (UPDATE) MatchMaker class added IssueTicket method
  • (UPDATE) MatchMaker class added host change event
  • (UPDATE) Room class JoinRandom added allowEmpty parameter
  • (BREAKING) P2P message header changed to improve hole punching mechanism
  • C++ Client Logs

  • (UPDATE) Room reservation methods added to Room class
  • (UPDATE) MatchMaker added IssueTicket method
  • (UPDATE) MatchMaker class added host change event
  • (UPDATE) Group class added on leave event
  • (UPDATE) Room class JoinRandom added allowEmpty parameter
  • (BREAKING) P2P message header changed to improve hole punching mechanism
  • Version 0.2.27 - Tag v0.2.27

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.27
  • C# Client version 0.1.26
  • C++ Client version v0.2.0
  • Server Change Logs

  • (UPDATE) Room CancelReservationRemote added and the built-in command now uses it
  • (FIX) Room Reserve - bug fix owner user was added to reserve but never able to save the change
  • (UPDATE) Room reservation and cancellation 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 arrays 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
  • C# Client Change Logs

  • (UPDATE) DirectMessage class added
  • (UPDATE) C# Room class JoinRandom added allowEmpty parameter
  • (BREAKING) C# P2P hole punch messages now have different header
  • (FIX) C# Group bag fix - error message string set as group ID
  • (FIX) C# Group and Room fixed error message string is instead when join random join fails
  • C++ Client Change Logs

  • (UPDATE) Added JoinInternal func
  • (UPDATE) Group added OnLeave event
  • (UPDATE) C++ Room class JoinRandom added allowEmpty parameter
  • (BREAKING) C++ P2P hole punch messages now have different header
  • Version 0.2.26 - Tag v0.2.26

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.26
  • C# Client version 0.1.25
  • C++ Client version v0.1.8
  • Server Change Logs

  • (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
  • C# Client Change Logs

  • (UPDATE) Group class added OnLeave
  • (UPDATE) MatchMaker added tag
  • (FIX) Group fixed MemberJoin MemberLeave events
  • C++ Client Change Logs

  • (UPDATE) Room property Implementation PropertySync
  • (UPDATE) MatchMaker added tag
  • (UPDATE) RPC class added
  • (UPDATE) Room added Exclusive events
  • (FIX) Group fixed MemberJoin MemberLeave events
  • (UPDATE) Removed restriction on client key string
  • Server Version 0.2.25 - Tag v0.2.25

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.25
  • C# Client version 0.1.24
  • C++ Client version v0.1.8
  • Server Change Logs

  • (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
  • C# Client Change Logs

  • (UPDATE) MatchMaker HostMatchmaking no longer restricts TTL to be max 60 seconds
  • (FIX) MatchMaker class bug fix string split
  • (BREAKING CHANGE) MatchMaker class and TeamMatchMaker class unified
  • (BREAKING CHANGE) UDP and TCP added reliable bool flag for OnPush and OnResponse
  • (UPDATE) MatchMaker team commit response is now sent when it is successful
  • (UPDATE) Room GetNumberOfMembers added max members in the response
  • C++ Client Change Logs

  • (UPDATE) MatchMaker class added
  • (FIX) P2P packet reception corrected
  • (FIX) UDP class RUDP combined packet read was incorrectly skipping some packets
  • (UPDATE) Tentatively implement a process to reset the count when Echo doesn't receive a response after receiving a packet
  • (UPDATE) Move the location for batch processing of RUDP packets
  • Server Version 0.2.24 - Tag v0.2.24

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.24
  • C# Client version 0.1.22
  • C++ Client version TBD
  • Server Change Logs

  • (NEW) MatchMaker and TeamMatchMaker built-in command implemented
  • (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
  • (FIX) Prometheus metrics fixed
  • (FIX) DIARKIS_SERVER_TYPE env fixed
  • C# Client Change Logs

  • (NEW) MatchMaker and TeamMachMaker classes added
  • (FIX) Internal fix only: RUDP ack was looping each array instead
  • (UPDATE) P2P added Connect that takes address as a string. The address string format is "0.0.0.0:8888" with port
  • (FIX) C# Bot fixed to match the current version of the server
  • (UPDATE) P2P class added a check to ignore messages from other peers
  • (UPDATE) Field module is now able to synchronize with remote clients that are in nearby grids that are with in the view of vision
  • C++ Client Change Logs

  • (FIX) Windows build warning corrected
  • (FIX) Unit test corrected
  • (FIX) UDP Disconnect corrected the case where thread join blocks and hangs
  • (UPDATE) P2P class added a check to ignore messages from other peers
  • (UPDATE) Update Android setting API
  • (UPDATE) Internal update only: Separated UDP send and recv threads
  • Server Version 0.2.23 - Tag v0.2.23

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.23
  • C# Client version 0.1.22
  • C++ Client version TBD
  • Server Change Logs

  • (UPDATE) MARS stats tool added number of rooms per server node
  • (UPDATE) Static Group added to Group module
  • (UPDATE) Field module now sync with near by grids
  • Room module OnDiscardCustomMessage callback now receives SID as well
  • (FIX) JSON Metrics format corrected
  • C# Client Change Logs

  • (UPDATE) SyncData class added
  • (UPDATE) GetNumberOfRoomMembers added
  • (UPDATE) UDP and TCP added Migrate with server type
  • (UPDATE) UDP added EnableSendImmediate
  • C++ Client Change Logs

  • (UPDATE) Packet::ParseError added
  • (FIX) Bug fix CatchOnReconnect
  • (FIX) UDP mutex lock no longer includes packet send in the lock in NetworkLoop
  • Server Version 0.2.22 - Tag v0.2.22

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.22
  • C# Client version 0.1.21
  • C++ Client version TBD
  • Server Change Logs

  • (UPDATE) Add UserEntity.GetCoordinates() to return X and Y of a UserEntity to Field module
  • (UPDATE) All commands must call next w/ an error when we see an error
  • (UPDATE) Added new env to control application name and node type w/o changing the server code
  • (UPDATE) WebSocket Migrate support added
  • (UPDATE) Added DIARKIS_USE_STRUCT_ERR to switch between plain error response and structured error
  • (UPDATE) Room mapping added sync limit (same as Field module syncLimit)
  • (FIX) Added a sanity check for the offset against the length of buffer
  • (FIX) WebSocket Room Broadcast internally uses Message and removed 4 byte header for message buffering
  • (FIX) DIARKIS_NODE_TYPE renamed to DIARKIS_SERVER_TYPE
  • (FIX) Matching TTL check corrected for deletion fixed
  • C# Client Change Logs

  • (FIX) P2P bug fix when checking P2P message from a peer
  • (FIX) Fix for CatchOnReconnect timer triggered delegated action being raised from a sub thread
  • C++ Client Change Logs

  • (UPDATE) C++ client UDP and TCP added Migrate method - Reconnect to another server without changing SID, encryption key, iv and mac key
  • Javascript Client Change Logs

  • (UPDATE) Javascript client added room.migrate
  • Server Version 0.2.21 - Tag v0.2.21

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.21
  • C# Client version 0.1.20
  • C++ Client version TBD
  • Server Change Logs

  • (UPDATE) Field module NPC transport on auto-scale added
  • (UPDATE) Structured error data added to the server and C# client
  • (FIX) Field distance calculation now uses trigonometric formula for better accuracy
  • (FIX) WebSocket server connection loop removed secondary loop to read message chunks in one go in order to avoid potential CPU stress
  • (FIX) WebSocket server connection loop exists when state is discarded and FIN command does not update session TTL
  • (FIX) User bug fix - WebSocket was not supporting userData.OnNewConnection
  • (FIX) GetSidFromPayload now does not crush with invalid payload
  • (UPDATE) Make the WebSocket read loop wait until all commands are handled and then resume
  • (UPDATE) MatchMaker added more validations for invalid matching ID
  • (UPDATE) Metrics API added MatchMaker Search Count
  • (UPDATE) user.GetCCU() added
  • (UPDATE) Field added ServerSync to synchronize server-controlled data and added Npc to manage server-controlled data struct
  • (UPDATE) Field UserEntity added GetSID() GetID() and GetDistance()
  • C++ Client Change Logs

  • (UPDATE) Added iOS and Android build options
  • (FIX) Split Packet receive and send fixed
  • (UPDATE) Support room method(GetOwnerID, GetMemberIDs, Migrate, Move, Reserve, CancelReservation, IncrementProperty, IncrementPropertySync)
  • (FIX) Corrected RUDP packet format
  • (UPDATE) Feature/restore linux x86 64 support
  • C# Client Change Logs

  • (UPDATE) C# Group class Create and JoinRandom parameters changed data types to match the actual usage
  • (UPDATE) C# Room class Create, Join, JoinRandom, Register, FindRoomsByType changed numeric data type to match the actual usage
  • Server Version 0.2.20 - Tag v0.2.20

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.20
  • C# Client version 0.1.18
  • C++ Client version TBD
  • Server Change Logs

  • (UPDATE) WebSocket server is now able to handle packets exceed 8000 bytes and handle fragmented packets
  • (UPDATE) Auto-port-finding range increased from 100 to 1000
  • (UPDATE) Group join is now possible without having the origin server node and this makes Group completely de-centralized
  • (FIX) Field grid division and assignment fixed
  • C# Client Change Logs

  • (UPDATE) Room class added Leave(), MessageTo(), and Broadcast() without room ID requirement
  • C++ Client Change Logs

    Server Version 0.2.19 - Tag v0.2.19

    Versions

  • Golang version 1.16.7 and above
  • Server version 0.2.19
  • C# Client version 0.1.18
  • C++ Client version TBD
  • Server Change Logs

  • 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
  • C++ Change Logs

  • ESP32 Documentation added
  • CMake updated for iOS compile
  • Server Version 0.2.18 - Tag v0.2.18

    Versions

  • Golang version 1.14.2 and above
  • Server version 0.2.17
  • C# Client version 0.1.17
  • C++ Client version TBD
  • Server Change Logs

  • 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 encryption and decryption
  • WebSocket server added Migrate function
  • C# Client Change Logs

  • Room.OnMemberMessage event removes 4-byte-long header from the payload
  • Room.Create errors when allowEmpty=false and join=false are given
  • Room.GetLastErrorMessage added for event errors
  • Group.GetLastErrorMessage added for event errors
  • TCP and UDP client added disposable interface
  • Diarkis.Lib.Util.HexStringToBytes added
  • Bug fix: CatchOnReconnect for TCP and UDP no properly dispatches the event when there is a reconnect (Affected Room OnJoin event)
  • C++ Client Change Logs

  • ESP32 support added
  • CMake -l option for shared of static flag fixed (previously unable to build static library)
  • Server Version 0.2.17 - Tag v0.2.17

    Versions

  • Golang version 1.14.2 and above
  • Server version 0.2.17
  • C# Client version 0.1.17
  • C++ Client version TBD
  • Server Change Logs

  • 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
  • C# Client Change Logs

  • Room class added Migrate() to use room migration
  • C++ Client Change Logs

    Javascript Client Change Logs

  • Added onOffline event
  • Server Version 0.2.14 - Tag v0.2.15

    Versions

  • Golang version 1.14.2 and above
  • Server version 0.2.14
  • C# Client version 0.1.16
  • C++ Client version TBD
  • Server Change Logs

  • 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 boilerplate 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 module 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-search 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
  • C# Client Change Logs

  • Logger added UNITY_IOS and UNITY_ANDROID preprocessor directive check
  • UDP client ExecuteDisconnect_ checks _disconnect flag and now receives reconn flag from the network thread caller instead of checking _reconnecting flag itself
  • Fixed an internal logging of UDP client that causes an error
  • Test CLI improved JSON parse so that it does not crush when the JSON response from HTTP server changes
  • UDP client added SID to SYN, ACK, and EACK to support source address change (RUDP gets to keep the connection even if the source address changes)
  • C++ Client Change Logs

  • Added build for Raspberry Pi 4 ARM32
  • Server Version 0.2.13

    Versions

  • Golang version 1.14.2 and above
  • Server version 0.2.13
  • C# Client version 0.1.14
  • C++ Client version TBD
  • Server Change Logs

  • Fixed metrics API for Prometheus: 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)
  • C# Change Logs

  • Added Diarkis.Logger class
  • C++ Change Logs

  • Added build for Raspberry Pi 4 ARM64