# 릴리스 정보

**URL:** https://heroiclabs.com/docs/kr/nakama/getting-started/release-notes/
**Summary:** 최신 Nakama 버전에는 기능, 개선사항, 수정사항이 포함됩니다.

---


# 릴리스 정보

Nakama와 지원되는 클라이언트 라이브러리의 최신 릴리스에서 업데이트와 개선사항을 확인합니다.

## Nakama

이 세션에서는 새로운 릴리스와 [nakama](https://github.com/heroiclabs/nakama) 및 [nakama 공통](https://github.com/heroiclabs/nakama-common) 패키지의 기능을 살펴봅니다.

### 호환성 매트릭스

[Go 서버 런타임](../../server-framework/go-runtime/)을 사용하는 개발자는 정확한 `nakama-common` Nakama 버전을 사용하고 있는지 확인해야 합니다:

{{< table name="nakama.getting-started.release-notes.nakama-common-version" >}}

### 3.12.0

**출시**: 2022년 5월 22일

#### 새로운 기능

* 모든 런타임에 대해서 다음 기능을 추가하였습니다:
    * [friendsBlock](../../server-framework/typescript-runtime/function-reference/#friendsBlock)
    * [channelMessagesList](../../server-framework/typescript-runtime/function-reference/#channelMessagesList)
* Lua 및 TypeScript 런타임에 다음 기능을 추가하였습니다:
    * [metricsCounterAdd](../../server-framework/typescript-runtime/function-reference/#metricsCounterAdd)
    * [metricsGaugeSet](../../server-framework/typescript-runtime/function-reference/#metricsGaugeSet)
    * [metricsTimerRecord](../../server-framework/typescript-runtime/function-reference/#metricsTimerRecord)

#### 개선사항

* 저장소 작성 계산은 입력과 같은 순서로 `acks`을(를) 반환합니다.
* _Delete All_ 데이터 작업에 대한 콘솔 경로를 업데이트했습니다.
* RPC 함수에서 권한 부여 헤더가 호출되기 전에 HTTP 키를 확인합니다.
* Apple 인증 JWT 검증 오류에 대한 오류 메시지가 노출됩니다.
* 사용자의 온라인 상태 찾기를 개선했습니다.
* 후크 등록 함수 이전/이후의 알림 삭제에 대한 이름을 업데이트했습니다.
* Nakama Console 상태 보기 그래프 헤더의 명확성을 개선했습니다.
* 실패한 소셜 제공자 요청 사항에서 로그 메시지를 개선했습니다.
* Lua 런타임 함수 등록에서 동시성을 개선합니다.
* 권한 부여 대결 로거는 자체의 대결 식별자만 정확하게 포함합니다.
* 대형 토너먼트 최대 크기 값에 대한 처리를 개선했습니다.
* 그룹 탈퇴/추방/차단에서 채널 제거에 대한 처리를 개선했습니다.
* Nakama Console에서 그룹 구성원 보기에 대한 UI 개선.
* JavaScript 런타임 권한 부여 대결로 필터링된 브로드캐스트를 크기가 큰 사용자 세트로 개선합니다.
* Go 1.18.2 릴리스로 빌드됩니다.

#### 수정사항

* `StreamUserList` JavaScript 런타임에서 정확한 데이터가 반환됩니다.
* 현재 상태 목록을 대결 초기화 매개변수로 Go 런타임 대결로 전달할 수 있습니다.
* 데이터베이스 통계를 사용할 수 없는 경우, Nakama Console 개체의 수를 수정하였습니다.
* 서버 런타임에서 호출 시 지정되지 않은 토큰 생성자에 사용자 이름 필드를 생성해야 합니다.
* JavaScript 런타임 바인딩에 선택 매개변수를 맞춥니다.
* JavaScript에 등록된 대결 처리기는 `InitModule` 함수 내에서 사용할 수 없습니다.
* 모든 사용자에게 전송된 영구 알림에 대해서 고유 알림 ID 처리를 사용합니다.
* 동시 순위표 생성 요청은 멱등성으로 처리됩니다.
* 두 명의 상대방이 대결에 참여할 경우 매치메이커 최적화에서 회귀를 수정했습니다.

### 3.11.0

**출시**: 2022년 3월 21일

#### 새로운 기능

* 모든 런타임에 대해서 다음 기능을 추가하였습니다:
    * [groupUsersBan](../../server-framework/typescript-runtime/function-reference/#groupUsersBan)
    * [leaderboardRecordsHaystack](../../server-framework/typescript-runtime/function-reference/#leaderboardRecordsHaystack)
    * [notificationSendAll](../../server-framework/typescript-runtime/function-reference/#notificationSendAll)
* [channelIdBuild](../../server-framework/typescript-runtime/function-reference/#channelIdBuild) 기능에 `senderID` 매개변수를 추가하였습니다.
* Nakama Console에 [그룹 페이지](../console/groups/)를 추가하였습니다.
* 매치메이커에 [`countMultiple` 옵션](../../concepts/multiplayer/matchmaker/#count-multiple)을 추가하였습니다.

#### 개선사항

* 클라이언트 IP 주소를 해결할 수 없으면 경고가 로그됩니다.
* Tagged Prometheus 상태에는 추가된 RPC 함수 식별자가 포함됩니다.
* Stackdriver 로그 타임스탬프와 메시지 필드 형식을 개선하였습니다.
* Crypto random을 사용하여 임의의 글로벌 인스턴스를 사용합니다.
* [마이그레이션 명령](../commands/#migrate)으로 대시가 포함된 데이터베이스 이름을 사용할 수 있습니다.
* 시작 시 순위표 순위 캐시 입력이 향상되었습니다.
* `InitModule` 함수가 호출된 이후로 JavaScript 글로벌 변수는 변경할 수 없습니다.
* 모든 런타임에 대해서 `StorageWrite`은(는) 시스템 사용자 UUID 문자열을 반환합니다.
* 실시간 사후 후크는 출력 및 입력되는 페이로드를 포함합니다.
* 작업이 실패할 경우 실시간 사후 후크는 실행되지 않습니다.
* Go 1.18.0 릴리스로 빌드됩니다.

#### 수정사항

* JavaScript 런타임에서 `nk.channelIdBuild`에 대해서 등록된 함수 이름입니다.
* Steam 연결 작업에 대해서 유효성 검사를 입력합니다.
* JavaScript 런타임에서 올바르지 않은 연결 장치 행동입니다.
* 작업의 일부가 실패할 경우 JavaScript 런타임 다중 업데이트 실행이 지속됩니다.
* 계정 내보내기 시 지갑 장부 검색 처리에 제한이 없습니다.
* 매치 메이커 상호 대결 확인 시 최대 개수가 정확하게 산출됩니다.
* 매치 메이커는 최대 개수에 가까운 대결을 선호합니다.

### 3.10.0

**출시**: 2021년 12월 17일

#### 새로운 기능

* 모든 런타임에서 `HTTP` 요청사항 헤더에 액세스하기 위해서 `ctx` 필드를 추가하였습니다.
* JavaScript 런타임에 다음 기능을 추가하였습니다:
  * [stringToBinary](../../server-framework/typescript-runtime/function-reference/#stringToBinary)
  * [binaryToString](../../server-framework/typescript-runtime/function-reference/#binaryToString)
* 데이터베이스 DNS 변경 스캔 빈도에 대해서 새로운 [구성 옵션](../configuration/#database.dns_scan_interval_sec)을 추가하였습니다.

#### 개선사항

* RPC 요청에서 반환된 페이로드 메시지로 JavaScript 런타임 사용자 지정 오류 메시지를 설정합니다.
* JavaScript 런타임 대결 데이터가 `Uint8Array` 유형을 사용하도록 변경됩니다.
* Tally 및 추이 종속성을 업데이트하여 `xxhash` 패키지에서 동적 링커 오류를 해결합니다.
* Go 1.17.5 릴리스로 빌드됩니다.

#### 수정사항

* 호출 대기가 채워지면 Lua 대결을 정상적으로 종료합니다.
* Lua 런타임 지갑 업데이트 작업 시 오류 처리가 개선됩니다.
* 데이터베이스를 업데이트하지 않아도 되는 순위표 레코드 작성 처리가 개선됩니다.
* TypeScript/JavaScript 런타임 저장소 삭제 작업에서 분석 사례가 수정됩니다.
* 순위표와 토너먼트 점수 제출 처리가 개선되어 점수가 변경되지 않습니다.
* 기존 대결의 이름으로 매핑될 경우 기존 상태를 반환하는 대결이 생성됩니다.

### 3.9.0

**출시**: 2021년 10월 30일

#### 새로운 기능

* 연계된 멀티플레이어 대결은 [사용자 지정 이름으로 생성할 수](../../concepts/multiplayer/relayed/#create-a-match) 있습니다. 이름은 대결 식별자로 매핑되었습니다.
* Nakama 오류는 서버 런타임에 노출되어 있습니다.
* [Nakama Console 지갑 보기](../console/accounts/#wallet)는 페이지 지정을 지원합니다.

#### 개선사항

* 데이터베이스 호스트 이름의 기본적인 주소 변경에 대한 정기적인 확인 빈도가 향상되었습니다.
* GRPC, GRPC-게이트웨이, Protobuf, PGX 및 다른 종속성을 업그레이드했습니다.

#### 수정사항

* 소셜 프로필을 연결할 경우 낙관적인 이메일 가져오기를 수정하였습니다.

### 3.8.0

**출시**: 2021년 10월 15일

#### 새로운 기능

* [싱글 소켓 구성 옵션](../configuration/#session.single_socket)으로 닫히는 소켓으로 전달되는 최종 알림을 추가하였습니다.
* [`matchSignal` 함수](../../server-framework/typescript-runtime/function-reference/match-handler/#matchSignal)를 대결 핸들러에 필요한 서버 프레임워크에 추가하였습니다. 대결 핸들러는 대결 신호를 통해 예약 신호를 전송하여 가입 시도 및 최종적인 가입 흐름 이전에 사용자 ID 또는 세션 ID를 대결 상태에 표시합니다.
* [Nakama Console](../console/) 대시보드에 노드 상태 아이콘이 표시됩니다.

#### 개선사항

* 로그 상태는 `warn` 수준 대신에 `debug`에서 누락된 사용자를 팔로우합니다.
* Go 1.17.2 릴리스로 빌드됩니다.

#### 수정사항

* 그룹 목록 나열 작업에서 입력 유효성 검사 엣지 케이스를 수정하였습니다.

### 3.7.0

**출시**: 2021년 9월 28일

#### 새로운 기능

* 다음 구성 옵션을 추가하였습니다:
  * [single_socket](../configuration/#session.single_socket)
  * [single_match](../configuration/#session.single_match)

#### 개선사항

* [토너먼트 생성 작업](../../server-framework/typescript-runtime/function-reference/#tournamentCreate)으로 `authoritative` 플래그를 설정합니다.
* Go 1.17.1 릴리스로 빌드됩니다.

### 3.6.0

**출시**: 2021년 9월 9일

#### 새로운 기능

* 그룹을 생성, 업데이트, 삭제할 때 세부적인 로그를 추가하였습니다.
* 서버 프레임워크에 [ChannelMessageUpdate](../../server-framework/typescript-runtime/function-reference/#channelMessageUpdate) 함수를 추가하였습니다.
* [lua_api_stacktrace](../configuration/#runtime.lua_api_stacktrace) 구성 옵션을 추가하여 Lua 런타임 오류 스택 추적이 클라이언트로 반환됩니다.

#### 개선사항

* Facebook Graph API v11.0이 사용됩니다.
* Facebook 이메일 가져오기 작업이 다음 계정 생성 때까지 연기됩니다.
* 권한 부여 대결 생성 매개변수에서 인코딩/디코딩 확인 절차를 개선했습니다.
* 사용되지 않는 구성 매개변수를 사용할 때 경고가 발생합니다.
* 소셜 계정을 연결할 때 이메일 가져오기 의미 체계가 개선됩니다.
* 비 `200` 상태 코드가 반환될 때 [IAP](../../concepts/iap-validation/) 제공자 API 응답 페이로드를 로그합니다.
* 구매 유효성 함수는 플래그를 반환하여 유효한 구매가 새로운 항목인지, 다시 제출되었는지 표시합니다.
* OCC가 필요하지 않은 저장소 작업 처리가 개선되었습니다.
* 모든 서버 런타임의 `walletsUpdate` 함수에서 장부 업데이트는 기본적으로 `false`로 설정됩니다.
* Lua 런타임 풀 할당 시작 로그를 조정합니다.
* Go 1.17.0 릴리스로 빌드됩니다.

#### 수정사항

* 구조적인 로거 필드를 사용하는 Lua 런타임 로그 호출에서 로그 수준을 수정하였습니다.
* JavaScript와 Lua 런타임에서 후크 이전/이후의 구매 유효성 검사를 등록하였습니다.
* JavaScript 런타임에서 후크 이전/이후의 `DemoteGroupUsers`을(를) 등록하였습니다.
* 누락된 `environment`을(를) JavaScript `ValidatedPurchases` 유형으로 추가하였습니다.
* 빈 입력 값을 언급하는 오류 메시지에서 오타를 수정하였습니다.
* 내보내기 시간 및 지연 메트릭스에서 해상도를 수정하였습니다.
* 토너먼트 찾기 작업을 최적화하였습니다.
* Lua 런타임에서 `open` 인수의 올바르지 않은 분석에 대한 `groupUpdate` 함수를 수정하였습니다.
* Console에서 기본 진입점을 로드한 경우 JavaScript 모듈이 나열됩니다.

### 3.5.0

**출시**: 2021년 8월 11일

#### 새로운 기능

* 메시지와 GRPC 코드를 포함하는 JavaScript 런타임 사용자 지정 예외를 처리하여 서버 응답으로 반환합니다.
* 서버 프레임워크에 다음 기능을 추가하였습니다:
  * [buildChannelId](../../server-framework/typescript-runtime/function-reference/#buildChannelId)
  * [channelMessageSend](../../server-framework/typescript-runtime/function-reference/#channelMessageSend)
  * [usersGetRandom](../../server-framework/typescript-runtime/function-reference/#usersGetRandom)

#### 개선사항

* Apple 로그인은 웹과 모바일 토큰에서 지원됩니다.
* [상태](../../concepts/status/) 메시지는 최대 2048자(128자에서 늘어남)까지 작성할 수 있습니다.
* 필터링되지 않은 그룹 목록 쿼리에서 사용되는 SQL이 향상되었습니다.
* 시스템 사용자로 그룹 생성을 시도할 경우 패닉 대신에 오류가 발생합니다.
* JavaScript 및 Lua 런타임 `groupUpdate` 함수에서 권한 확인을 위해 `userId` 필드를 추가하였습니다.
* Steam 표시 이름과 직접 호환되는 사용자 이름에서 표준 공간 문자를 사용할 수 있습니다.
* 서버 프레임워크에서 배치 전용 순위표와 토너먼트 점수 찾기를 사용할 수 있습니다.
* 존재하지 않는 사용자에 대해서 단일 입력 지갑 업데이트가 실행되면 더 나은 오류 메시지가 반환됩니다.
* 루트 인증서 유효성 검사 시 게임 센터에서 Apple 가이드라인이 새로운 버전으로 업데이트됩니다.
* Go 1.16.7 릴리스로 빌드됩니다.

#### 수정사항

* 생성자 `id`이(가) JavaScript 런타임 `groupUpdate` 함수의 잘못된 인수에서 읽었습니다.
* `groupUpdate` JavaScript 런타임 함수에서 `max count`의 유효성 검사가 잘못되었습니다.
* 존재하지 않는 토너먼트에 대해서 레코드 작성을 시도할 때 오류 처리를 수정하였습니다.
* 순위표/토너먼트에서 누락된 필드는 JavaScript 런타임에서 함수를 얻고, 목록을 나열하여 작성합니다.
* 순위표/토너먼트 레코드에서 잘못 분석된 `ownerId` 필드는 JavaScript 런타임 시 함수를 나열합니다.
* 순위표 점수 설정 운영자에서 사용되는 매개변수를 수정하였습니다.
* JavaScript 런타임 `storageList` 함수는 커서를 반환하지 않았습니다.


### 3.4.0

**출시**: 2021년 7월 9일

#### 새로운 기능

* 서버 프레임워크에 다음 기능을 추가하였습니다:
  * [groupsList](../../server-framework/typescript-runtime/function-reference/#groupsList)
  * [leaderboardList](../../server-framework/typescript-runtime/function-reference/#leaderboardList)
  * [leaderboardsGetId](../../server-framework/typescript-runtime/function-reference/#leaderboardsGetId)
  * 카운터, 게이지, 타이머에 대한 사용자 지정 [메트릭스](../../server-framework/typescript-runtime/function-reference/#Metrics).
* 순위표/토너먼트 함수에 `prev_reset` 필드를 추가하였습니다.
* [Apple IAP 유효성 검사](../../server-framework/typescript-runtime/function-reference/#purchaseValidateApple) 함수에 선택적인 `passwordOverride`을(를) 추가하였습니다.
* 소켓 `lang` 매개변수를 Go 런타임 컨텍스트에 추가하였습니다.

#### 개선사항

* 파티 매치 메이커 추가 작업 응답에 티켓이 포함됩니다.
* Bleve gtreap 메모리 내 저장 실행을 컴팩트한 버전으로 대체합니다.
* 파티에서 추방된 사용자는 파티 종료 이벤트를 받게 됩니다.
* HTTP 핸들러 함수에서 `info`가 아닌 `error` 수준에서 로그가 패닉을 회복합니다.
* 새로운 `langTag`, `members` 및 `open` 필터를 그룹 목록 API에 추가하였습니다.
* SQL 성능 향상을 위해 pgx를 v4로 업그레이드하였습니다.
* `RegisterLeaderboardReset` 런타임 함수 서명을 업데이트하였습니다.
* 정상적인 차단이 완료되면 런타임 컨텍스트를 취소합니다.
* Nakama Console UI에 버튼을 추가하여 장치 ID를 복사합니다.
* Go 1.16.5 릴리스로 빌드됩니다.

#### 수정사항

* 동시적으로 진행되는 성공적인 가입의 경우, 모든 구성원의 목록이 파티 정보에 포함되도록 합니다.
* 매치 메이커가 일치된 콜백 입력에서 파티 ID를 정확하게 설정합니다.
* 필요한 경우에만 파티 종료 메시지를 보냅니다.
* TypeScript/JavaScript 대결 발송자 현재 상태 목록의 유효성을 수정합니다.
* JavaScript/Lua `friendsList`에서 올바르지 않게 반환된 값을 수정합니다.

### 3.3.0

**출시**: 2021년 5월 17일

#### 새로운 기능

* 토너먼트와 순위표 업데이트 시 운영자 점수가 전달됩니다.
* 토너먼트와 순위표는 감소 점수 운영자도 지원합니다.
* API 호출의 구조화된 로거 출력에 `rpc_id` 및 `api_id`을(를) 추가하였습니다.

#### 개선사항

* Apple, Facebook, Google 로그인 제공자에서 제공된 이메일, 아바타 URL, 이름을 저장합니다.
* 권한 확인을 위해서 선택적인 `callerID` 매개변수를 포함하도록 런타임 그룹 추가/추방/승격/강등 API를 변경합니다. 호출자 ID가 빈 문자열일 경우, 기본적으로 시스템 사용자로 설정됩니다.
* 데이터베이스 연결에서 SSL 모드 `prefer` 사용으로 기본 설정됩니다.

#### 수정사항

* 함수를 포함하는 Lua 및 JavaScript 권한 부여 대결 상태를 읽습니다.
* 내장된 마이그레이션과 Windows 시스템에서 콘솔 파일에 대한 UNIX 경로 표시가 사용됩니다.
* VM 레지스트리 크기 조정 이후에 발생한 닐 참조를 해결하기 위해서 Lua VM 실행을 업데이트하였습니다.
* 참조에 의해서 보호될 수 있도록 JS VM으로 전달된 경우 슬라이스와 맵 유형을 지정합니다.
* 순위표 레코드에서 한 개의 오류를 수정하면 "around owner" 쿼리로 반환됩니다.
* 대결이 존재하지 않을 경우 JS VM `GetMatch` 함수 내에서 `null`을(를) 반환합니다.

### 3.2.1

**출시**: 2021년 4월 19일

#### 개선사항

* 사용자 온라인 표시는 소켓 연결성 외에 상태 모드도 준수합니다.
* sql-migrate 라이브러리를 `a32ed26`로 업데이트했습니다.
* 다른 데이터베이스 엔진과 호환성 향상을 위해서 마이그레이션 작업을 다시 수행하였습니다.
* Protobuf v1.5.2, GRPC v1.37.0, GRPC-Gateway v2.3.0 릴리스로 업데이트했습니다.
* Bleve v2.0.3 릴리스로 업데이트했습니다.
* 다양한 종속성 업데이트.

#### 수정사항

* Nakama Console 구매 목록 보기에서 사용자 범위를 수정하였습니다.

### 3.2.0

**출시**: 2021년 4월 14일

#### 새로운 기능

* 새 API를 사용하여 로그아웃하고 세션과 새로 고침 토큰을 포함하여 로그아웃을 인터셉트합니다.
* 임시 연결 해제를 쉽게 해결하기 위해서 현재 이벤트에 대해서 부재 사유를 추가하였습니다.
* Apple 앱 스토어, Google 플레이 스토어, Huawei AppGallery에서 [IAP 유효성 검사](../../concepts/iap-validation/)를 위해서 새로운 API가 적용되었습니다.

#### 개선사항

* 소셜 패키지에서 유형의 구조 필드 지정이 향상되었습니다.
* 매치 메이커에서 메모리 재사용과 대결 레지스트리 구조가 향상되었습니다.
* Facebook 제한 로그인 토큰에 대한 지원이 표준 Facebook 로그인/링크/링크 해제 함수로 전달됩니다.
* JS VM을 새 버전으로 업데이트하였습니다. JS 배열의 크기를 조정하는 문제를 해결합니다.
* Go 1.16.3 릴리스로 빌드됩니다.

#### 수정사항

* 부분적으로 일치시켰던 매치 메이커 항목을 더 많은 숫자의 플레이어와 결합할 수 없습니다.
* Console의 API Explorer에서 만든 후크 실행 이전/이후의 분석에 대한 입력 항목을 수정하였습니다.
* 사용자/계정 데이터를 반환하는 JS 런타임 함수에서 올바르지 않은 Unix 타임스탬프가 반환되었습니다.

### 3.1.2

**출시**: 2021년 3월 4일

#### 개선사항

* 대결 목록의 나열 순서가 새로 만들어진 대결을 먼저 보여주도록 기본적으로 설정됩니다.
* 상태 팔로우 입력 유효성 검사와 제한사항을 완화하여 인식되지 않은 사용자 ID와 사용자 이름을 무시합니다.
* Steam 인증에서 Steam 친구를 기본적으로 불러오지 않습니다.
* Facebook 인증에서 Facebook 친구를 기본적으로 불러오지 않습니다.
* 대결 레이블 업데이트 배치 의미 체계가 향상되었습니다.
* JS 런타임 함수에 의해 반환되는 계정 개체는 사용자 값에 의해 병합되지 않습니다.
* Go 1.16.0 릴리스로 빌드됩니다.

#### 수정사항

* 매치 메이커가 일치된 콜백은 JavaScript 런타임에서 올바르게 작동하지 않았습니다.
* 콘솔 API가 구성된 최대 메시지 크기를 기반으로 크기가 큰 응답을 반환할 수 있도록 합니다.
* try/catch 블록 내에서 JS 런타임 이니셜라이저 함수가 호출되도록 합니다.
* 마지막 활성 시간을 일정 재설정으로 계산할 수 없는 경우, 토너먼트 재설정 기능 후크 일정이 최초 작성 시 계산되도록 수정합니다.

### 3.1.1

**출시**: 2021년 2월 15일

#### 개선사항

* Go 런타임 로거는 런타임에서 파일/라인을 로거가 아닌 발신자로 식별합니다.
* Docker 컨테이너 내에서 새로운 CA 인증 패키지가 사용됩니다.
* Go 1.15.8 릴리스로 빌드됩니다.

#### 수정사항

* JavaScript 런타임 시 런타임 후크가 올바르게 호출되지 않았습니다.
* Nakama Console에서 순위표 목록 보기 `Delete` 버튼이 작동되지 않았습니다.
* `GetUsers` 클라이언트 API와 마찬가지로 Facebook ID로 사용자 계정을 가져올 수 있습니다.

### 3.1.0

**출시**: 2021년 2월 4일

#### 새로운 기능

* [Steam으로 인증 시](../../concepts/authentication/#steam) 새 API를 사용하여 Steam 친구를 불러옵니다.

#### 개선사항

* 데이터베이스에 알 수 없는 마이그레이션이 포함될 경우 [`nakama migrate status` 명령](../commands/#migrate) 출력이 향상되었습니다.
* 소켓 상태 플래그는 대소문자를 구분하여 분석됩니다.
* Go 1.15.7 릴리스로 빌드됩니다.

#### 수정사항

* JavaScript 런타임 시 `multiUpdate` 함수는 올바르게 작동하지 않았습니다.
* JavaScript 런타임에서 `InitModule`이(가) 두 번 호출됩니다.
* JS 런타임이 일치된 매치 메이커와 순위표/토너먼트와 관련된 후크를 호출하는 방식을 수정하였습니다.
* JS VM은 RPC 호출 이후에 풀로 다시 입력되지 않았습니다.

### 3.0.0

**출시**: 2021년 1월 16일

#### 새로운 기능

* 서버 코드를 작성을 위해서 [JavaScript 런타임](../../server-framework/typescript-runtime/)을 추가했습니다.
* [세션 새로 고침](../../concepts/session/#session-refresh)에 사용할 수 있는 새로 고침 토큰을 추가하였습니다.
* 사용자가 새로운 [실시간 파티](../../concepts/parties/)를 사용하여 게임에서 팀 플레이를 생성합니다.
* [매치 메이커](../../concepts/multiplayer/matchmaker/)에 파티 매치메이킹 지원을 추가하였습니다.
* 매치 메이커에 [구성 옵션](../configuration/#matchmaker)을 추가하여 원하는 대결의 티켓을 기다리는 시간을 제어합니다.
* Console UI [권한](../console/user-management/) API를 추가했습니다.
* 다음 런타임 기능을 추가했습니다:
  * [readFile](../../server-framework/typescript-runtime/function-reference/#readFile)

#### 개선사항

* 각도 프레임워크를 통해 콘솔 UI를 다시 빌드합니다. 권한 프로필에서 사용자 데이터를 관리하고 개체를 업데이트하고 프로덕션에 대한 액세스를 제한하며, 활성 대결과 같은 실시간 기능 보기가 향상됩니다.
* 매치 메이커를 통해 대결과 플레이어 숫자 범위 처리와 같은 프로세스가 향상됩니다.
* 권한 부여 대결 핸들러는 초당 60회 작동합니다.
* CockroachDB 20.2 릴리스를 지원합니다.
* Go 1.15.6 릴리스로 빌드됩니다.

#### 수정사항

* 순위표 레코드 작성을 위해서 Lua API에 `rank` 필드가 반환됩니다.
* 친구 목록에서 사용자의 사회적 친구를 반환합니다.

## 클라이언트 SDK

이 세션에서는 새로운 릴리스와 Nakama SDK의 기능을 살펴봅니다. 위의 드롭다운에서 언어를 선택하여 연관된 릴리스를 봅니다.

Nakama 버전 번호는 SDK 버전 번호와 일치하지 않습니다.

{{< note "important" "Contribute" >}}
모든 Nakama SDK는 오픈 소스이며 [기여](https://github.com/heroiclabs/)는 환영입니다.
{{< / note >}}

{{< content type="client" lang="csharp" >}}

### .NET/Unity

이 릴리스 노트에는 [nakama-unity](https://github.com/heroiclabs/nakama-unity) 및 [nakama-dotnet](https://github.com/heroiclabs/nakama-dotnet) 패키지에 대한 업데이트와 개선사항이 포함되어 있습니다.

#### 3.4.1

**출시**: 2022년 3월 13일

##### 수정사항

* 올바른 Nakama .NET 3.4.0 릴리스 바이너리로 업데이트되었습니다.

#### 3.4.0

**출시**: 2022년 5월 2일

##### 개선사항

* 소켓 메시지에서 최대 메시지 크기 제한은 어댑터에서 다시 정의할 수 있습니다.
* 연계된 멀티플레이어 대결은 [사용자 지정 이름으로 생성할 수](../../concepts/multiplayer/relayed/#create-a-match) 있습니다.

##### 수정사항

* 배경 읽기 루프는 `close`이 삭제될 경우 `isConnecting`과 `isConnected`를 정확하게 업데이트합니다.

{{< / content >}}

{{< content type="client" lang="javascript" >}}

### JavaScript

#### 2.4.0

**출시**: 2022년 6월 2일

##### 개선사항

* 직렬화 지원을 위해 `Map<string, string>`에서 `Record<string, string>`로 세션 변수를 인증 메서드로 전달하기 위해서 데이터 구조를 변경했습니다.
* `StreamData.stream_presence`은 `StreamData.sender`로 변경되었고 해당 필드는 정확하게 입력되었습니다.
* `MatchData.presences`은 한 개의 `MatchData.presence`로 변경되어 발신자를 표시합니다. 해당 필드를 정확하게 입력해야 합니다.
* protobuf 어댑터를 사용할 경우 대결 및 파티 데이터 페이로드는 protobuf로 직렬화됩니다.
    * **주요 변경 사항**: `MatchData`와 `PartyData`에서 데이터 필드가 `Uint8Array`로 입력되었습니다. 대결 또는 파티 데이터로 문자열을 전송하는 사용자는 TextDecoder와 같은 유틸리티를 사용하여 문자열에 역직렬화를 적용합니다. 이 변경 사항은 컴파일 시간에 적용됩니다.
    * `sendMatchState`과 `sendPartyData`는 바이트를 입력으로 받을 수 있습니다. 기본 텍스트 어댑터를 사용하여 바이트를 전송할 경우, `base64`은 문자열로 인코딩됩니다.
        * 이 함수는 어떤 유형의 데이터 페이로드도 수신할 수 없습니다. 이전에 전달된 모든 개체는 문자열 또는 바이트로 직렬화되어야 합니다. 이 변경 사항은 컴파일 시간에 적용됩니다.
* 개체와 메서드에 대한 설명과 문서가 개선되었습니다.

##### 수정사항

* React Native의 `base64` 종속성에서 문제를 해결하였습니다.

#### 2.3.0

**출시**: 2021년 8월 3일

##### 개선사항

* `rpcHttpKey` 매개변수 목록 옵션과 시퀀스가 변경되었고, 새로운 서명은 
`rpcHttpKey(httpKey: string, id: string, input?: object);`입니다.
* `ApiOverrideOperator`의 이름이 `ApiOperator`으로 재지정되었습니다.
* 쿼리 매개변수는 클라이언트에서 `camelCase`(이)가 아닌 `snake_case`을(를) 사용하여 포맷됩니다.

##### 수정사항

* `rpcHttpKey`로 인해 서버에서 `401 Unauthorized Response`이 발생합니다.

#### 2.3.0

**출시**: 2021년 8월 3일

##### 개선사항

* `rpcHttpKey` 매개변수 목록 옵션과 시퀀스가 변경되었고, 새로운 서명은 
`rpcHttpKey(httpKey: string, id: string, input?: object);`입니다.
* `ApiOverrideOperator`의 이름이 `ApiOperator`으로 재지정되었습니다.
* 쿼리 매개변수는 클라이언트에서 `camelCase`(이)가 아닌 `snake_case`을(를) 사용하여 포맷됩니다.

##### 수정사항

* `rpcHttpKey`로 인해 서버에서 `401 Unauthorized Response`이 발생합니다.

### Cocos2d-JS

#### 2.1.0

**출시**: 2021년 4월 7일

##### 개선사항

* [nakama-js v2.1.5](https://github.com/heroiclabs/nakama-js/releases/tag/v2.1.5) 클라이언트로 업데이트되었습니다.
* Cocos Creator에 대한 예시를 추가하였습니다.

##### 수정사항

* 지원되지 않는 사용을 제거하였습니다: 
  * setter in `XmlHttpRequest.withCredentials`
  * `XmlHttpRequest.responseType`

{{< / content >}}

{{< content type="client" lang="cpp" >}}

### C++

#### 2.5.1

**출시**: 2022년 1월 16일

##### 수정사항

* 파티 및 매치 메이커 콜백에서 오류.
* `removeMatchmakerParty` API를 수정하였습니다.

### Unreal

#### 2.5.0

**출시**: 2021년 9월 14일

##### 개선사항

* [실시간 파티](../../concepts/parties/) 지원을 추가하였습니다.

##### 수정사항

* 저장소 개체 목록에서 커서 할당.

### Cocos2d-x

#### 2.5.1

**출시**: 2022년 1월 17일

##### 개선사항

* [실시간 파티](../../concepts/parties/) 지원을 추가하였습니다.

##### 수정사항

* 저장소 개체 목록에서 커서 할당.
* 그룹 채팅 가입에서 `NChannelType`의 열거값을 수정하였음.

{{< / content >}}

{{< content type="client" lang="gdscript" >}}

### Godot

#### 3.1.0

**출시**: 2022년 4월 30일

##### 개선사항

* `seen_before` 속성을 `NakamaAPI.ApiValidatedPurchase`에 노출시켰음. 이전에 [유효성이 확인된 구매](../../concepts/iap-validation/)에서 이 플래그가 반환됩니다.
* 연계된 멀티플레이어 대결은 [사용자 지정 이름으로 생성할 수](../../concepts/multiplayer/relayed/#create-a-match) 있습니다.
* `NakamaSocket.add_matchmaker_async()`와 `NakamaSocket.add_matchmaker_party_async()`에서 `count_multiple`에 대한 지원을 추가하였음.
* .NET 클라이언트가 Godot의 Mono 버전과 통합될 수 있도록 C# 지원 클래스를 추가하여 HTML5 내보내기 작업이 가능합니다.

##### 수정사항

* `NakamaRTAPI.PartyClose` 메시지 받기.
* `PartyData` 받기 및 보내기.

{{< / content >}}

{{< content type="client" lang="java" >}}

### Java/Android

#### 2.1.4

**출시**: 2021년 4월 20일

##### 수정사항

* `protobuf-lite` Maven 및 Gradle 프로젝트로 전달됨.

{{< / content >}}

{{< content type="client" lang="lua-defold" >}}

### Defold

#### 3.0.0

**출시**: 2022년 4월 11일

##### 개선사항

* **Nakama API에서 코드 생성과 상호작용의 변경으로 인해 이 버전에서 주요 변경 사항이 발생하였음.**
  * 이벤트 전송 및 소켓 이벤트 리스너를 포함하여 소켓 생성 및 소켓 이벤트는 `nakama/socket.lua`로 이동되었습니다.
  * 메시지 생성 함수는 메시지를 보내는 함수에서 모든 메시지 인수를 포함하거나 제거되었습니다.
* 클라이언트와 소켓 인스턴스에 메시지 함수를 추가하였음. 비교: `nakama.do_foo(client, ...)`와(과) `client.do_foo(...)`. 
  * 클라이언트 또는 소켓 인스턴스를 첫 번째 인수로 전달하는 기존 방식은 이전 버전과의 호환성에서도 적용됩니다. 

{{< / content >}}
