v1.0
Overview
Diarkis has finally released version 1.0, three years after the initial release!
Major Updates
The Field has been updated
It now supports synchronization across Grids within the Field of Vision.
Optimizations have been made to reduce server load.
Various bugs have been fixed.
IDiarkisField::SyncInit()
has been deprecated andIDiarkisField::Join()
has been added.DiarkisField::Leave()
command has been added.
A new Session module has been added.
Server
Compared to v0.9, internal communication efficiency has been improved, internal code has been refactored, test scenarios have been enhanced, thus significantly boosting performance.
Core
Added
DiarkisExec
package to simplify server setup.Added a mechanism to cache MARS addresses for a certain period in the mesh module.
Changed package names
roomSupport
andgroupSupport
to camel case asroomSupport
andgroupSupport
.Added an echo handler.
If a structure provided to the logging function implements the
String()
interface, the return value ofString()
will be output.Disabled dual stack when Diarkis server obtains its own IP address.
Locked mesh send callbacks to prevent critical issues.
Fixed simultaneous iteration and map writing in vault's map to prevent critical issues.
Added context to notify timeout for
OnStop
andOnTerminate
.
Direct Message
Fixed the issue where DM users would send disconnect messages with incorrect versions and commands.
Dive
Added
IncrBy
andIncrByEx
.Added
OnReady
.Changed Dive data type from
interface{}
to[]byte
.Fixed the issue where Dive's byte fixed size was too small.
Fixed shutdown prevention issue in the Dive module.
Field
Improved the Field algorithm, enhancing performance and availability.
Fixed the issue where custom filters in Field were executed on the front server instead of the storage server.
Enhanced the performance of the Field module.
Fixed the issue where the Leave command ID in Field used the same command ID as room chat.
Added Join command, allowing Sync, Disappear, and Leave to function following Join.
Group
Fixed issues related to Join.
MatchMaker
Added
onMatchedTicketTimeout
to handle member ticket timeouts.Updated ticket properties.
Mesh
Fixed sharedData update issue when keys were full.
Ensured announcer stops after finishing tasks.
Metrics
Fixed packet count metrics and added packet size metrics.
Puffer
Added support for property comments and case sensitivity to improve JSON parsing.
Ensured protocol names are unique within each package.
Added constants
Ver
andCmd
to protocol codes.Changed file generation permissions from
755
to644
.
Room
Fixed issue where the room would not empty when a user unexpectedly disconnects and reconnects with the same user ID.
Prevented room ID duplication.
Modified
UpdateProperties
andIncrProperty
to avoid updating room TTL.Fixed issue with lock leak due to mutex.
Changed log levels for room message/announce.
Fixed parameter names in
SetOnMigrated
callback.
Session
Modified Session invitations to avoid retaining invitation data per user.
Added session commands to obtain member ID and count when
SessionType
is specified.Prevented race conditions in
setTypeByUser
andremoveTypeByUser
.
Go Client
Added Debug command.
Client
Diarkis Runtime
General
Fixed issue where the server would disconnect without sending a Fin packet due to timing; now always sends Fin packet upon disconnection.
Add NAT type determination function.
When
DiarkisUdpBase::SendCheckNATType
is executed, the result can be obtained byDiarkisUdpBase::OnCheckNATType
.
P2P
Added explicit disconnection functionality to the P2P module.
Improved hole-punching process.
Changed communication intervals for hole-punching to increase progressively with retry attempts.
Added debug feature to simulate hole-punching failures.
Diarkis Module
Added functionality to set custom allocators that replace memory allocation processes within Diarkis runtime.
Implement a custom allocator by inheriting
ICustomAllocator
and replace the allocator withDiarkis::SetCustomAllocator()
.
Added types for the std library using custom allocators.
Includes
Diarkis::StdString
andDiarkis::StdVector
, using these types within Diarkis to use std containers.
Added
DiarkisInit/DiarkisDestroy
functions to the Base class, initializing the logger inDiarkisInit
.Added Trace log level.
Displayed Diarkis client version in logs.
Various bug fixes and optimizations.
Samples
Added
session_simple
sample.Added
directmessage_simple
sample.Added Android sample.
Added iOS sample.
Last updated