iFun Engine Changelog

v1.0.0-3624 (2018-10-10)

2018-10-10 09:53:38

Network
  • Changed the log message related to starting the iFun engine.
  • Fixed a bug that the ApiService class causes Undefined Behavior in the certain environment.
Service
  • AccountManager now sends RPC tags instead of the flavor when performing client redirection.
  • Added the spot instance feature.
System
  • The iFun Engine now acquires the hostname of your instance with the public IPv4 address when running on AWS.
misc.
  • funtest: Added the compression feature.
  • funtest: Added Websocket protocol.
  • C#: Added InstallJsonMessageChecker().
  • C#: Added InstallProtobufMessageChecker().

v1.0.0-3579 (2018-09-18)

2018-09-18 06:36:47

Service
  • Fixed a bug where the generated .dll file was not working in the Unity client plugin in 3553 stable.

v1.0.0-3553 (2018-09-05)

2018-09-05 10:55:09

Object
  • ORM: Fixed a bug where the map container was not updated immediately when the delayed updated is enabled.
  • ORM: Fixed a bug where the array container was not updated immediately when the delayed updated is enabled.
Distribution
  • Fixed a bug where the server crashed when the key is removed in the Redis-based distribution environment.
Network
  • You can now change the threshold of send queue for session reliability feature.
misc.
  • funtest C#: Added a new handler for integer message type.
  • funtest C#: You can now use the integer message type for SendMessage.

v1.0.0-3487 (2018-08-08)

2018-08-08 10:40:00

Network
  • 압축 기능 사용할때 에이전트와 통신이 실패하는 문제 수정

v1.0.0-3468 (2018-08-01)

2018-08-01 14:18:46

Warning

Breaking Changes

다음의 변경 사항으로 인해 연결되는 모든 서버의 엔진 업데이트가 필요합니다.
  • RPC: 서버간 연결 관련 처리 개선.
다음의 변경 사항으로 인해 서버를 다시 빌드해야 합니다.
  • RedisClient: Create() 할 때 database 선택할 수 있도록 수정.
  • Maraidb Connector 에 Client Flags 를 설정할 수 있게 수정
  • 영수증 검증 시 product 구매 정보가 없는 경우에 대한 에러코드 추가
  • 영수증 검증 시 트랜잭션 id를 가져올 수 있도록 추가 인터페이스 제공
  • ArrayRef에 IList<T>를 지원 인터페이스 추가(C#)
다음의 변경으로 Custom API 를 사용하는 경우 다시 빌드해야 합니다.
  • 아이펀 디플로이의 드랍다운 리스트 기능 사용 가능하게 수정
다음의 변경으로 iFun Biller Stable 1.0.0-2564 버전 이상으로 업데이트가 필요할 수 있습니다.
  • 영수증 검증 시 트랜잭션 id를 가져올 수 있도록 추가 인터페이스 제공
다음의 변경으로 DSM 기능 이용 시 아래 작업이 필요합니다.
  • 데디케이티드 서버 매니저 컴포넌트에서 image_id 를 변경했을 때 인스턴스들을 식별하지 못하는 문제가 수정되었습니다.
다음의 변경으로 코드 수정이 필요할 수 있습니다.
  • ProgressCallback 에 JSON match_context 인자가 추가
  • ProgressCallback의 MatchContext 정보가 삭제되고 새로운 콜백(ProgressCallback2)이 추가됐습니다.
    • MatchContext를 계속 사용하려면 ProgressCallback2의 Match 정보를 사용하면 됩니다.
  • UpdateMatchPlayerContext C++ 함수가 추가되었습니다.
    • 이 함수는 매치메이킹 대기열에 있는 플레이어의 컨텍스트(Json)를 변경할 때 사용합니다.
  • TStore Interface를 OneStore 인터페이스로 변경
    • 기존의 TStore 인터페이스는 deprecated 처리되었습니다. MakeTStoreReceipt 함수를 MakeOneStoreReceipt 함수로 변경하셔야 합니다.
Service
  • World 기능 추가

  • World 범위 검색 알고리즘 개선

  • WorldManager::Create() 함수의 zone 인자를 Json 에서 ZoneVector 로 변경

  • WorldManager::Create() 함수에 index_block_length 인자 추가

  • World Channel 지원

  • world 에서 distance 대신 distance_square 를 받는 함수들 추가.

  • World::Object 에 mutex 락 추가

  • World::Object 의 ID 를 생성자의 인자로 받아 임의로 할당할 수 있도록 수정

  • World::InsertObject() 가 ID 가 중복될 때 Assert 대신 0 을 반환하도록 수정

  • World::Object 가 Point 뿐만 아니라 Sphere 도 될 수 있도록 수정

  • World 의 모든 Object 를 가져오는 World::GetAllObject() 추가

  • World::Find*2() 제거 및 FindOption 을 받아 동일한 처리를 대신하도록 수정

  • World 의 Find*() 의 거리 계산 시 Sphere 의 중심을 기준으로 하는 옵션 추가

  • World::Find*(), World::Broadcast() 함수들이 기준 좌표 대신 Object ID 를 받을 수 있는 기능 추가

  • World 의 Find*() 에 정렬, 범위 검색 옵션 추가

  • World::Broadcast() 함수 인자에 FindOption 추가

  • World::FindObject() 가 Filter 함수를 받을 수 있도록 개선

  • World::FindObject() 를 위한 Type Filter 추가

  • World 내의 특정 Type Object 유무를 통지 받을 수 있는 기능 추가

  • World::MakeRectangleFilter() 추가

  • World::MakeCircularSectorFilter() 추가

  • World 의 boundary 검색 시 option 에 지정된 수 보다 더 많이 검색되는 버그 수정

  • World::InsertStaticObject, World::FindStaticObject 추가

  • World::FindObject() 에서 distances 인자가 NULL 일 때 Filter 를 쓰면 크래시하는 버그 수정

  • WorldManager::Create/Get/FindServer 함수의 channel 인자 위치 변경

  • 다른 서버와 공유하지 않는 World 지원

  • World 삭제 기능 추가

  • World 를 MANIFEST 에 기술하여 생성할 때 Channel 과 Local 여부를 설정할 수 있게 수정

  • World::MonitorTypeExistence() 버그 수정

  • World::GetName() 추가

  • World 사각형, 부채꼴 내장 필터가 입력 높이가 음수이면 무한대로 처리하도록 수정

  • World 사각형, 부채꼴 필터의 무한대 높이 처리의 잘못된 Assert 제거

  • DSM: OAuth 토큰 획득에 실패하면 콜백 오류 처리하게 수정

  • Matchmaking: ProgressCallback 에 JSON match_context 인자 추가.

  • World 부채꼴 필터의 각도 계산 오류 수정

  • World 의 부채꼴 필터 버그 수정

  • 월드에서 부채꼴 필터가 구체를 검색할 수 있도록 추가

  • FindObject에서 FindOption을 사용 시 Z 축을 무시하는 옵션 추가

  • World 사각형 필터에 구체 검사 추가

  • World Object가 구체인지 검사하는 함수와 반지름을 얻는 함수 추가

  • RPC Redis backend 일 때 간헐적으로 서버 종료 안되는 문제 수정.

  • DSM 에서 JWT 토큰 확인할 수 있는 콜백 함수 추가

  • TStore Interface를 OneStore 인터페이스로 변경

  • World에서 MoveObject, MoveObjectTo가 bool을 반환하도록 수정

  • World 내의 모든 세션에게 메시지를 보내는 기능 추가

  • World GetAllObject가 Type으로 필터할 수 있는 기능 추가

  • World에서 삭제된 오브젝트를 다시 삭제할 때 ASSERT 제거

  • DSM Region별 인스턴스 통계 API 추가

  • DSM Region별 서버 사용량 평균, 표준편차 API 추가

  • DSM에서 생성/종료된 EC2 인스턴스 수를 가져올 수 있는 API 추가

  • DSM 퍼포먼스 카운터 API에서 JWT 인증을 지원하도록 변경

  • DSM 인스턴스 버전 태깅 기능 추가

  • DSM에서 실행 중인 EC2 호스트 수가 1개로 고정되는 문제 수정

  • DSM 호스트 버전이 명시된 경우 최신 버전만 사용하도록 변경

  • DSM 인스턴스 버전이 명시된 경우 확장시 항상 최신 버전을 사용하도록 변경

  • 리셋 시간 전에 리더보드를 조회할 경우 assert가 발생할 수 있는 문제 수정

  • 리더보드 최초 리셋 전에 스케줄을 조회할 때 잘못된 정보를 받는 문제 수정

  • 2663 experimental에서 DSM 호스트 버전을 인식하지 못하는 문제 수정

  • World GetAllObject에 오브젝트 필터 추가

  • DSM에서 사용 중인 Redis 키가 삭제될 경우에도 복구될 수 있도록 변경

  • DSM: AWS 설정의 user_data 를 파일에서 읽을 수 있게 수정

  • ProgressCallback의 MatchContext 정보가 삭제되고 새로운 콜백(ProgressCallback2)이 추가됐습니다.

    • MatchContext를 계속 사용하려면 ProgressCallback2의 Match 정보를 사용하면 됩니다.
  • UpdateMatchPlayerContext C++ 함수가 추가되었습니다.

    • 매치메이킹 대기열에 있는 플레이어의 컨텍스트(Json)를 변경할 때 사용합니다.
  • C# 매치메이킹 완료 시 크래시가 발생하던 문제가 수정됐습니다.

  • 클라이언트 리소스 파일을 필터링할 수 있는 .funignore 파일이 추가되었습니다.

    • 필터링 기능은 funapi_client_resource_generator 및 엔진의 클라이언트 리소스 기능에서 사용 가능하며 .funignore 파일 안에 정의된 Perl 정규 표현식 패턴과 일치하는 파일들을 리소스 목록에서 제외합니다.
  • 매치메이킹 ProgressCallback2에서 Match context가 누락되는 문제 수정

  • 데디케이티드 서버 매니저 상세 로그 옵션이 추가되었습니다.

    • DedicatedServerManager 컴포넌트의 dedicated_server_verbose_log 플래그를 `true`로 설정할 경우 상세 로그를 볼 수 있습니다.
  • 데디케이티드 서버에서 사용하는 `user_data`가 빈 문자열일 때 크래시하는 문제가 수정되었습니다.

  • 데디케이티드 서버에서 사용하는 `image_id`가 8글자 미만일 때도 정상적으로 동작하도록 수정되었습니다.

  • 2808 experimental의 DedicatedServerManager 컴포넌트에서 image-id 파싱이 실패하던 문제가 수정되었습니다.

  • DedicatedServerManager 컴포넌트에서 AWS setting 값을 불러오거나 업데이트 할 때 setting 내용을 보여주는 로그가 추가되었습니다.

    • 이 때 api key, secret과 같이 민감한 값들은 ***** 와 같이 표시됩니다.
  • 데디케이티드 서버에서 EC2 인스턴스 태깅 시 같은 리전만 참조하게 변경

  • 데디케이티드 서버에서 유휴 인스턴스 계산 시 같은 리전만 참조하게 변경

  • 데디케이티드 서버 컴포턴트의 AWS 관련 주요 로그들은 기본적으로 출력되며 추가된 목록은 다음과 같습니다.

    • 인스턴스 생성 요청 전, 종료 요청 전, 태깅 요청 성공, 인스턴스 조회 후
    • 종료 조건에 부합하는 인스턴스 발견 시, 매치 요청에 부합하는 인스턴스 발견 시
  • 데디케티이드 서버 컴포넌트에서 AWS EC2 목록과 일치하지 않는 Redis 키가 발견되면 자동으로 삭제합니다.

  • 데디케이티드 서버 사용 시 일부 인스턴스가 종료되지 않는 문제 수정

  • 데디케이티드 서버 매니저 에서 Describe API 함수 호출이 실패할 때 이제 지수 백오프 알고리즘을 사용하여 재시도합니다.

  • 데디케이티드 서버 매니저 에서 사용할 수 있는 PreRedirectionHook 함수가 추가되었습니다.

    • 이 함수는 데디케이티드 서버 매니저 가 클라이언트로 리다이렉션 메시지를 보내기 전 호출되며 false 를 반환할 경우 클라이언트로 리다이렉션 메시지를 보내지 않습니다.
  • 데디케이티드 서버 매니저 가 AWS 인스턴스를 계산할 때 instance_name 이 설정된 경우 image_idinstance_name 과 일치하는 인스턴스만 식별합니다.

  • 데디케이티드 서버 매니저 컴포넌트의 aws_settings 업데이트 API 호출이 실패할 때 적절한 에러 로그를 출력합니다.

  • 데디케이티드 서버 매니저 컴포넌트에서 image_id 를 변경했을 때 인스턴스들을 식별하지 못하는 문제가 수정되었습니다.

  • 데디케이티드 서버 매니저 컴포넌트에서 image_id 를 변경했을 때 오래된 버전의 인스턴스를 종료하지 못하는 문제가 수정되었습니다.

  • 데디케이티드 서버 매니저 컴포넌트에서 /version API 호출 시 AWS 및 버전 정보가 있을 경우 오래된 버전을 status:deprecated 로 구분합니다.

  • 데디케이티드 서버 매니저 컴포넌트의 인스턴스 생성/종료 로직이 개선되었습니다. 개선된 내용은 다음과 같습니다.

    • 버전이 명시된 경우 항상 새 버전을 기준으로 인스턴스를 생성합니다. 이 변경으로 인해 버전이 바뀌는 순간 일시적으로 인스턴스 개수가 max_instances 값보다 커질 수 있습니다.
    • 인스턴스 종료는 항상 전체 인스턴스를 기준으로 합니다. 이 변경으로 인해 버전이 바뀌는 순간에도 reversed_instances 값만큼 대기 중인 인스턴스들이 종료되지 않습니다.
    • 새 버전의 인스턴스가 모두 준비된 이후에는 더 이상 이전 버전 인스턴스를 사용하지 않으며, 남아있는 이전 버전 인스턴스들은 모든 매치가 끝나는 순서대로 죵로됩니다.
  • 데디케이티드 서버 매니저 컴포넌트를 통해 생성했지만 일정 시간 동안 Redis에 등록되지 않은 서버들을 출력합니다.

    • dedicated_server_defunct_timeout_seconds=<정수> (기본 값:300, 5분)을 사용합니다.
  • DSM: Spawn 요청이 중복 발생할 수 있던 문제가 수정되었습니다.

  • DSM: 인스턴스 생성 실패 로그가 구체적으로 변경되었습니다.

    • 생성 인스턴스 대기 / 용량 부족 / 잘못된 요청 등으로 구분됩니다.
  • DSM: Spawn 요청이 실패한 경우 로그로 출력

  • DSM: 호스트 서버 연결 실패 시 연결을 시도했던 주소를 로그로 출력하게 변경했습니다.

  • dedicated-server-host 로그를 추가했습니다.

    • 인증 실패, 매치 관련 로그들을 추가했습니다.
  • ds state 서버에서 JWT 인증 실패 시 추가 로그를 출력합니다.

  • DS Host 서비스 요청 타임아웃 옵션 추가

    • 매치 요청에 대한 프로세스가 지정된 시간( request_timeout_seconds , 기본 값: 10초) 초 안에 실행되지 않으면 매치 실패로 간주합니다.
  • DS Host: 호스트 서비스에서 생성한 프로세스가 비정상적으로 종료된 경우 에러를 출력합니다.

  • dedicated_server_defunct_timeout_seconds 플래그 이름 변경

    dedicated_server_launch_timeout으로 변경되었습니다.

  • dedicated_server_terminate_defunct_instances 플래그 추가

    • 이 값이 true로 설정된 경우 dedicated_server_launch_timeout 시간 안에 ready API를 받지 못한 인스턴스들을 자동으로 종료시킵니다.
  • World 의 Broadcast, FindSession 의 잘못된 Assert 제거

Network
  • TCP SSL 지원 추가
  • ECDH/ECDHE 키 교환 알고리즘을 인식하지 못하는 문제 수정
  • SSL 기본 알고리즘 순서 변경 및 허용 목록 축소
  • 웹소켓 프로토콜 지원
  • 분당 처리할 세션당 메시지 수 제한 추가
  • HTTP 에도 rate limit 적용 (HTTP 429)
  • Session Reliability를 사용할 때 delayed ack, piggy back 기능 추가
    • 해당 옵션은 delayed_ack_interval_in_ms를 0이상의 값으로 설정했을 때 사용 할 수 있습니다.
  • 메시지 압축 기능 추가
  • 압축 옵션 설정 (transport 별 옵션으로 분리)
Object
  • C# - kReadLock 으로 Fetch 후 쓰기를 할 때 더 자세한 로그가 출력되도록 개선

  • ORM 오브젝트 GetLockType() C++ 함수 추가

  • ORM 오브젝트 GetLockType() C# 함수 추가

  • C# Object.WriteAllImmediately, {Object}.WriteImmediately 함수 추가

  • C# RegisterAttributeTrigger 함수 추가

  • C# SelectBy{AttributeName} 함수 추가

  • 동일한 ORM 객체를 다른 LockType으로 Fetch할 때 죽는 문제 수정

  • ORM 사용 시 자료형 추가 지원

    • ORM 에 자료형을 더 상세하게 입력할 수 있게 추가되었습니다. 지원되는 타입: int8, int16, int32, int64, float, timestamp, datetime
  • DateTime을 String에서 WallClock/DateTime으로 변경

    DateTime, timestamp는 Map, Array로 사용할 수 없습니다.

  • Jinja2 2.9 미만 버전에서 복합키 생성이 되지 않는 문제 수정

Distribution
  • Unreal Dedicated Server 와 RPC 통신하는 기능 추가.
    • Unreal 클라이언트 플러그인 95 Stable 버전 이상이 필요합니다.
  • DedicatedServerRpc: bytes 대신 FunDedicatedServerRpcMessage 를 사용하도록 수정.
  • 자동으로 Dedicated Server RPC server 를 알아내는 기능 추가.
  • DedicatedServerRpc: Dedicated Server 에서 입력한 Tag 로 peer 목록 가져오는 기능 추가
    • DedicatedServerRpc 기능을 사용할 경우 Dedicated Server 에서 사용하는 Unreal 클라이언트 플러그인을 95 Stable 버전 이상으로 업데이트하셔야 합니다.
  • DedicatedServerRpc: ConnectHandler 에서 tag 를 조회할 수 없는 문제 수정.
  • DedicatedServerRpc: Tag 를 얻을 수 있는 GetPeerTag() 함수 추가
  • RPC: 서버간 연결 관련 처리 개선.
  • 데이터베이스 비활성화시 레디스 기반 RPC를 사용할 수 없던 문제가 해결되었습니다.
Database
  • Redis 컴포넌트에 database 선택할 수 있는 기능 추가.
  • RedisClient: Create() 할 때 database 선택할 수 있도록 수정.
  • MariaDB 연결 실패 시 크래시할 수 있던 문제 수정
  • RedisClient: 알 수 없는 이유로 연결 실패하여 재연결할 때 크래시되는 버그 수정.
  • 이제 MariaDB Connector가 SQL 타임스탬프 타입을 읽을 수 있습니다.
  • 이제 MariaDB Connector에 Client 플래그를 설정할 수 있습니다.
Management
  • 아이펀 디플로이의 드랍다운 리스트 기능 사용 가능하게 수정
  • 아이펀 디플로이의 반복 캠페인 처리 추가
  • DeployApiService 에서 지급 가능한 아이템 목록을 순서대로 보내게 수정
  • Deploy Api Service에 다수의 유저를 제재하거나 제재 해제할 수 있는 API 추가
  • 이제 Http::Request, http::Request2 객체를 통해 클라이언트의 IP를 확인할 수 있습니다.
  • Counter API 정보에 캐시 메모리 크기( cachedram )가 추가되었습니다.
Account
  • 영수증 검증 시 product 구매 정보가 없는 경우에 대한 에러코드 추가
  • 영수증 검증 시 트랜잭션 id를 가져올 수 있도록 추가 인터페이스 제공
System
  • 등록되지 않은 Activity Log 사용 시 크래시 하지 않도록 수정
  • Docker CE 에서 실행 실패하는 문제 수정
Framework
  • C# - 서버 크래시 시 콜스택 정보가 로그에 항상 포함되도록 개선
misc.
  • 일부 플랫폼에서 C# 패키징이 실패하는 문제 수정

  • 아이펀 디플로이 추가 설정 기능 및 캠페인 설명 문서화

  • C# 프로젝트 생성 시 불필요한 .cc/.h 파일을 생성하지 않도록 변경

  • 프로젝트 생성 시 predefined 매크로 템플릿이 동작하지 않던 문제 수정

  • Ubuntu 16.04에서 mdb 파일이 만들어지지 않던 문제 수정

  • funapi_client_resource_generator Windows 지원 추가

  • 하위 디렉터리에 .proto 파일이 있는 경우에 오작동하는 부분 수정 (C#)

  • ORM 사용 시 자료형 추가 지원(C#)

  • ArrayRef에 IList<T>를 지원 인터페이스 추가(C#)

  • Mono에서 타이머 취소 시 exception이 발생하던 문제 수정

  • AppleGameCenter(C#) 지원

  • C#에서 페이스북 인증시 크래시하는 문제 수정

  • Dedicated server manager(C#) 지원

  • RedisClient 의 StringCallback 이 크래시하는 문제 수정(C#)

  • Dedicated Server Rpc C# 지원

  • 압축관련 사항 문서화

  • Deploy Api Service에 다수의 유저를 제재하거나 제재 해제할 수 있는 API 추가(C#)

  • funapi_client_resource_generator를 이용한 목록 추출 시 .funignore 파일 지원

    .funignore 파일은 POSIX 정규 표현식을 따르며 패턴과 일치하는 파일을 json 결과물 목록에서 제외시킵니다.

  • C#에서 빈 프로토버프 메시지를 보낼 때 서버가 크래시하던 문제 수정

  • 2794 experimental 버전에서 C# Protobuf 메시지 생성이 실패할 수 있던 문제가 수정되었습니다.

  • 데디케이티드 호스트 서비스에서 AWS 리전이 아닌 AZ 정보를 가져오는 문제가 수정되었습니다

  • 영수증 검증 시 트랜잭션 id를 가져오는 인터페이스 추가(C#)

  • 영수증 검증 시 product 구매 정보가 없는 경우 에러 코드 추가(C#)

  • dedicated-server-host 로그를 추가했습니다.

    인증 실패, 매치 관련 로그들을 추가했습니다.

  • ds state 서버에서 JWT 인증 실패 시 추가 로그를 출력합니다.

  • DS Host: 호스트 서비스에서 생성한 프로세스가 비정상적으로 종료된 경우 에러를 출력합니다.

v1.0.0-2619 (2018-02-02)

2018-02-02 10:19:18

Service
  • Matchmaking 시 enable_dynamic_match = false 면 시간순으로 우선권을 갖도록 수정

v1.0.0-2591 (2018-01-12)

2018-01-12 08:47:46

Network
  • funtest::Session 의 TCP 닫힐 때 상태 정보 문제 수정

v1.0.0-2586 (2018-01-09)

2018-01-09 08:32:14

Warning

Breaking Changes

다음의 변경 사항으로 인해 funtest::Session 을 사용하는 경우
서버를 다시 빌드해야 합니다.
  • funtest::Session 이 RedirectClient 처리할 수 있게 수정
Network
  • funtest::Session 이 RedirectClient 처리할 수 있게 수정

v1.0.0-2582 (2018-01-05)

2018-01-05 16:52:17

Management
  • 1.0.0-2574 Stable 버전에서 ApiService가 동작하지 않는 문제 수정

v1.0.0-2574 (2018-01-02)

2018-01-02 15:23:00

Management
  • ApiService Port 가 0 일 때 서버 구동이 안되는 문제 수정

v1.0.0-2570 (2018-01-02)

2018-01-02 03:05:48

Management
  • ApiService 가 완전히 초기화된 후 요청을 받도록 수정

v1.0.0-2562 (2017-12-29)

2017-12-29 13:31:59

Service
  • Matchmaking 통계 출력 문제 수정.
  • Matchmaking 통계에서 매칭 min/max 초기값을 0으로 수정.
Management
  • API service 의 URL 처리 로그에 bytes 길이도 출력하도록 수정.

v1.0.0-2558 (2017-12-28)

2017-12-28 16:51:38

Service
  • –matchmaking_server_logging_level 추가.
  • MatchmakingServer 에 REST API 들 추가
  • matchmaking 관련 counter 추가
Distribution
  • 크래시했을 때 서버 프로세스가 종료되지 않을 수 있는 문제 수정
Management
  • matchmaking_server_logging_level 을 runtime flag 로 지정.

v1.0.0-2542 (2017-12-26)

2017-12-26 10:42:12

Service
  • API 처리 시 특정 상황에서 레이스 컨디션이 발생하는 문제 수정

v1.0.0-2517 (2017-12-07)

2017-12-07 01:45:04

Service
  • Google Play Game 인증 검증 시 웹 콘솔 id로도 통과하도록 수정

v1.0.0-2477 (2017-11-23)

2017-11-23 02:44:35

Service
  • Dedicated Server 관리하는 컴퍼넌트 추가

  • 서버 빌드시 Unity3D DLL 빌드가 실패하는 문제 수정

  • DSM: 유저 난입이 가능하게 구현 수정

  • DedicatedServerManager 에 AWS Subnet ID 를 지정할 수 있도록 수정

  • aws_settings 의 subnet_id 가 빈 문자열일 때 발생하는 문제 수정

  • DedicatedServerManager 가 2 대 이상일 때 발생되는 문제 수정

  • DedicatedServerManager 가 요청을 Queueing 하도록 수정

  • DedicatedServerManager::Cancel() 추가

  • Master DedicatedServerManager 가 종료될 때 즉시 Master 권한을 포기하도록 수정

  • 데디케이티드 서버에 유저 진출입, 커스텀 콜백 기능 추가

    ConfigureReservedInstanceCountCallback 라는 콜백을 이용해서 EC2 상의 데디케이티드 서버 호스트 수를 입력 받고, 이후에 사용할 예약 인스턴스 수를 동적으로 조절할 수 있는 기능이 추가되었습니다.

  • Redis 가 초기화 된 후에 DSM이 크래시할 수 있는 버그 수정

  • DS host에 서버를 띄울 공간이 없을 때 지나치게 빨리 재시도하는 문제 수정

  • 데디케이티드 서버를 강제 종료하는 시간 지정할 수 있게 수정

v1.0.0-2458 (2017-11-13)

2017-11-13 11:35:54

Warning

Breaking Changes

다음의 변경 사항으로 인해 서버를 다시 빌드해야 합니다.
  • Timer 에 Event Tag 를 지정하여 병렬처리 할 수 있게 수정
다음의 변경 사항으로 인해 연결되는 모든 서버의 엔진 업데이트가 필요합니다.
  • 분산 환경에서 Object Model 이 다른 서버는 구동되지 않도록 수정
다음의 기능 추가로 인해 리더보드 업데이트가 필요합니다.
  • Leaderboard 월간 랭킹 리셋 기능 추가

    1.0.0-1803 stable 버전 이상의 리더보드로 업데이트 해야 합니다.

다음의 변화로 인해 코드 수정 및 빌드가 필요할 수도 있습니다.
  • DeployAPI: 선물 지급 API 수정

    선물 지급 API가 수정되어 GiveGiftToCharacter API 삭제. 새로 추가된 GiveGift를 사용해서 수정 및 새로 빌드해야 정상 동작합니다.

  • Deploy API 수정 사항 반영

    캠페인 시작 콜백 함수에 전달하는 CampaignArgument 에 시작/종료 시간 관련 인자를 추가했습니다. 해당 인자를 접근하기 위해선 새로 빌드해야 합니다. 아이템 지급 API에 유저에게 지급하는 것인지 캐릭터에게 지급하는 것인지 구분하는 인자가 추가되었습니다. (해당 인자는 account, character 중 하나의 값을 씁니다.)

  • 개별 timespan 랭킹 삭제에서 모든 랭킹 삭제하도록 LeaderboardResetRequest 인터페이스 변경.

    LeaderboardResetRequest 객체를 만들 때 입력하는 timespan 이 제거되었습니다. 해당 구조체를 사용하시는 경우 코드 수정이 필요합니다.

  • iFun Authenticator deprecated 처리

    iFun Authenticator 를 이용한 인증 검증 기능은 Deprecated 되어 향후 제거될 예정이오니 각 플랫폼별 인증 검증 함수로 변경하시기 바랍니다.

  • GooglePlayGame AuthenticationResponse 에러 관련 변수명 변경(C#)

    해당 구조체를 사용하시는 경우 코드 수정이 필요합니다.

Service
  • iFun Authenticator deprecated 처리
  • 개별 timespan 랭킹 삭제에서 모든 랭킹 삭제하도록 LeaderboardResetRequest 인터페이스 변경.
  • Leaderboard 월간 랭킹 리셋 기능 추가
  • GooglePlayGameService 인증 검증 지원
  • GooglePlayGameService 인증 검증 지원(C#)
  • C# AccountAuthentication deprecated 처리
  • C# SessionClosedHandler 에서 AccountManager 로그아웃 처리 할 수 없던 버그 수정.
  • GooglePlus Authenticate/GetPersonalInfo C# 함수 추가
  • NexonPlatform Authenticate C# 함수 추가
  • NexonToy Authenticate C#함수 추가
  • Facebook Authenticate/GetPersonalInfo C# 함수 추가
  • LINE Authenticate/GetPersonalInfo C# 함수 추가
  • GooglePlayGame AuthenticationResponse 에러 관련 변수명 변경(C#)
Network
  • TCP transport 가 attach 되는 경우 호출되는 handler 등록 가능하게함
  • Session::GetLastSendTime() 추가
  • Session::GetExpirationTime() 추가
  • 메세지 핸들러 호출 전/후를 후킹할 수 있는 함수 추가
  • 메세지 핸들러 호출 전/후를 후킹할 수 있는 C# 함수 추가
  • Session::GetExpirationTime() 의 값이 부정확하게 나오는 문제 수정
Time
  • Timer 에 Event Tag 를 지정하여 병렬처리 할 수 있게 수정
  • Repeating Timer 가 밀릴 때 과도하게 이벤트를 생성하지 않도록 수정
  • 서버 프로세스의 구동시간을 얻는 WallClock::GetUptime(), WallClock::GetUptime2() 추가
  • 서버 프로세스의 구동시간을 얻는 funapi/uptime Counter 추가
Distribution
  • MySQL, Zookeeper 처리 속도 모니터링 기능 추가
  • Rpc: peer 연결 여부를 확인할 수 있는 IsPeerConnected() 함수 추가.
  • RPC Disconnect Handler 에서 접속 끊긴 Peer 의 Tag 와 Status 를 읽을 수 있게 수정
  • 분산 환경에서 Object Model 이 다른 서버는 구동되지 않도록 수정
System
  • event_profiling 카운터에 함수 처리 시간 추가(handler_time)
  • execution_time 으로 내림차순 정렬하는 event_profiling_execution_time_order 카운터 추가
  • handler_time 으로 내림차순 정렬하는 event_profiling_handler_time_order 카운터 추가
  • io_wait_time 으로 내림차순 정렬하는 event_profiling_io_wait_time_order 카운터 추가

v1.0.0-2417 (2017-10-16)

2017-10-16 17:20:05

Management
  • 캠페인 보상 정보 파싱 버그 수정 (C#)

v1.0.0-2410 (2017-10-12)

2017-10-12 15:00:33

Management
  • C# DeployApiService 가 잘못된 캠페인 형식을 사용하는 버그 수정

v1.0.0-2407 (2017-10-12)

2017-10-12 10:32:42

Network
  • C# http.Method.GetString(), http.StatusCode.GetString() 추가
Management
  • DeployApiService 를 native/mono 중 선택해서 활성화하게 수정
  • C# iFunDeploy API 연동 지원 (1) - 유저 관리 기능
  • C# iFunDeploy API 연동 지원 (2) - 커스텀 API
  • C# iFunDeploy API 연동 지원 (3) - 캠페인 기능 연동
  • C# iFunDeploy 연동 지원 (4) - 인벤터리 삭제 지원
  • DeployAPIService에서 ORM 롤백 처리가 되지 않는 문제 수정(C#)
  • C#에서 추가한 Restful API가 목록 조회 시 정상적으로 포함되도록 변경
misc.
  • DeployApiService 문서 업데이트

v1.0.0-2404 (2017-10-11)

2017-10-11 15:00:05

Service
  • Client redirection 할 때 IP 대신 hostname 줄 수 있게 수정
System
  • IP resolver 의 nat 타입에 DNS 주소 허용

v1.0.0-2401 (2017-09-29)

2017-09-29 12:05:50

Service
  • 게임 서버에서 리더보드 랭킹을 초기화할 수 있는 ResetLeaderboard() 함수 추가

    이 기능을 사용하려면 1.0.0-1744 stable 버전 이상의 리더보드 에이전트가 필요합니다.

Database
  • 일부 머신에서 RedisClient 연결이 해제되는 문제 수정.
  • RedisClient: Pub/Sub 처리시 간헐적으로 assertion 에 걸리는 문제 수정.
Object
  • 분산환경에서 Object Cache 메모리 사용량 개선

v1.0.0-2377 (2017-09-21)

2017-09-21 10:34:25

Object
  • ORM 의 메모리 사용량 관련 문제 수정

v1.0.0-2363 (2017-09-15)

2017-09-15 14:21:08

Network
  • Protobuf field 로 메세지 핸들러 등록시 메모리릭이 발생되는 문제 수정
  • Protobuf field 로 메시지 핸들러 등록시 이름에 > 가 포함되는 버그 수정
Framework
  • 크래시할 때 엔진 버전을 로그로 출력

v1.0.0-2337 (2017-09-04)

2017-09-04 23:18:55

Framework
  • 이벤트 함수에서 크래시할 때 이벤트 이름 출력

v1.0.0-2334 (2017-09-01)

2017-09-01 14:00:14

Distribution
  • Segmentation Fault 로 크래시했을 때도 Zookeeper 연결을 끊고 종료하도록 수정.
Object
  • ORM 관련 잘못된 Assert 제거

v1.0.0-2312 (2017-08-25)

2017-08-25 14:04:25

Object
  • Object Cache 가 trailing spaces 들을 MySQL general_ci 와 동일하게 다루도록 수정
Network
  • session id 를 한 번만 보내 트래픽을 줄이는 기능 관련 크래시 문제 수정

v1.0.0-2300 (2017-08-22)

2017-08-22 17:10:44

Object
  • kReadCopyNoLock 으로 Array, Map Fetch 할 때 NULL 오브젝트가 있으면 크래시 하는 버그 수정.

v1.0.0-2292 (2017-08-22)

2017-08-22 09:42:50

Service
  • DeployApiService: 아이템 회수 명령 인자 설정 버그 수정

v1.0.0-2282 (2017-08-17)

2017-08-17 14:31:37

Warning

Breaking Changes

  • 다음의 변화로 인해 코드 수정 및 빌드가 필요할 수도 있습니다.

    • Deploy API: 버그 수정 및 바뀐 인터페이스 대응

    DeployApiService 의 일부 인터페이스가 수정되어 서버를 다시 빌드해야합니다. SearchUsers, GetInventory 함수의 경우 구현을 수정하셔야 합니다.

    • DeployAPI: 선물 지급 API 수정

    선물 지급 API가 수정되어 GiveGiftToCharacter API 삭제. 새로 추가된 GiveGift를 사용해서 수정 및 새로 빌드해야 정상 동작합니다.

    • Deploy API 수정 사항 반영

    캠페인 시작 콜백 함수에 전달하는 CampaignArgument 에 시작/종료 시간 관련 인자를 추가했습니다. 해당 인자를 접근하기 위해선 새로 빌드해야 합니다. 아이템 지급 API에 유저에게 지급하는 것인지 캐릭터에게 지급하는 것인지 구분하는 인자가 추가되었습니다. (해당 인자는 account, character 중 하나의 값을 씁니다.)

Management
  • Deploy API: 버그 수정 및 바뀐 인터페이스 대응
  • DeployAPI: 선물 지급 API 수정
  • DeployAPI: 캠페인 취소, 아이템 대량 지급 API 추가
  • Deploy API 수정 사항 반영
  • DeployApiService: 인벤터리 아이템 다중 회수 API 지원
  • C# ApiService URL 매칭하는 방식 개선
Network
  • 이벤트 프로파일링 시 Protobuf 핸들러 이름이 정수 값으로 보이는 문제 수정
misc.
  • C# HTTP API 통신 예제 코드 추가

v1.0.0-2256 (2017-08-10)

2017-08-10 10:02:30

Warning

Breaking Changes

  • 다음의 변화로 인해 DB 권한 확인이 필요할 수도 있습니다.

    만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.

    • use_db_char_type_for_object_id 옵션 사용시 캐릭터셋이 지정되지 않는 버그 수정.

    이 옵션을 true 로 설정하셨을 경우 엔진 업데이트 후 서버 실행 시 프로시저를 재생성하기 위해 DDL 쿼리를 실행합니다.

    • 오브젝트를 DB 에서 가져올 때 트래픽 줄이도록 수정 - 1.
    • 오브젝트 DB 테이블의 col__tag 사용하지 않도록 수정.
    • Array 또는 Map 만 가지는 오브젝트의 프로시저를 만들 수 없는 버그 수정.

    본 수정으로 인해 DB 스키마 해시가 변경되어 프로시저를 재 생성하는 DDL 쿼리가 실행됩니다.

  • 다음의 변화로 인해 모든 서버의 엔진 업데이트가 필요합니다.

    • ORM 분산 처리 시 발생하는 네트워크 트래픽 개선

    이전 버전의 서버와 연결되면 크래시합니다. 모든 서버를 함께 업데이트 하시기 바랍니다.

  • 다음의 변화로 인해 플러그인 업데이트가 필요할 수도 있습니다.

    • UDP 에서 Session ID 를 첫 메시지일 때만 전송하는 기능을 쓸 때 버그 수정

    UDP 와 send_session_id_only_once 를 사용하실 경우 다음 버전 이상의 플러그인으로 업데이트하시기 바랍니다.

    • Unity3D: 228
    • Unreal4: 67
    • Cocos2d-x: 67
Object
  • ORM 롤백 처리 중 Assert 로 크래시할 수 있는 문제 수정
  • 하나의 Object 가 서로 다른 두 서버에서 동시에 캐싱될 수 있는 문제 수정
  • Object Cache 의 Index 성능 개선
  • 생성된 Object 가 DB Update 완료 전에 Cache 에서 내려갈 수 있는 문제 수정
  • use_db_char_type_for_object_id 옵션 사용시 캐릭터셋이 지정되지 않는 버그 수정.
  • Object ID Pool 관련 Assert 수정
  • Object 가 cache_expiration_in_ms 보다 더 빨리 캐시에서 내려갈 수 있는 문제 수정
  • 분산 환경에서 ORM Object Cache 적중률 개선
  • Object 삭제 관련 Assert 로 크래시할 수 있는 문제 수정
  • 분산 처리 과정의 Lock 관련 Assert 수정
  • ORM 분산 처리 시 발생하는 네트워크 트래픽 개선
  • 오브젝트 쿼리 용량 줄이도록 수정.
  • 프로시저를 사용하지 않을 때 불필요한 쿼리 제거.
  • ORM 지연 업데이트 관련 Assert 로 크래시하는 문제 수정
  • 오브젝트를 DB 에서 가져올 때 트래픽 줄이도록 수정 - 1.
  • 오브젝트를 DB 에서 가져올 때 트래픽 줄이도록 수정 - 2.
  • 오브젝트 DB 테이블의 col__tag 사용하지 않도록 수정.
더이상 col__tag 컬럼이 사용되지 않습니다. 엔진에서 자동으로 해당 컬럼을 제거하지는 않습니다.
  • 종료 처리가 멈출 수 있는 문제 수정
  • Array 또는 Map 만 가지는 오브젝트의 프로시저를 만들 수 없는 버그 수정.
  • 오브젝트 프로시저명을 축약하여 사용할 수 있는 기능 추가
MANIFEST/Object 에 use_db_stored_procedure_full_name 를 false 로 지정하면 축약된 오브젝트 프로시저명으로 DB 서버와 통신합니다. 이 경우 DB 스키마 해시가 변경되어 프로시저를 재 생성하는 DDL 쿼리가 실행됩니다. 만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.
  • ORM Object 를 생성 후 바로 삭제할 때 Assert 로 크래시하는 문제 수정
  • 한 이벤트에서 동일한 Key 의 ORM 오브젝트의 생성 삭제를 반복할 때 발생하는 문제 수정
  • 삭제한 오브젝트를 다시 삭제하는 잘못된 코드를 ASSERT 로 막던 것 허용.
Network
  • UDP 에서 Session ID 를 첫 메시지일 때만 전송하는 기능을 쓸 때 버그 수정
  • send_session_id_only_once 관련 Assert 로 크래시할 수 있는 문제 수정
  • Session::CloseTransport() 로 UDP 를 닫을 때 버그 수정
Service
  • C# AccountManager 관련 콜백이 간헐적으로 호출되지 않는 문제 수정
Framework
  • ArgumentMap 에 FindDoubleArgument() 함수 추가.
Distribution
  • 분산 환경에서 불필요한 Zookeeper 요청 제거
misc.
  • MANIFEST.json double 타입 인자 지원.

v1.0.0-2214 (2017-07-27)

2017-07-27 09:23:33

Warning

Breaking Changes

  • 다음의 변화로 인해 Multicast Protobuf 수정 및 플러그인 업데이트가 필요할 수도 있습니다.

    • Multicast protobuf extension 관련 사용 가능한 필드 번호 범위가 수정되었습니다.

    만약 FunMulticastMessage 를 확장하여 사용할 경우 필드 번호를 16 부터 사용하도록 수정해야 합니다. 그리고 다음 버전 이상의 플러그인으로 업데이트해야 합니다. (Stable 버전 기준)

    • Unity3D: 220
    • Unreal4: 65
    • Cocos2d-x: 66
  • 다음의 변화로 인해 서버 빌드 및 플러그인 업데이트가 필요합니다.

    • Protobuf 의 Message Type 을 String 대신 Integer 를 쓸 수 있는 기능 추가

    이 기능을 사용하려면 다음 버전 이상의 플러그인으로 업데이트 해야 합니다. (Stable 버전 기준)

    • Unity3D: 220
    • Unreal4: 65
    • Cocos2d-x: 66
  • 다음 변화로 인해 코드 수정 및 인증 서버 업데이트가 필요합니다.

    • Kakao 인증 제거

    변경된 Kakao 운영정책으로 인해 서버 사이드 인증 API 가 제거되었습니다. 만약 Kakao 인증 API 를 사용중이시라면 직접 Kakao API 를 호출하여 인증 처리해야 합니다. 직접 구현하실 경우 다음 GitHub 에서 구현 샘플을 참고하실 수 있습니다.

    https://github.com/iFunFactory/engine-example-kakao-game-authentication

  • 다음의 변화로 인해 MANIFEST.json 파일 수정이 필요합니다.

    • 네트워크 I/O 처리를 위한 스레드 수 설정 이름 변경

    IoService/io_service_threads_size 에서 SessionService/network_io_threads_size 로 변경 되었으며, 기존 설정도 당분간 유효하게 작동합니다. 가급적 빠른 시일내에 새로운 설정 이름으로 변경하시기 바랍니다.

    • Google Log 보관 기간 옵션 추가

    30 일이 지난 디버그(glog) 로그가 삭제됩니다. 더 오래 보관하기 위해서는 glog_retention_period_in_days 설정 값을 변경해야 합니다.

  • 다음의 변화로 인해 코드 수정 또는 서버를 다시 빌드 해야합니다.

    • Matchmaking 서버를 선택할 수 있도록 개선

    StartMatchmaking() 함수에 target_server 파라미터가 추가되었습니다. kRandom(무작위), kLeastNumberOfPlayers(요청이 적은 서버 우선), kMostNumberOfPlayers(요청이 많은 서버 우선) 중 하나 또는 직접 PeerId 를 선택할 수 있습니다.

    • Session::LastSentMessageType() 함수 오타 수정

    세션의 API 가 변경되어 소스 코드 수정이 필요합니다.

    • 서버 테스트 기능(funtest::Session) UDP 지원

    funtest::Session 을 사용할 경우 서버를 다시 빌드해야합니다.

    • Object Model 을 다루는 내부 코드 개선
    • JsonSchema::Type kDouble 오타 수정
Service
  • Matchmaking 서버를 선택할 수 있도록 개선
GetMatchmakingServerInfo() 함수가 추가 되었습니다. 모든 MatchmakingServer 의 PeerId 와 Matchmaking 요청 수를 알 수 있습니다.
  • Nexon Platform 인증 관련 변경사항 반영
  • 멀티캐스트 메시지를 검사할 수 있는 기능 추가
  • Kakao 인증 제거
  • AccountManager RedirectClient 호출 후 엔진에서 세션을 종료하도록 수정
Network
  • 네트워크 I/O 처리를 위한 스레드 수 설정 이름 변경
  • Session::LastSentMessageType() 함수 오타 수정
  • TCP, UDP 에서 Session ID 를 첫 메시지일 때만 전송하고 그 이후에는 생략하여 네트워크 트래픽을 줄이는 기능 추가
  • Protobuf 의 Message Type 을 String 대신 Integer 를 쓸 수 있는 기능 추가
  • Protobuf Extension Identifier 를 Message Type 으로 쓸 때 빌드 오류 수정
  • close_transport_when_session_close 옵션이 작동하지 않는 문제 수정
  • use_session_relibility 와 send_session_id_only_once 기능을 함께 쓸 때 Encryption 관련 ASSERT 로 크래시할 수 있는 문제 수정
  • use_session_relibility 와 send_session_id_only_once 기능을 함께 쓸 때 Session Reliability 에 의한 재연결에 안될 수 있는 문제 수정
  • UDP 관련 불필요한 ASSERT 제거
C#
  • C# 지원(Ubuntu)

CentOS 는 향후 지원할 예정입니다.

C# 으로 개발하기 위해서는 다음과 같은 명령을 입력하여 프로젝트를 다시 만들어야 합니다.

$ funapi_initiator {ProjectName} --mono
  • 서버 테스트 기능(funtest::Session) UDP 지원
  • 서버 테스트 기능(funtest::Session) 의 HTTP 관련 버그 수정
  • Install/Start/Uninstall 함수의 Return Type 을 void -> bool 로 변경
  • 오브젝트 ArrayRef, MapRef 에 Has, Clear, FindFirstEmptySlot 함수 추가
  • Monodevelop 5.x 버전에서 디버깅이 시작되지 않는 문제 수정
  • Session::SetTransport(...) 지원
  • Event::Abort() 지원
  • ORM Object 에 Bool 타입이 있을 때 빌드 오류 수정
  • Mariadb(MySQL) Connector 사용 시 크래시할 수 있는 문제 수정
  • ORM Database 와 연결된 Mariadb Connector 를 얻을 수 있는 API 추가
  • RedisClient 추가
  • ApiService Handler 에서 ORM 을 사용할 수 없는 문제 수정
  • Object Array, Map Fetch 함수 성능 개선
  • Object Create() 함수로 전달된 String Key 가 모델에 정의된 길이를 초과하면 NullReferenceException 이 발생하는 문제 수정
  • null 인 Object 를 좌변에 두고 ‘==’ 연산자로 비교할 때 NullReferenceException 이 발생하는 문제 수정
  • Object 를 JSON 으로 초기화 하는 기능 지원
  • Map 의 Key 에 String Type 이 있을 때 빌드가 안되는 문제 수정
  • C# 지원 업데이트
Object
  • ORM Object 의 Delete() 를 두 번 이상 호출할 때 걸리는 ASSERT 제거
  • Object Fetch 함수 성능 개선
  • Object Model 을 다루는 내부 코드 개선
  • ORM 분산처리 관련 잘못된 ASSERT 제거
  • DB, Zookeeper Write I/O 지연시 정상적인 Key 가 Dangling Key 로 처리되는 문제 수정
  • 존재하지 않는 Key 의 Object 를 Create 또는 Fetch 할 때 일시적으로 CPU 를 과도하게 사용하는 문제 수정
  • 프로시저를 사용하지 않을 때 간헐적으로 Array 데이터를 지우지 못하던 버그 수정.
System
  • Google Log 보관 기간 옵션 추가
  • 이벤트 유입, 처리량 카운터가 실제 보다 낮고 부정확하게 측정되는 문제 수정
  • 간헐적으로 서버 종료 처리에 지연이 생기는 문제 수정
Distribution
  • 주키퍼 성능 카운터 주소를 zookeeper_stat 에서 distribution_profiling 으로 변경
Management
  • SystemInfo Counter 가 구동 후 일정 시간 동안 출력되지 않는 문제 수정
Database
  • RedisClient 명령 호출 후 메모리 반환에 지연이 생기는 버그 수정
  • RedisClient 추가
  • Mariadb Connector 가 재연결될 때 쿼리가 유실될 수 있는 문제 수정
misc.
  • 서버 크래시 발생시 종료안될 수 있는 문제 수정
  • Json::HasAttribute({AttrName}, {AttrType}) 함수 추가
  • CLion 개발 환경 구성 문서 업데이트(2017.1.2 버전 기준)
  • JsonSchema::Type kDouble 오타 수정
  • Mongodb logger에 SSL/TLS 활성화하는 플래그 추가
  • Object Type 의 JSON 을 다룰 때 내부의 불필요한 함수 호출 제거
  • ResourceManager 문서중 기획데이터 사용하기 예제 잘못된 것 수정
  • 리더보드에 추가된 mysql_local_account_column_length 옵션 설명 추가

v1.0.0-2164 (2017-06-27)

2017-06-27 14:46:25

Network
  • TransportProtocol 값에 대한 Assert 처리 강화
  • 다음 함수들이 kDefaultProtocol 을 인자로 받을 수 있도록 수정
    • Session::GetRemoteEndPoint()
    • Session::IsTransportAttached()
    • Session::CloseTransport()
Object
  • Object Lock/Lease 재시도 로그 표현 수정

v1.0.0-2130 (2017-05-31)

2017-05-31 14:00:37

Object
  • Object Model Error 로그에 더 많은 정보를 출력하도록 개선 및 FATAL 로그로 변경
  • 누락된 Object Model 검사 추가
Framework
  • Google Protobuf 관련 오류 로그를 stderr 대신 로그 파일에 기록되도록 수정.
Distribution
  • Zookeeper 장애에 대한 예외처리 개선
misc.
  • Ubuntu 16.04 에서 패키지 생성시 systemd 서비스가 실행되지 못하는 문제 수정
  • Flavor 사용시 systemd 패키지 생성시 서비스 실행이 정상적으로 안되는 문제 해결

v1.0.0-2086 (2017-05-10)

2017-05-10 16:35:04

misc.
  • Fixed server not running due to CentOS7 RapidJSON update.

v1.0.0-2066 (2017-04-20)

2017-04-20 11:03:36

Warning

Breaking changes

  • You need to rebuild the game server because of the following changes.

    • Fixed the bug preventing broadcasting from working if kDefaultProtocol was set

    Removed default recognized values for Session(AccountManager)::BroadcastLocally/Globally() function encryption and TransportProtocol.

    • Json::From*(...) Updated to receive callbacks when parsing from JSON::From*(...) fails

    Added parameters to receive callbacks when parsing from theJson::From*(...) function fails.

  • You need to update all servers connected via RPC due to the following changes.

    • Rpc::SetStatus() Updated to prevent overwriting internal engine status when Rpc::SetStatus() invoked
Network
  • Network: Added function to send messages to all sessions
  • AccountManager: Added function to send messages to all logged in sessions
  • Fixed the bug preventing broadcasting from working if kDefaultProtocol was set
  • Fixed bug ignoring later messages if unregistered messages were received from the handler in HTTP
  • Updated to leave transport protocol (TCP or UDP or HTTP) together in the session message log
  • Updated to leave more data such as client addresses in network log
  • Updated to leave log when session closed
  • Updated to automatically close transport when funtest::Session closed
  • Fixed server test function memory leak bug
Framework
  • Fixed bug delaying close handling during SIGSEGV crash
Distribution
  • Added flag called rpc_use_public_address
  • Rpc::SetStatus() Updated to prevent overwriting internal engine status when Rpc::SetStatus() invoked
Service
  • Multicast: Added hook called during message transmission
  • Added Line authentication
  • Fixed hang on assertion bug when logging in with a different account ID while already in a logged-in session in AccountManager
Object
  • Fixed bug causing crash when schema installed simultaneously on several servers
  • Updated to also support foreign attributes when object reset with JSON
Database
  • Mariadb(MySQL) Improved MariaDB (MySQL) connector timeout handling
System
  • Added flag to decide whether or not activity log schema output in MANIFEST
  • Fixed bug causing incorrect output of rollback frequency in event_profiling counter
misc.
  • Json::From*(...) Updated to receive callbacks when parsing from JSON::From*(...) fails
  • Multicast: Documented message transmission hooking
  • Documented session BroadcastLocally() and BroadcastGlobally() functions
  • Documented AccountManager BroadcastLocally() and BroadcastGlobally() functions
  • Json::FindAttribute() Added Json::FindAttribute() function
  • Fixed to work even when setup_build_environment is not a symbolic link

v1.0.0-1945 (2017-02-06)

2017-02-06 14:12:37

Warning

Breaking changes

  • Required client plugin updates are as follows.

    • Added feature to send Protobuf session ID in bytes

      You need to update client plugins to at least the versions listed below and rebuild Protobuf DLL.

      • Unity3D: 190
      • Unreal4: 35
      • Cocos2d-x: 35
  • You need to rebuild the game server because of the following changes.

    • Fixed crashing due to “Assert failed: ObjectCache::Delete(...)”
  • DB DDL queries can be processed when the server is running due to the following change.

    • Updated to only regenerate when object DB procedure changed

      Tables have been added due to this modification, and you can now execute DDL queries. If DB permissions are insufficient, the server may crash.

    • Locked col__tag column length at 36

      You can now execute DDL queries changing col__tag to 36 because of this change. If DB permissions are insufficient, the server may crash.

    • Added TRANSACTION ISOLATION LEVEL READ UNCOMMITTED setting for objects

      If you change this option when use_db_stored_procedure: true, you can execute the DDL regenerating the procedure. If DB permissions are insufficient, the server may crash.

Object
  • Object: Fixed crashing due to “Assert failed: IsValid()”
  • Object: Added feature to automatically change if string columns are long
  • Object: Added DB table schema verification for objects
  • Object: Added DB procedure schema verification for objects
  • Updated to only regenerate when object DB procedure changed
  • Locked col__tag column length at 36
  • Fixed crashing due to “Assert failed: ObjectCache::Delete(...)”
  • Added TRANSACTION ISOLATION LEVEL READ UNCOMMITTED setting for objects
  • Fixed table verification failure after schema installation
  • Fixed incorrect server shutdown when object DB schema retrieved
  • Fixed Assert failed: cache_for_lease_.Remove(object_id) crashing
  • Fixed potential unclearing of some resources during event timeout
  • Fixed crashing during DB schema update in CentOS
  • Added object counter, changed some counters to under objects
    • Changed previous objects to “object_count” under object counter.
    • Changed previous outstanding_update_query to under object counter.
    • Changed previous outstanding_fetch_query to under object counter.
System
  • Updated event thread hang checker
  • Updated event handling
  • Fixed assertion crashing during event handling
  • Added queue time to event profiling (queue_time_xxx)
  • Changed name of event profiling wait_time_xxx to io_wait_time_xxx
  • Changed name of each statistics item in event queue
    • Changed completion_xxx -> execution_time_xxx.
    • Changed wait_xxx -> io_wait_time_xxx.
  • Changed event_queue_stat to event_profiling_summary
  • Added event counter, changed some counters to under events
    • Changed previous event_queue_length to under event counter.
    • Changed previous event_injection_per_sec to under event counter.
    • Changed previous event_complete_per_sec to under event counter.
Distribution
  • Improved exception handling of irregular RPC message receipt
Framework
  • Fixed abnormal server shutdown when shutting down during component installation
misc.
  • Allowed proto file in directories outside {project}-source/src

  • Added feature to send Protobuf session ID in bytes

    See explanation of options in send_session_id_as_string.

v1.0.0-1904 (2016-12-15)

2016-12-15 12:07:12

Object
  • Fixed incorrect handling of some DB data by object_db_migrator.py tool

v1.0.0-1894 (2016-12-13)

2016-12-13 18:29:15

Object
  • Fixed incorrect handling of fields with unset values in the object migration tool

v1.0.0-1890 (2016-12-09)

2016-12-09 10:19:05

Object
  • Fixed overwriting of files extracted from the object migration tool

v1.0.0-1853 (2016-11-21)

2016-11-21 14:45:52

Warning

Breaking changes

  • Required Unity client plugin updates are as follows.

    • Multicast: Fixed client crashing bug when sending Protobuf multicast messages in iOS

      If using multicast, you need to use at least plugin version 186 and rebuild Protobuf DLL.

Service
  • Multicast: Fixed client crashing bug when sending Protobuf multicast messages in iOS

v1.0.0-1849 (2016-11-18)

2016-11-18 11:38:03

Distribution
  • Fixed distribution handling problem with incorrect build options in CentOS

v1.0.0-1841 (2016-11-15)

2016-11-15 15:37:02

Warning

Breaking Changes:

You need to rebuild the game server due to the following changes.

  • Session::GetLastReceiveTime(msgtype)Added hook called when Session::GetLastReceiveTime(msgtype), SendMessage()
Network
  • Session::GetLastReceiveTime(msgtype)Added hook called when Session::GetLastReceiveTime(msgtype), SendMessage()
  • HttpClient: Fixed retry when DNS search problem occurred
System
  • Fixed “Assert failed: IsValid()” crashing when using MulticastServer
  • Fixed “Assert failed: IsValid()” crashing when 2 or more event handlers registered in one event type
Distribution
  • Fixed “failed to unpublish” log output problem

v1.0.0-1815 (2016-10-28)

2016-10-28 16:59:15

Object
  • Fixed bug in which some procedures dropped when using export_db_schema option
  • Fixed bug not reflecting changed schema in insert, update procedures

v1.0.0-1809 (2016-10-26)

2016-10-26 11:48:08

Warning

Breaking Changes:

  • Required code updates are as follows.

    • Leaderboard: Removed ScoreSubmissionRequest::kUpdate

      You need to change to ScoreSubmissionRequest::kHighScore.

    • Redis: Removed Command(Async) function

      You need to change to the ExecuteCommand(Async) function.

  • Added detection code may be affected by the following.

    • Fixed failure to detect array and map attribute type changes

      The server may crash if array or map attribute types are changed while the server is running.

  • Required Unity client plugin updates are as follows.

    • AccountManager: Added messages for transfer between client servers

      If you use the server transfer feature, you must update the plugin to version 180 or higher.

Object
  • Fixed “failed to lease” log not output up to a set number of times
  • Reduced unnecessary retries due to lease delay when object ownership changes
  • Fixed failure to detect array and map attribute type changes
Service
  • AccountManager: Added messages for transfer between client servers
  • Leaderboard: Removed ScoreSubmissionRequest::kUpdate
Database
  • Redis: Removed Command(Async) function
Distribution
  • Improved distribution performance
  • Fixed crashing due to distribution assert
  • Fixed RPC connection failure bug when the server shut down unexpectedly
  • Rpc::SetStatus() Fixed unreflected peers during Rpc::SetStatus() access handling
Time
  • Added timestamp and timestring change features to WallClock
misc.
  • Document: Added client transfer documentation
  • Fixed funapi_profile failure to operate when there are multiple server processes

v1.0.0-1797 (2016-10-12)

2016-10-12 10:01:11

Management
  • Counter: Added concurrent_user counter
misc.
  • Document: Added list of counters supported by engine

v1.0.0-1795 (2016-10-11)

2016-10-11 09:28:56

Warning

If you use ChaCha20 or AES128 encryption, you must update the plugin to version 176 or higher.

Distribution
  • Fixed bug in which some Zookeeper clients were omitted from statistics
Network
  • Added ChaCha20 / AES128 support to transport encryption
misc.
  • Document: Updated C# Runtime test sample explanation
  • Document: Added Zookeeper max heap size Java option description
  • Document: Added Zookeeper auto purge option description

v1.0.0-1790 (2016-10-05)

2016-10-05 16:08:02

Warning

Breaking Changes:

  • Fixed failure to detect length changes in strings with variable lengths

    You can retry the DB schema update when running the server. If DB permissions are limited, the DB schema update executes and the server may crash. In this case, use the export_db_schema option explained in Required DB permissions to update the DB schema with an administrator DB account.

Object
  • Fixed crashing due to distribution assert
  • Fixed failure to detect length changes in strings with variable lengths
  • Fixed bug in Python code when object handling code created

v1.0.0-1782 (2016-09-28)

2016-09-28 18:30:20

Object
  • Fixed server crash bug due to object fetch assert
Service
  • Added Curl dependency to ClientResourceServce MANIFEST
misc.
  • Json::Copy() Optimized Json::Copy()

v1.0.0-1777 (2016-09-28)

2016-09-28 10:25:56

Distribution
  • Fixed temporary inability to import objects
  • Fixed intermittent crashing when server shuts down
  • Fixed intermittent Zookeeper connection failure when server starts
  • Fixed irregular handling during shutdown after crash
  • Fixed omitted RPC finisher in engine
  • Fixed RPC disconnect handler execution order bug
Object
  • Fixed infrequent assertion crash bug when remote server shuts down
  • Fixed distribution assert crash bug
  • Updated shutdown handling
Framework
  • Fixed “make check_features” failure to operate when there is a comment in the MANIFEST
  • Fixed server not working in some IDE development environments when there is a comment in the MANIFEST
misc.
  • Added Json::FromFileWithComments() and Json::FromStreamWithComments() reading JSON (including comments) from file and stream

v1.0.0-1763 (2016-09-22)

2016-09-22 18:05:19

Warning

If you use IFE1 or IFE2 encryption, you must update the plugin to version 176 or higher.

Network
  • Fixed IFE1, IFE2 encryption bug

v1.0.0-1739 (2016-09-08)

2016-09-08 12:27:23

Object
  • Fixed object lock downgrade bug
  • Removed incorrect object handling assert
  • Fixed excessive event rollbacks in particular situations
  • Fixed bug when fetching the same object with different lock types in some situations
  • Fixed potential server shutdown due to distribution assert
  • Fixed bug when fetching null object ID with kReadCopyNoLock
Distribution
  • Fixed potential crashing during object handling
  • Removed incorrect distribution assert
  • Fixed crashes during shutdown
Framework
  • Fixed shutdown handling delay when server crashes while running
  • Updated shutdown handling
Management
  • Counter: Added log output if counter exceeds threshold value
System
  • Event: Added event queue handling time statistics
misc.
  • Documented how to lock package version
  • Document: Leaderboard: Added check for ranking schedule reset
  • Document: Changed CLion build configuration description
  • Document: Fixed broken links in leaderboard documentation
  • Documented how to use external libraries
  • Document: Added plugin FunapiSession explanation

v1.0.0-1694 (2016-08-18)

2016-08-18 17:25:42

Object
  • Fixed potential assert hanging during object return handling
  • Fixed event timeout handling bug
  • Added Zookeeper owner cancellation when fetching broken objects
Distribution
  • Fixed distribution handling bug

v1.0.0-1680 (2016-08-12)

2016-08-12 17:04:52

Warning

Breaking Changes:

The server needs to be rebuilt after a version update with delayed updates added.

If using RPC, you need to rebuild your game server. (Related to Rpc::Call() function)

String(n) feature use has been changed, and you need to rebuild the project.

Object
  • Fixed object ReadLock latency bug and improved readability

  • Added feature to select object ID

  • Fixed omitted object lock test in some situations

  • Fixed object lock table

  • Fixed object lock table

  • Fixed Object:Array PushBack

  • Added database delayed update feature

  • Distribution: Allowed distribution handling even if enable_database is off

  • Matchmaking: Allowed use even if enable_database is off

  • Multicast: Allowed use even if enable_database is off

  • Document: Removed enable_database explanation from distribution, matchmaking, and multicast documentation

  • Updated shutdown handling

  • Object: Fixed bug in which db_key_string_length, db_string_length changes were not applied

  • Document: Added or enhanced explanations of the following

    • copy_cache_expiration_in_ms
    • use_db_stored_procedure
    • db_string_length, db_key_string_length
  • Document: Object: Added explanation of newly added callback detection function

  • System: Event: Added event queue time to EventProfiler

  • Updated to execute as many unexecuted queries as possible and shut down when the server crashes

  • Document: Updated EventProfiler statistics

  • Added statistics for use of event timeout and objects to event profiler

  • Updated kReadCopyNoLock

  • Object: Added query handling time statistics for each DB

  • Object: Fixed crashes during export_db_schema when table DDL did not exist

  • Object: Differentiated write and read in object DB statistics

  • Document: Added explanation of differentiated write and read in object DB statistics

  • Fixed to allow separate string length for each ORM attribute

  • Updated object handling

Distribution
  • Removed unnecessary Zookeeper requests
  • Reduced RPC connections between servers to 1
  • Changed Rpc::Call() function returned value from Xid to void. (Solved problem of distributed exception handling with reply handler and return value)
  • Added status feature automatically shared between servers
  • Updated RPC performance
  • Fixed handling as FATAL LOG rather than retry when some Zookeeper operations fail
  • Allowed setting Zookeeper session timeout in MANIFEST
  • Object ownership canceled more quickly when the server crashes
  • Distribution: Added Zookeeper handling statistics
  • Distribution: Added Zookeeper profiling documentation
  • Distribution: Allowed use of several ZookeeperClient
  • Distribution: Added statistics for each ZookeeperClient
  • Document: Distribution: Added statistics for each ZookeeperClient
Database
  • Fixed failure when spaces in Redis key or value
  • Redis::Command(), Redis::CommandAsync() functions are deprecated.
  • Removal was planned for August, 2016, and they must be replaced with newly added Redis::ExecuteCommand() and Redis::ExecuteCommandAsync() functions.
  • Redis: Updated to handle disconnection without waiting when connection closed
  • Redis: Fixed Redis disconnection handling when using commands at the server install stage
Network
  • Added feature so all transport automatically closes when a session is closed
  • Changed default session timeout value from 1 hour to 5 minutes
  • Added and documented IsOpened() function to check whether a session is opened
  • Fixed bug in which messages sent through SendMessage() just before CloseTransport() were unable to be transmitted
Service
  • Document: Added CrossServerStorage component
  • Updated to serialize matchmaking progress CB and match CB
Framework
  • Allowed JavaScript notes in MANIFEST.json
  • Fixed shutdown failure bug after crash in some situations
Time
  • MariaDB Connector now supports DateTime, time, and date types
  • Timer: Fixed kInvalidTimerId bug for timer ID values
System
  • ResourceManager now supports DateTime, time, and date types
misc.
  • Document: Object: Added explanation of export_db_schema option
  • Document: Fixed typos in Leaderboard:DeleteScoreSync() function example
  • Added MariaDB Connector explanation
  • Document: Added explanation of newly added options in billing agent
  • Document: Fixed typos in MO game creation guide
  • Document: Fixed MO guide example bug
  • Document: Fixed matchmaking guide documentation
  • Allowed adding notes to object_model JSON files
  • Document: Fixed errors in game server management -> planning data documentation
  • Documented how to choose update channels (repositories)
  • Added reference manual for String(n) types
  • Document: Redis: Added ExecuteCommand() function
  • Document: Redis: Added ZCount, ZRem
  • Document: Redis: Added Discard, Exec, Multi

v1.0.0-1651 (2016-08-02)

2016-08-02 15:52:55

Service
  • Updated to serialize matchmaking progress CB and match CB
misc.
  • Document: Object: Added explanation of export_db_schema option
  • Document: Leaderboard: Fixed typos in DeleteScoreSync() function example

v1.0.0-1582 (2016-06-02)

2016-06-02 21:56:55

Warning

Breaking Changes:

You need the latest version of the plugin for multicast updates.

A new error code, (ErrorCode) EC_CLOSED, has been added, and handling of channel reentry must be added when this error code is received. You need to use the new version of the plugin for this.

Service
  • Multicast: Fixed failure to run when rpc_enabled: false
  • Multicast: Fixed incorrect emphasis location in MANIFEST.json explanation
  • Multicast: Fixed crashes on disconnection with server
  • Authentication: Added Nexon Toy
  • Authenticator: Reflected changed NexonToy protocol
  • MulticastServer can return the number of channels and users.
  • Service: Multicast: Updated channel join/leave handling
  • Added EC_CLOSED to ErrorCode. When this error code is received, channel reentry handling is required. To do this handling, you need to update the plugin to the latest version.
  • Added feature to retrieve client resource list from CDN
  • Leaderboard: When ranking reset date is passed, the next day is now shown Updated so that when the ranking reset date passes, the L``eaderboardResetSchedule`` structure member upcoming_date_time, next_date_time, and latest_date_time values show the next reset date.
Network
  • Added feature to get mutex to synchronize when session context accessed from multi-thread
  • Removed unnecessary assert when making a new connection at the same time as a TCP connection closes
  • TcpTransportDetachedHandler is now executed with session ID as an event tag
  • Fixed very infrequent crash bug when server starts
  • Added sequence number validation feature to test sequence numbers of TCP and HTTP messages without using session reliability in order to block duplicate messages
  • Added feature to automatically disconnect when ping unanswered within a set time
  • Added feature to connect to peer clients to test servers
  • Allowed ping sampling interval and timeout changes in runtime for each session
  • Fixed bug in which some requests failed when HttpClient created in large quantities
  • Added urgent message transmission feature
  • Fixed name assignment in threads created by the engine
  • Improved handling when receiving invalid JSON messages through HTTP
  • Output message type as log when invalid message received
  • Added unescape handling for HTTP request URI
Management
  • Added feature to set number of event tags to handle ApiService
  • AppInfo: Added compatible client version Set/Get function
  • RuntimeConfiguration: Added AppInfo compatible client version You can get compatible client versions when requested with HTTP GET as follows.
  • You can modify compatible client versions by requesting with HTTP POST. Enter the version as a JSON array type in the HTTP body. (You can also enter empty JSON arrays.)
  • RuntimeConfiguration: Added AppInfo client_current_version
  • Added feature to set ApiService log level
  • ApiService: Supported asynchronous handling
Object
  • Changed array type getter method to const
  • Fixed excessive holding of fetched objects in cache during timed out events
  • Removed unnecessary assert if there is a duplicate key when objects are fetched with multiple keys
  • Allowed setting DB character set in MANIFEST
  • Allowed setting number of key shard connections separately from object shards
Framework
  • Added manifest encryption feature
  • Added feature to output license data When the server is running and the --license flag is set, license data is output in the following format. License info: {"production":true,"expires":"2017-Dec-31 23:59:59"}
Account
  • Leaderboard: Added API to check for ranking reset
  • You must update the leaderboard agent to use the API.
Time
  • Added WallClock::FromSec, MonotonicClock::FromSec
  • Fixed timer asserts when handling server shutdown
Distribution
  • Added warning feature when RPC reply not sent within 5 seconds
  • Updated to shut down server when connection to Zookeeper server fails while server is running
Database
  • Redis: Fixed infrequent handling delays
System
  • Updated so common event tag(timer, api service handler) are not automatically inherited
Leaderboard
  • Leaderboard: Fixed API bug checking for reset
misc.
  • Fixed some Korean reference documents
  • Document: Fixed mistakes in explanation of commands to start biller as a service
  • Turned on all compile time warnings when a project is created
  • Reflected latest update in component model explanation
  • Document: Updated explanation of events in reference documentation
  • Document: Added explanation of packet replay attack blocking
  • Changed minidumps to core dumps and added script executing GDB
  • Fixed incorrect log path setting when executing a flavor as a service
  • Document: Updated plugin documentation
  • Document: Updated server test documentation
  • Document: Added plugin log explanation
  • Supported MANIFEST override when executed with local launcher
  • Document: Added RuntimeConfiguration documentation
  • Document: Added plugin debug log explanation
  • Fixed omitted funapi_core_analyze bash script distribution
  • Added explanation of event timeout handler
  • Added explanation of DB settings
  • Document: Added plugin ping explanation