Diarkis Engine Change Log

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 perfomance and better flow control
  • (FIX) Room IncrProperty panic fixed when SetOnRoomChange callback is not assigned
  • (UPDATE) Room log level adjusted
  • # MatchMaker

  • (NEW) MatchMaker added DubugDataDump 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 attemping 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 attemping 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

  • (UPDATED) MatchMaker Ticket no longer allows the owner user attemping 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
  • (UPDATED) 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
  • (UPDATED) 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 allowEmply 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 becomse 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 interre 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 differernt 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 invokation 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 unecessary 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 leack 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 leack 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 invokation 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 checkt 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 OnSIGSUR2 callbacks now requires /tmp/DIARKSI_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 untentionally
  • (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 avoide 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 imcomplete 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 outbout 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 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
  • 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 indivisual 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 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
  • 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 WSAGetLastE
  • (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 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
  • C# Change Logs

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

  • (UPDATE) Added more build partterns
  • (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 comand 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 cancelation 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 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
  • 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 instered 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
  • (Updadate) 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 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 dsiappearance 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 eack 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 loock 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 untill 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 usag
  • 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 Documatation 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 encryoption 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 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
  • 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 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)
  • C# Change Logs

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

  • Added build for Raspberry Pi 4 ARM64