# 版本注释

**URL:** https://heroiclabs.com/docs/zh/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.13.1

**发布日期**：2022年8月18日

#### 新功能

* 将以下函数添加到所有运行时：
    * [subscriptionGetByProductId](../../server-framework/typescript-runtime/function-reference/#subscriptionGetByProductId)
    * [subscriptionsList](../../server-framework/typescript-runtime/function-reference/#subscriptionsList)
    * [subscriptionValidateApple](../../server-framework/typescript-runtime/function-reference/#subscriptionValidateApple)
    * [subscriptionValidateGoogle](../../server-framework/typescript-runtime/function-reference/#subscriptionValidateGoogle)
    * [notificationsDelete](../../server-framework/typescript-runtime/function-reference/#notificationsDelete)
* 为Google和Apple添加了订阅验证API。
* 为[Nakama控制台](../console/)添加以下内容：
    * 聊天消息视图
    * 扩展了比赛的过滤选项
    * 扩展了账户的过滤选项

#### 改进

* 改进了非持久化购买和订阅的运行时处理。
* 改进了对[计数多个](../../concepts/multiplayer/matchmaker/#count-multiple)匹配程序参数的验证。
* 添加了对开发人员控制台用户电子邮件输入的更严格验证。
* 向所有者客户端操作的排行榜和锦标赛记录的结果中添加了下一个和上一个游标。
* 向haystack运行时操作的排行榜和锦标赛记录的结果中添加了下一个和上一个游标。
* 改进了JavaScript运行时HMAC SHA256哈希函数的签名。
* 改进了JavaScript运行时Base64编码函数的签名。
* 改进了JavaScript运行时上下文取消的处理。
* 现在，运行时[群组更新](../../server-framework/typescript-runtime/function-reference/#groupUpdate)可以将最大计数增加到100以上。
* 使用Go 1.19.0版本构建。

### 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`返回顺序与输入相同。
* 更新了_删除所有_数据操作的控制台路径。
* 现在，在RPC函数调用中的授权标头之前检查HTTP键。
* 公开了Apple身份验证JWT验证失败的错误消息。
* 改进了用户在线状态查找。
* 更新了对钩子注册功能前/后删除通知的命名。
* 提高了Nakama控制台状态视图图形标头的清晰度。
* 改进了社交供应商请求失败时的日志消息。
* 改进了与Lua运行时函数注册的并发性。
* 在正确的情况下，授权匹配记录器仅包含各自的匹配标识符。
* 改善了对大型锦标赛规模最大值的处理。
* 改善了在退出/踢出/封禁进入群组时移除频道的处理。
* 改进了Nakama控制台中群组成员视图的UI。
* 改进了针对大量用户的JavaScript运行时授权匹配过滤广播。
* 使用Go 1.18.2版本构建。

#### 修复

* `StreamUserList` 现在JavaScript运行时中返回正确的数据。
* 现在可以将状态列表作为匹配的初始化参数传递给Go运行时匹配。
* 修复了数据库统计信息不可用时的Nakama控制台对象计数。
* 如果在服务器运行时调用时未指定用户名，则必须在令牌生成器中生成用户名字段。
* 对齐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/groups/)。
* 向匹配程序添加了[`countMultiple`选项](../../concepts/multiplayer/matchmaker/#count-multiple)。

#### 改进

* 现在，当无法解析客户端IP地址时会记录警告。
* 已添加包含RPC函数标识符的带标记的Prometheus stats。
* 改进了Stackdriver日志时间戳和消息字段格式。
* 现在，使用随机加密在可能的情况下播种全局随机实例。
* [迁移命令](../commands/#migrate)现在允许使用包含破折号的数据库名称。
* 改进了启动时的排行榜排名缓存填充。
* 现在，JavaScript全局变量在`InitModule`函数被调用后默认是不可变的。
* 对于所有运行时，`StorageWrite`acks现在返回系统用户UUID字符串。
* 实时挂钩后现在包括发出和接收的有效负载。
* 操作失败时，实时挂钩后不再运行。
* 使用Go 1.18.0版本构建。

#### 修复

* JavaScript运行时中`nk.channelIdBuild`注册的函数名称。
* Steam链接操作的输入验证。
* JavaScript运行时中不正确的链接设备行为。
* 部分操作失败时，JavaScript运行时多次更新执行的一致性。
* 在账户导出过程中无限制地处理钱包分类账查询。
* 在匹配程序相互匹配检查中正确计算最大计数。
* 匹配程序正确地选择接近最大计数的匹配。

### 3.10.0

**发布日期**：2021年12月17日

#### 新功能

* 在所有运行时中添加了`ctx`访问请求`HTTP`标头字段。
* 将以下函数添加到JavaScript运行时：
  * [stringToBinary](../../server-framework/typescript-runtime/function-reference/#stringToBinary)
  * [binaryToString](../../server-framework/typescript-runtime/function-reference/#binaryToString)
* 为数据库DNS更改扫描的频率添加了新的[配置选项](../configuration/#database.dns_scan_interval_sec)。

#### 改进

* 将JavaScript运行时自定义错误消息设置为RPC请求中返回的负载消息。
* 将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/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/)仪表板现在显示节点状态图标。

#### 改进

* 日志状态根据`debug`而不是`warn`级别跟随丢失用户。
* 使用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`钩子前/后。
* 向JavaScript`ValidatedPurchases`类型添加了缺少的`environment`。
* 修复了提到空输入值的错误消息中的拼写错误。
* 修复了导出时间和延迟指标的分辨率。
* 优化了锦标赛查找操作。
* 修复了Lua运行时中`groupUpdate`函数`open`参数解析不正确的问题。
* 如果从控制台中的默认入口点加载，列出了JavaScript模块。

### 3.5.0

**发布日期**：2021年8月11日

#### 新功能

* 处理抛出的JavaScript运行时自定义异常，其中包含要在服务器响应中返回的消息和grpc代码。
* 将以下函数添加到服务器框架中：
  * [buildChannelId](../../server-framework/typescript-runtime/function-reference/#buildChannelId)
  * [channelMessageSend](../../server-framework/typescript-runtime/function-reference/#channelMessageSend)
  * [usersGetRandom](../../server-framework/typescript-runtime/function-reference/#usersGetRandom)

#### 改进

* 现在，web和移动令牌都支持Apple登录。
* 现在，[状态](../../concepts/status/)消息最多可以包含2048个字符（增加前为128个字符）。
* 改进了未过滤群组列表查询中使用的SQL。
* 尝试使用系统用户创建群组时抛出错误而非抛出恐慌。
* 在JavaScript和Lua运行时`groupUpdate`函数中添加了权限检查`userId`字段。
* 允许在用户名中使用标准空格字符，以便与Steam显示名称直接兼容。
* 允许从服务器框架中仅批量查找排行榜和锦标赛分数。
* 为不存在的用户执行单输入钱包更新时返回更恰当的错误消息。
* 将Apple关于身份验证中的Game Center根证书验证的指南更新至最新版本。
* 使用Go 1.16.7版本构建。

#### 修复

* 从JavaScript运行时`groupUpdate`函数中的错误参数中读取创建者`id`。
* `groupUpdate`JavaScript运行时函数中`max count`的验证不正确。
* 修复了尝试将记录写入不存在的锦标赛时的错误处理。
* 排行榜/锦标赛中缺少的字段获取、列出和写入JavaScript运行时中的函数。
* JavaScript运行时中排行榜/锦标赛记录列表函数中的`ownerId`字段解析错误。
* 修复了排行榜得分集运算符中的参数用法。
* 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` 。
* 向Go运行时上下文添加了套接字`lang`参数。

#### 改进

* 派对匹配程序添加了操作响应，现在包含任务单。
* 用更紧凑的版本替换Bleve gtreap内存中存储实现。
* 现在，被踢出派对的用户会收到派对关闭事件。
* HTTP处理程序函数中记录恢复的恐慌为`error`级而非`info`。
* 向群组列表API添加了新的`langTag` 、`members` 和`open`过滤器。
* 将pgx升级到v4以提高SQL性能。
* 更新了`RegisterLeaderboardReset`运行时函数签名。
* 正常关闭完成后取消运行时上下文。
* 向Nakama控制台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和显示名称。
* 更改运行时群组添加/踢出/升级/降级API，使其包括用于权限检查的可选`callerID`参数。如果调用者ID为空字符串，则默认为系统用户。
* 默认在数据库连接中使用SSL模式`prefer`。

#### 修复

* 读取包含函数的Lua和JavaScript授权匹配状态。
* 现在使用嵌入式迁移的UNIX路径和Windows系统上的控制台文件。
* 更新了Lua VM实现，解决VM注册表调整大小后导致的空引用。
* 将切片和映射类型传递到JS VM时为切片和映射类型添加指针，以便通过引用使其异变。
* 修复了“围绕所有者”查询返回的排行榜记录中的一个错误。
* 如果不存在匹配，则从JS VM`GetMatch`函数中返回`null`。

### 3.2.1

**发布日期**：2021年4月19日

#### 改进

* 现在，用户在线指示器监视状态模式，而不只是监视套接字连接。
* 将sql-迁移库更新至`a32ed26`。
* 重新设计迁移以便更好地兼容不同的数据库引擎。
* 更新至Protobuf v1.5.2、GRPC v1.37.0和GRPC-Gateway v2.3.0版本。
* 更新至Bleve v2.0.3版本。
* 各种其他依赖的更新。

#### 修复

* 修复了Nakama控制台购买列表视图中的用户范围。

### 3.2.0

**发布日期**：2021年4月14日

#### 新功能

* 使用会话和刷新令牌注销和拦截注销的新API。
* 为状态事件添加了离开原因，从而更轻松地处理瞬态断开连接。
* 通过 Apple App Store、Google Play Store和Huawei AppGallery进行[IAP验证](../../concepts/iap-validation/)的新API。

#### 改进

* 改进了社交包中类型的结构字段对齐。
* 改进了配对程序和配对注册表结构中的内存重用。
* 支持将Facebook有限登录令牌接收到标准Facebook登录/链接/取消链接函数中。
* 将JS VM更新至新版本。这解决了关于调整某些JS阵列大小的问题。
* 使用Go 1.16.3版本构建。

#### 修复

* 仅部分匹配的配对程序条目无法结合更大的玩家计数。
* 修复了从控制台API资源管理器执行的一些钩子执行前/后解析的错误输入。
* 返回了返回用户/账户数据的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运行时中未正确调用运行时钩子。
* 排行榜列表`Delete`按钮在Nakama控制台中不起作用。
* `GetUsers` 可以通过与客户端API中相同的Facebook ID获取用户帐户。

### 3.1.0

**发布日期**：2021年2月4日

#### 新功能

* [使用Steam进行身份验证](../../concepts/authentication/#steam)时导入Steam好友的新API。

#### 改进

* 当数据库包含未知迁移时，改进[`nakama migrate status`命令](../commands/#migrate)输出。
* 现在，套接字状态标志的解析不区分大小写。
* 使用Go 1.15.7版本构建。

#### 修复

* `multiUpdate`函数在JavaScript运行时中无法正确运行。
* `InitModule`将在JavaScript运行时中被调用两次。
* 修复了JS运行时调用matchmakerMatched和排行榜/锦标赛相关的钩子的方式。
* 在RPC调用后，JS VM未被放回池中。

### 3.0.0

**发布日期**：2021年1月16日

#### 新功能

* 添加了用于编写服务器代码的[JavaScript运行时](../../server-framework/typescript-runtime/)。
* 添加了可用于刷新会话的[刷新令牌](../../concepts/session/#session-refresh)。
* 用户可以通过新的[实时派对](../../concepts/parties/)在游戏中创建团队玩法。
* 为[配对程序](../../concepts/multiplayer/matchmaker/)添加了派对配对支持。
* 为配对程序添加了[配置选项](../configuration/#matchmaker)，以便控制任务单等待首选匹配项的时间。
* 添加了控制台UI[权限](../console/user-management/)API。
* 添加了以下运行时函数：
  * [readFile](../../server-framework/typescript-runtime/function-reference/#readFile)

#### 改进

* 使用Angular框架重建控制台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.5.0

**发布日期**：2022年9月6日

##### 改进

* 为验证[应用程序内的购买行为](../../concepts/iap-validation/)添加了以下函数和功能：
  * 能够在Nakama数据库中查看`persist`Apple、Google和华为的购买收据。用于计算`SeenBefore`并防止重放攻击。默认设置为`true`。
  * `IApiValidatedPurchase`的`SeenBefore`属性。
  * `ListSubscriptionsAsync` 返回用户的订阅列表。
  * `ValidateSubscriptionAppleAsync` 返回关于用户Apple订阅的详细信息。
  * `ValidateSubscriptionGoogleAsync` 返回关于用户Google订阅的详细信息。
  * `GetSubscriptionAsync` 返回对所提供的产品ID的订阅。


##### 变更

* `ValidatedPurchaseEnvironment`已被重命名为`ApiStoreEnvironment` 。
* `ValidatedPurchaseStore`已被重命名为`ApiStoreProvider` 。
* 已删除接受`CancellationTokenSource`的过时客户端方法。这些已被替换为接受`v3.3`中添加的`CancellationToken`的方法。

##### 修复

* 修复了在internet连接丢失时，`SocketClosed`事件需要很长时间或根本不触发的问题。
* 当从多个线程通过套接字发送消息时，会出现问题。
* 现在，随机进行跨设备自动重试播种。

#### 3.4.1

**发布日期**：2022年5月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.1

**发布日期**：2022年6月7日

* 使用提供的`cjs`发行版重新发布2.4.0版本。

#### 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` 。
* 现在，客户端使用`snake_case`而不是`camelCase`对查询参数进行格式化。

##### 修复

* `401 Unauthorized Response`从服务器，由于`rpcHttpKey` 。

#### 2.3.0

**发布日期**：2021年8月3日

##### 改进

* `rpcHttpKey`参数列表选项和顺序已更改，新签名为：
`rpcHttpKey(httpKey: string, id: string, input?: object);`
* `ApiOverrideOperator`已被重命名为`ApiOperator` 。
* 现在，客户端使用`snake_case`而不是`camelCase`对查询参数进行格式化。

##### 修复

* `401 Unauthorized Response`从服务器，由于`rpcHttpKey` 。

### 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 `XmlHttpRequest.withCredentials`
  * `XmlHttpRequest.responseType`

{{< / content >}}

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

### C++

#### 2.6.0

**发布日期**：2022年9月8日

##### 变更

* 重新编写C++存储库结构和构建系统。面向用户的API保持不变。 

在随附的[博客文章](https://heroiclabs.com/blog/cpp-sdk-updates/)中阅读有关更改的更多信息。

#### 2.5.1

**发布日期**：2022年1月16日

##### 修复

* 派对和配对程序回调中的错误。
* 修复了`removeMatchmakerParty`API。

### Unreal

#### 2.6.0

这个版本建立在对C++存储库结构和构建系统进行重新编写的基础上。在随附的[博客文章](https://heroiclabs.com/blog/cpp-sdk-updates/)中阅读有关更改的更多信息。

##### 添加

* 支持Unreal本机类型。使用`NakamaUnreal`模块，并参阅[README](https://github.com/heroiclabs/nakama-unreal#getting-started-with-nakamaunreal-c-with-unreal-types)了解关于如何使用这个模块的详细信息。
* 支持Blueprints。如果您有兴趣，使用`NakamaBlueprints`模块，并参阅[README](https://github.com/heroiclabs/nakama-unreal#getting-started-with-nakamablueprints)了解关于如何使用该模块的详细信息。

##### 变更

* 先前版本中公开的功能已移至`NakamaCore` 。`NakamaUnreal`和`NakamaBlueprints`模块依赖于`NakamaCore`。

**发布日期**：2022年9月10日

#### 2.5.0-r1

**发布日期**：2022年1月20日

##### 修复

* 添加了缺少的标头。

#### 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.2.0

**发布日期**：2022年8月31日

##### 改进

* 添加了在`NakamaRTAPI.MatchState`中接收二进制数据的支持。
* 添加了在`NakamaRTAPI.PartyData`中发送和接收二进制数据的支持。
* 添加了[`NakamaMultiplayerBridge`](https://github.com/heroiclabs/nakama-godot/blob/master/addons/com.heroiclabs.nakama/utils/NakamaMultiplayerBridge.gd)，以与Godot的高级多玩家API集成。

##### 修复

* 修复了`NakamaSocket.add_matchmaker_party_async()`及其测试。
* 架构中的`MatchData.op_code`类型已更改为`TYPE_INT` 。
* 修复了Nakama单例对其自身的循环引用。

#### 3.1.0

**发布日期**：2022年4月30日

##### 改进

* 已在`NakamaAPI.ApiValidatedPurchase`上公开`seen_before`属性。任何先前[验证的购买](../../concepts/iap-validation/)都将带有此标志返回。
* 现在可以[使用自定义名称创建](../../concepts/multiplayer/relayed/#create-a-match)中继多玩家比赛。
* 在`NakamaSocket.add_matchmaker_async()`和`NakamaSocket.add_matchmaker_party_async()`上添加了对`count_multiple`的支持。
* 添加了C#支持类，以更好地将.NET客户端与Godot的Mono版本集成，从而允许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.3

**发布日期**：2022年5月20日

##### 修复

* 修正了`socket_send`函数中使用不正确匹配数据属性的问题。

#### 3.0.2

**发布日期**：2022年5月12日

##### 改进

* 允许套接字函数中的可选参数为零。

#### 3.0.1

**发布日期**：2022年5月12日

##### 修复

* 修复了收到未处理的套接字消息时的运行时错误。

#### 3.0.0

**发布日期**：2022年4月11日

##### 改进

* **由于代码生成和与Nakama API的交互的变化，此版本中引入了重大变化。**
  * 套接字创建和套接字事件，包括发送事件和添加套接字事件监听器，已移至`nakama/socket.lua`。
  * 消息创建函数已被删除，以便在发送消息的函数中包含所有消息参数。
* 向客户端和套接字实例添加了消息函数。比较： `nakama.do_foo(client, ...)` 和`client.do_foo(...)`。 
  * 为向后兼容，仍然存在将客户端或套接字实例作为第一个参数传递的旧方法。 

{{< / content >}}