iFun Engine Changelog (experimental)

Important

Ubuntu 리눅스의 16.04(Xenial Xerus) 버전에 대한 공식 지원이 2021년 4월 30일부로 종료될 예정입니다.

이에따라 해당 리눅스 배포판에 대한 아이펀 엔진 업데이트도 시험 버전(Experimenetal) 이 5월초에 먼저 종료되고, 이어서 정식 버전(Stable) 도 6월 정기 업데이트를 마지막으로 종료될 예정입니다.

이후 아이펀 엔진 업데이트가 필요한 사용자께서는 18.04(Bionic Beaver) 또는 20.04(Focal Fossa) 버전으로 이전을 준비해 주시기 바랍니다.

v1.0.0-5884 (2021-04-06)

2021-04-06 00:55:03

Network
  • UDP 트랜스포트가 여러 스레드에서 동시에 닫히는 상황에서 크래시할 수 있는 문제를 수정했습니다.

  • 내부 구현을 개선한 HttpClient, Curl 이 특정 조건에서 동작하지 않을 수 있는 문제를 수정했습니다.

v1.0.0-5857 (2021-03-25)

2021-03-25 13:31:36

Database
  • Mariadb Connector 에 새로운 함수를 추가했습니다.

    • size_t Mariadb::idle_connection_count() 함수는 현재 사용 가능한 MySQL 연결의 수를 반환합니다.

v1.0.0-5842 (2021-03-11)

2021-03-11 22:15:00

Warning

Breaking Changes

Curl 또는 HttpClient 기능의 인터페이스가 변경되었습니다. 해당 기능을 사용하시던 사용자께서는 프로젝트를 다시 빌드해 주시기 바랍니다.

Network
  • CurlHttpClient 객체의 내부 구현을 개선했습니다.

    • Curl 객체는 동시에 하나의 요청만 보낼 수 있도록 변경됐습니다.

    • MANIFEST 파일의 Curl/curl_threads_size 가 더이상 내부 동작에 영향을 주지 않습니다. 제거해 주시기 바랍니다.

    • 이제 중첩해서 HTTP 요청을 보낼 경우 앞선 요청의 응답을 기다리지 않고 즉시 요청을 보내게 됩니다.

HttpClient 객체의 인터페이스가 변경됐습니다.

  • 위의 수정으로 HttpClient::GetPendingRequestCount() 함수가 더이상 필요없어져 삭제됐습니다.

  • HttpClient 객체의 동기(Sync) 함수들에 타임아웃 값을 설정할 수 있는 인자를 추가했습니다.

  • HttpClient 객체의 동기(Sync) 함수가 실패한 경우 오류 메시지를 반환하는 HttpClient::error_message() 를 추가했습니다.

  • HttpClient 객체에 비동기 함수의 콜백으로 에러 메시지를 함께 전달하는 HttpClient::GetAsync2(), HttpClient::PostAsync2(), HttpClient::PutAsync2() 를 추가했습니다.

  • HttpClient 객체로 Post 또는 Put Method 로 요청을 보낼 때, 데이터를 전달하기 위한 curl_httppost * 객체를 더 이상 HttpClient 내부에서 소멸시키지 않습니다. 따라서 요청을 호출하는 쪽에서 해당 객체를 소멸해야 합니다.

  • HttpClientDELETE Method 를 지원합니다.

misc.
  • JSON 문자열 파싱에 실패했을 때, 출력하는 원본 문자열의 길이가 불규칭한 문제를 수정했습니다.

v1.0.0-5823 (2021-02-03)

2021-02-03 15:26:20

Warning

Breaking Changes

다음 변경사항으로 인해 ORM 기능을 사용하는 경우 서버를 다시 빌드해야 합니다.

  • ORM 기능에서 사용하는 SQL Query 를 생성하는 코드의 성능을 개선했습니다.

다음 변경사항으로 인해 funtest::Network 또는 funtest::Session 기능을 사용한다면 새로운 인터페이스에 맞게 수정해야 합니다.

  • funtest::NetworkMANIFEST/SessionService 의 설정을 따르지 않도록 변경했습니다.

    • 기존에는 funtest::Network 기능이 MANIFEST/SessionService 설정을 공유했지만 이제는 funtest::Network::Install() 함수의 3번째 인자로 전달하는 funtest::Network::Option 객체를 사용해야 합니다.

  • 이제, funtest::Session 이 암호화 기능을 지원합니다.

    • funtest::Session 객체를 서버에 연결하면 서버 쪽 암호화 방식을 따라서 동작합니다.

    • 단, Chacha20AES128 를 사용할 경우에는 funtest::Network::Optionserver_encryption_public_key 에 서버의 Public Key 를 설정해야합니다.

아이펀 엔진 빌러와 리더보드 패키지를 함께 사용하는 경우 다음보다 높은 버전을 설치해야 합니다.

  • iFun Engine Biller 1.0.0-4733

  • iFun Engine Leaderboard 1.0.0-4381

다음 변경사항으로 RPC 기능으로 연결되는 모든 서버를 업데이트해야 합니다.

  • Redis RPC 기능을 사용할 때, 호스트 OS 가 다른 경우 간혹 연결에 실패하여 서버가 시작되지 않는 문제를 개선했습니다.

Object
  • ORM 기능에서 사용하는 SQL Query 를 생성하는 코드의 성능을 개선했습니다.

  • 서버 크래시나 DB 연결 장애가 발생할 때 ORM 기능의 Array Index Corruption 이 발생하지 않도록 수정했습니다.

  • ORM 기능을 사용할 때, 오브젝트가 존재하지 않는 Key 를 두 개 이상 Fetch 속도를 개선했습니다.

Network
  • funtest::NetworkMANIFEST/SessionService 의 설정을 따르지 않도록 변경했습니다.

    • 기존에는 funtest::Network 기능이 MANIFEST/SessionService 설정을 공유했지만 이제는 funtest::Network::Install() 함수의 3번째 인자로 전달하는 funtest::Network::Option 객체를 사용해야 합니다.

    • 리더보드 또는 빌러를 사용하는 경우에는 리더보드 1.0.0-4381, 빌러 1.0.0-4733 이상의 버전으로 업그레이드해야 합니다.

  • 이제, funtest::Session 이 암호화 기능을 지원합니다.

    • funtest::Session 객체를 서버에 연결하면 서버 쪽 암호화 방식을 따라서 동작합니다.

    • 단, Chacha20AES128 를 사용할 경우에는 funtest::Network::Optionserver_encryption_public_key 에 서버의 Public Key 를 설정해야합니다.

Management
  • Counter 를 관리할 때, 이름에 해당하는 ID 값을 단일 문자열에서 경로 형태로 표현될 수 있도록 개선했습니다.

    • 기존에는 Type 과 ID 로만 식별하기 때문에 ApiService 를 통해서 접근하면, /v1/counters/{Type}/{ID} 로만 제한했었지만, 이제는 ID 에 해당하는 부분을 하위 경로 형태로 확장할 수 있습니다.

      서버 코드에서 다음과 같이 ID 를 지정했다면,
      
      UpdateCounter("mygame", "system/guild/count", 100)
      
      ApiService 에서는 다음 URL 을 통해서 접근할 수 있습니다.
      
      http://{서버 주소}:{포트}/v1/counters/mygame/system/guild/count
      
  • 확장된 ApiService URL 형식에 맞춰 Event 관련 Counter 의 URL 이 변경됩니다.

    변경 전

    변경 후

    funapi/event_profiling

    funapi/event/profiling/all

    funapi/event_profiling_execution_time_order

    funapi/event/profiling/order_by_execution_time

    funapi/event_profiling_handler_time_order

    funapi/event/profiling/order_by_handler_time

    funapi/event_profiling_io_wait_time_order

    funapi/event/profiling/order_by_io_wait_time

    funapi/event_profiling_summary

    funapi/event/profiling/summary

    funapi/outstandingevent_profiling

    funapi/event/profiling/outstanding

    funapi/reset_event_profiling

    funapi/event/profiling/reset

    funapi/event

    funapi/event/performance/queue

    funapi/event_tag

    funapi/event/performance/tag

    funapi/event_thread

    funapi/event/performance/thread

    • 기존 URL 도 계속 사용할 수 있지만 향후 삭제될 예정입니다.

  • 이벤트 하나에 대한 프로파일링 결과만을 출력하는 ApiService URL 을 추가했습니다.

    • ApiSerivce 를 통해서 /v1/counters/funapi/event/profiling/each/{event-name} 을 호출하면 event_name 에 해당하는 이벤트에 대한 프로파일리이 결과만 볼 수 있습니다.

  • 이벤트 프로파일링 정렬 기준에 해당 이벤트의 누적 총 소요시간(소요시간 * 실행횟수) 을 추가했습니다.

    • 다음 3 개 카운터들은 각 소요시간을 누적해서 정렬한 결과를 출력합니다.

    URL

    정렬 기준

    funapi/event/profiling/order_by_exeuction_time_sum

    대기 시간을 포함하는 이벤트 실행시간

    funapi/event/profiling/order_by_handler_time_sum

    오직 이벤트 핸들러만의 수행 시간

    funapi/event/profiling/order_by_io_wait_time_sum

    I/O 대기 시간

  • 이벤트 프로파일링 결과에서 존재하지 않는 오브젝트에 대한 Fetch 비율을 나타내는 object_null_rate_mean 항목의 정확도를 개선했습니다.

Distribution
  • Redis RPC 기능을 사용할 때, 호스트 OS 가 다른 경우 간혹 연결에 실패하여 서버가 시작되지 않는 문제를 개선했습니다.

v1.0.0-5793 (2021-01-19)

2021-01-19 15:28:43

Distribution
  • RPC 백엔드가 zookeeper 일 때, ApiService 가 반환하는 분산 기능 통계(distribution_profiling) 의 출력 포맷을 Redis 일 때와 같도록 수정했습니다.

Time
  • Timer::ExpireRepeatedly() 함수를 통해서 실행되는 핸들러의 실행 간격에 오차가 누적되지 않도록 수정했습니다.

misc.
  • Flavor 명이 default 가 아니면 패키지 이름에서 생략하지 않도록 수정했습니다.

v1.0.0-5784 (2021-01-11)

2021-01-11 07:08:35

Distribution
  • RPC 기능을 사용할 때 같은 IP 와 포트를 사용하는 서버를 중복 실행하면 이미 실행중인 서버도 함께 종료되는 문제를 수정했습니다.

    • 새로 시작하는 서버만 포트를 사용할 수 없어서 실행할 수 없는 것이 정상동작입니다.

  • RPC 기능을 사용할 때 서버가 자기 자신에게 RPC 호출을 할 경우 불필요하게 출력되는 로그를 제거했습니다.

Management
  • api_service_event_tags_size 의 값이 0 일 때 서버가 시작되지 않도록 수정했습니다.

Network
  • SessionOpend 이벤트 핸들러보다 TcpTransportAttached 핸들러 또는 WebSocketTransportAttached 핸들러가 먼저 실행될 수 있는 문제를 수정했습니다.

Database
  • RedisClient 기능에서 Redis Sentinel 설정을 처리할 때 크래시하는 문제를 수정했습니다.

misc.
  • 이제 C# 프로젝트에서도 RedisClient 가 Redis Sentinel 설정을 지원합니다.

v1.0.0-5764 (2020-12-02)

2020-12-02 04:15:49

Warning

Breaking Changes

다음 변경사항은 모든 서버를 함께 업데이트해야 합니다.

  • RPC 기능을 사용하는 서버들이 서로 연결될 때 다음 내용을 확인하고, 서로 다를 경우 우선순위에 따라 하나의 서버는 종료하도록 동작을 변경했습니다.

    • 서버끼리 연결할 때 RPC 백엔드 설정이 같은지 비교합니다. (백엔드로 Redis 를 사용하는 경우만 해당)

    • ORM 기능의 Database 설정이 같은지 비교합니다.

Distribution
  • RPC 기능을 사용하는 서버들이 서로 연결될 때 다음 내용을 확인하고, 서로 다를 경우 우선순위에 따라 하나의 서버는 종료하도록 동작을 변경했습니다.

    • 서버끼리 연결할 때 RPC 백엔드 설정이 같은지 비교합니다. (백엔드로 Redis 를 사용하는 경우만 해당)

    • ORM 기능의 Database 설정이 같은지 비교합니다.

Network
  • 메시지 인코딩 방식이 Protobuf 이면서 MANIFEST 설정의 SessionService/send_session_id_as_string 설정이 false 일 때 문제가 발생할 수 있는 오류를 수정했습니다.

  • funtest::Session 의 UDP 소켓이 닫히지 않고 남아있을 수 있는 문제를 수정했습니다.

Framework
  • MANIFEST 파일이 잘못된 설정 이름을 포함하는 경우 서버가 시작되지 않도록 수정했습니다.

Object
  • ORM 기능의 성능을 약간 개선했습니다.

  • 오브젝트의 키가 복합키일 때 하나의 이벤트내에서 복합키 중 일부 키가 같은 두개의 오브젝트를 생성할 때 Assert 에 걸리는 문제를 수정했습니다.

v1.0.0-5724 (2020-11-03)

2020-11-03 16:00:00

Distribution
  • RPC 메시지의 로그 단계를 더 세분화 했습니다.

    • rpc_message_logging_level 설정에서 사용할 수 있는 로깅 수준을 기존에 두 종류에서 아래와 같이 세분화했습니다.

    1: 게임 서버 RPC 메시지들의 메시지 타입을 출력
    2: 게임 서버 RPC 메시지들의 메시지 타입과 내용을 출력
    3: 엔진과 게임 서버 RPC 메시지들의 메시지 타입을 출력
    4: 엔진과 게임 서버 RPC 메시지들의 메시지 타입과 내용을 출력
    
Service
  • CheckAndSetLoggedInAsync() 가 자동으로 재시도하도록 동작할 때, 로그아웃된 세션으로 다시 로그인하는 문제를 수정했습니다.

misc.
  • Centos8 에서 Unity Protobuf DLL 을 생성할 수 없는 문제를 수정했습니다.

v1.0.0-5686 (2020-10-12)

2020-10-12 12:20:33

misc.
  • 데디케이티드 서버 호스트 매니저 가 데디케이티드 서버 종료 후 사용했던 포트를 회수할 때, 잘못된 포트(5000번) 를 회수하는 오류를 수정했습니다.

v1.0.0-5680 (2020-10-07)

2020-10-07 12:46:00

Management
  • HTTP 요청 URI 에 공백이 포함돼 있을 경우 파싱에 실패하는 문제를 수정했습니다.

Network
  • Json 메시지 송/수신 시 약간의 성능을 개선했습니다.

System
  • 로그를 쓸 때 지정된 주기 동안 한 번만 출력하는 기능을 추가했습니다. (C++ Only)

    // 로그를 출력하고 interval 내에는 같은 로그를 출력하지 않습니다.
    LOG_ONCE_WHILE(lv, interval)
    

v1.0.0-5653 (2020-09-23)

2020-09-23 23:20:03

Warning

Breaking Changes

  • 이제 서버 앱을 빌드할 때 C++11 표준 이상을 사용해야 합니다.

    • 기존에 CMakeList.txt 에서 C++ 표준을 11 미만으로 설정하는 WANT_CXX11 플래그가 더 이상 동작하지 않습니다.

  • RedisClient 클래스를 사용한다면 아래 인터페이스 변경으로 서버를 다시 빌드해야 합니다.

    • 다음 함수가 추가됐습니다. (C++ Only)

      // RedisClient 객체의 연결 풀에서 실제로 Redis 서버에 연결된 연결 수를
      // 반환합니다.
      size_t RedisClient::GetConnectedConnectionCount();
      
Object
  • ORM 기능이 DB 테이블을 생성할 때 컬럼 순서를 오브젝트 속성에서 정의한 순서대로 생성하도록 수정했습니다.

    • 기존에는 오브젝트 속성에서 정의한 순서에 관계없이 알파벳 순서로 정렬되었습니다.

    • 이미 생성된 테이블의 컬럼 순서는 변경하지 않습니다.

Network
  • funtest::Session 객체를 사용해서 서버에 연결할 때, 실제로는 실패했지만 성공한 것처럼 콜백 함수가 실행되는 문제를 수정했습니다.

  • 세션 신뢰성 기능을 사용할 때 클라이언트에서 순서를 건너뛴 Sequence Number 를 전송한 경우 해당 클라이언트에 대한 세션을 즉시 닫도록 수정했습니다.

    • Sequence Number 가 중복된 경우는 두번째 메시지부터 무시합니다.

Database
  • RedisClient 클래스에 다음 함수가 추가됐습니다. (C++ Only)

    // RedisClient 객체의 연결 풀에서 실제로 Redis 서버에 연결된 연결 수를
    // 반환합니다.
    size_t RedisClient::GetConnectedConnectionCount();
    
Utility
  • 텍스트 필터 기능을 추가했습니다.

    • 텍스트 필터 기능을 사용해서 필터링할 문자열 목록을 설정하고, 문자열을 피터링할 수 있습니다.

    • 포함 여부를 확인하거나 문자열 치환 기능을 제공합니다.

    • 자세한 사용방법은 관련 매뉴얼 을 참고하시기 바랍니다.

System
  • 이제 서버 앱을 빌드할 때 C++11 표준 이상을 사용해야 합니다.

    • 기존에 CMakeList.txt 에서 C++ 표준을 11 미만으로 설정하는 WANT_CXX11 플래그가 더 이상 동작하지 않습니다.

misc.

v1.0.0-5610 (2020-08-21)

2020-08-21 15:33:47

Time
  • WallClock 콤포넌트에 서버 로컬 타임이 반영된 문자열을 반환하는 다음 함수들을 추가했습니다.

    • string WallClock::GetLocalTimestring()

    • string WallClock::GetLocalTimestring(const WallClock::Value&)

Windows
  • Windows Server 2016 Build 1607 에서 서버를 실행할 수 없는 문제를 수정했습니다.

v1.0.0-5586 (2020-07-15)

2020-07-15 07:53:56

Note

이 버전은 아이펀 엔진 윈도우 버전만 배포되었습니다.

Windows
  • VC++ Unicode 지원에 의해서 아이펀 엔진의 몇몇 함수 이름이 변경되어 컴파일에 실패하는 문제를 수정했습니다.

v1.0.0-5571 (2020-07-03)

2020-07-03 10:18:11

Important

아이펀 엔진 에서 사용하는 Mariadb Connector C 라이브러리가 업데이트 되었습니다.

OS 별로 다음 주의 사항을 참고해 주시기 바랍니다.

업데이트와 관련하여 질문이나 도움이 필요한 경우는 `iFun Engine Q&A 게시판`_ 에 문의해 주시기 바랍니다.

  • Linux

    기본적으로 배포판 별 패키지 관리자로 아이펀 엔진을 업그레이드 할 수 있습니다.

    $ sudo apt full-upgrade (삭제하는 패키지가 있기 때문)
    
    $ sudo yum upgrade
    

    그러나, CentOS 7 에서는 패키지를 업그레이드 할 때 구버전의 mariadb-connector-c 라이브러리가 설치되어 있으면 실패합니다. (다운그레이드도 마찬가지)

    CentOS 7 을 사용중이거나 라이브러리 문제로 업그레이드를 진행할 수 없는 경우에는 아래와 같이 아이펀 엔진 패키지와 mariadb-connector-c 라이브러리를 삭제한 후 다시 설치 해 주시기 바랍니다.

    단, mariadb-c-connector 라이브러리를 삭제하는 과정에서 아이펀 엔진 패키지와 게임 서버 패키지가 함께 삭제되기 때문에 다시 설치해 주시기 바랍니다.

    $ dpkg --list | grep mariadb-connector-c
    mariadb-connector-c      2.3.7-1 (구버전)
    
    $ sudo apt purge mariadb-connector-c
    $ sudo apt install funapi1-dev
    $ dpkg --list | grep mariadb-connector-c
    mariadb-connector-c3      3.1.8-1 (새버전)
    
    $ rpm -qa | grep mariadb-connector-c
    mariadb-connector-c-2.1.0-1el7.x86_64 (구버전)
    
    $ sudo yum remove mariadb-connector-c
    $ sudo yum install funapi1-devel
    $ rpm -qa | grep mariadb-connector-c
    $ mariadb-connecotr-c-3-1.8-1el7.x86_64 (새버전)
    
  • Windows

    아이펀 엔진 공식 다운로드 페이지 에서 iFun Engine Installer Bundle 설치 프로그램으로 통합 설치를 진행하시거나,

    아이펀 엔진 만 업데이트 하시는 경우는 반드시 3rd-party Libraries 146 버전이 설치돼 있는지 확인해 주시기 바랍니다.

Network
  • 이제 웹소켓 트랜스포트에 핑을 설정할 수 있습니다.

    • MANIFEST 파일에서 SessionService/websocket_ping 설정을 추가했습니다.

      "websocket_ping": {
        "sampling_interval_in_second": 0,
        "message_size_in_byte": 32,
        "timeout_in_second": 0
      }
      
  • ping_xxx 설정을 대체하는 tcp_ping 설정을 추가했습니다.

    • 설정 방법은 websocket_ping 과 같습니다.

    • websocket_ping 설정이 추가되면서 기존에 사용하던 ping_xxx 설정은

      대상 프로토콜이 모호해져서 사용하지 않습니다.

    • ping_xxx 설정과 tcp_ping 설정은 서로 덮어쓸 수 있기 때문에 동시에 설정하면 의도하지 않은 값이 설정될 수 있습니다.

  • Session 콤포넌트에 다음과 같은 인터페이스를 추가했습니다.

    • 인터페이스를 통해 TCP 또는 Websocket 핑을 설정할 수 있습니다.

Database
  • 이제, MySQL 8.0 을 사용할 수 있습니다.

Management
  • 모든 카운터 종류와 값, 그리고 설명을 반환하는 Json ReadAllCounters() 를 추가했습니다.

Distribution
  • Redis Sentienl 구성을 RPC Backend 로 설정했을 때, 설정한 것보다 많은 연결이 만들어지는 문제를 수정했습니다.

v1.0.0-5461 (2020-06-11)

2020-06-11 05:20:00

Network
  • HTTP 트랜스포트와 Protocol Buffer 메시지 사용 시, 미등록 메시지를 서버가 수신한 경우 크래시할 수도 있는 문제를 수정하였습니다.

  • WebSocket 트랜스포트 사용 시, 서버에서 클라이언트로 메시지 전송 시 지연이 발생할 수도 있는 문제를 수정하였습니다.

v1.0.0-5384 (2020-06-11)

2020-06-11 05:20:00

Network
  • HTTP 트랜스포트와 Protocol Buffer 메시지 사용 시, 미등록 메시지를 서버가 수신한 경우 크래시할 수도 있는 문제를 수정하였습니다.

  • WebSocket 트랜스포트 사용 시, 서버에서 클라이언트로 메시지 전송 시 지연이 발생할 수도 있는 문제를 수정하였습니다.

v1.0.0-5470 (2020-06-17)

2020-06-17 05:14:13

Warning

Breaking Changes

  • 클라이언트 요청에 의해서 세션을 닫는 서버 쪽 구현으로 인해 서버 코드를 다시 빌드해야 합니다.

    • 차후 클라이언트 플러그인 업데이트를 통해서 해당 기능을 사용할 수 있습니다.

Network
  • 클라이언트 요청으로 세션을 닫는 서버 쪽 구현이 추가됐습니다.

    • 차후 클라이언트 플러그인 업데이트를 통해서 해당 기능을 사용할 수 있습니다.

Object
  • ORM 기능의 DateTime 타입을 Map, Array 로 사용할 수 있도록 수정했습니다.

    • DateTime ArrayFindFirstEmptySlot() 함수를 호출하면 WallClock::kEpochClockEmpty 로 판단합니다.

  • ORM 기능의 C# 인터페이스가 추가됐습니다.

    • ArrayRef<T>.Match(Func<T, bool>) 조건과 일치하는 원소의 목록을 반환합니다.

    • ArrayRef<T>.CountIf(Func<T, bool>) 조건과 일치하는 원소의 갯수를 반환합니다.

misc.
  • Protobuf 메시지를 정의할 때, FunMessage 타입을 다른 메시지에 포함시키면 DLL 빌드에 실패하는 문제를 수정했습니다.

v1.0.0-5384 (2020-05-21)

2020-05-21 12:00:00

Important

아이펀 엔진 에서 사용하는 WebSocket 라이브러리가 업데이트되었습니다.

OS 별로 다음 주의 사항을 참고해 주시기 바랍니다.

업데이트와 관련하여 질문이나 도움이 필요한 경우는 iFun Engine support 로 연락 주시기 바랍니다.

  • Linux

    배포판 별 패키지 관리자로 아이펀 엔진을 업데이트해도 됩니다만, CentOS 에서는 라이브러리가 충돌하는 경우가 있습니다.

    그런 경우에는 아래와 같이 아이펀 엔진 패키지와 WebSocket 라이브러리를 삭제한 후 다시 설치 해 주시기 바랍니다.

    단, WebSocket 라이브러리를 삭제하는 과정에서 아이펀 엔진 패키지와 게임 서버 패키지가 함께 삭제되기 때문에 다시 설치해 주시기 바랍니다.

    $ dpkg --list | grep libwebsockets
    libwebsockets23 (구버전)
    
    $ sudo apt purge libwebsockets23
    $ sudo apt install funapi1-dev
    $ dpkg --list | grep libwebsockets
    libwebsockets16 (새버전)
    
    $ rpm -qa | grep libwebsockets
    libwebsockets23-2.3.0-2.el7.x86_64 (구버전)
    
    $ sudo yum remove libwebsockets23
    $ sudo yum install funapi1-devel
    $ libwebsockets16-4.0.7-3.el7.x86_64 (새버전)
    
  • Windows

    아이펀 엔진 공식 다운로드 페이지 에서 iFun Engine Installer Bundle 설치 프로그램으로 통합 설치를 진행하시거나,

    아이펀 엔진 만 업데이트 하시는 경우는 반드시 3rd-party Libraries 146 버전을 설치해 주시기 바랍니다.

Warning

Breaking Changes

+ 다음 함수들의 이름이 변경됐습니다.

변경 전

변경 후

DebugGetEventName()

GetEventName()

DebugSetEventName()

SetEventName()

+ FunapiSessionUDP 트랜스포트를 사용할 때, 클라이언트가 보내는

초기화 메시지를 처리하는 동작이 추가됐습니다.

  • 서버를 다시 빌드해야 합니다.

Object
  • ORM 기능이 데이터베이스 스키마를 검사할 때, 프로시저 파라미터의 대소문자를 구분하지 않도록 수정했습니다.

System
  • Event::Invoke() 함수가 새 이벤트의 이름을 인자로 받을 수 있게 수정했습니다.

    • 이제 이벤트 함수 내에서 SetEventName() 를 사용하지 않더라도 Event::Invoke(MyEventFunction, "MyEventName") 와 같이 이벤트를 생성할 때 생성 시점에 이벤트 이름을 지어줄 수 있습니다.

  • 다음 함수들의 이름이 변경됐습니다.

    변경 전

    변경 후

    DebugGetEventName()

    GetEventName()

    DebugSetEventName()

    SetEventName()

Service
  • 아이펀 엔진에서 생성하는 모든 이벤트에 이름을 부여했습니다.

    • 엔진에서 생성되는 이벤트들 중 상당수가 이름이 없어서 이벤트 프로파일링과 각종 로그에서 _unnamed_event_ 로 표시되는 문제를 수정했습니다.

Network
  • FunapiSessionUDP 트랜스포트를 사용할 때, 클라이언트가 보내는 초기화 메시지를 처리하는 동작이 추가됐습니다.

    • 클라이언트 플러그인도 함께 업데이트해야 합니다.

Framework
  • 특정 조건에서 코어 덤프가 생성되지 않을 수 있는 문제를 수정했습니다.

v1.0.0-5320 (2020-05-08)

2020-05-08 12:00:00

Warning

Breaking Changes

다음 변경 사항으로 인해 서버를 다시 빌드해야 합니다.
  • World 객체와 World::Object 객체의 복사를 컴파일 타임에 막도록 수정했습니다.

  • World 의 모든 오브젝트를 반환하는 World::GetAllObject() 함수의 이름이 World::GetAllObjects() 로 변경됐습니다.

    • 기존에 World::GetAllObject() 함수를 사용하시는 경우 이름을 변경해 주시기 바랍니다.

Service
  • World 기능에서 Zone 을 사용할 때, World::Object 를 재사용하면 크래시할 수 있는 문제를 수정했습니다.

  • World 의 모든 오브젝트를 반환하는 World::GetAllObject() 함수의 이름이 World::GetAllObjects() 로 변경됐습니다.

    • 기존에 World::GetAllObject() 함수를 사용하시는 경우 이름을 변경해 주시기 바랍니다.

  • World 의 모든 오브젝트를 삭제하는 World::EraseAllObjects() 함수를 추가했습니다.

  • World 객체와 World::Object 객체의 복사를 컴파일 타임에 막도록 수정했습니다.

  • World 기능에서 World::Object 가 두개 이상의 World 에 입장 할 수 없도록 추가로 보완했습니다.

Database
  • Mariadb/MySQL Connector 를 통해서 직접 쿼리를 실행하고 나서 영향 받은 행(Raw) 의 수를 읽을 수 있는 함수를 추가했습니다.

    • ResultSets::GetCountOfAffectedRows() 함수로 첫 CRUD 쿼리로 영향 받은 행의 개수를,

    • ResultSets::GetCountsOfAffectedRows() 함수로 모든 CRUD 쿼리로 영향 받은 행의 개수를 얻을 수 있습니다.

Windows
  • Windows 버전에서 RPC backendZookeeper 로 설정했을 때, Debug 모드로 실행하면 예외가 발생하는 문제를 수정했습니다.

  • 사용자 행동 로그를 MongoDB 에 남길 때, DDL 을 찾을 수 없는 문제를 수정했습니다.

    • 아이펀 엔진 Windows 5318 버전과 Visual Studio 확장 프로그램 65 버전으로 업데이트해야 합니다.

    • 이미 생성된 프로젝트에 대해서는 VS 프로젝트 속성(Debug 구성 선택) -> 구성 속성 -> 디버깅 -> 환경-> 편집 메뉴에서 부모 또는 프로젝트 기본값에서 상속 체크를 해제한 후 아래 문자열을 입력해 주시기 바랍니다.

    PATH="$(OutDir);$(FUNAPI_ROOT)\debug\bin;$(FUNAPI_ROOT)\debug\lib;$(FUNAPI_3RDPARTY_LIBS_ROOT)\vcpkg\installed\x64-windows\debug\bin;$(FUNAPI_3RDPARTY_LIBS_ROOT)\hiredis\lib\x64\Debug;$(FUNAPI_3RDPARTY_LIBS_ROOT)\libwebsockets\debug\lib;$(PATH)"
    

v1.0.0-5297 (2020-05-06)

2020-05-06 12:00:00

Note

이제, Ubuntu 20.04 Focal Fossa 그리고, CentOS 8 에서도 아이펀 엔진을 사용할
수 있습니다!
experimental 버전을 시작으로 6월에는 stable 버전도 배포할 예정입니다.

Warning

Breaking Changes

사용자 행동 로그 의 포맷에 timestamp 필드 외에 log entry 를 식별하기
위한 uuid 필드를 추가했습니다.
  • 사용자 행동 로그는 로그를 쓰는 중에 장애가 발생한 경우 유실을 방지하기 위한 기능이 동작하면서 로그가 중복되는 경우가 있습니다. 이 때, uuid 를 활용하면 로그가 중복되어 남아 있는 상태인지 알 수 있습니다.

  • 기존에 사용자 행동 로그를 파일로 출력하고 있었다면, 로그 포맷이 변경됩니다.

    <변경 전>
    type:timestamp (key, ...) = (val, ...)
    
    <변경 후>
    type:timestamp:uuid (key, ...) = (val, ...)
    
System
  • 사용자 행동 로그 의 포맷에 timestamp 필드 외에 log entry 를 식별하기 위한 uuid 필드를 추가했습니다.

    • 사용자 행동 로그는 로그를 쓰는 중에 장애가 발생한 경우 유실을 방지하기 위한 기능이 동작하면서 로그가 중복되는 경우가 있습니다. 이 때, uuid 를 활용하면 로그가 중복되어 남아 있는 상태인지 알 수 있습니다.

    • 기존에 사용자 행동 로그를 파일로 출력하고 있었다면, 로그 포맷이 변경됩니다.

      <변경 전>
      type:timestamp (key, ...) = (val, ...)
      
      <변경 후>
      type:timestamp:uuid (key, ...) = (val, ...)
      
Framework
  • 최근 업데이트 후 1.0.0-3373 이전 버전의 funapi-leaderboard 를 사용할 수 없는 문제를 수정했습니다.

Network
  • 1.0.0-5153 버전 이후 Ubuntu 16.04 에서 AES128 암호화를 사용할 수 없는 문제를 수정했습니다.

  • funtest::Session 객체의 WebSocket 연결이 작동하지 않을 수 있는 문제를 수정했습니다.

Service
  • World 기능을 사용할 때, World::Object 객체가 두 개의 World 에 중복으로 입장할 때 실패하도록 수정했습니다.

v1.0.0-5220 (2020-04-09)

2020-04-09 13:51:46

Warning

Breaking Changes

다음 변경 사항으로 인해 RedisClient 를 사용할 경우 서버를 다시 빌드해야합니다.
  • RedisClient::Finalize() 함수에 완료되지 않은 명령을 버리고 즉시 종료하는``bool`` 인자를 추가했습니다.

Network
  • HttpClientPool 컴포넌트가 추가됐습니다.

  • {protocol}_compression 설정 방식을 변경했습니다.

    • 압축 기능이 각 트랜스포트 별 설정들을 개별 설정으로 두고 있는데, 계층 구조로 설정할 수 있도록 수정했습니다. 기존) “{protocol}_compression”: “none, “{protocol}_compression_dictionary”: “”, “{protocol}_compression_threshold”: 1, … 수정) “{protocol}_compression”: {

      “type”: “none”, “dictionary”: “”, “threshold”: 1

      }, …

    • 기존 설정 방식도 그대로 사용할 수 있지만, 같은 트랜스포트에 대하여 두 설정을 모두 둔 경우 의도하지 않은 값으로 설정될 수 있습니다. 기존 방식 또는 수정 후 방식 중 하나를 정하여 사용해 주세요.

Database
  • Redis RPC Backend 를 사용할 때 매우 낮은 확률로 특정 ORM 오브젝트 또는 AccountManager 계정에 접근할 수 없는 문제를 수정했습니다.

  • RedisClient::Finalize() 함수에 완료되지 않은 명령을 버리고 즉시 종료하는``bool`` 인자를 추가했습니다.

    • RedisClient 를 사용할 경우 서버를 다시 빌드해야합니다.

Service
  • World 의 오브젝트 이동 성능을 개선했습니다.

v1.0.0-5198 (2020-04-02)

2020-04-02 15:52:20

Service
  • World 에 매우 큰 값의 좌표가 입력될 때 성능을 개선 했습니다.

  • World 의 floating point 오차에 의한 크래시 또는 무한루프가 발생할 수 있는 문제를 수정했습니다.

v1.0.0-5193 (2020-04-01)

2020-04-01 15:58:20

Service
  • CheckAndSetLoggedInAsync 함수에 로그인 실패 시 자동으로 로그인을 재시도 하도록 설정할 수 있는 인터페이스를 추가했습니다.

    CheckAndSetLoggedInAsync(
       const string& /*account_id*,
       const Ptr<Session>& /*session*/,
       const size_t& /*max_retry*/,
       const LoginCallback& /*login_callback*/,
       const LogoutCallback& /*logout_callback*/);
    
    • max_retry 가 0보다 클 경우, 로그인 실패 시 지정한 재시도 횟수 만큼 자동으로 해당 account id 로그아웃 후 다시 로그인 시도합니다.

    • 로그아웃을 성공할 경우 로그아웃 핸들러가 불립니다.

    • 최대 재시도 횟수를 초과하거나 로그인이 성공한 경우 로그인 핸들러가 불립니다.

  • World 에서 퇴장, 이동 시 크래시할 수 있는 문제를 수정했습니다.

Network
  • 이벤트 타임아웃 발생 시 자동으로 세션을 닫고, 세션 닫힘 핸들러를 호출하는 기능을 추가했습니다.

    • MANIFEST/SessionService 에 close_session_when_event_timeout 를 추가하고 true 로 설정할 경우 이벤트 타임아웃 발생 시 연관된 세션이 자동으로 닫히고, 세션 닫힘 핸들러(OnSessionClosed) 가 호출됩니다.

    • 게임 서버 코드에서 이벤트 타임아웃 핸들러의 세션 정리 코드를 여기로 옮겨 일관성을 개선할 수 있습니다.

    Warning

    이벤트 타임아웃 후 불리는 세션 닫힘 핸들러의 이벤트 태그는 세션 ID 가 아니니 주의 하시기 바랍니다.

Distribution
  • Redis RPC Backend 를 쓸 때 종료 시 로그에 출력되는 정리된 소유권 정보가 하나의 Redis Shard 만을 반영하고 있는 문제를 수정했습니다.

Framework
  • Server 의 로케일을 시스템의 언어, 국가와 UTF-8 인코딩으로 고정하였습니다.

v1.0.0-5060 (2020-02-27)

2020-02-27 10:03:37

Distribution
  • 서버가 크래시했을 때 일부 환경에서 RPC 연결 끊김 인지가 늦어지는 문제를 개선했습니다.

Network
  • 내부 스레드 풀 과부하로 지연이 발생할 경우 로그 출력합니다.

v1.0.0-4964 (2020-01-31)

2020-01-31 11:01:51

Distribution
  • MANIFEST/RpcService 에 rpc_backend 가 추가됐습니다.

    • rpc_backend_zookeeper 를 대체하며 “Redis” 또는 “Zookeeper” 를 입력할 수 있습니다. 기본값은 빈문자열(“”)이며, 빈문자열 일 때는

    rpc_backend_zookeeper 의 설정을 따릅니다.

v1.0.0-4940 (2020-01-20)

2020-01-20 17:28:15

Network
  • 수신 메시지의 Seq 값을 읽을 수 있는 기능을 MANIFEST/SessionService 의 forward_message_sequence_number 로 켜고 끌 수 있도록 수정했습니다. 기본값은 false 입니다.

v1.0.0-4932 (2020-01-20)

2020-01-20 11:15:01

Network
  • 크래시하여 종료처리를 할 때 또다시 크래시가 발생할 수 있는 문제를 수정했습니다.

v1.0.0-4878 (2020-01-16)

2020-01-16 08:20:43

Network
  • 이제, Session Reliability 또는 Sequence Number Validation 기능을 사용할 때 FunMessage 에 삽입되는 seq 값을 읽을 수 있습니다.

misc.
  • 빌드 환경을 만들어주는 funapi_setup_build_environment 스크립트에서 source 또는 build 디렉터리 경로를 변경 할 수 있도록 변경했습니다.

v1.0.0-4766 (2020-01-13)

2020-01-13 15:17:54

. warning:: Breaking Changes

Redis RPC Backend 의 Redis 서버 설정 방식이 변경됐습니다.
  • 지원이 중단된 설정 방식을 사용하실 경우 변경이 필요합니다.

  • MANIFEST/RpcService 의 다음 설정은 더이상 작동하지 않습니다.

  • rpc_redis_host, rpc_redis_port, rpc_redis_sentinel_master_name, rpc_redis_sentinel_addresses

  • 아래 설정으로 대체하시기 바랍니다.

  • rpc_redis_hosts, rpc_redis_sentinels

다음 변경 사항으로 인해 funapi-biller1 패키지를 1.0.0-3556 experimental 버전 이상으로
업데이트해야 합니다.
  • 빌러 구글 플레이 인증 시 Service account 를 사용하는 옵션을 추가했습니다.

Distribution
  • Redis RPC Backend 를 사용할 때 샤드별로 각각 Database 와 AUTH Password 를 설정할 수 있습니다.

    • MANIFEST/RpcService 의 rpc_redis_hosts 를 아래와 같이 설정할 수 있습니다.

    • “rpc_redis_hosts”: [

    • {

    • “host”: “127.0.0.1”,

    • “database”: 0 // 생략하면 기본 값 0 으로 작동합니다.

    • “auth”: “” // 생략하거나 빈 문자열을 입력하면 AUTH 를 진행하지 않습니다.

    • },

    • {

    • “host”: “127.0.0.1”,

    • “database”: 1

    • “auth”: “”

    • },

    • ]

    • 기존의 아래와 같은 설정도 그대로 작동합니다.

    • “rpc_redis_hosts”: [“ip:port”, “ip:port”, …],

    • Sentinel 을 사용하는 경우 아래와 같이 설정할 수 있습니다.

    • “rpc_redis_sentinels”: [

    • {“master_name”: “…”, “addresses”: “…”, “database”: index, “auth”: “”},

    • {“master_name”: “…”, “addresses”: “…”, “database”: index, “auth”: “”},

    • ]

    • 기존의 아래와 같은 설정도 그대로 작동합니다.

    • “rpc_redis_sentinels”: [

    • {“master_name”: “…”, “addresses”: “…”},

    • {“master_name”: “…”, “addresses”: “…”},

    • ]

Billing
  • 빌러 구글 플레이 인증 시 Service account 를 사용하는 옵션을 추가했습니다.

    • 구글 플레이 인증 시 기존에 사용하던 client_id, client_secret, refresh_token 대신 Service account 를 사용할 수 있는 옵션을 추가했습니다. MANIFEST/BillingClient 하위에 use_googleplay_service_account: true 를 추가하고 구글 플레이 개발자 콘솔에서 service account 를 만들 때 같이 생성된 json 파일 경로를 googleplay_service_account_json_path : "<json_path>" 와 같이 지정하여 사용할 수 있습니다.

System
  • 기획 데이터를 CSV 로도 읽을 수 있습니다.

  • 기획데이터 파일에서 연속되는 구분자가 있을 경우 처리하는 방법에 대한 설정을 추가했습니다.

Database
  • RedisClient::Create() 에 AUTH Password 를 입력할 때 크래시하는 문제를 수정했습니다.

misc.
  • funtest 에서 session reliability 기능을 사용할 수 있습니다.

    • MANIFEST/SessionService/use_session_reliability 설정에 따라 동작합니다.

v1.0.0-4488 (2019-12-23)

2019-12-23 12:49:51

Service
  • Sign in with apple 검증을 지원합니다.

misc.
  • C# 프로젝트의 엔진 API 에 Null 인자가 입력될 경우 Assert 대신 ArgumentNullException 을 Throw 하도록 수정했습니다.

  • C# 프로젝트에서 서버가 임의의 위치에서 크래시할 수 있는 문제를 수정했습니다.

v1.0.0-4471 (2019-12-19)

2019-12-19 10:36:11

Billing
  • MANIFEST/BillingClient/biller_implicit_start : true 로 설정 시 인증 요청을 보내지 않던 문제를 수정했습니다.

Network
  • Session.Tag, Session.Untag 함수가 session 이 open 인 경우에만 태그를 추가/제거합니다. 태그 별 세션 카운터가 특정 환경에서 실제보다 크게 집계될 수도 있는 문제를 해결하였습니다.

v1.0.0-4441 (2019-12-04)

2019-12-04 14:14:26

misc.
  • C# 프로젝트에서 ``Event.Invoke() 가 일부 Mono Runtime 버전의 GC 에서 메모리 증가 및 성능 저하가 발생하는 문제를 수정했습니다.

v1.0.0-4438 (2019-12-03)

2019-12-03 15:05:26

Network
  • Protobuf Message 를 전송할 때 SendMessage() 내부에서 Protobuf Message 를 복사하지 않도록 하여 성능을 향상시킬 수 있는 기능이 추가됐습니다.

    • MANIFEST/SessionService 의 do_not_copy_protobuf_message_when_sendtrue 로 설정할 경우 Protobuf Message 를 복사하지 않습니다. 이 기능을 사용할 때는 SendMessage() 로 전달된 Protobuf Message 를 수정해서는 안됩니다.

  • World::Broadcast() 의 성능이 개선됐습니다.

Service
  • World::Broadcast() 를 위한 전담 스레드를 추가하여 성능을 개선했습니다.

    • World 가 Single Thread Mode 일 때 이함수로 인한 병목을 개선할 수 있습니다.

Database
  • Redis 의 명령어 함수에 잘못된 Tag 를 입력할 경우 FATAL 로그 대신 Redis::ResultError 를 반환하도록 수정됐습니다.

Object
  • C# 프로젝트에서 ORM 오브젝트가 소멸되지 않을 수 있는 문제를 수정했습니다.

v1.0.0-4429 (2019-11-29)

2019-11-29 07:29:44

Network
  • 이제 엔진 내부에서 Session tag 별 카운트를 관리하고, 아래 인터페이스를 통해서 조회 할 수 있습니다.

    • API 함수: Session::CountWithTag()

    • Counter RESTful API: funapi 카테코리의 sessions.by-tag.<tagname>

v1.0.0-4423 (2019-11-28)

2019-11-28 00:13:44

Warning

Breaking Changes

다음 변경 사항으로 인해 서버를 다시 빌드해야합니다.
  • UpdateMatchPlayerContext() C# 함수가 추가되었습니다.

다음 변경 사항으로 인해 매치메이킹 서버 콜백 함수에서 Player.Context 값을
사용하는 코드가 있다면 Player.Context["user_data"] 값을 사용하도록 수정해야 합니다.
  • C# 매치메이킹 Start() 또는 Start2() 함수 호출 시 전달한 JSON 객체가 아래와 같이 가공되어 저장되도록 변경했습니다.

Service
  • C# 매치메이킹 Start() 또는 Start2() 함수 호출 시 전달한 JSON 객체가 아래와 같이 가공되어 저장되도록 변경했습니다. (C++ 과 동일하게 변경)

    • {

      “request_time”:6447934119, // 요청 시각 “elapsed_time”:0, // 요청 이후 지난 시간(단위: 초) “user_data”: {

      Start 또는 Start2 로 전달한 JSON 객체

      }

      }

  • UpdateMatchPlayerContext() C# 함수가 추가되었습니다.

    • 매치메이킹 대기열에 있는 플레이어의 컨텍스트(Json)를 변경할 때 사용합니다.

v1.0.0-4410 (2019-11-22)

2019-11-22 02:35:12

Warning

Breaking Changes

이제 아이펀 빌러에서 원스토어 SDK V17(API V5) 결제 검증을 지원합니다.
  • 이 변경 사항을 적용하기 위해서는 funapi-biller1 패키지를 1.0.0-3276 Experimental 버전 이상으로 업데이트해야 합니다.

다음 변경 사항으로 인해 Mariadb Connector 를 사용할 경우 서버를 다시 빌드해야합니다.
  • Mariadb Connector 에 연결을 독점적으로 사용할 수 있는 기능을 추가했습니다.

Billing
  • 원스토어 SDK V17(API V5) 결제 검증을 지원합니다.

    • MakeOneStoreReceiptV5() 함수를 추가했습니다. 원스토어 SDK V17(API V5) 결제 검증 시 이 함수로 영수증을 만들어야 합니다.

    • 원스토어 SDK V17(API V5) 부터 검증을 위한 인증 절차가 필요하고, 이를위해 MANIFEST/BillingClient 에 onestore_client_id, onestore_client_secret 설정을 추가했습니다.

  • ValidateReceipt2() 로 google play 영수증 검증 시 transaction id 목록으로 order id 를 전달하도록 변경했습니다.

Database
  • Mariadb Connector 에 연결을 독점적으로 사용할 수 있는 기능을 추가했습니다.

    • Ptr<MariadbConnection> Mariadb::GetExclusiveConnection() 을 호출하여 하나의 연결을 연결 풀에서 분리하여 독점적으로 사용할 수 있습니다.

  • 서버가 크래시로 중단될 때 종료되는 속도를 개선했습니다.

Framework
  • C++/Ubuntu 프로젝트에서 크래시로 종료될 때 낮은 확률로 Assert 에 걸릴 수 있는 문제를 수정했습니다.

  • Fatal 레벨 로그, Assertion 등으로 크래시할 때 스레드 이름을 로그에 남기도록 수정했습니다.

Service
  • MANIFEST 를 이용하여 많은 월드를 생성할 때 서버가 구동되지 않는 문제 수정했습니다.

v1.0.0-4386 (2019-10-30)

2019-10-30 14:24:41

System
  • C# 프로젝트에서 Activity Log 인자에 NULL 문자열을 넘길 경우 크래시하는 문제를 수정했습니다.

Service
  • AccountManager::RegisterRedirectionHandler() 로 등록한 함수에서 ORM Object 를 Fetch 할 경우 AssertNoRollback 으로 종료할 수 있는 문제를 수정했습니다.

v1.0.0-4381 (2019-10-28)

2019-10-28 10:45:58

Service
  • 클라이언트 플러그인의 세션 이벤트 kRedirectSucceed, kRedirectFailed 발생 전에 서버에서 보낸 메시지가 수신될 수 있는 문제를 수정했습니다.

  • AccountManager::RedirectClientAsync() 가 추가됐습니다.

  • AccountManager::SetLoggedOut() 함수가 로그아웃 하려는 ID 문자열 대신 Session 객체도 받을 수 있게 수정했습니다.

  • 둘 이상의 트랜스포트를 가지고 있는 세션을 AccountManager::RedirectClient() 를 호출하여 다른 서버로 이동시킬 때 세션만 닫히고 이동에 실패할 수 있는 문제를 수정했습니다.

v1.0.0-4358 (2019-10-22)

2019-10-22 14:01:18

Warning

breaking changes

  • 다음 변경 사항으로 인해 게임 서버를 다시 빌드해야 합니다.

    • 영수증 검증 응답에 에러 타입을 추가 했습니다.

Billing
  • 영수증 검증 응답에 에러 타입을 추가 했습니다.

    • Google Play Developer API v3 부터 영수증 검증 응답의 puchase state 에 Pending 이 추가되었으며 이에 대응되는 ReceiptValidationResponse::kFailPendingReceipt 타입을 추가했습니다.

    • iFun Biller 1.0.0-3219 experimental 버전 이상부터 Google Play Developer API v3 를 사용할 수 있습니다.

Object
  • Event Profiling Summary 의 execution_time 오류를 수정했습니다.

  • 한 이벤트에서 생성/삭제된 오브젝트 접근 시 이벤트 타임아웃이 발생하는 문제를 수정했습니다.

System
  • Event Profiling 시 Event Tag 별 Queue 에 머무는 시간이 포함되지 않는 문제를 수정했습니다.

  • C# 프로젝트가 Mono Runtime 내부에서 크래시할 수 있는 문제를 수정했습니다.

misc.
  • C# 프로젝트를 Make 명령으로 빌드할 때 오류가 발생하는 문제를 수정했습니다.

v1.0.0-4343 (2019-10-14)

2019-10-14 15:53:49

Service
  • World::Broadcast(), World::FindSession() 와 필터를 함께 사용 시 잘못된 Assert 에 걸리는 문제를 수정했습니다.

misc.
  • C# 프로젝트를 make 명령으로 빌드할 때 Stack trace 에 줄 번호가 안 나오는 문제를 수정했습니다.

v1.0.0-4323 (2019-10-02)

2019-10-02 10:13:39

Management
  • 동접자 수를 플레이어 행동 로그에 남기는 기능을 추가하였습니다.

    • 운영툴 동접자 수 통계 기능과 연동할 수 있습니다.

    • MANIFEST 파일DeployAPIServicedeploy_api_service_use_logging_stats 설정을 true 로 설정하면, 매 1 분마다 현재 동접자 수를 플레이어 행동 로그를 통해 기록합니다.

    • 운영툴 동접자 수 통계 기능과 연동하려면, 플레이어 행동 로그를 MongoDB 를 사용하도록 설정해야 합니다.

v1.0.0-4320 (2019-10-01)

2019-10-01 04:35:02

Warning

Breaking Changes

  • 다음 변경 사항으로 인해 게임 서버를 다시 빌드해야 합니다.

    • 멀티캐스트 기능을 Websocket 프로토콜로 사용하도록 설정할 수 있습니다.

Service
  • 멀티캐스트 기능을 Websocket 프로토콜로 사용하도록 설정할 수 있습니다.

    • MANIFST 파일의 MulticastServer 하위에 transport_for_multicast_channel 항목을 “tcp” 또는 “websocket” 중에서 설정할 수 있습니다.

Network
  • 세션 메시지 로깅 기능에 메시지 타입 필터링을 추가했습니다.

    • MANIFEST 파일의 session_message_logging_excluded 항목을 통해서 세션 메시지 로그를 남길 때, 제외할 메시지 타입을 설정할 수 있습니다.

v1.0.0-4306 (2019-09-30)

2019-09-30 14:35:34

Warning

Breaking Changes

  • 다음 변경 사항으로 인해 World 기능을 사용할 경우 게임 서버 프로젝트를 다시 빌드해야 합니다.

    • World::FindSession(), World::Broadcast()FindFilter 를 지원합니다.

Service
  • World::FindSession(), World::Broadcast()FindFilter 를 지원합니다.

  • World 가 Single Thread Mode 일 때 Broadcast() 의 성능을 개선했습니다.

  • World 가 Single Thread Mode 일 때 FindObject() 의 성능을 개선했습니다.

System
  • 하나의 이벤트 태그로 많은 이벤트를 만들 때 성능을 개선했습니다.

v1.0.0-4294 (2019-09-24)

2019-09-24 02:37:13

System
  • ResourceManager 가 Timestamp 타입을 지원하도록 수정했습니다.

v1.0.0-4288 (2019-09-23)

2019-09-23 12:01:30

Warning

Breaking Changes

  • 다음 변경 사항으로 인해 World 기능을 사용할 경우 게임 서버 프로젝트를 다시 빌드해야 합니다.

    • World 를 단일 스레드로 접근할 때 내부 잠금(Mutex)을 끌 수 있는 API 가 추가 됐습니다.

Network
  • Session::SendMessage() 호출 스레드에서 처리되던 일부 코드를 네트워크

    스레드로 옮겨서 메시지를 전송 성능을 향상시켰습니다.

  • Centos7 에서 libcurl 라이브러리의 동작 특성으로 HttpClient 사용 시 중복된 파일 디스크립터 오류가 발생할 수 있는 문제를 우회하도록 했습니다.

Service
  • World 를 단일 스레드로 접근할 때 내부 잠금(Mutex)을 끌 수 있는 API 가 추가 됐습니다.

    • World::SetSingleThreadMode() 를 호출하여 World 내부의 Mutex 를 이용한 잠금을 끌 수 있습니다.

v1.0.0-4274 (2019-09-06)

2019-09-06 10:50:49

Network
  • HttpClient 가 HTTP/1.1 을 우선하도록 수정했습니다.

    • HttpClient 는 HTTP/2 를 지원하지 않기 때문에 HTTP/1.1 을 우선하도록 변경했습니다.

v1.0.0-4264 (2019-08-29)

2019-08-29 10:11:07

Service
  • World 에 이동하는 캐릭터의 시야를 처리하기 위한 필터를 추가했습니다.

    • World::MakeMovingSightFilter() 로 생성된 필터는 이동할 때마다 새롭게 시야에

    • 들어오는 오브젝트만 추출할 수 있습니다.

System
  • ResourceManager 가 주석 및 UTF-8 BOM 을 포함한 JSON 을 읽을 수 있게 수정했습니다.

v1.0.0-4251 (2019-08-19)

2019-08-19 17:13:08

System
  • 타임아웃 등으로 중단된 이벤트가 이벤트 큐 길이에 포함되지 않도록 수정했습니다.

  • 서버 종료 시 타임아웃 등으로 완료될 수 없는 이벤트가 있을 때 종료가 지연되는 문제를 수정했습니다.

Framework
  • 서버 충돌 시 남아있는 이벤트를 처리하지 않도록 수정했습니다.

v1.0.0-4246 (2019-08-14)

2019-08-14 15:06:15

System
  • 서버 종료처리의 최대 대기 시간을 설정할 수 있도록 수정했습니다.

    • 기존 20 초의 고정값에서 MANIFEST/Framework 에 termination_timeout_in_sec 을 추가하고 이 시간 만큼 대기하도록 수정했습니다. 이 값은 최소 5 초 이상, 최대 5 분(300 초) 이하의 값을 입력할 수 있으며 기본값은 20 초입니다.

  • 서버 종료 시 남아있는 이벤트를 모두 처리하고 종료하도록 수정했습니다.

    • 서버 종료 시 남아 있는 이벤트와 서버의 static bool Stop() 함수에서 Invoke 한 것, 그리고 이벤트 함수에서 다시 Invoke 한 이벤트들을 모두 처리하고 종료합니다. ORM 기능 또한 사용 가능합니다. 단, termination_timeout_in_sec 의 절반 이상 경과하면 이벤트가 남아 있더라도 처리하지 않습니다.

v1.0.0-4243 (2019-08-12)

2019-08-12 15:41:03

Database
  • RedisClient 의 연결 타임아웃 발생 시 충돌하는 문제를 수정했습니다.

Object
  • 복합키를 이용하여 존재하지 않는 Object Fetch 시 Assert 에 걸리는 문제를 수정했습니다.

  • 복합키와 크기가 지정된 Integer 를 동시에 사용할 때 컴파일 오류를 수정했습니다.

v1.0.0-4234 (2019-08-05)

2019-08-05 16:54:13

Object
  • 이벤트 타임아웃 발생 시 롤백 원인을 로그로 출력하는 기능을 추가 했습니다.

    • MANIFEST/EventDispatcher 에 max_rollback_cause_log_count 을 추가하고 0 보다 큰 값을 입력하면 이벤트 타임아웃 시 그 수만큼 롤백 원인을 로그에 출력합니다.

  • MANIFEST/RpcService 의 rpc_redis_disable_key_refresh 가 삭제 되었습니다.

System
  • 상속된 이벤트 이름이 최대 80 글자를 넘지 않도록 수정했습니다.

    • 이벤트 이름이 없어서 이전 이벤트 이름에 “_#N” 을 추가해 자동 할당할 때 80 글자를 초과할 경우 “…” 으로 처리됩니다. 예) “EventExample_#1_#1_#1(생략…)_#1_#1…”

Distribution
  • Zookeeper 장애 후 복구 되었을 때 데이터 누락 확인 처리를 하기 위한 샤드 또는 연결 선택에 문제가 있는 것을 수정했습니다.

  • World 기능을 Redis RPC Backend 와 함께 사용할 수 있습니다.

Database
  • RedisClient 에 연결 타임아웃 12 초를 적용했습니다.

v1.0.0-4214 (2019-07-18)

2019-07-18 01:51:34

misc.
  • 이제 유니티 클라이언트 플러그인이 프로토콜 버퍼 메시지 내용을 로그로 출력합니다.

    • 프로토콜 버퍼 DLL 을 다시 빌드하여 유니티 클라이언트 플러그인 309 이상 버전에 적용하면 프로토콜 버퍼 메시지 내용을 로그로 출력하도록 개선했습니다.

v1.0.0-4210 (2019-07-16)

2019-07-16 09:54:02

Service
  • Facebook, Line 같은 제3자 서비스 API 를 동기 방식으로 사용할 때, 경고 메시지를 출력하도록 수정했습니다.

    • 아이펀 엔진에서 제공하는 동기방식의 함수는 개발 단계에서 테스트 편의성을 높이기 위해 제공합니다.

    • 동작에는 문제가 없지만 서버의 성능을 저하시키기 때문에 비동기 함수를 사용 해 주세요.

Distribution
  • Redis RPC 백엔드를 사용할 때, cache_expiration_in_ms 설정의 최소값을 180초에서 1초로 감소했습니다.

    • Redis RPC 백엔드 구현을 변경하면서 사실상 제약이 없어졌습니다만, 너무 낮은 값을 설정하게 되면 서버의 성능이 떨어질 수 있습니다.

misc.
  • 이전 버전(4183)에서 호스트 매니저를 실행할 수 없는 문제를 수정했습니다.

v1.0.0-4183 (2019-07-09)

2019-07-09 15:55:18

Note

iFunEngine 1.0.0-4184 버전부터 Ubuntu 18.04 (bionic) 64bit 을 지원합니다. 현재 Experimental 버전만 배포하고 있으며, 안정화 기간을 거쳐 Stable 버전도 배포할 예정입니다.

Object
  • 아이펀 엔진의 이벤트의 동작에 대한 로그 내용을 이전보다 정확하게 남기도록 개선했습니다.

  • 오브젝트를 반환하려고 하는 이벤트가 실행 시간 타임아웃으로 중단될 때 크래시 할 수 있는 문제를 수정했습니다.

System
  • iFun Engien Centos 버전의 ResourceManager::Reload() 함수에서 사용하는 MariadbConnector 구현의 버전문제로 메모리 릭이 발생하는 문제를 수정했습니다.

  • ResourceManager::Reload() 함수가 enable_game_data_mysql 를 무시하는 문제를 수정했습니다.

Network
  • 아이펀 엔진의 세션 기능이 남기는 로그 내용을 정확하게 변경했습니다.

misc.
  • 데디케이티드 호스트 매니저에서 사용하는 플래그 중 ‘user_data’ 플래그를 추가했습니다.

  • 이제 Ubuntu 18.04 bionic 에서도 아이펀 엔진을 사용할 수 있습니다.

v1.0.0-4156 (2019-06-27)

2019-06-27 14:36:32

Distribution
  • Redis RPC service feature has been improved. The details will be updated soon with related document.

v1.0.0-4155 (2019-06-27)

2019-06-27 13:29:11

Object
  • Fixed a bug that force stopped event can cause crash rarely when using ORM object in 1.0.0-4113 or after version.

v1.0.0-4151 (2019-06-27)

2019-06-27 10:06:40

Warning

Breaking Changes

  • You have to rebuild your servers due to the below changes.

    • Added a disconnection handler for RedisClient.

Database
  • Added a disconnection handler for RedisClient.

  • You can now register it with RedisClient::RegisterDisconnectCallback().

System
  • Server will now wait for 20 seconds instead of 60 when it crashes.

v1.0.0-4119 (2019-06-21)

2019-06-21 15:02:04

misc.
  • Fixed a bug that request object becomes a null object rarely before Billing.ValidateReceiptRequest()’s callback is invoked in C#.

v1.0.0-4115 (2019-06-20)

2019-06-20 14:08:16

Object
  • Fixed an issue that causes crash when creating object with the key that does not exist and is used in previous event for fetching object in 1.0.0-4113 version.

v1.0.0-4113 (2019-06-17)

2019-06-17 17:41:41

Object
  • Improved stability for features related to Zookeeper.

v1.0.0-4104 (2019-06-12)

2019-06-12 01:34:49

Object
  • Fixed a bug that reflecting uncommitted object’s value when fetching object with kReadCopyNoLock.

v1.0.0-4101 (2019-06-05)

2019-06-05 16:37:29

System
  • Added a function that allows executing follow events even after event timeout.

  • Following events will not be stopped after event timeout if ProcessNextEventAfterTimeout(EventTag) is declared in event.

v1.0.0-4098 (2019-06-04)

2019-06-04 15:47:44

Warning

Breaking Changes

  • You have to update all servers that are using the same Zookeeper/Redis due to the below changes.

    • Improved lock upgrade logic in distributed environment.

    • Changed the name of argument for Google Play account validation. the old argument is now deprecated.

Network
  • 이제 웹소켓 서버도 SSL 기능을 지원합니다.

  • AES 128 알고리즘을 지원 중단할 예정입니다.

    • 다른 알고리즘(chacha20) 사용을 고려해주세요.

  • 특정 트랜스포트만 사용 시 연결 닫힘 메시지를 받을 수 없는 문제를 수정했습니다.

    • Websocket 만 사용할 때 발생합니다.

Service
  • Changed the name of argument for Google Play account validation. the old argument is now deprecated.

    • Since app_id is deprecated, Using app_provider_client_id is strongly recommended.

    • Both app_provider_client_id and app_id has the same value.

  • You can now get users’ Google ID in Google Play validation response.

Object
  • Improved lock upgrade logic in distributed environment.

v1.0.0-4075 (2019-05-23)

2019-05-23 11:12:11

misc.
  • Fixed a bug that build failed when CMAKE_BUILD_TYPE is not specified.

v1.0.0-4074 (2019-05-22)

2019-05-22 19:07:27

misc.
  • Fixed libsodium and protobuf dependency issue in Ubuntu 16.04.

v1.0.0-4073 (2019-05-22)

2019-05-22 13:34:51

Framework
  • Now thread name is included in crash information.

Object
  • Fixed a bug that object is not available when multiple keys are declared.

System
  • Fixed a bug that accessing unallocated memory rarely when checking license.

Database
  • Fixed a bug that reconnecting was not performed correctly in RedisClient.

misc.
  • Fixed a bug that compiling is always performed in debug mode regardless of actual mode in C# project.

v1.0.0-4032 (2019-05-11)

2019-05-11 23:11:19

Service
  • Added Steam account validation.

    • It validates that user is logged in and available to play the game.

v1.0.0-4030 (2019-05-10)

2019-05-10 02:54:44

misc.
  • funtest: 더 이상 서버 이동 중 세션 닫힘 핸들러를 호출하지 않습니다.

    • 클라이언트 플러그인 동작과 동일한 환경을 테스트할 수 있도록 서버 이동 중에는 세션 닫힘 핸들러를 호출하지 않습니다.

  • C# funtest.RegisterRedirectionHandler() 함수를 추가했습니다.

    • 서버에서 해당 funtest.Session 으로 리다이렉션 호출 시 이 콜백을 호출합니다.

v1.0.0-4026 (2019-05-09)

2019-05-09 10:38:00

Object
  • Slow Event 로그에 더 자세한 정보를 포함하게 수정했습니다.

  • 이제 분산 환경에서 락 업그레이드를 지원합니다.

System
  • 이벤트 스레드의 TPS 를 볼 수 있는 funapi/event_thread 카운터를 추가했습니다.

  • 이벤트 태그 별 큐 길이를 볼 수 있는 funapi/event_tag 카운터를 추가했습니다.

misc.
  • C# 에서 추가 멀티캐스트 함수들을 사용할 수 있습니다.

    • 추가된 함수들은 다음과 같습니다.

    • void MulticastServer.CreateMulticastChannel(string channel, string token);

    • bool MulticastServer.GetMulticastChannel(string channel, out string token);

    • long MulticastServer.GetMulticastChannelTokenMap(out Dictionary<string, string> tokenMap);

    • void MulticastServer.DisallowToCreateClientsideMulticastChannel();

v1.0.0-4011 (2019-04-30)

2019-04-30 02:27:23

Object
  • Event Profiling 값 오차를 개선했습니다.

    • Event Profiling 에 존재하지 않는 오브젝트의 접근 비율을 추가했습니다.

    • Event Profiling Summary 에 오브젝트 관련 통계를 추가했습니다.

Management
  • 다음 Deploy API 들을 추가했습니다. C++/C# 모두 사용할 수 있습니다.

    • 환불, 실시간 공지, 미션

System
  • 코어 덤프를 남길 때 덤프에 메인 스레드 정보만 남는 문제를 수정했습니다.

v1.0.0-4006 (2019-04-25)

2019-04-25 18:12:19

Network
  • 개별 세션 별로 타임아웃을 설정할 수 있는 기능을 추가했습니다.

    • HandlerRegistry::OverrideSessionTimeout(session, timeout_in_ms) 함수를 세션이 닫히기 전에 사용하면, MANIFEST.json 값 대신 적용된 시간을 기준으로 세션 타임아웃을 계산합니다.

  • 세션 타임아웃 값을 0으로 설정할 경우 타임아웃 기능을 비활성화합니다.

    • session_timeout_in_second 값 또는 HandlerRegistry::DebugSetSessionTimeout 함수 인자에 0을 지정한 경우 세션 타임 아웃 검사를 비활성화합니다.

v1.0.0-3999 (2019-04-19)

2019-04-19 17:23:12

System
  • 로그 파일 삭제 실패 시 예외(exception)가 발생할 경우 이를 로그를 출력합니다.

v1.0.0-3997 (2019-04-16)

2019-04-16 15:39:09

Framework
  • enable_breakpad 플래그가 동작하지 않던 문제를 수정했습니다.

    • 1.0.0-3810 과 1.0.0-3993 사이 버전에서 이 문제가 발생할 수 있습니다.

v1.0.0-3993 (2019-04-11)

2019-04-11 02:00:58

Service
  • AccountManaget::SetLoggedOutGlobal() 실패 시 재시도 기능 추가

    • 주키퍼 연결이 닫혔거나 재연결 도중 이 함수를 호출할 경우 3초를 간격으로 다시 시도하는 기능을 추가했습니다.

v1.0.0-3990 (2019-04-04)

2019-04-04 12:55:38

Distribution
  • RPC 상태 관리 기능을 개선했습니다.

    • 이제 1분 주기로 RPC 연결 정보를 로그로 출력합니다. 로그 레벨은 WARNING 입니다.

    • 잘못된 RPC 응답이 올 경우 무시하게 수정했습니다.

Service
  • 멀티캐스트 서비스에서 널 포인터를 참조할 수 있던 버그를 수정했습니다.

misc.
  • funtest 클라이언트가 간헐적으로 리다이렉트 후 응답이 없는 문제를 수정했습니다.

v1.0.0-3977 (2019-03-29)

2019-03-29 18:17:19

Distribution
  • 서버 간 연결이 끊긴 후 재연결될 때 크래시할 수 있는 문제를 수정했습니다.

Network
  • 특정 환경에서 UDP 전송이 불가능한 상태가 되는 문제를 수정했습니다.

v1.0.0-3973 (2019-03-23)

2019-03-23 21:17:23

misc.
  • funtest::Session 에서 UDP, HTTP 트랜스포트를 생성할 수 없는 문제를 수정했습니다.

v1.0.0-3967 (2019-03-22)

2019-03-22 20:46:21

System
  • 이벤트 함수는 이제 모든 Install() 함수 호출이 끝난 후 시작합니다.

v1.0.0-3963 (2019-03-21)

2019-03-21 21:56:12

misc.
  • funtest::Session 재사용 시 assertion 에 걸리는 문제를 수정했습니다.

v1.0.0-3955 (2019-03-13)

2019-03-13 10:39:39

Warning

Breaking Changes

다음 변경 사항으로 인해 모든 서버를 함께 업데이트해야 합니다.
  • Zookeeper 접속 정보가 서로 다른 두 서버가 같은 서버군에 존재할 때 늦게 구동된 서버를 시작하지 않고 즉시 종료하게 수정했습니다.

Distribution
  • Zookeeper 접속 정보가 서로 다른 두 서버가 같은 서버군에 존재할 때 늦게 구동된 서버를 시작하지 않고 즉시 종료하게 수정했습니다.

v1.0.0-3943 (2019-03-08)

2019-03-08 08:38:27

Object
  • Object 를 Key 로 Fetch 할 때 잠금 실패 시 잠금 경합 로그가 출력되지 않는 문제를 수정했습니다.

  • Object 를 Key 로 Fetch 할 때 잠금 실패 시 불필요한 Zookeeper 요청 및 Query 실행을 제거했습니다.

  • 복합키를 쓸 때 컴파일 오류를 수정했습니다.

misc.
  • C# Event Handler 의 Unhandled Exception 을 받을 수 있는 Handler 를 추가했습니다.

    • Event.SetUnhandledExceptionHandler(…) 함수를 이용하여 Event Handler 에서 처리되지 않은 Exception 을 받을 수 있습니다. 이 함수로 Exception 을 수신하면 해당 이벤트는 Abort 처리됩니다.

v1.0.0-3933 (2019-03-05)

2019-03-05 13:16:27

Warning

Breaking Changes

다음 변경 사항으로 인해 프로젝트를 다시 빌드해야 합니다.
  • 일부 UTF-8 문자가 Key 에 포함되었을 때 FetchBy*() 로 불러올 수 없는 문제를 수정했습니다.

Object
  • DB 전체 스키마 검사를 생략하는 기능을 추가했습니다.

    • “use_db_schema_simple_validation” 을 true 로 이 기능을 켜면 모든 Table, Procedure 를 검사하지 않고 Fingerprint 만 검사합니다. 스키마 업데이트가 필요할 경우 서버가 구동되지 않고 종료됩니다.

  • 일부 UTF-8 문자가 Key 에 포함되었을 때 FetchBy*() 로 불러올 수 없는 문제를 수정했습니다.

Service
  • Google+ API 를 더 이상 사용할 수 없습니다.

    • 2019년 3월 7일에 Google+ 와 관련된 모든 API 가 삭제됩니다. Google+ 인증 또는 유저 정보 획득 관련 함수들은 이제 모두 에러를 반환합니다. Google+ 계정 관련 데이터 이전과 관련해 질문이 있거나 도움이 필요한 경우 iFun Engine Support 로 연락 주시기 바랍니다.

v1.0.0-3919 (2019-02-28)

2019-02-28 09:14:46

Warning

Breaking Changes

다음 변경 사항으로 인해 게임 서버 프로젝트를 클린 후 다시 빌드해야 합니다.
  • ORM 관련 성능을 개선했습니다.

  • Session::GetPingSamplingInterval(), Session::GetPingTimeout() 추가했습니다.

Utility
  • 이제 base64 인코딩/디코딩 함수를 사용할 수 있습니다.

    • 변환 함수를 사용하기 위해서는 funapi/utility/base64_helper.h 헤더 파일을 추가해야 합니다.

Object
  • ORM 관련 성능 개선했습니다.

Network
  • Session::GetPingSamplingInterval(), Session::GetPingTimeout() 함수를 추가했습니다.

v1.0.0-3906 (2019-02-22)

2019-02-22 10:08:09

Warning

Breaking Changes

다음 변경 사항으로 인해 DSM 사용 시 호스트 매니저와 엔진을 함께 업데이트해야합니다.
  • 호스트 매니저 HTTP 메시지 규격을 변경했습니다.

Service
  • 스팟 인스턴스 가격 가격 조회 중 크래시할 수 있는 문제 수정.

  • 호스트 매니저 HTTP 메시지 규격을 변경했습니다.

    • 확장성을 위해 호스트 매니저의 메시지 규격을 변경했습니다. 새 엔진 버전은 기존 버전의 호스트 매니저와 호환이 가능하나 추후 호환되지 않을 수 있으므로 호스트 매니저와 엔진을 동일한 버전으로 업데이트해야 합니다.

  • 데디케이티드 서버 커스텀 콜백 호출이 매치 ID 로 직렬화되지 않는 문제를 수정했습니다.

    • 이제 매치 ID 로 직렬화한 이벤트 위에서 콜백을 실행합니다.

  • 이벤트 타임아웃 시 멀티캐스트 서버에 등록한 세션을 처리하지 않던 문제를 수정했습니다.

System
  • 크래시 발생 시 “terminate called recursively” 가 대량으로 출력되는 문제를 수정했습니다.

  • 이제 이벤트 타임아웃 핸들러를 두 개 이상 등록할 수 있습니다.

    • 이벤트 타임아웃 발생 시 Event::RegisterTimeoutHandler() 에 등록한 핸들러들을 등록한 순서대로 호출합니다.

  • 이벤트 이름을 가진 이벤트에서 Event::Invoke() 사용 시 이름을 상속하게 수정했습니다.

    • 이벤트 이름이 있는 경우에만 이름을 상속합니다.

    • 새 이벤트의 기본 이름은 <이벤트이름>_#<상속 횟수> 를 따릅니다.

    • 상속 횟수는 1부터 시작합니다.

Management
  • ApiService 가 body 도 로그에 출력할 수 있도록 수정되었습니다.

    • api_service_logging_level 의 의미가 다음과 같이 변경되었습니다.
      • 0: 오류에 한해서만 로그를 출력합니다.

      • 1: 기존 2 와 같습니다. body 를 제외하고 출력합니다.

      • 2: 1 의 내용과 body 를 함께 출력합니다. UTF-8 문자열이 아닌 경우

        앞 256 bytes 를 hex string 으로 출력합니다.

Network
  • 데디케이티드 서버 오케스트레이터 로그를 개선했습니다.

    • 호스트 매니저와 연결 실패 시 더 자세한 로그를 볼 수 있습니다.

Framework
  • 이벤트 처리 중 충돌하여 종료될 때 이벤트 이름이 로그에 출력되지 않는 문제를 수정했습니다.

Distribution
  • 네트워크 장애 시 RPC 연결의 안정성을 개선했습니다.

  • RPC 연결이 완전히 정리되지 않은 상태에서 재연결될 때 무시하는 문제를 수정했습니다.

Database
  • 종료가 약 1분간 지연될 수 있는 문제를 수정했습니다.

misc.
  • 서버가 충돌하여 종료되면 GDB 를 실행시킬 수 있는 명령어를 출력합니다.

  • 정상 종료(SIGTERM, SIGQUIT 등) 일 때도 충돌로 표시되는 문제를 수정했습니다.

v1.0.0-3869 (2019-02-14)

2019-02-14 02:58:59

Distribution
  • Redis RPC 서비스 기반 AccountManager 키 관리를 개선했습니다.

    • 오브젝트 락 해제 메커니즘과 동일하게, AccountManager 컴포넌트가 등록한 계정 정보 키를 미처 삭제하지 못하고 서버를 종료한 경우 마스터가 이를 찾아 삭제합니다. 확인 주기는 ‘rpc_redis_session_timeout_in_seconds (기본 값: 10초)’ 플래그로 설정할 수 있습니다.

Service
  • AccountManager 컴포넌트에 키 갱신 비활성화 기능 추가

    • MANIFEST.json 파일의 RPC 항목 안에 rpc_redis_disable_key_refresh 플래그를 true 로 설정하면 AccountManager 관련 키 갱신 기능을 비활성화합니다(기본 값: false).

Object
  • 게임 서버 시작 시 ORM 데이터베이스 스키마 검증 속도를 개선했습니다.

    • 오브젝트 수가 늘어날수록 검사에 소요되는 비용이 기하급수적으로 늘어나는 문제를 수정했습니다. 다음은 개선 전과 후를 비교한 자료입니다. 스키마 생성 속도는 이후에도 점진적으로 개선할 예정입니다.

      수정

      오브젝트 수 20개: 검증 소요 시간 약 2.7초

      오브젝트 수 40개: 검증 소요 시간 약 7.5초

      오브젝트 수 80개: 검증 소요 시간 약 26초

      수정

      오브젝트 수와 관계 없이 1초 이내

System
  • 세션 닫힘 핸들러를 호출할 수 없거나 세션 만료 핸들러가 NULL 세션을 받던 문제를 수정했습니다.

  • 크래시 덤프 생성 시 불필요한 스택 프레임 생성을 최소화하게 수정했습니다.

Network
  • 게임 서버 종료 시 IoService::Uninstall() 에서 멈출 수 있는 문제를 수정했습니다.

v1.0.0-3838 (2019-02-11)

2019-02-11 16:23:16

Warning

Breaking Changes

다음 변경 사항으로 인해 Mariadb 객체를 사용할 경우 프로젝트를 다시 빌드해야 합니다.
  • Mariadb Connector 에 연결 장애 시 호출되는 핸들러를 추가했습니다.

다음 변경 사항으로 인해 MaintenanceService 컴포넌트를 사용할 경우 MANIFEST.json
파일 안에 MaintenanceService 를 추가해야 합니다.
  • MaintenanceService 컴포넌트는 이제 기본적으로 비활성화 상태로 동작합니다.

Object
  • ORM 과 연결된 데이터베이스 연결 장애 시 점검 모드 시작 또는 강제로 서버를 종료할 수 있는 기능을 추가했습니다.

    • db_connection_failure_threshold_time_in_sec 플래그를 추가했습니다. DB 연결 장애 발생 후 해당 시간만큼 장애가 해결되지 않을 경우 MaintenanceService 컴포넌트가 있으면 점검 모드로 전환하며 그렇지 않을 경우 서버를 강제로 종료합니다. 플래그 값이 0이면 이 기능을 비활성화하며 기존과 동일하게 서버 실행을 유지합니다.

  • ORM 캐시 적재 중 낮은 확률로 충돌할 수 있던 문제를 수정했습니다.

Network
  • MaintenanceService 컴포넌트는 이제 기본적으로 비활성화 상태로 동작합니다.

  • HTTP 로 등록되지 않은 메시지 타입을 수신할 때 Assert 로 충돌하는 문제 수정

  • Session Reliability 기능 사용 시 간혈적으로 세션을 종료하는 문제 수정

    • experimental 3782 이후 버전부터 발생할 수 있습니다.

Service
  • Google+ API 사용 시 에러 로그를 출력합니다.

    • 2019년 3월 7일에 Google+ 와 관련된 모든 API 가 삭제됩니다. 만약 게임 서버에 Google+ 관련 인증 로직이나 코드가 있다면 3월 7일 전까지 모두 제거해주시기 바랍니다. 계정 데이터 이전과 관련해 질문이 있거나 도움이 필요한 경우 iFun Engine Support 로 연락 주시기 바랍니다.

Database
  • Mariadb Connector 에 연결 장애 시 호출되는 핸들러를 추가했습니다.

  • Mariadb::Create() 의 기본 인자 값에 해당하는 상수 정의를 추가했습니다. 추가한 값들은 다음과 같습니다.

    • kDefaultConnectionCharset

    • kDefaultAutoRetryOnDeadlock

    • kDefaultClientFlags,

    • kDefaultSlowQueryLoggingTime

    • kDefaultConnectionFailureHandler

Management
  • 게임 서버 실행 중 점검 상태로 전환할 수 있는 StartMaintenance() 함수를 추가했습니다.

    • MaintenanceService 컴포넌트가 활성화 되어 있어야 작동합니다.

v1.0.0-3816 (2019-02-01)

2019-02-01 15:01:08

Warning

Breaking Changes

다음 변경 사항으로 인해 리더보드를 사용할 경우 프로젝트 코드를 수정해야 할 수 있습니다.
  • 리더보드 점수 삭제(DeleteScore) 함수 콜백 인자를 수정했습니다.

    • 점수 삭제 결과로 호출하는 ScoreDeletionResponseHandler 값의 error 값이 반대로(삭제 성공 시 true) 되는 문제를 수정했습니다. 이제 점수 삭제 성공 시 error 값을 true 가 아닌 false 로 반환합니다.

Leaderboard
  • 리더보드 점수 삭제(DeleteScore) 함수 콜백 인자를 수정했습니다.

    • 점수 삭제 결과로 호출하는 ScoreDeletionResponseHandler 값의 error 값이 반대로(삭제 성공 시 true) 되는 문제를 수정했습니다. 이제 점수 삭제 성공 시 error 값을 true 가 아닌 false 로 반환합니다.

  • leaderboard_implicit_start 플래그를 추가했습니다.

    • MANIFEST.json 파일 내 LeaderboardClient 항목에 이 플래그를 추가한 후 true 로 설정하면 리더보드 연결 없이 엔진을 시작할 수 있습니다. 이후 엔진은 주기적으로 리더보드 연결을 시도하며 연결하기 전에 호출하는 리더보드 함수들은 모두 실패를 반환합니다.

Billing
  • biller_implicit_start 플래그를 추가했습니다.

    • MANIFEST.json 파일 내 BillingClient 항목에 이 플래그를 추가한 후 true 로 설정하면 빌러 연결 없이 엔진을 시작할 수 있습니다. 이후 엔진은 주기적으로 빌러 연결을 시도하며 연결하기 전에 호출하는 빌러 함수들은 모두 실패를 반환합니다.

Object
  • 생성 중인 ORM 오브젝트를 kReadLock 으로 읽을 때 크래시할 수 있는 문제 수정

    • 생성 중인 ORM 오브젝트를 kReadLock 으로 가져온 후 롤백될 때 충돌할 수 있는 문제를 수정했습니다.

Network
  • 새 SSL 활성화 플래그를 추가했습니다.

    • use_ssl_on_{protocol}_{encoding} 대신 {protocol}_use_ssl 을 사용해주시기 바랍니다.

Framework
  • 서버가 크래시할 때 덤프 파일이 간헐적으로 남지 않는 문제를 수정했습니다.

v1.0.0-3806 (2019-01-24)

2019-01-24 14:44:00

Warning

Breaking Changes

CentOS 7 패키지 저장소 업데이트 이후에는 반드시 이 엔진 버전을 사용해야 합니다.
  • CentOS 7 패키지 저장소(YUM) 업데이트 시 아이펀 엔진에서 사용하는 패키지와 충돌하는 문제를 수정했습니다.

misc.
  • CentOS 7 패키지 저장소(YUM) 업데이트 시 아이펀 엔진에서 사용하는 패키지와 충돌하는 문제를 수정했습니다.

    • 이 문제는 CentOS 7 버전에서만 발생하며 우분투를 사용 중이시면 무시해도 됩니다.

    • 만약 엔진 버전을 업데이트할 수 없는 상황이라면 다음 명령어로 충돌하는 패키지들의 업데이트를 막을 수 있습니다.

      $ sudo yum update –exclude=libwebsockets,libwebsockets-devel,libsodium

      또는 /etc/yum.conf 파일을 열어 다음 구문을 추가해주셔도 됩니다.

      exclude=libwebsockets-* libsodium

    • 이미 저장소 업데이트를 하여 문제가 발생하는 경우, 슬랙 채널 또는 iFun Engine Support 로 연락주시면 자세히 안내해드리겠습니다.

Network
  • HTTP 바디 길이가 지정한 길이를 넘어서면 500 대신 413을 반환합니다.

    • HTTP 트랜스포트 및 ApiService 사용 시 바디 길이가 ‘http_max_body_bytes’ 플래그 값보다 긴 경우 413(Payload Too Large)을 반환합니다.

  • HTTP status code enum 값 오타를 수정했습니다. (kNonAuthoriativeInformation -> kNonAuthoritativeInformation)

Management
  • C# ApiService 의 API 는 UTF-8 문자열만 허용합니다.

    • C# 서버에서 바이너리 데이터를 ApiService 포트로 보낼 때 충돌하던 문제를 수정했습니다. ApiService 에서 바이너리 데이터를 받을 경우 415(Unsupported Media Type) 코드를 반환합니다.

misc.
  • C# ApiService.RegisterHandler 함수의 URI 인자 검사를 개선했습니다.

    • URI 인자 마지막에 ‘/’ 문자가 없는 경우 추가하게 변경했습니다. 이 수정으로 마지막에 ‘/’ 문자가 없는 API URI 를 등록할 때 API 를 찾지 못하는 문제를 해결합니다.

  • 호스트 매니저 로그 출력 개선

    • 이제 호스트 매니저가 더 많은 로그를 출력합니다. 호스트 매니저 파일 안에 verbose 플래그 값을 True 로 설정하면 상세 내역을 출력합니다.

  • 호스트 매니저 초기화가 실패하면 초기화 시 생성했던 프로세스를 종료합니다.

    • 개발 환경에서 초기화 실패 시 생성했던 프로세스가 남아있는 문제를 위한 수정입니다.

v1.0.0-3794 (2019-01-09)

2019-01-09 23:50:28

Distribution
  • rpc_redis_disable_key_refresh 플래그를 추가했습니다.

    • MANIFEST.json 파일의 Rpc 항목 안에 rpc_redis_disable_key_refresh 플래그를 true 로 설정하면 오브젝트 갱신 기능을 비활성화합니다(기본 값: false).

      오브젝트 갱신은 ‘cache_expiration_in_ms’ 밀리 초 단위로 오브젝트들을 갱신하는 기능으로 추후 삭제할 예정입니다. 현재는 플래그 설정으로만 비활성화가 가능합니다. 이 기능을 비활성화하면 일정 주기마다 발생하는 부하를 크게 줄일 수 있습니다.

  • Redis 기반 RPC 서비스 사용 중 전체 키를 삭제할 경우 멈추는 문제를 수정했습니다.

    • flushall 을 했을 때 정상적으로 종료할 수 없었던 문제를 수정했습니다.

  • Redis 기반 RPC 사용 중 서버를 종료할 때 키가 추가될 수 있는 문제 수정

    • 종료 중일 때는 Redis 기반 RPC 사용을 중단하여 오브젝트 소유권을 얻지 못하게 합니다.

Network
  • 세션 및 트랜스포트 객체, 소켓 연결 관련 로그 출력을 개선했습니다.

    • 이제 언어 설정에 따라 한국어로 된 메시지를 볼 수 있습니다.

System
  • 이벤트 관련 로그 출력을 개선했습니다.

    • 이제 언어 설정에 따라 한국어로 된 메시지를 볼 수 있습니다.

misc.
  • 로그를 저장할 디렉토리 용량이 부족하면 경고를 출력한 후 서버를 실행하지 않게 변경했습니다.

v1.0.0-3776 (2018-12-14)

2018-12-14 16:56:27

Network
  • Fixed a bug that ignores the last message in session’s buffer when it is closed by the server.

  • The server now shows warning message instead of crashing itself when trying client redirection with closed session.

    • This was happened when use_session_reliability feature is enabled.

  • Changed to ignore Websocket frame marking to increase the performance.

Database
  • Mariadb Connector will now show warning message if your query is not executed within the specified timeout.

    • Added slow_query_logging_time_in_ms argument in Create() function. The default value is 5000 ms (5 seconds).

Framework
  • Improved the log messages related to the session and connection.

    • You are now able to see these messages in Korean if you set your language setting to Korean.

v1.0.0-3724 (2018-11-30)

2018-11-30 14:54:52

Distribution
  • Improved the log messages related to dedicated server RPC.

    • You are now able to see these messages in Korean if you set your language setting to Korean.

misc.
  • You can now use ‘game_ip’ flag in dedicated-server-host.flag file on Linux environment.

    • If you specified the value for ‘game_ip’ flag, the client will receive the specified value in ‘game_ip’ instead of the IP address of spawned dedicated server host.

  • You can now set Redis Authentication Pass in dedicated-server-host.flag file.

v1.0.0-3714 (2018-11-28)

2018-11-28 15:06:37

Warning

Breaking Changes

  • You have to rebuild your servers due to the below changes.

    • Fixed a bug where unlocking the objects that are locked by the server that is killed unexpectedly on Redis backend RPC service.

  • You have to update all servers that are using the same Zookeeper/Redis due to the below changes.

    • Changed the way to generate the key that is used for locking the objects on Redis backend RPC service. This key is now changed each time you launched the process.

  • You may have to change your logic due to the below changes.

    • The pre message hook is now executed before the event is invoked.

    • The following functions are affected by this change.

      • InstallProtobufMessageHandlerHook

      • InstallProtobufMessageHandlerHook2

      • InstallJsonMessageHandlerHook

Distribution
  • Improved the Redis RPC service to support Redis Sentinel.

  • Changed the way to generate the key that is used for locking the objects on Redis backend RPC service. This key is now changed each time you launched the process.

  • Improved the lock mechanism on Redis RPC backend environment.

    • One of the servers that are using Redis RPC become the master node.

    • The master node will try to unlock the locked objects if it notices the server that had locked objects goes down or has not updated for a specific time.

    • You can specify this time in ‘rpc_redis_session_timeout_in_seconds (default value: 10 seconds)’ flag in the MANIFEST.json file.

  • You can now specify the tag in RPC message. If they have the same tag, they will be serialized then executed on the same thread.

Network
  • The pre message hook is now executed before the event is invoked.

    • Due the to the internal changes, Using ORM objects on these message hook functions is not allowed.

    • To work around the above policy, You have to wrap your code with Event::Invoke function.

Database
  • Improved the RedisClient component to support Redis Sentinel.

misc.
  • Fixed a bug where installing the C# packages that is created with multi-flavors was not working.

v1.0.0-3698 (2018-11-15)

2018-11-15 18:10:58

Network
  • Added HTTP CORS features to support Unity WebGL.

Database
  • Fixed a bug that caused the crash in the libmariadb library when ‘Too many connections’ error occurred.

  • Fixed a bug where {ObjectName}.FetchRandomly() was not working when the use_db_char_type_for_object_id flag is set to true.

v1.0.0-3690 (2018-11-07)

2018-11-07 10:15:31

Warning

Breaking Changes

  • Due to the below update, You may have to update the client plugin to a new version(v253) for Websocket feature.

    • Improved the Websocket feature related to AccountManager .

  • You have to rebuild and update all servers that are linked with the same Zookeeper / Redis at once due to the following changes.

    • Fixed an issue where the database was not created when the composite key is not sorted in alphabetical order.

  • You have to rebuild the project if funtest is used in your project.

    • Added an use_ssl(default=false) option for SSL in funtest::ConnectTcp function.

Database
  • Fixed an issue that all event threads may paused when using synced commands with RedisClient.

    • Fixed a bug where all event threads may paused when using RedisClient object that is initialized with the invoke_as_event=true option.

  • MariaDBConnector object now try to keep the connections alive.

    • The connection object now sends a simple query if the idle time elapsed 30 seconds.

Billing
  • Added timeout feature for billing requests.

    • You can change the timeout value with the biller_request_timeout_seconds(default=30) option in BillingClient section in MANIFEST.json file.

  • Improved the error messages related to the request failure.

    • You are now able to see the messages in Korean if the language of your machine is set to Korean.

Leaderboard
  • Added timeout feature for leaderboard requests.

    • You can change the timeout value with the leaderboard_request_timeout_seconds(default=30) option in LeaderboardClient section in MANIFEST.json file.

  • Improved the error messages related to the request failure.

    • You are now able to see the messages in Korean if the language of your machine is set to Korean.

Object
  • Fixed an issue where the database was not created when the composite key is not sorted in alphabetical order.

System
  • Improved the Websocket feature related to AccountManager .

Network
  • The socket server now shows the proper message if SSL is enabled.

  • Added the encryption feature for WebSocket.

Service
  • Added the warning message when using Leaderboard features in test mode.

  • Added the warning message when using Billing features in test mode.

misc.
  • Added an use_ssl(default=false) option for SSL in funtest::ConnectTcp function.

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

2018-10-10 14:03:27

Network
  • Fixed a bug that the ApiService class causes Undefined Behavior in the certain environment.

v1.0.0-3585 (2018-10-02)

2018-10-02 08:37:48

System
  • Fixed a bug where collecting the certain filesystem(like NFS) was not working correctly.

v1.0.0-3584 (2018-10-01)

2018-10-01 15:52:45

Object
  • Fixed a bug where changing the ORM string attribute was not working correctly when it’s units digit is changed.

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

2018-09-18 07:53:34

Framework
  • Added an option to ignore UTF-8 BOM in JSON Parser.

    • fun::Json::FromStringWithComments, FromStreamWithComments is now deprecated. You can now use FromString, FromStream with kAllowComment option instead.

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

2018-09-05 14:56:20

System
  • You can now get your hostname from GetExternalHostname() in AWS.

v1.0.0-3501 (2018-08-17)

2018-08-17 10:35:51

Service
  • DedicatedServerManager now supports spot instance.

misc.
  • funtest now supports websocket protocol.

  • InstallJsonMessageChecker() method is now available in C#.

  • InstallProtobufMessageChecker method is now available in C#.

v1.0.0-3489 (2018-08-07)

2018-08-07 07:08:16

Network
  • The server now shows the message if the compression feature is enabled.

  • Changed the log messages related to the server initialization.

  • Fixed a bug where connecting was failed if the compression feature is enabled.

misc.
  • Added compression feature for funtest.

v1.0.0-3474 (2018-08-02)

2018-08-02 14:12:50

Object
  • Fixed a bug where creating/removing attribute of map object was not delayed even if delayed update feature is enabled.

  • Fixed a bug where creating/removing attribute of array object was not delayed even if delayed update feature is enabled.

Service
  • Remove wrong assertion checks in FindSession and Broadcast function in World component.

  • Added the RPC tags when using AccountManager::RedirectClient.

Distribution
  • Fixed a bug that caused crash when remove keys in Redis backed RPC service.

v1.0.0-2936 (2018-07-12)

2018-07-12 10:36:56

Service
  • DSM: Changed to randomly generate a region if you create it without region on a SpawnRequest request.

v1.0.0-2934 (2018-07-10)

2018-07-10 17:08:42

Network
  • You can now change the warning threshold of send message queue When using session reliability feature.

    • The warning threshold session_reilability_send_queue_warning_threshold (default: 64) is specified at SessionService Component of your MANIFEST.json .

misc.
  • funtest C#: Added SendMessage for integer message type (message_type).

  • funtest C#: Added message handler (RegisterMessageHandler) for integer message type (message_type).

v1.0.0-2923 (2018-07-03)

2018-07-03 18:23:52

Warning

Breaking Changes

  • Due to the below update, You may have to change the name of flag in your project that using Dedicated Server Manager component.

    • Dedicated Server Manager : The flag dedicated_server_defunct_timeout_seconds is now renamed as dedicated_server_launch_timeout .

Service
  • Dedicated Server Manager : dedicated_server_defunct_timeout_seconds flag is now renamed as dedicated_server_launch_timeout .

  • Dedicated Server Manager : Added dedicated_server_terminate_defunct_instances flag. If the flag is set to true , the instances that did not received ready API within the timeout dedicated_server_launch_timeout(default: 300 seconds) will be terminated automatically.

Management
  • Fixed a bug where Counter API was not collecting NIC and disc usage correctly in certain environment.

misc.
  • Fixed a bug where creating upstart/systemd script was not working correctly for the project which defined multiple flavors

v1.0.0-2911 (2018-06-22)

2018-06-22 01:29:29

Service
  • DS Host: Added process timeout option.

    • dedicated-server-hosts will now respond failure meesage if process is not created within the timeout( request_timeout_seconds , default: 10) seconds.

  • DS Host: Added an error log with exit code for the cases that process terminated unexpectedly or being killed.

Management
  • Added the size of cache memory( cachedram ) in Counter API.

v1.0.0-2904 (2018-06-15)

2018-06-15 14:14:29

Service
  • Added a verbose log before DedicatedServerManger connects to dedicated-server-host.

  • Added several error logs that include a specific uri when connecting to dedicated-server-host is failed.

  • Added several error logs for dedicated-server-host when validating JWT is failed.

  • Added several error logs for ds-state-service when validating JWT is failed.

v1.0.0-2890 (2018-06-11)

2018-06-11 16:53:39

Service
  • Fixed an bug that describing instances was not working in redis-only environment in 2885 experimental.

v1.0.0-2885 (2018-06-08)

2018-06-08 13:41:07

Service
  • Fixed an issue that Spawn request proceed twice in slow network condition.

  • Changed the log message to make it more clear when selecing a instance is failed.

    • Example: Wating for pending , Not enough capacity , Invalid request

  • Changed the log message to make it more clear when connecting dedicated server host is failed.

System
  • MapRef::Size function is added.

  • C# - MapRef::Length is added.

v1.0.0-2874 (2018-06-04)

2018-06-04 15:09:23

Network
  • Added a new message hook (InstallProtobufMessageHandlerHook2) to support Protobuf field(integer) type.

v1.0.0-2872 (2018-06-01)

2018-06-01 10:18:19

Service
  • Instances creation/termination logic is changed as follows in DedicatedServerManger component.

    • DedicatedServerManger will now create new instances when the version is changed. Because of this behavior, number of total instances can be higher than the value of max_instances.

    • DedicatedServerManger now counts the instances with both deprecated and new version when choosing the servers to terminate. This behavior will prevent that terminating reserved instances before the new instances are prepared.

    • Once the new version is prepared, DedicatedServerManger will only use the new instances for upcoming matches. Deprecated instances will handle remaining matches, but they will be terminated when they become idle.

  • DedicatedServerManger will now show the warning message if one (or more) of your instances is not prepared until the time that specified in the following flag.

    • dedicated_server_defunct_timeout_seconds=<numeric> (default value:300, 5 minutes).

v1.0.0-2862 (2018-05-23)

2018-05-23 14:24:49

Warning

Breaking Changes

  • Due to the below update, All EC2 instances that are used for host service must be terminated, or should be tagged to have a funapi_internal_tag:dsm tag.

    • Fixed a bug where describing EC2 instances was not working correctly after aws_settings is updated.

Service
  • The proper error log message will be shown when updating aws_settings is failed.

  • Fixed a bug where describing EC2 instances was not working correctly after aws_settings is updated.

  • Fixed a bug where marking EC2 instances as deprecated was not working correctly after aws_settings is updated.

  • A response for /version API now has two status types (current/deprecated).

v1.0.0-2849 (2018-05-15)

2018-05-15 08:44:28

Service
  • Fixed an issue where calculating terminated instances was incorrect in the multi-region environment.

  • DedicatedServerManger now retry with exponential backoff algorithm when calling describe API is failed.

  • Minor performance improvement for calling AWS API.

  • PreRedirectionHook function is added. The hook will be called before the server sending a redirection message to a client.

  • DedicatedServerManger now counts instances that have the same image_id, and the same instance_id if it is specified in your MANIFEST.json.

Billing
  • A new function is added for getting transaction ID in C#

  • A new error code is added for the case that product does exists.

v1.0.0-2827 (2018-04-25)

2018-04-25 16:36:27

Warning

Breaking Changes

  • You should rebuild your server due to the following changes.

    • A new error code is added for the case that product does not exists.

Service
  • Following logs are enabled by default:

    • Before create instances.

    • Before terminate instances.

    • After successfully tagged a version.

    • After successfully fetched description of instances.

    • When instances are found that has a termination conditions.

    • When Redis keys are found which is not actually on AWS.

  • DedicatedServerManager now removes the Redis key corresponding a instance that is not actually on AWS.

Billing
  • A new function is added for getting transaction ID .

  • A new error code is added for in the case that product is not exists

v1.0.0-2821 (2018-04-19)

2018-04-19 11:02:52

Service
  • DedicatedServerManager now tags instances in the same region.

  • DedicatedServerManager now counts idle instances in the same region.

v1.0.0-2817 (2018-04-18)

2018-04-18 15:15:20

Service
  • Fixed an issue where parsing image-id in DedicatedServerManger Component was not working in 2808 experimental.

  • DedicatedServerManger Component now prints log message when AWS setting is changed.

    • sensitive data, such as api key or secret, will be substituted by *****.

v1.0.0-2808 (2018-04-16)

2018-04-16 11:50:11

Service
  • Fixed an issue that the match context is null in ProgressCallback2.

  • Added verbose log option for Dedicated Server Manager.

    • You may see more details by turning on dedicated_server_verbose_log flag in DedicatedServerManager Component.

  • Fixed an issue that Dedicated Server Manager crashes when user_data is empty.

  • Dedicated Server Manager now handles image_id that shorter than 8 characters format correctly.

Management
  • Added request IP information in Http::Request and Http::Request2 structure.

v1.0.0-2801 (2018-04-10)

2018-04-10 08:54:17

misc.
  • Fixed an issue where identifying EC2 instances was not working properly.

v1.0.0-2800 (2018-04-07)

2018-04-07 17:26:40

misc.
  • Fixed an issue Where Dedicated Server Manager was handling instance with incorrect region info.

v1.0.0-2798 (2018-04-06)

2018-04-06 11:23:59

misc.
  • Dedicated Host Service now sends region info to Dedicated Server Manager properly.

v1.0.0-2796 (2018-04-04)

2018-04-02 13:29:18

misc.
  • Fixed an issue that might fail to parse C# Protobuf message in 2794 experimental version.

v1.0.0-2794 (2018-04-02)

2018-04-04 17:13:09

Service
  • Client resource files can be ignored by .funignore file.

    Ignoring feature is now available in funapi_client_resource_generator and iFunEngine. All files that matched with Perl regex expression in .funignore file will be ignored.

Object
  • Fixed an issue that failed to create composite key in Jinja2 2.8 version

Distribution
  • Fixed an issue that redis-backend RPC failed when database is disabled.

misc.
  • Fixed a bug that crash when server received empty protobuf message in C#

v1.0.0-2779 (2018-03-16)

2018-03-16 14:17:57

Service
  • Minor bug fixes, stability improvements

v1.0.0-2769 (2018-03-09)

2018-03-09 10:32:01

Service
  • Fixed an issue that causing crash when matchmaking is completed in C#

v1.0.0-2768 (2018-03-08)

2018-03-08 17:26:03

Warning

Breaking Changes

  • You have to rebuild all servers at once if Matchmaking feature is used.

    • MatchContext removed from ProgressCallback, and ProgressCallback2 is added.

    You can still use match context in ProgressCallback2 callback.

    • UpdateMatchPlayerContext C++ is added.

    This can be used to change context of player who joined match.

Service
  • DSM: Allowed to read a file with user_data in aws settings

  • MatchContext removed from ProgressCallback, and ProgressCallback2 is added.

You can still use match context in ProgressCallback2 callback.

UpdateMatchPlayerContext C++ is added.

This can be used to change context of player who joined match.

v1.0.0-2762 (2018-02-26)

2018-02-26 05:36:49

Warning

breaking changes

  • You have to rebuild your project if MariaDB Connector is used.

    • MariaDB Connector can now read SQL Timestamp type.

    • MariaDB Connector can now accepts client flag.

Database
  • MariaDB Connector can now read SQL Timestamp type.

  • MariaDB Connector can now accepts client flag.

Service
  • Dedicated server manager will recover itself even if the redis key is removed.

v1.0.0-2720 (2018-02-19)

2018-02-19 12:58:06

Warning

Breaking Changes

  • You may have to fix your code since below changes are based on World::GetAllObject.

    • World::GetAllObject can now accept custom filter as a type.

Service
  • World::GetAllObject can now accept custom filter as a type.

v1.0.0-2664 (2018-02-12)

2018-02-12 17:14:34

Service
  • 2663 experimental 버전에서 DSM 호스트 버전을 인식하지 못하는 문제가 수정되었습니다.

v1.0.0-2663 (2018-02-12)

2018-02-12 15:07:17

Service
  • 리더보드 리셋 전 스케줄 정보를 조회할 때 크래시가 발생할 수 있는 문제가 수정되었습니다.

  • 리더보드 최초 리셋 시작 전 스케줄을 조회할 때, 잘못된 정보를 받을 수 있던 문제가 수정되었습니다.

v1.0.0-2648 (2018-02-09)

2018-02-09 07:33:36

Service
  • experimental 2629에서 DSM에서 실행 중인 EC2 호스트 수가 1개로 고정되는 문제가 수정되었습니다.

  • DSM 호스트 버전이 명시된 경우 최신 버전만 사용합니다.

  • DSM 호스트 버전이 명시된 경우 확장시 항상 최신 버전을 사용하며, 오래된 버전부터 종료합니다.

v1.0.0-2629 (2018-02-06)

2018-02-06 14:47:54

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

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

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

v1.0.0-2626 (2018-02-05)

2018-02-05 16:39:40

Network
  • 압축 옵션 설정 (transport 별 옵션으로 분리)

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

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

2018-02-02 10:38:33

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

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

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

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

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

  • Dedicated Server Rpc C# 지원

Network
  • 메시지 압축 기능 추가

Database
  • RedisClient: 알 수 없는 이유로 연결 실패하여 재연결할 때 크래시되는 버그 수정.

v1.0.0-2610 (2018-01-30)

2018-01-30 13:32:28

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

  • Dedicated Server Manager 지원(C#)

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

v1.0.0-2606 (2018-01-23)

2018-01-23 17:58:19

Warning

Breaking Changes

  • Google Play 인증 서비스를 사용시 게임 서버를 다시 빌드하셔야합니다(C#)

    • Google Play 인증 시 누락 된 Timeout 입력 인자 추가(C#)

Service
  • 개별 플랫폼 인증 검증 시 크래시하는 문제 수정(C#)

  • Google Play 인증 시 누락 된 Timeout 입력 인자 추가(C#)

v1.0.0-2604 (2018-01-22)

2018-01-22 18:00:26

Service
  • 페이스북 인증시 크래시하는 문제 수정(C#)

v1.0.0-2603 (2018-01-19)

2018-01-19 18:29:05

Service
  • DSM에서 DS Host -> Engine 통신을 LBS 거쳐서 할 수 있게 수정

  • DSM에서 OAuth 처리 누락된 콜백 수정

v1.0.0-2601 (2018-01-18)

2018-01-18 01:52:30

Warning

Breaking Changes

  • World 를 사용하는 경우 게임 서버를 다시 빌드해야 합니다

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

  • 다음의 변경 사항으로 인해 코드 수정이 필요할 수 있습니다.

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

    기존의 TStore 인터페이스는 deprecated 처리되었습니다. MakeTStoreReceipt 함수를 MakeOneStoreReceipt 함수로 변경하셔야 합니다.

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

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

  • AppleGameCenter 인증 검증 지원(C#)

Database
  • MariaDB 연결 실패 시 크래시할 수 있던 문제 수정

v1.0.0-2596 (2018-01-16)

2018-01-16 07:06:29

Object
  • 분산 환경에서 키가 없는 오브젝트를 사용할 때 크래시할 수 있던 문제가 수정되었습니다.

v1.0.0-2595 (2018-01-15)

2018-01-15 18:13:47

Warning

Breaking Changes

  • 다음의 변화로 인해 게임 서버를 다시 빌드해야 합니다. 또한 코드 수정이 필요할 수도 있습니다.

    • ORM에서 DateTime 타입 오브젝트가 String에서 WallClock::Value(C++)/DateTime(C#)으로 변경되었습니다.

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

Object
  • ORM에서 DateTime 타입 오브젝트가 String에서 WallClock::Value(C++)/DateTime(C#)으로 변경되었습니다.

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

2018-01-12 08:49:17

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

v1.0.0-2589 (2018-01-11)

2018-01-11 02:33:57

System
  • Docker CE 에서 실행 실패하는 문제 수정

Network
  • 동시에 여러 웹 소켓 요청이 올 때 비정상적으로 처리하던 문제 수정

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

  • GooglePlay authentication 에서 JWT 확인하는 기능 추가

v1.0.0-2585 (2018-01-06)

2018-01-06 14:54:45

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

v1.0.0-2577 (2018-01-03)

2018-01-03 11:50:30

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

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

2018-01-02 15:19:49

Management
  • ApiService가 꺼져있을 때 서버가 동작하지 않는 문제 수정

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

2018-01-02 01:38:58

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

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

2017-12-29 09:48:41

Service
  • ORM오브젝트 정의 시 두 개 이상의 속성을 조합하여 키로 사용할 수 있습니다.

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

2017-12-29 13:18:38

Service
  • Matchmaking 통계 출력 문제 수정.

  • Matchmaking 통계에서 매칭 min/max 초기값을 0으로 수정.

Management
  • API service 의 URL 처리 로그에 bytes 길이도 출력하도록 수정.

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

2017-12-28 16:50:15

Service
  • –matchmaking_server_logging_level 추가.

  • MatchmakingServer 에 REST API 들 추가

  • matchmaking 관련 counter 추가

Distribution
  • 크래시했을 때 서버 프로세스가 종료되지 않을 수 있는 문제 수정

Management
  • matchmaking_server_logging_level 을 runtime flag 로 지정.

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

2017-12-26 14:27:23

Warning

Breaking Changes

  • 다음의 변화로 인해 게임 서버를 다시 빌드해야 합니다.

    • funtest::Session 이 RedirectClient 처리할 수 있게 수정

Network
  • funtest::Session 이 RedirectClient 처리할 수 있게 수정

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

v1.0.0-2549 (2017-12-21)

2017-12-21 17:11:07

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

v1.0.0-2544 (2017-12-20)

2017-12-20 11:22:23

Warning

Breaking Changes

  • C# 프로젝트를 사용하는 경우 다음의 변화로 인해 게임 서버를 다시 빌드해야 합니다.

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

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

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

    ORM 에 자료형을 더 상세하게 입력할 수 있게 추가되었습니다. 추가로 지원되는 타입은 아래와 같습니다.

    int8, int16, int32, int64, float, timestamp, datetime

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

v1.0.0-2543 (2017-12-20)

2017-12-20 10:47:19

Warning

Breaking Changes

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

    • Session Reliability를 사용할 때 delayed ack, piggy back 기능 추가

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

      • Unity3D: 239

      • Unreal4: 90

      • Cocos2d-x: 90

Network
  • Session Reliability를 사용할 때 delayed ack, piggy back 기능 추가

    delayed_ack_interval_in_ms를 0이상의 값으로 설정했을 때 사용 할 수 있습니다.

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

v1.0.0-2536 (2017-12-18)

2017-12-18 15:46:14

Management
  • ApiSerivce: JWT, 로드밸런서 쓰는 경우에 대한 rate limit 구현 추가

v1.0.0-2534 (2017-12-15)

2017-12-15 08:05:55

Object
  • 로컬 환경에서 동일한 오브젝트를 다른 락 타입으로 Fetch할 때 죽던 문제가 수정되었습니다.

misc.
  • 이제 funapi_client_resource_generator를 Windows에서 사용할 수 있습니다.

v1.0.0-2522 (2017-12-08)

2017-12-08 01:40:05

Service
  • 월드에서 부채꼴 필터가 구체 검색 과정의 잘못된 ASSERT 제거

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

2017-12-07 19:35:46

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

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

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

Management
  • DeployApiService 에서 지급 가능한 아이템 목록을 순서대로 보내게 수정

misc.
  • 일부 플랫폼에서 C# 패키징이 실패하는 문제 수정

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

v1.0.0-2512 (2017-12-05)

2017-12-05 20:42:06

Service
  • World 사각형, 부채꼴 필터에 잘못된 방향(0, 0) 입력에 대한 예외처리 추가

Distribution
  • RPC 백엔드로 redis를 쓸 때 object id pool 관리 수정

v1.0.0-2509 (2017-12-05)

2017-12-05 09:17:44

Network
  • 분당 처리할 세션당 메시지 수 제한 추가

  • HTTP 에도 rate limit 적용 (HTTP 429)

v1.0.0-2506 (2017-12-04)

2017-12-04 20:59:45

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

v1.0.0-2503 (2017-12-04)

2017-12-04 14:05:31

Network
  • 플래그 지정 없이 웹소켓 서버가 실행되던 버그 수정

v1.0.0-2502 (2017-12-04)

2017-12-04 07:37:34

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

Database
  • Ubuntu Xenial 에서 MySQL Connector 의 연결 관련 버그 수정

Object
  • Foreign 이 아닌 Object Type Attribute 로 순환 소유 관계가 만들어질 때 Fetch 함수의 버그 수정

v1.0.0-2497 (2017-12-01)

2017-12-01 12:06:37

Warning

Breaking Changes

  • 다음의 변경 사항으로 인해 코드 수정이 필요할 수도 있습니다.

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

    ProgressCallback 에 JSON match_context 인자가 추가되어 코드 수정이 필요합니다.

  • 다음의 변경 사항으로 인해 Zookeeper를 공유하는 모든 서버가 함께 업데이트 되어야 합니다.

    • Rpc: 서버간 연결 관련 처리 개선.

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

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

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

  • C# RegisterAttributeTrigger 함수 추가

  • C# SelectBy{AttributeName} 함수 추가

Distribution
  • Rpc: 서버간 연결 관련 처리 개선.

Network
  • 웹소켓 프로토콜 지원

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

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

v1.0.0-2480 (2017-11-24)

2017-11-24 01:48:36

Network
  • SSL 기본 알고리즘 순서 변경 및 허용 목록 축소

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

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

System
  • 등록되지 않은 Activity Log 사용 시 크래시 하지 않도록 수정

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

  • Apple Game Center 인증 검증 기능 추가

v1.0.0-2460 (2017-11-21)

2017-11-21 10:59:32

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

v1.0.0-2453 (2017-11-09)

2017-11-09 02:21:56

Framework
  • C# - 서버 크래시 시 콜스택 정보가 로그에 항상 포함되도록 개선

Object
  • C# - kReadLock 으로 Fetch 후 쓰기를 할 때 더 자세한 로그가 출력되도록 개선

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

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

v1.0.0-2443 (2017-11-02)

2017-11-02 12:10:29

Warning

Breaking Changes

  • 다음의 변경 사항으로 인해 서버를 다시 빌드해야 합니다.

    • RedisClient: Create() 할 때 database 선택할 수 있도록 수정.

Database
  • Redis 컴포넌트에 database 선택할 수 있는 기능 추가.

  • RedisClient: Create() 할 때 database 선택할 수 있도록 수정.

v1.0.0-2440 (2017-11-01)

2017-11-01 15:49:36

Service
  • World::MonitorTypeExistence() 버그 수정

  • World::GetName() 추가

v1.0.0-2437 (2017-10-31)

2017-10-31 06:52:56

Warning

Breaking Changes

  • 다음의 변경 사항으로 인해 코드 수정이 필요할 수도 있습니다.

    • iFun Authenticator deprecated 처리

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

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

    C# GooglePlayGame 인증 검증 함수를 사용하는 경우 코드 수정이 필요합니다.

Service
  • iFun Authenticator deprecated 처리

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

  • C# SessionClosedHandler 에서 AccountManager 로그아웃 처리 할 수 없던 버그 수정.

v1.0.0-2431 (2017-10-27)

2017-10-27 13:55:53

Warning

Breaking Changes

  • Custom API 를 사용하는 경우 다시 빌드해야 합니다.

    • 아이펀 디플로이의 반복 캠페인 처리 추가

Management
  • 아이펀 디플로이의 드랍다운 리스트 기능 사용 가능하게 수정

  • 아이펀 디플로이의 반복 캠페인 처리 추가

v1.0.0-2425 (2017-10-20)

2017-10-20 16:37:54

Service
  • C# AccountAuthentication deprecated 처리

  • C# GooglePlus 인증 추가

  • C# NexonPlatform 인증 추가

  • C# NexonToy 인증 추가

  • C# Facebook 인증 추가

  • C# LINE 인증 추가

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

2017-10-16 15:30:28

Warning

Breaking Changes

  • 다음의 변경 사항으로 인해 코드 수정이 필요할 수도 있습니다.

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

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

  • 다음의 변경 사항으로 인해 연결되는 모든 서버의 엔진 업데이트가 필요합니다.

    • 분산 환경에서 Object Model 이 다른 서버는 구동되지 않도록 수정

  • 다음의 기능 추가로 인해 리더보드 업데이트가 필요합니다.

    • Leaderboard 월간 랭킹 리셋 기능 추가

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

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

  • Leaderboard 월간 랭킹 리셋 기능 추가

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

Distribution
  • 분산 환경에서 Object Model 이 다른 서버는 구동되지 않도록 수정

Time
  • 서버 프로세스의 구동시간을 얻는 WallClock::GetUptime(), WallClock::GetUptime2() 추가

  • 서버 프로세스의 구동시간을 얻는 funapi/uptime Counter 추가

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

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

2017-10-12 14:36:30

Warning

Breaking Changes

  • World 기능을 사용할 경우 코드 수정 및 서버 빌드가 필요합니다.

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

      WorldManager::Create/Get/FindServer() 함수를 호출하실 경우 channel 인자를 맨 뒤로 옮겨야합니다.

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

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

  • World 삭제 기능 추가

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

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

2017-09-29 11:16:13

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

Object
  • 분산환경에서 Object Cache 메모리 사용량 개선

v1.0.0-2395 (2017-09-26)

2017-09-26 17:00:14

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

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

Database
  • RedisClient: Pub/Sub 처리시 간헐적으로 assertion 에 걸리는 문제 수정.

v1.0.0-2389 (2017-09-25)

2017-09-25 16:02:00

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

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

Distribution
  • DedicatedServerRpc: Tag 를 얻을 수 있는 GetPeerTag() 함수 추가

Database
  • 일부 머신에서 RedisClient 연결이 해제되는 문제 수정.

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

2017-09-21 14:34:10

Distribution
  • DedicatedServerRpc: ConnectHandler 에서 tag 를 조회할 수 없는 문제 수정.

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

v1.0.0-2373 (2017-09-19)

2017-09-19 15:16:24

Time
  • Timer 의 Event Tag 처리 관련 버그 수정

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

2017-09-15 17:26:48

Warning

Breaking Changes

  • World 기능을 사용할 경우 코드 수정 및 서버 빌드가 필요합니다.

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

      World::FindObject2(), World::FindSession2() 를 사용하는 경우 아래 함수로 변경해야 합니다.

      • World::FindObject(…, FindOption(true), …)

      • World::FindSession(…, FindOption(true), …)

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

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

Service
  • 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() 추가

Distribution
  • 자동으로 Dedicated Server RPC server 를 알아내는 기능 추가.

    DedicatedServerRpc 기능을 사용할 경우 Dedicated Server 에서 사용하는 Unreal 클라이언트 플러그인을 73 experimental 버전 이상으로 업데이트하셔야 합니다.

  • DedicatedServerRpc: Dedicated Server 에서 입력한 Tag 로 peer 목록 가져오는 기능 추가

    DedicatedServerRpc 기능을 사용할 경우 Dedicated Server 에서 사용하는 Unreal 클라이언트 플러그인을 73 experimental 버전 이상으로 업데이트하셔야 합니다.

Framework
  • 크래시할 때 엔진 버전을 로그로 출력

v1.0.0-2353 (2017-09-08)

2017-09-08 15:06:19

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

v1.0.0-2350 (2017-09-08)

2017-09-08 02:14:17

Distribution
  • RPC Disconnect Handler 에서 접속 끊긴 Peer 의 Tag 와 Status 를 읽을 수 있게 수정

  • DedicatedServerRpc: bytes 대신 FunDedicatedServerRpcMessage 를 사용하도록 수정.

    Dedicated Server RPC 를 사용할 경우 Unreal 클라이언트 플러그인을 72 experimental 버전 이상으로 업데이트해야 합니다.

v1.0.0-2348 (2017-09-07)

2017-09-07 17:11:07

Warning

Breaking Changes

  • 다음의 변경 사항으로 인해 서버를 다시 빌드해야 합니다.

    • Timer 에 Event Tag 를 지정하여 병렬처리 할 수 있게 수정

Object
  • 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 카운터 추가

Time
  • Timer 에 Event Tag 를 지정하여 병렬처리 할 수 있게 수정

  • Repeating Timer 가 밀릴 때 과도하게 이벤트를 생성하지 않도록 수정

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

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

v1.0.0-2342 (2017-09-05)

2017-09-05 17:11:13

Distribution
  • Unreal Dedicated Server 와 RPC 통신하는 기능 추가.

    Unreal Dedicated Server 에서 클라이언트 플러그인과 통신합니다. 클라이언트 플러그인은 71 experimental 버전 이상이 필요합니다.

Network
  • Protobuf field 로 메세지 핸들러 등록시 메모리릭이 발생되는 문제 수정

  • Protobuf field 로 메시지 핸들러 등록시 이름에 > 가 포함되는 버그 수정

Service
  • GooglePlayGameService 인증 검증 지원

  • GooglePlayGameService 인증 검증 지원(C#)

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

2017-09-04 23:14:57

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

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

2017-09-01 12:43:30

Distribution
  • Segmentation Fault 로 크래시했을 때도 Zookeeper 연결을 끊고 종료하도록 수정.

Object
  • ORM 관련 잘못된 Assert 제거

v1.0.0-2329 (2017-08-31)

2017-08-31 04:26:28

Warning

Breaking Changes

  • World 를 사용하실 경우 게임 서버를 다시 빌드해야 합니다.

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

Service
  • World::Object 에 mutex 락 추가

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

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

  • C#: DeployAPIService에서 ORM 롤백 처리가 되지 않는 문제 수정

Network
  • Session::GetExpirationTime() 의 값이 부정확하게 나오는 문제 수정

  • C#: 메세지 핸들러 호출 전/후를 후킹할 수 있는 함수 추가

v1.0.0-2316 (2017-08-28)

2017-08-28 11:04:51

Network
  • 메세지 핸들러 호출 전/후를 후킹할 수 있는 함수 추가

misc.
  • DeployApiService 문서 업데이트

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

2017-08-25 14:03:55

Network
  • TCP transport 가 attach 되는 경우 호출되는 handler 등록 가능하게함

  • Session::GetLastSendTime() 추가

  • Session::GetExpirationTime() 추가.

  • session id 를 한 번만 보내 트래픽을 줄이는 기능 관련 크래시 문제 수정

  • C#: http.Method.GetString(), http.StatusCode.GetString() 추가

Management
  • C#에서 추가한 Restful API가 목록 조회 시 정상적으로 포함되도록 변경

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

Object
  • Object Cache 가 trailing spaces 들을 MySQL general_ci 와 동일하게 다루도록 수정

Distribution
  • Rpc: peer 연결 여부를 확인할 수 있는 IsPeerConnected() 함수 추가.

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

2017-08-22 16:22:34

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

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

2017-08-22 09:31:30

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

v1.0.0-2285 (2017-08-18)

2017-08-18 12:55:22

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

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

  • World Channel 지원

v1.0.0-2281 (2017-08-16)

2017-08-16 18:48:10

Management
  • DeployApiService: 인벤터리 아이템 다중 회수 API 지원

  • DeployApiService 를 native/mono 중 선택해서 활성화하게 수정

  • C# iFunDeploy API 연동 지원 (1) - 유저 관리 기능

  • C# iFunDeploy API 연동 지원 (2) - 커스텀 API

  • C# iFunDeploy API 연동 지원 (3) - 캠페인 기능 연동

  • C# iFunDeploy 연동 지원 (4) - 인벤터리 삭제 지원

  • C# ApiService URL 매칭하는 방식 개선

misc.
  • C# HTTP API 통신 예제 코드 추가

v1.0.0-2275 (2017-08-14)

2017-08-14 07:47:31

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

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

v1.0.0-2265 (2017-08-11)

2017-08-11 15:52:08

Distribution
  • MySQL, Zookeeper 처리 속도 모니터링 기능 추가

Network
  • 이벤트 프로파일링 시 Protobuf 핸들러 이름이 정수 값으로 보이는 문제 수정

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

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

2017-08-10 16:00:34

Service
  • World 기능 추가

v1.0.0-2253 (2017-08-09)

2017-08-09 13:14:16

Service
  • 아마존 데디케이티드 서버 지원 관련 버그 수정

v1.0.0-2251 (2017-08-09)

2017-08-09 10:53:02

Network
  • Session::CloseTransport() 로 UDP 를 닫을 때 버그 수정

v1.0.0-2250 (2017-08-08)

2017-08-08 19:32:09

Object
  • 한 이벤트에서 동일한 Key 의 ORM 오브젝트의 생성 삭제를 반복할 때 발생하는 문제 수정

  • 삭제한 오브젝트를 다시 삭제하는 잘못된 코드를 ASSERT 로 막던 것 허용.

Service
  • C# AccountManager 관련 콜백이 간헐적으로 호출되지 않는 문제 수정

Network
  • send_session_id_only_once 관련 Assert 로 크래시할 수 있는 문제 수정

v1.0.0-2241 (2017-08-06)

2017-08-06 19:19:49

Object
  • ORM Object 를 생성 후 바로 삭제할 때 Assert 로 크래시하는 문제 수정

v1.0.0-2238 (2017-08-04)

2017-08-04 10:29:15

Object
  • 오브젝트 프로시저명을 축약하여 사용할 수 있는 기능 추가

    MANIFEST/Object 에 use_db_stored_procedure_full_name 를 false 로 지정하면 축약된 오브젝트 프로시저명으로 DB 서버와 통신합니다. 이 경우 DB 스키마 해시가 변경되어 프로시저를 재 생성하는 DDL 쿼리가 실행됩니다. 만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.

v1.0.0-2233 (2017-08-03)

2017-08-03 09:05:32

Warning

Breaking Changes

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

    • Array 또는 Map 만 가지는 오브젝트의 프로시저를 만들 수 없는 버그 수정.

      본 수정으로 인해 DB 스키마 해시가 변경되어 프로시저를 재 생성하는 DDL 쿼리가 실행됩니다. 만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.

Object
  • Array 또는 Map 만 가지는 오브젝트의 프로시저를 만들 수 없는 버그 수정.

v1.0.0-2231 (2017-08-02)

2017-08-02 17:51:10

Warning

Breaking Changes

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

    • 오브젝트를 DB 에서 가져올 때 트래픽 줄이도록 수정

      본 수정으로 인해 DB 스키마 해시가 변경되어 프로시저를 재 생성하는 DDL 쿼리가 실행됩니다. 만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.

    • 오브젝트 DB 테이블의 col__tag 사용하지 않도록 수정.

      더이상 col__tag 컬럼이 사용되지 않습니다. 엔진에서 자동으로 해당 컬럼을 제거하지는 않습니다. 본 수정으로 인해 DB 스키마 해시가 변경되어 프로시저를 재 생성하는 DDL 쿼리가 실행됩니다. 만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.

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

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

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

      • Unity3D: 223

      • Unreal4: 67

      • Cocos2d-x: 67

Object
  • ORM 지연 업데이트 관련 Assert 로 크래시하는 문제 수정

  • 오브젝트를 DB 에서 가져올 때 트래픽 줄이도록 수정

  • 오브젝트 DB 테이블의 col__tag 사용하지 않도록 수정.

  • 종료 처리가 멈출 수 있는 문제 수정

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

v1.0.0-2226 (2017-08-01)

2017-08-01 15:23:32

Service
  • DSM: 예약 인스턴스 수 동적 조절하는 콜백 추가

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

v1.0.0-2223 (2017-07-31)

2017-07-31 16:57:05

Warning

Breaking Changes

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

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

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

Object
  • Object 가 cache_expiration_in_ms 보다 더 빨리 캐시에서 내려갈 수 있는 문제 수정

  • 분산 환경에서 ORM Object Cache 적중률 개선

  • Object 삭제 관련 Assert 로 크래시할 수 있는 문제 수정

  • 분산 처리 과정의 Lock 관련 Assert 수정

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

  • 오브젝트 쿼리 용량 줄이도록 수정.

  • 프로시저를 사용하지 않을 때 불필요한 쿼리 제거.

Framework
  • ArgumentMap 에 FindDoubleArgument() 함수 추가.

Distribution
  • 분산 환경에서 불필요한 Zookeeper 요청 제거

misc.
  • MANIFEST.json double 타입 인자 지원.

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

2017-07-27 05:53:34

Object
  • 프로시저를 사용하지 않을 때 간헐적으로 Array 데이터를 지우지 못하던 버그 수정.

v1.0.0-2210 (2017-07-26)

2017-07-26 14:45:42

Warning

Breaking Changes

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

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

      이 옵션을 true 로 설정하셨을 경우 엔진 업데이트 후 서버 실행 시 프로시저를 재생성하기 위해 DDL 쿼리를 실행합니다. 만약 DB 권한이 충분하지 않을 경우 서버가 실행되지 않습니다. 이 경우 Required DB permissions 에서 설명하는 export_db_schema 옵션을 사용하여 관리자 DB 계정으로 DB 스키마를 업데이트할 수 있습니다.

Object
  • Object ID Pool 관련 Assert 수정

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

v1.0.0-2205 (2017-07-19)

2017-07-19 12:01:37

Object
  • 일부 버그 수정 및 성능 개선.

v1.0.0-2200 (2017-07-18)

2017-07-18 11:46:09

Object
  • Object Cache 의 Index 성능 개선

  • 생성된 Object 가 DB Update 완료 전에 Cache 에서 내려갈 수 있는 문제 수정

v1.0.0-2199 (2017-07-17)

2017-07-17 20:35:32

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

v1.0.0-2196 (2017-07-17)

2017-07-17 09:42:16

Database
  • RedisClient 명령 호출 후 메모리 반환에 지연이 생기는 버그 수정

v1.0.0-2195 (2017-07-16)

2017-07-16 14:46:15

Object
  • 하나의 Object 가 서로 다른 두 서버에서 동시에 캐싱될 수 있는 문제 수정

v1.0.0-2187 (2017-07-13)

2017-07-13 11:54:25

Object
  • DB, Zookeeper Write I/O 지연시 정상적인 Key 가 Dangling Key 로 처리되는 문제 수정

  • 존재하지 않는 Key 의 Object 를 Create 또는 Fetch 할 때 일시적으로 CPU 를 과도하게 사용하는 문제 수정

v1.0.0-2183 (2017-07-06)

2017-07-06 20:21:15

Warning

Breaking Changes

  • 다음 변화로 인해 서버 빌드가 필요합니다.

    • Object Model 을 다루는 내부 코드 개선

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

    • Deploy API 수정 사항 반영

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

Management
  • Deploy API 수정 사항 반영

Object
  • Object Model 을 다루는 내부 코드 개선

  • ORM 분산처리 관련 잘못된 ASSERT 제거

  • ORM 롤백 처리 중 Assert 로 크래시할 수 있는 문제 수정

C#
  • C# Object Array, Map Fetch 함수 성능 개선

misc.
  • 리더보드에 추가된 mysql_local_account_column_length 옵션 설명 추가

v1.0.0-2176 (2017-07-04)

2017-07-04 15:54:09

Network
  • use_session_relibility 와 send_session_id_only_once 기능을 함께 쓸 때 Encryption 관련 ASSERT 로 크래시할 수 있는 문제 수정

  • use_session_relibility 와 send_session_id_only_once 기능을 함께 쓸 때 Session Reliability 에 의한 재연결에 안될 수 있는 문제 수정

  • UDP 관련 불필요한 ASSERT 제거

System
  • 간헐적으로 서버 종료 처리에 지연이 생기는 문제 수정

v1.0.0-2172 (2017-06-30)

2017-06-30 17:15:59

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

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

  • DedicatedServerManager::Cancel() 추가

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

v1.0.0-2171 (2017-06-30)

2017-06-30 10:58:00

misc.
  • ResourceManager 문서중 기획데이터 사용하기 예제 잘못된 것 수정

v1.0.0-2169 (2017-06-28)

2017-06-28 16:19:40

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

v1.0.0-2166 (2017-06-28)

2017-06-28 09:30:45

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

v1.0.0-2161 (2017-06-26)

2017-06-26 17:34:05

Warning

Breaking Changes

  • 다음 변화로 인해 코드 수정 및 인증 서버 업데이트가 필요합니다.

    • Kakao 인증 제거

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

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

Database
  • Mariadb Connector 가 재연결될 때 쿼리가 유실될 수 있는 문제 수정

Service
  • 멀티캐스트 메시지를 검사할 수 있는 기능 추가

  • Kakao 인증 제거

Object
  • Object Fetch 함수 성능 개선

System
  • 이벤트 유입, 처리량 카운터가 실제 보다 낮고 부정확하게 측정되는 문제 수정

misc.
  • Object Type 의 JSON 을 다룰 때 내부의 불필요한 함수 호출 제거

v1.0.0-2152 (2017-06-21)

2017-06-21 10:32:53

Warning

Breaking Changes

  • 다음의 변화로 인해 코드 수정이 필요합니다.

    • JsonSchema::Type kDouble 오타 수정

C#
  • ApiService Handler 에서 ORM 을 사용할 수 없는 문제 수정

Management
  • SystemInfo Counter 가 구동 후 일정 시간 동안 출력되지 않는 문제 수정

Service
  • AccountManager RedirectClient 호출 후 엔진에서 세션을 종료하도록 수정

misc.
  • JsonSchema::Type kDouble 오타 수정

  • Mongodb logger에 SSL/TLS 활성화하는 플래그 추가

v1.0.0-2144 (2017-06-12)

2017-06-12 19:52:40

Network
  • close_transport_when_session_close 옵션이 작동하지 않는 문제 수정

Database
  • RedisClient 추가

Management
  • DeployAPI: 캠페인 취소, 아이템 대량 지급 API 추가

misc.
  • CLion 개발 환경 구성 문서 업데이트(2017.1.2 버전 기준)

v1.0.0-2136 (2017-06-01)

2017-06-01 15:02:54

Warning

Breaking Changes

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

    • DeployAPI: 선물 지급 API 수정

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

Management
  • DeployAPI: 선물 지급 API 수정

Network
  • 다음 함수들이 kDefaultProtocol 을 인자로 받을 수 있도록 수정

    • Session::GetRemoteEndPoint()

    • Session::IsTransportAttached()

    • Session::CloseTransport()

Object
  • Object Lock/Lease 재시도 로그 표현 수정

  • ORM Database 와 연결된 Mariadb Connector 를 얻을 수 있는 API 추가

misc.
  • C# - Mariadb(MySQL) Connector 사용 시 크래시할 수 있는 문제 수정

v1.0.0-2126 (2017-05-30)

2017-05-30 15:48:26

Service
  • DSM: Now waits when executing DSM host even when Redis doesn’t start

v1.0.0-2125 (2017-05-30)

2017-05-30 15:01:00

Network
  • Improved assertion handling of TransportProtocol values

v1.0.0-2121 (2017-05-29)

2017-05-29 18:22:17

Service
  • DSM: Handled if RESTful API is opened with an EC2 public IP address

v1.0.0-2118 (2017-05-29)

2017-05-29 15:16:32

Warning

Breaking Changes

  • You may need to modify Multicast Protobuf and update plugins due to the following change.

    The available field number range for the Multicast Protobuf extension has been changed. If extending FunMulticastMessage, you need to use field numbers from 16 and up. You also need to update plugins to at least the versions below. (in experimental version)

    • Unity3D: 212

    • Unreal4: 62

    • Cocos2d-x: 62

Network
  • Fixed field error when using Protobuf extension identifiers as message types

v1.0.0-2109 (2017-05-24)

2017-05-24 16:57:18

Warning

Breaking Changes

  • You need to update server fields and plugins due to the following change.

    • Added function to use Protobuf message type as integer instead of string

    To use this feature, you need to update plugins to at least the following versions. (in experimental version)

    • Unity3D: 210

    • Unreal4: 61

    • Cocos2d-x: 61

Network
  • Added feature to only send session ID in first message in TCP and UDP, and later omit to reduce network traffic.

  • Added function to use Protobuf message type as integer instead of string

v1.0.0-2103 (2017-05-23)

2017-05-23 17:10:13

misc.
  • Fixed field error when Bool type present in C# - ORM objects

v1.0.0-2099 (2017-05-19)

2017-05-19 19:56:02

Warning

Breaking Changes

  • You need to modify your code or rebuild your server due to the following change.

    • Deploy API: bug fixes and changed interface responses

    Some DeployApiService interfaces were modified, so you need to rebuild your server. SearchUsers, GetInventory You need to update implementation for the ___ function.

    • Session::LastSentMessageType() Fixed Session::LastSentMessageType() function error

    Source code must be modified because session API has changed.

Distribution
  • Fixed handling of Zookeeper exceptions

Management
  • Deploy API: bug fixes and changed interface responses

Network
  • Session::LastSentMessageType() Fixed Session::LastSentMessageType() function error

misc.
  • Fixed the bug in which systemd service did not run when package created in Ubuntu 16.04

  • Fixed the bug in which service did not work correctly when systemd package created using flavors

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

2017-05-10 09:09:39

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

v1.0.0-2080 (2017-05-04)

2017-05-04 16:29:43

Object
  • More data now output in object model error log and changed to fatal log

  • Added accumulated object model test

Framework
  • Updated to record Google Protobuf error logs in log file instead of stderr.

System
  • C# - Event::Abort() support

Network
  • C# - Session::SetTransport(…) support

v1.0.0-2074 (2017-04-24)

2017-04-24 19:24:05

Warning

Breaking Changes

  • You may need to modify code due to the following change.

    • DSM: Changed implementation to allow user intrusion

    Source code needs to be modified because the dedicated server API was modified. DedicatedServerManager::SendUsers() function was changed to Spawn(), and a parameter was added to send data for each user so the function could use the data (empty JSON must be sent even if there is no data). Existing SendUsers function now only handles sending users to games that have already started. Client and funapi-dedicated-server-host must now be updated to the latest version to work.

Service
  • DSM: Changed implementation to allow user intrusion

v1.0.0-2071 (2017-04-21)

2017-04-21 02:43:49

Warning

Breaking Changes

  • C# project options must be modified due to the following change.

    • Fixed bug preventing debugging from starting in C# - Monodevelop 5.x

    When using Monodevelop 5.x, recreate the project or refer to /usr/bin/funapi_monodevelop_helper.exe in Options -> Run -> User commands

as follows to add as the first item.

  1. Copy the value you input previously.

  2. Add the item at the “Run” stage and input “/usr/bin/funapi_monodevelop_helper.exe”.

  3. Add the item at the “Run” stage and reenter data deleted in 1.

Service
  • Reflected Nexon platform authentication changes

misc.
  • Fixed bug preventing debugging from starting in C# - Monodevelop 5.x

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

2017-04-20 17:07:31

Warning

Breaking Changes

  • MANIFEST.json file options must be modified due to the following change.

    • Changed thread number setting name to handle network I/O

    Changed SessionService/network_io_threads_size in IoService/io_service_threads_size and existing settings are valid for now. Please change to the new setting name as soon as you can.

    • Added Google Log storage time option

    Debug logs (glog) are deleted after 30 days. To store them for longer,

you need to change glog_retention_period_in_days.

Network
  • Changed thread number setting name to handle network I/O

System
  • Added Google Log storage time option

Object
  • Removed hanging assertion when invoking ORM object Delete() two or more times

  • Fixed bug preventing build when there was a string type in C# - map key

Distribution
  • Changed Zookeeper performance counter address in zookeeper_stat to distribution_profiling

v1.0.0-2059 (2017-04-17)

2017-04-17 16:55:31

Object
  • Supported resetting C# - Object as JSON

  • Added Has, Clear, and FindFirstEmptySlot functions in C# object ArrayRef and MapRef

misc.
  • Fixed to work even when setup_build_environment is not a symbolic link

  • Changed C# - Install/Start/Uninstall function return type to void -> bool

  • Json::HasAttribute({AttrName}, {AttrType}) Added Json::FindAttribute() function

v1.0.0-2042 (2017-04-05)

2017-04-05 09:36:24

misc.
  • Fixed shutdown bug when server crashes in 1.0.0-2040 experimental version.

v1.0.0-2040 (2017-04-03)

2017-04-03 16:19:20

Network
  • Updated to leave log when session closed

Service
  • Fixed hang on assertion bug when logging in with a different account ID while already in a logged-in session in AccountManager

v1.0.0-2018 (2017-03-30)

2017-03-30 14:18:43

compared with ‘==’ operator
Network
  • Updated to leave more data such as client addresses in network log

v1.0.0-2016 (2017-03-29)

2017-03-29 11:15:24

v1.0.0-2016 (2017-03-29)

2017-03-29 11:15:24

Warning

Breaking Changes

  • You need to rebuild your server due to the following change.

    • Added server test feature (funtest::Session) UDP support

      You need to rebuild your server if using funtest::Session.

Network
  • Updated to leave transport protocol (TCP or UDP or HTTP) together in the session message log

misc.
  • Added server test feature (funtest::Session) UDP support

  • Fixed server test feature (funtest::Session) HTTP bug

v1.0.0-2011 (2017-03-27)

2017-03-27 16:19:58

Warning

Breaking Changes

  • You need to modify your code or rebuild your server due to the following change.

    • Enabled selection of matchmaking server

      • StartMatchmaking() Added target_server parameter to function. Enabled selection of one of kRandom (NULL), kLeastNumberOfPlayers (prioritize server with fewest requests) or kMostNumberOfPlayers (prioritize server with most requests), or direct PeerId selection.

    • Rpc::SetStatus() Updated to prevent overwriting internal engine status when Rpc::SetStatus() invoked

    • C# support updated

      • C# projects created in earlier versions must be remade.

Service
  • GetMatchmakingServerInfo() Added GetMatchmakingServerInfo() function. All MatchmakingServer PeerId and number of matchmaking requests can be discovered.

  • Added LINE authentication

v1.0.0-1991 (2017-03-14)

2017-03-14 09:37:02

Distribution
  • Added flag called rpc_use_public_address

Network
  • Fixed bug ignoring later messages if unregistered messages were received from the handler in HTTP

  • Updated to automatically close transport when funtest::Session closed

System
  • Schema output can now be turned off in activity log file with MANIFEST settings

misc.

v1.0.0-1974 (2017-02-23)

2017-02-23 10:33:34

Warning

Breaking changes

  • You need to modify your code or rebuild your server due to the following change.

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

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

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

Framework
  • Fixed bug delaying close handling during SIGSEGV crash

Object
  • Fixed bug causing incorrect output of rollback frequency in event_profiling counter

misc.
  • Multicast: Documented message transmission hooking

  • Documented session BroadcastLocally() and BroadcastGlobally() functions

  • Documented AccountManager BroadcastLocally() and BroadcastGlobally() functions

  • Json::FindAttribute() Added Json::FindAttribute() function

v1.0.0-1954 (2017-02-07)

2017-02-07 09:59:41

Database
  • Mariadb(MySQL) Improved MariaDB (MySQL) connector timeout handling

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

2017-02-06 09:11:34

Network
  • Network: Added function to send messages to all sessions

  • AccountManager: Added function to send messages to all logged in sessions

Object
  • Updated to also support foreign attributes when object reset with JSON

Service
  • Multicast: Added hook called during message transmission

v1.0.0-1936 (2017-01-25)

2017-01-25 11:20:01

Distribution
  • Improved exception handling of irregular RPC message receipt

v1.0.0-1935 (2017-01-25)

2017-01-25 10:35:52

Distribution
  • Fixed bug when sending RPC to self

v1.0.0-1931 (2017-01-24)

2017-01-24 04:25:41

Warning

Breaking changes

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

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

C#
  • C# support (Ubuntu)

    CentOS will be supported later.

    To develop with C#, you need to input the following commands to remake your project.

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

v1.0.0-1912 (2017-01-17)

2017-01-17 12:40:49

System
  • Fixed server crash bug with Assert failed: execution_time_ == 0:

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

2016-12-15 11:55:46

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

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

Network
misc.
  • Fixed Unity3D DLL build failure when building a server

v1.0.0-1901 (2016-12-14)

2016-12-14 18:11:13

misc.

Updated plugin documentation

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

2016-12-13 22:26:52

Service
  • Added component to manage dedicated servers

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

2016-12-13 18:28:12

System
  • 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.

Object
  • 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.

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

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

2016-12-08 02:36:51

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

v1.0.0-1886 (2016-12-07)

2016-12-07 19:54:38

misc.
  • Fixed build failure when Unity DLL built on server is used on the client

v1.0.0-1881 (2016-12-06)

2016-12-06 21:12:45

System
  • 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.

Object
  • Fixed Assert failed: cache_for_lease_.Remove(object_id) crashing

  • Fixed potential unclearing of some resources during event timeout

  • Fixed bug causing crash when schema installed simultaneously on several servers

  • Fixed crashing during DB schema update in CentOS

misc.
  • Updated networking feature documentation

  • Fixed incorrect explanation in Document: os.cpus

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

2016-11-21 13:21:40

Warning

breaking changes

  • 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-1848 (2016-11-18)

2016-11-18 02:17:43

Warning

breaking changes

  • 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.

  • Fixed crashing due to “Assert failed: ObjectCache::Delete(…)”

    You need to rebuild your game server to apply the change.

  • 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.

  • Session::GetLastReceiveTime(msgtype)Added hook called when Session::GetLastReceiveTime(msgtype), SendMessage()

    You need to rebuild your game server.

Object
  • Fixed crashing due to “Assert failed: IsValid()”

  • Added feature to automatically change if string columns are long

  • Added DB table schema verification for objects

  • 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

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

  • Updated event thread hang checker

  • Updated event handling

Network
  • Session::GetLastReceiveTime(msgtype)Added hook called when Session::GetLastReceiveTime(msgtype), SendMessage()

  • HttpClient: Fixed retry when DNS search problem occurred

Framework
  • Fixed abnormal server shutdown when shutting down during component installation

Distribution
  • Fixed “failed to unpublish” log output problem

  • Fixed distribution handling problem with incorrect build options in CentOS

misc.
  • Improved document search

  • Added biller changelog

  • Added authenticator changelog

  • Added leaderboard changelog

  • Documented core dump debugging

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

2016-10-28 16:35:29

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-1810 (2016-10-26)

2016-10-26 11:16:51

Warning

Breaking Changes

  • 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.

Distribution
  • 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

Object
  • Fixed failure to detect array and map attribute type changes

misc.
  • Allowed proto file in directories outside {project}-source/src

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

2016-10-05 16:52:44

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

misc.
  • Document: Added Zookeeper max heap size Java option description

  • Document: Added Zookeeper auto purge option description

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

2016-09-28 16:56:21

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

  • Improved distribution performance

  • Fixed server crash bug due to object fetch assert

Distribution
  • Fixed bug in which some Zookeeper clients were omitted from statistics

  • Fixed omitted RPC finisher in engine

  • Fixed RPC disconnect handler execution order bug

Service
  • Added Curl dependency to ClientResourceServce MANIFEST

misc.
  • Fixed funapi_profile failure to operate when there are multiple server processes

  • Json::Copy() Optimized Json::Copy()

v1.0.0-1766 (2016-09-23)

2016-09-23 08:52:28

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-1759 (2016-09-22)

2016-09-22 14:14:38

Warning

Breaking Changes

  • Removed leaderboard ScoreSubmissionRequest::kUpdate.

    You need to change to ScoreSubmissionRequest::kHighScore.

  • Removed Redis Command(Async) function.

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

Service
  • Leaderboard: Removed ScoreSubmissionRequest::kUpdate

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

Object
  • Fixed infrequent assertion crash bug when remote server shuts down

  • Fixed distribution assert crash bug

  • Updated shutdown handling

Database
  • Redis: Removed Command(Async) function

Network
  • Added ChaCha20 / AES128 support to transport encryption

Management
  • Counter: Added concurrent_user counter

Time
  • Added timestamp and timestring change features to WallClock

misc.
  • Document: Added list of counters supported by engine

  • Document: Updated C# Runtime test sample explanation

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

2016-09-08 12:23:49

Object
  • 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

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.
  • Documented how to use external libraries

  • Document: Added plugin FunapiSession explanation

  • Added Json::FromFileWithComments() and Json::FromStreamWithComments() reading JSON (including comments) from file and stream

v1.0.0-1718 (2016-08-31)

2016-08-31 15:10:22

Object
  • Fixed object lock downgrade bug

Distribution
  • Removed incorrect distribution assert

  • Fixed crashes during shutdown

System
  • Event: Added event queue handling time statistics

Framework
  • Updated shutdown handling

Management
  • Counter: Added log output if counter exceeds threshold value

misc.
  • Document: Leaderboard: Added check for ranking schedule reset

  • Document: Changed CLion build configuration description

  • Document: Fixed broken links in leaderboard documentation

  • Added client transfer documentation

v1.0.0-1697 (2016-08-19)

2016-08-19 10:41:22

Distribution
  • Fixed potential crashing during object handling

misc.
  • Documented how to lock package version

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

2016-08-18 18:01:36

Object
  • Fixed potential assert hanging during object return handling

  • Fixed event timeout handling bug

  • Added Zookeeper owner cancellation when fetching broken objects

Framework
  • Fixed shutdown handling delay when server crashes while running

Distribution
  • Fixed distribution handling bug

Service
  • Added messages for transfer between client servers

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

2016-08-12 17:04:52

Framework
  • Fixed shutdown failure bug after crash in some situations

misc.
  • Document: Redis: Added ExecuteCommand() function

  • Document: Redis: Added ZCount, ZRem

  • Document: Redis: Added Discard, Exec, Multi

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

2016-08-09 07:58:51

Object
  • Allowed use of String(32) KEY / <String(32), ANY>

v1.0.0-1661 (2016-08-08)

2016-08-08 15:23:34

Distribution
  • Allowed use of several ZookeeperClient

  • Added statistics for each ZookeeperClient

  • Document: Distribution: Added statistics for each ZookeeperClient

Object
  • Updated object handling

v1.0.0-1657 (2016-08-05)

2016-08-05 17:13:47

Warning

Breaking Changes

String(32) now cannot be used with a key, and you need to rebuild. (This limitation will be lifted in a future release.)

Object
  • Fixed to allow separate string length for each ORM attribute

misc.
  • Documented how to choose update channels (package repositories)

  • Added reference manual for String(n) types

v1.0.0-1650 (2016-07-30)

2016-07-30 16:15:23

Object
  • Object: Differentiated write and read in object DB statistics

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

Service
  • Updated to serialize matchmaking progress CB and match CB

Time
  • Timer: Fixed kInvalidTimerId bug for timer ID values

v1.0.0-1645 (2016-07-18)

2016-07-18 00:39:53

Distribution
  • Added Zookeeper profiling documentation

v1.0.0-1643 (2016-07-15)

2016-07-15 17:19:51

Object
  • 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

  • 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

  • Added query handling time statistics for each DB

  • Fixed crashes during export_db_schema when table DDL did not exist

Network
  • 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

Database
  • Redis: Updated to handle disconnection without waiting when connection closed

  • Redis: Fixed Redis disconnection handling when using commands at the server install stage

Distribution
  • Object ownership canceled more quickly when the server crashes

  • Added Zookeeper handling statistics

System
  • ResourceManager now supports DateTime, time, and date types

Framework
  • Allowed JavaScript notes in MANIFEST.json

Time
  • MariaDB Connector now supports DateTime, time, and date types

misc.
  • Document: Fixed MO guide example bug

  • Allowed adding notes to object_model JSON files

  • Document: Fixed errors in game server management -> planning data documentation

v1.0.0-1626 (2016-07-07)

2016-07-07 16:37:07

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)

Object
  • 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

Distribution
  • Updated RPC performance

  • 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

  • Fixed handling as FATAL LOG rather than retry when some Zookeeper operations fail

  • Allowed setting Zookeeper session timeout in MANIFEST

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.

Network
  • Changed default session timeout value from 1 hour to 5 minutes

Service
  • Document: Added CrossServerStorage component

misc.
  • Document: Added explanation of newly added options in billing agent

  • Document: Fixed typos in MO game creation guide

  • Document: Fixed matchmaking guide documentation

v1.0.0-1607 (2016-06-20)

2016-06-20 17:40:32

Object
  • Fixed omitted object lock test in some situations

  • Fixed object lock table

  • Fixed object lock table

  • Fixed Object:Array PushBack

Network
  • Added feature so all transport automatically closes when a session is closed

misc.
  • Document: Object: Added explanation of export_db_schema option

  • Document: Fixed typos in Leaderboard:DeleteScoreSync() function example

  • Added MariaDB Connector explanation

v1.0.0-1595 (2016-06-13)

2016-06-13 18:22:17

Object
  • Fixed object ReadLock latency bug and improved readability

  • Added feature to select object ID

Distribution
  • Removed unnecessary Zookeeper requests

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

2016-06-02 21:56:55

Service
  • 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.

Object
  • 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 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.

Network
  • Output message type as log when invalid message received

  • Added unescape handling for HTTP request URI

Management
  • ApiService: Supported asynchronous handling

Leaderboard
  • Leaderboard: Fixed API bug checking for reset

misc.
  • Document: Added plugin ping explanation

v1.0.0-1568 (2016-05-23)

2016-05-23 08:17:32

Object
  • Fixed excessive holding of fetched objects in cache during timed out events

Management
  • Added feature to set ApiService log level

misc.
  • 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

v1.0.0-1558 (2016-05-13)

2016-05-13 16:01:46

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
  • MulticastServer can return the number of channels and users.

  • Service: Multicast: Updated channel join/leave handling

  • Added feature to retrieve client resource list from CDN

Network
  • Added urgent message transmission feature

  • Fixed name assignment in threads created by the engine

  • Improved handling when receiving invalid JSON messages through HTTP

Framework
  • Added manifest encryption feature

Time
  • Fixed timer asserts when handling server shutdown

misc.
  • Document: Updated plugin documentation

  • Document: Updated server test documentation

  • Document: Added plugin log explanation

  • Supported MANIFEST override when executed with local launcher

v1.0.0-1550 (2016-05-02)

2016-05-02 10:31:27

Network
  • 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

Object
  • Changed array type getter method to const

Service
  • Authenticator: Reflected changed NexonToy protocol

misc.
  • Changed minidumps to core dumps and added script executing GDB

  • Fixed incorrect log path setting when executing a flavor as a service

v1.0.0-1542 (2016-04-11)

2016-04-11 18:01:03

Management
  • 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

Network
  • Added feature to connect to peer clients to test servers

Service
  • Authentication: Added Nexon Toy

Database
  • Redis: Fixed infrequent handling delays

Time
  • Added WallClock::FromSec, MonotonicClock::FromSec

Distribution
  • Updated to shut down server when connection to Zookeeper server fails while server is running

misc.
  • Document: Updated explanation of events in reference documentation

  • Document: Added explanation of packet replay attack blocking

v1.0.0-1530 (2016-04-04)

2016-04-04 11:23:03

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

Distribution
  • Added warning feature when RPC reply not sent within 5 seconds

Management
  • Added feature to set number of event tags to handle ApiService

System
  • Updated so common event tag(timer, api service handler) are not automatically inherited

misc.
  • 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

v1.0.0-1514 (2016-03-17)

2016-03-17 20:14:27

Service
  • Fixed some callbacks not being invoked on disconnection from matchmaking server

  • 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

Management
  • RuntimeConfiguration: Updated so server starts even when flags that can’t be set are input

Network
  • Fixed disconnection bug when Session::GetRemoteEndPoint() invoked

misc.
  • Updated Visual Studio documentation

  • Added English version of tutorial

  • Fixed some Korean reference documents