版本注释 #

请查看Nakama最新版本和支持的客户端库中的更新和改进。

Nakama #

本节介绍了nakamanakama通用包的新版本及其功能。

兼容性矩阵 #

使用Go服务器运行时的开发人员必须使用正确的nakama-commonNakama版本:

3.13.1 #

发布日期:2022年8月18日

新功能 #

改进 #

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

3.12.0 #

发布日期:2022年5月22日

新功能 #

改进 #

  • 现在,存储写入操作的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日

新功能 #

改进 #

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

修复 #

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

3.10.0 #

发布日期:2021年12月17日

新功能 #

  • 在所有运行时中添加了ctx访问请求HTTP标头字段。
  • 将以下函数添加到JavaScript运行时:
  • 为数据库DNS更改扫描的频率添加了新的配置选项

改进 #

  • 将JavaScript运行时自定义错误消息设置为RPC请求中返回的负载消息。
  • 将JavaScript运行时匹配数据更改为使用Uint8Array类型。
  • 更新Tally和依赖传递以解决xxhash包中的动态链接器错误。
  • 使用Go 1.17.5版本构建。

修复 #

  • 当调用队列填满时恰当关闭Lua匹配。
  • 更好地处理Lua运行时钱包更新操作的错误。
  • 更好地处理不需要更新数据库的排行榜记录写入。
  • 修复了TypeScript/JavaScript运行时存储删除操作中的解析边缘情况。
  • 更好地处理排行榜和锦标赛分数的提交,不会导致分数更改。
  • 现在,如果名称映射到现有匹配,则命名匹配创建返回现有状态。

3.9.0 #

发布日期:2021年10月30日

新功能 #

改进 #

  • 现在,对数据库主机名的底层地址更改进行定期检查的频率更高。
  • 升级了GRPC、GRPC网关、Protobuf、PGX和其他依赖项。

修复 #

  • 修复了链接社交资料时的乐观电子邮件导入。

3.8.0 #

发布日期:2021年10月15日

新功能 #

  • 添加了通过单个套接字配置选项向关闭的套接字发送的最终通知。
  • 向服务器框架添加了matchSignal函数,现在匹配处理程序需要它。匹配信号允许向匹配处理程序发送预留信号,以在加入尝试和最终加入流之前将用户ID或会话ID标记为匹配状态。
  • Nakama控制台仪表板现在显示节点状态图标。

改进 #

  • 日志状态根据debug而不是warn级别跟随丢失用户。
  • 使用Go 1.17.2版本构建。

修复 #

  • 修复了群组列表操作中的输入验证边缘情况。

3.7.0 #

发布日期:2021年9月28日

新功能 #

改进 #

3.6.0 #

发布日期:2021年9月9日

新功能 #

  • 在创建、更新或删除群组时添加了更详细的日志记录。
  • 向服务器框架添加了ChannelMessageUpdate函数。
  • 添加了lua_api_stacktrace配置选项,切换返回给客户端的Lua运行时错误堆栈跟踪。

改进 #

  • 现在使用Facebook Graph API v11.0。
  • 现在将Facebook电子邮件导入的执行推迟到账户创建之后。
  • 改进了授权匹配创建参数中的编码/解码检查。
  • 现在,在使用已弃用的配置参数时会生成警告。
  • 改进了链接社交账户时的电子邮件导入语义。
  • 返回非200状态代码时记录IAP提供程序API响应负载。
  • 购买验证函数现在返回一个标志,显示有效购买属于最新或者重新提交。
  • 更好地处理不需要OCC的存储操作。
  • 现在,分类帐更新在所有服务器运行时的walletsUpdate函数中默认为false
  • 调整Lua运行时池分配启动日志。
  • 使用Go 1.17.0版本构建。

修复 #

  • 修复了使用结构化记录器字段的Lua运行时日志调用中的日志级别。
  • 注册了在JavaScript和Lua运行时中钩子前/后的购买验证。
  • 注册了JavaScript运行时中的DemoteGroupUsers钩子前/后。
  • 向JavaScriptValidatedPurchases类型添加了缺少的environment
  • 修复了提到空输入值的错误消息中的拼写错误。
  • 修复了导出时间和延迟指标的分辨率。
  • 优化了锦标赛查找操作。
  • 修复了Lua运行时中groupUpdate函数open参数解析不正确的问题。
  • 如果从控制台中的默认入口点加载,列出了JavaScript模块。

3.5.0 #

发布日期:2021年8月11日

新功能 #

改进 #

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

修复 #

  • 从JavaScript运行时groupUpdate函数中的错误参数中读取创建者id
  • groupUpdateJavaScript运行时函数中max count的验证不正确。
  • 修复了尝试将记录写入不存在的锦标赛时的错误处理。
  • 排行榜/锦标赛中缺少的字段获取、列出和写入JavaScript运行时中的函数。
  • JavaScript运行时中排行榜/锦标赛记录列表函数中的ownerId字段解析错误。
  • 修复了排行榜得分集运算符中的参数用法。
  • JavaScript运行时storageList函数未返回游标。

3.4.0 #

发布日期:2021年7月9日

新功能 #

改进 #

  • 派对匹配程序添加了操作响应,现在包含任务单。
  • 用更紧凑的版本替换Bleve gtreap内存中存储实现。
  • 现在,被踢出派对的用户会收到派对关闭事件。
  • HTTP处理程序函数中记录恢复的恐慌为error级而非info
  • 向群组列表API添加了新的langTagmembersopen过滤器。
  • 将pgx升级到v4以提高SQL性能。
  • 更新了RegisterLeaderboardReset运行时函数签名。
  • 正常关闭完成后取消运行时上下文。
  • 向Nakama控制台UI中添加按钮,允许复制设备ID。
  • 使用Go 1.16.5版本构建。

修复 #

  • 有多个并发成功加入时,确保在派对信息中正确列出所有成员。
  • 在匹配程序匹配的回调输入中正确设置派对ID。
  • 仅在适当的情况下发送派对关闭消息。
  • 修复TypeScript/JavaScript匹配调度程序状态列表验证。
  • 修复JavaScript/LuafriendsList错误的返回值。

3.3.0 #

发布日期:2021年5月17日

新功能 #

  • 现在,锦标赛和排行榜允许在更新时通过运算符进行评分。
  • 现在,锦标赛和排行榜支持递减运算符。
  • 向API调用中的结构化记录器输出中添加rpc_idapi_id

改进 #

  • 如果为空,存储由Apple、Facebook和Google登录提供商提供的电子邮件、化身URL和显示名称。
  • 更改运行时群组添加/踢出/升级/降级API,使其包括用于权限检查的可选callerID参数。如果调用者ID为空字符串,则默认为系统用户。
  • 默认在数据库连接中使用SSL模式prefer

修复 #

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

新功能 #

改进 #

  • 当数据库包含未知迁移时,改进nakama migrate status命令输出。
  • 现在,套接字状态标志的解析不区分大小写。
  • 使用Go 1.15.7版本构建。

修复 #

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

3.0.0 #

发布日期:2021年1月16日

新功能 #

改进 #

  • 使用Angular框架重建控制台UI。管理用户数据、更新对象、使用权限配置文件限制对生产的访问,以及更深入地了解活动匹配等实时功能。
  • 匹配程序改进了对匹配过程和玩家计数范围的处理。
  • 现在,授权匹配处理程序的循环速度为每秒60次。
  • 支持CockroachDB 20.2版本。
  • 使用Go 1.15.6版本构建。

修复 #

  • 返回Lua API中的rank字段用于排行榜记录写入。
  • 返回好友列表中用户的社交字段。

客户端SDK #

本节介绍了Nakama SDK的新版本及其功能。使用上面的下拉列表选择您的语言以查看相关版本。

请记住,Nakama版本编号与SDK版本编号不一致。

Contribute
所有Nakama SDK都是开源的,可以为其做贡献

.NET/Unity #

这些版本注释包含对nakama-unitynakama-dotnet包的更新和改进。

3.5.0 #

发布日期:2022年9月6日

改进 #
  • 为验证应用程序内的购买行为添加了以下函数和功能:
    • 能够在Nakama数据库中查看persistApple、Google和华为的购买收据。用于计算SeenBefore并防止重放攻击。默认设置为true
    • IApiValidatedPurchaseSeenBefore属性。
    • 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日

改进 #
  • 现在可以在适配器中覆盖套接字消息的消息最大限制。
  • 现在可以使用自定义名称创建中继多玩家比赛。
修复 #
  • 现在,当检测到close时,后台读取循环会正确更新isConnectingisConnected

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。
    • 重大变化MatchDataPartyData的数据字段被键入为Uint8Array。发送字符串作为配对或派对数据的用户将需要使用例如TextDecoder之类的实用程序来反序列化字符串。此更改在编译时强制执行。
    • 现在sendMatchStatesendPartyData可以接收字节输入。如果使用默认文本适配器发送字节,会将字节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日

改进 #
修复 #
  • 删除使用不受支持的:
    • setter XmlHttpRequest.withCredentials
    • XmlHttpRequest.responseType

C++ #

2.6.0 #

发布日期:2022年9月8日

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

在随附的博客文章中阅读有关更改的更多信息。

2.5.1 #

发布日期:2022年1月16日

修复 #
  • 派对和配对程序回调中的错误。
  • 修复了removeMatchmakerPartyAPI。

Unreal #

2.6.0 #

这个版本建立在对C++存储库结构和构建系统进行重新编写的基础上。在随附的博客文章中阅读有关更改的更多信息。

添加 #
  • 支持Unreal本机类型。使用NakamaUnreal模块,并参阅README了解关于如何使用这个模块的详细信息。
  • 支持Blueprints。如果您有兴趣,使用NakamaBlueprints模块,并参阅README了解关于如何使用该模块的详细信息。
变更 #
  • 先前版本中公开的功能已移至NakamaCoreNakamaUnrealNakamaBlueprints模块依赖于NakamaCore

发布日期:2022年9月10日

2.5.0-r1 #

发布日期:2022年1月20日

修复 #
  • 添加了缺少的标头。

2.5.0 #

发布日期:2021年9月14日

改进 #
修复 #
  • 存储对象列表中的游标分配。

Cocos2d-x #

2.5.1 #

发布日期:2022年1月17日

改进 #
修复 #
  • 存储对象列表中的游标分配。
  • 修正了加入群组聊天的NChannelType枚举值。

Godot #

3.2.0 #

发布日期:2022年8月31日

改进 #
  • 添加了在NakamaRTAPI.MatchState中接收二进制数据的支持。
  • 添加了在NakamaRTAPI.PartyData中发送和接收二进制数据的支持。
  • 添加了NakamaMultiplayerBridge,以与Godot的高级多玩家API集成。
修复 #
  • 修复了NakamaSocket.add_matchmaker_party_async()及其测试。
  • 架构中的MatchData.op_code类型已更改为TYPE_INT
  • 修复了Nakama单例对其自身的循环引用。

3.1.0 #

发布日期:2022年4月30日

改进 #
  • 已在NakamaAPI.ApiValidatedPurchase上公开seen_before属性。任何先前验证的购买都将带有此标志返回。
  • 现在可以使用自定义名称创建中继多玩家比赛。
  • NakamaSocket.add_matchmaker_async()NakamaSocket.add_matchmaker_party_async()上添加了对count_multiple的支持。
  • 添加了C#支持类,以更好地将.NET客户端与Godot的Mono版本集成,从而允许HTML5导出工作。
修复 #
  • 接收NakamaRTAPI.PartyClose消息。
  • 发送和接收PartyData

Java/Android #

2.1.4 #

发布日期:2021年4月20日

修复 #
  • protobuf-lite 现在正确地导出到Maven和Gradle项目。

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(...)
    • 为向后兼容,仍然存在将客户端或套接字实例作为第一个参数传递的旧方法。