Game > GameAnvil > Release Note

1.0.5 (2020.11.17)

Fix

  • Fixed an issue in which packet header would not restored when responding to the error in RoomMatchReq

1.0.4 (2020.10.29)

Fix

  • Fixed an issue in which NPE (Null Pointer Exception) would occur when no packet was passed to an arbitrary Session
  • An issue would occur when using publishToClient (included Notice)
  • Fixed an issue in which room destruction would be delayed because of the repeat Timer used by Room
  • Fixed an issue in which an exception would occur when de-serializing the Class that has the protobuf structure as a variable
  • java.lang.UnsupportedOperationException occurs

1.0.3 (2020.10.26)

Change

  • Reactivated the notification API that was previously excluded from specifications

1.0.2 (2020.10.12)

New

  • Added a feature that is used to allow users to freely set the Node information displayed in Log
  • Added a feature that is used to manually enter HostId
  • Added a feature that is used to pass information to each HostId from nodeInfoByHostId

Fix

  • Fixed an issue in which an error would occur while binding IP 0.0.0.0
  • Fixed an issue in which the success value would respond as failure when using the /config/get of ConfigModule
  • Added the exception handling for the problems that would cause an error while processing Publish Packet when another GameNode is active while a GameNode is already running

Change

  • Edited so that the value range of ShardIndex that is used in the last digit when creating UserId or RoomId can be specified
  • Added the getRemoteAddress value of RestObject
  • Edited so that the number of NodeKey requests can be specified

1.0.1 (2020.09.07)

Fix

  • Fixed an issue in which Payload would not be passed to the client when onLogin() returned false
  • Added the missing part of the log level check statement in front of the Debug and Trace log statements

1.0.0 (2020.08.31)

New

  • Dramatically increased performance and stability (approximately 7 times better than those of version 0.9)
  • Fixed issues and optimized several logics that directly affect performance
  • Overhauled the GameNode load balancing
  • Distributed load to the optimal GameNodes quickly and accurately, reflecting the status of cloud VM
  • Introduced Integer type ID
  • Optimized the core IDs by replacing them from String to Integer
  • Added the API that can be used to allow the server Log level to be changed during runtime
  • Log level can be changed while servicing in Node unit

Fix

  • Fixed a user transfer problem, improved usage, and optimization
  • GameAnvil users can easily use the user transfer feature
  • Completely fixed uninterrupted patch
  • Fixed all the issues in which room transfer and uninterrupted patch would not work correctly
  • Fixed an issue in which some Nodes would not correctly appear due to an unknown timing issue when running the server
  • Fixed memory leak in which some of the Timer objects of Node persist instead of being disabled
  • Fixed an issue in which newly connected user would be unintentionally disconnected while checking the client connection

Change

  • Changed the Node name into more intuitive one as shown in the table below
v1.0 ~ v0.10 Required Feature Implement content Network access
Gateway Session Required Handles client connection and authentication Possible public
Game Space Required Handles content as actual game server Possible private
Support Service Optiona Supports independent services as necessary Possible private or public
Match Match Optiona Performs matchmaking Possible private
Location Location Required Store and manage user and room location information Impossible private
Management Management Required Collect server information and communicate with Admin/Agent Impossible private
Ipc Communication Required Process the Inter-process communication of the Gameflex server Impossible private
  • Improved the readability and usability of the GameAnvil code
  • Effectively improved package structure
  • Improved the class inherit/include structure
  • Modified naming to make it more intuitive and consistent
  • The disable status of Node is subdivided by Invalid and Disable
  • Invalid is a state in which the node is temporarily non-responsive
  • Disable is a state in which the node is permanently disabled
  • The Loopback address is now automatically bound
  • Updated all the libraries used by GameAnvil to the latest version
  • Integrated entire ErrorCode
  • Removed the required ReConnect and MoveService feature
  • Added a new timer that is used to measure the next time from the time of running instead of from the time of registering

0.10.2 (2020.04.08)

New

  • GameAnvil API Reference (JavaDoc) Site Open

  • Support AOT Instrumentation

  • AOT at compile time without having to JIT Instrumentation the engine at runtime

  • Start the guide so that it will use G1GC as the official GC

  • The most basic VM option

java -javaagent:QUASAR_PATH\quasar-core-0.7.10-jdk8.jar=bm -Xms6g -Xmx6g -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+UseStringDeduplication

Fix

  • Edited the Quasar stack bug
  • Fixed an issue in which room matching users would be matched to different rooms
  • Fixed an issue in which compressed packets would not be transferred

0.10.1 (2020.02.11)

New

  • Provided the Util class that were provided to users
  • Organized the tools that were previously scattered throughout the engine into a single class

Change

  • Improved the Topic process code performance

0.10.0 (2020.02.06)

New

  • Newly refactored the asynchronous support API that was previously problematic
  • Added new asynchronous API as support Redis Cluster and official support Lettuce become available
  • Added asynchronous HttpRequest and HttpResponse API
  • Support custom protocol based on ByteString
  • Can serialize messages in a way the user other than Google protobuf

Fix

  • Fixed all the issues in which the status of Fiber would be broken, which was the most critical problem in the previous version

Change

  • Optimized the size of the packet and header used by the engine
  • Performance improved by 2.5 times compared to version 0.9
  • Embedded Redis Spec-out
  • Guided users so that they would need the service provided by infrastructure

0.9.9 (2019.10.25)

New

  • Opened additional port so that WatchDog can be linked in the unit of process

Fix

  • Fixed the ghost user bug
  • Fixed a Concurrent Modification error that would occur in SpaceNode
  • Fixed a Comparator error in NodeInfoManager
  • Fixed an issue in which the session object of logged out user would not be organized
  • Fixed an issue in which matching groups would not be correctly applied to the users in many different channels
  • Fixed an issue in which the callback for Timeout would not be correctly received when party matchmaking

Change

  • Added error code used when a duplicate request is received while room matchmaking is in progress
  • MATCH_ROOM_FAIL_IN_PROGRESS

0.9.8 (2019.09.05)

New

  • Added addTopic() and removeTopic() API that is used to add or remove ClientTopic to Session
  • Added the Packet TTL feature
  • Added a logic that periodically checks and organizes Dangling Location

Fix

  • Fixed the system so that ForceLogoutNoti would not be transferred to the client when kicking a user in Admin
  • Fixed all Spot malfunctions of LocationNode

Change

  • Changed the system so that ForceCloseNoti would be transferred before the socket is closed when onAuthenticate() callback failed

0.9.7 (2019.07.27)

New

  • Added a logic that is used to regularly check the Rooms that abnormally remain
  • As previous user matchmaking may not be canceled and remain when a user matchmaking is requested after logging in again, added a new flag that responds to the status of previous user matchmaking process to re-login response
  • Added the Packet Expire feature (default: 30 seconds)

Fix

  • Fixed an issue in which Connection ID (CID) would be duplicated
  • Fixed a bug in which room Fiber would be closed by a disconnected user
  • Fixed an issue in which the serviceId field would not be correctly set in the response message if login failed
  • Fixed the part where try-catch is missing in the content callback process
  • Fixed an issue in which the client would take more than 3 seconds to reconnect
  • Fixed an issue in which thread simultaneity would occur when checking ghost users
  • Fixed an issue in which room matchmaking would be processed in duplication
  • Fixed an issue in which disconnected users would remain in the room

Change

  • Added a log for every instance of Session Disconnect
  • Changed CreateRoom so that it would directly create room in the current node

0.9.6 (2019.06.23)

New

  • Added the canTransfer() interface to User and Room so that the time of transfer could be adjusted in content

Fix

  • Fixed memory leak that would exist in internal engine code
  • Fixed a connection bug of the ZMQ Router and Publisher socket
  • Fixed an issue in which Login would be infinitely repeated
  • Fixed an issue in which isLogined() API would not work correctly
  • Fixed a NodeInfoManager synchronization issue
  • Fixed an issue in which user objects would not be properly organized

Change

  • Changed the name of AsyncAwaitHttpRequest to FiberHttpRequest
  • Added an asynchronous function to FiberHttpRequest and HttpRequest
  • Added a log related to Location Index
  • Changed the SpaceNode distribution method from idle to roundRobin
  • Changed the system so that it would sleep only when there is LocationNode in NodeStarter

0.9.5 (2019.06.21)

Fix

  • Fixed an issue in which the corresponding user would not be organized in a paused node when a new user logs in or a user is being transferred while performing uninterrupted patch

Change

  • Changed the serviceId from string to integer
  • Changed the service_code of a protocol to service_id and changed the related code
  • Changed the internal implementation and usage of APIs supporting RESTful

0.9.4 (2019.05.24)

New

  • Added a feature that can be used to register the protocol used by content in the file unit
  • It is to effectively process internal packets
  • Added the MoveService feature

Fix

  • Fixed an error that would occur in the Comparator used in room matchmaking

Change

  • By adding the latest login information to the Authentication response so that it could be used in the next login
  • Changed setReady() so that it can be explicitly called and passed with the onReady status
  • Changed LocationNode so that it can be reset at CommunicationNode's onPrepare

0.9.3 (2019.04.10)

Fix

  • Fixed an issue in which NPE (Null Pointer Exception) would occur when timeout occurred in AsyncAwait.call() API
  • Fixed an issue in which Epoll would stop when it was enabled
  • Fixed an Invalid System Target Location error that would occur while logging in

Change

  • ManagementNode can no longer be expanded by engine users
  • Use ServiceNode instead
  • Changed the system so that the Machine information registration, edit, or deletion request can be instantly applied in Admin

0.9.2 (2019.02.11)

New

  • Added the scheduled notification and scheduled maintenance feature using Admin
  • Added the White IP, White User, and White Device features using Admin

Fix

  • Fixed a piece of code that used to process exceptions in a wrong way in AsyncAwait.run() API
  • Changed ManagementNode so that it will be reset before other Nodes
  • Fixed an issue in which publish related to some channels would be missing when channel ID was not used
  • Fixed an issue in which incorrect error code would be added to header when content returns fail on CreateRoom and JoinRoom
  • Fixed memory leak that would occur when creating packet header
  • Fixed memory leak that would occur in room matchmaking

Change

Change

  • Added payload to the onLogout() callback
  • Removed duplicate fields from some protocols as ResultCode was edited
  • Improved the usability of Dynamic Module

0.9.1 (2018.11.12)

New

  • Added MatchNode dedicated to matchmaking
  • Added the refill function to user matchmaking
  • Added party matchmaking, a new type of user matchmaking
  • Added additional information by node type to the Machine of Admin
  • Added the onLoginByOtherConnection() callback that is called when the user logs in again using the same DeviceId and UserId

Fix

  • Fixed a Dynamic Module bug
  • Fixed an issue in which Admin would not be connected
  • Fixed a reply bug of User
  • Fixed a Timer add/delete error
  • Applied the previously missing timeout to AsyncAwait.run()
  • Fixed an error that would occur when a node is shutdown
  • Fixed an issue in which NPE (Null Pointer Exception) would occur when matching information was deleted while not using room matchmaking

Change

  • Relocated some interface components
  • Changed the system so that it uses re-login instead of processing as duplicate logins when the user logs into different DeviceIds
  • Modified the payload added by the onMatchRoom() callback of room matchmaking would be included in the flow afterward

0.9.0 (2018.06.27)

New

  • Added the user matchmaking feature
  • Added the user and room list per channel feature
  • Added Embedded Redis
  • Added the Reconnect feature
  • (Added the old) Test Agent

Fix

  • Fixed a duplicate login in the Account unit issue

Change

  • Changed OracleJDK to AdpotOpenJDK
  • Changed the ZMQ communication unit from Node (thread) to process

0.8.6 (2018.06.28)

New

  • Added the Send from Session to Management feature
  • Added the Request from Session to Management feature
  • Added User MatchMaker
  • Added the Channel User List feature
  • Added the Custom Serializer feature
  • Custom Serializer can be plugged into RoomFinder

Fix

  • Added an empty string exception process for the publish in which a channel is used as a topic in the channel user manager
  • Added an empty string exception process for the publish in which a channel is used as a topic
  • Fixed an issue that would be occurred by DefaultRoomFinder when calling delNamedRoomInfo() and delRoomInfo() in an environment that does not use AutoJoinRoom
  • Fixed the NullPointerException that would occur due to missing null check in RoomFinder
  • Fixed an issue in which a timed out request would not be removed in user matchmaking
  • Added an exception that is used to be processed if password is set in redis
  • Fixed a setRestIp() error of cfgManagement
  • Fixed an issue in which HTTP handling would not be done in the Service node.
  • Branch: 0.8.6.2_fix_service_node_rest_handling
  • Tag: tardis-0.8.6.2.1
  • Fixed an issue related to the set gameId while processing AutoJoinRoom
  • Edited MatchMaker and strengthened examples
  • Added the previously missing ISession::onDisconnect()
  • Fixed a Node information exchange error among Communication Nodes
  • Fixed a FindRoomList performance issue
  • Fixed a Shutdown bug
  • Fixed an issue in which BaseNode would not receive publishToNode messages
  • Fixed a FindRoomList performance issue
  • Fixed a Shutdown bug
  • Fixed an issue in which BaseNode would not receive publishToNode messages
  • Fixed a NamedAutoJoinRoom bug
  • Changed UpdateRoomInfo/DelRoomInfo so that they can be instantly applied to the corresponding Node
  • Fixed an error in which blocking call would be displayed in Fiber

Change

  • Changed FindRoomList so that it serializes/de-serializes the container for the entire room list
  • Changed the existing LocationException, TardisException and others to RuntimeException, organized Exceptions
  • Renamed forceLeaveRoom to kickOutRoom
  • Renamed forceLogout to kickOut
  • Changed the tardisConfig configuration

0.8.5 (2017.12.18)

New

  • Added a feature to be used to authenticate and manage HTTP sessions with the JWT authentication token
  • Added a feature to be used to allow multiple services to log in using the same ID
  • Added a feature to be used to allow a single GameNode to use multiple RoomTypes
  • Added a feature to be used to view all the information of Server on the web (NodeInfoPage)

Fix

  • Fixed a bug in which timers would not be removed
  • Fixed a bug in which onPostLeaveRoom would be called twice

Change

  • Improved ghost user handling
  • Added ghost user logging
  • Improved packet compress logic
  • Improved RestObject, added a function to be used with it
  • Changed the error handling of a packet, it now places error code to protocol header and processes it

0.8.4 (2018.01.10)

New

  • Applied Bootstrap
  • Implemented like NGB Bootstrap
  • Simplified code by specifying only the class instance of each class in the implementing part
  • Added the Multi Dispatch feature that is used to send and receive multiple messages
  • Added the ServiceNodeSender (previously CustomServiceSender) publishToLobby method

Change

  • Renamed AsyncAwait and RAsyncAwait
  • Moved the Bootstrap RoomFinder settings to space
  • Renamed Cache and Custom Exception (Location, Service)
  • Changed the Payload class so that it retrieves the first packet using the getFirst method
  • Removed the requestToLobby method from ServiceNodeSender (the requestToNode method works the same)
  • Changed the makeDecompress method so that it does not use async when it is called by the Packet class
  • Overloaded the reply method of UserSender (Packet list handling)
  • Renamed some classes
  • AsyncCall -> AsyncWaitingCall
  • AsyncRun -> AsyncWaitingRun
  • ReverseAsyncCall -> RAsyncWaitingCall
  • ReverseAsyncRun -> RAsyncWaitingRun

Fix

  • Fixed a Session IP error

0.8.3 (2017.10.26)

New

  • Added the REST handling feature
  • Implemented the ACL feature based on Path & IP for the REST handling with permissionGroups in TardisConfig.json
  • Channel List (channel name list), Channel Information (detailed information of a specific channel)
  • Added the requestToCustom and sendToCustom method to Space LobbySender
  • Added the "State" item to the Management information of Space node
  • Added void onShutdown() throws SuspendExecution to the Ilobby , ISessionLobby, and IService interface
  • Added the onShutdown() interface so that contents can disable resource when a node is shutdown
  • Added the publishToNode function to ServiceNodeSender

Fix

  • Changed and added the JMX Management API of Management (SessionGateway, CustomGateway)
  • Added the Channel List (channel name list) and Channel Information (detailed information of a specific channel) feature
  • Changed the REST handling logic of the Session and Custom node
  • Changed the return value of the Gateway node (Session, Custom) isConnectableType method
  • Fixed a round-robin issue of SessionGateway and CustomGateway, changed the JMX return information
  • Changed the code that uses the key value of cache node targetMap
  • Changed the SessionGateway node REST RoundRobin code
  • Improved login process (changed related to the Invalid Target Location error log)
  • Returns the node if its status is not READY when the room deleting delRoomInfo is called

Change

  • Integrated Session node and client's End-Point (Session Gateway)
  • Integrated the REST End-Points of custom nodes (Custom Gateway)
  • Changed code that directly uses Fiber to ReverseAsyncCall
  • Added the SpaceSingular Dispatch time stamp
  • Register onTimer and periodically check it (every 10 minutes)
  • Applied internalLogout to timed out users
  • Applied Async timeout
  • Added and improved ghost user handling logic, added the needed values to TardisConfig.json
  • Changed the result_code format of each Response protocol from the existing integer value to enum, reduced the number of formats. removed the is_payload field
  • Renamed classes, packages, functions, and cfg contents
  • Changed the class Payload data type to Packet to allow the Request and Response protocols to handle multiple payloads, removed class OutPayload
  • Changed the parameter type of the user Transfer-In interface to byte array

0.8.2 (2017.09.21)

New

  • Added the RestObject feature to CustomService
  • Added RestHandler to CustomService

Fix

  • Fixed a bug in which user information would not be deleted from Cache
  • Added an exception handling for the NPE (Null Pointer Exception) that would occur in the engine
  • Fixed an issue in which CID (Connection ID) would not be correctly applied while transferring packet

Change

  • Changed the Custom module naming
  • Ex) CustomLobby -> CustomService
  • Changed some part of the Custom module interface
  • Added the serviceId parameter to the sendToUser() and requestToUser() API of CustomServiceSender
TOP