ioGame 21.12,netty 分布式游戏服务器框架;java 分步式游戏服务器框架;
文档与日志
版本更新汇总
- [light-game-room] #326 GameFlowContext getRoom、getPlayer 方法返回值改成泛型
- [对接文档] #330 增强,支持对接文档生成与扩展,包括文本文档生成、联调代码生成 ...等
[light-game-room]
#326 GameFlowContext getRoom、getPlayer 方法返回值改成泛型
GameFlowContext gameFlowContext = ...;
// FightRoomEntity、FightPlayerEntity 是自定义的 Room、Player 对象
// Room、Player 在使用时,不需要强制转换了
FightRoomEntity room = gameFlowContext.getRoom();
FightPlayerEntity player = gameFlowContext.getPlayer();
[对接文档]
#330 增强,支持对接文档生成与扩展,包括文本文档生成、联调代码生成 ...等。开发者做更多个性化的扩展
在该版本中,我们已经新做了对接文档相关模块;该版本功能更加的强大,使用上也更加的简洁。新版本的对接文档模块,除了能提供文本文档的生成外,还能支持生成与客户端联调的代码、并且是可扩展的。通常,客户端联调代码有:
- 支持生成 C# 客户端的联调代码,通常用在 Unity、Godot 客户端,具体可阅读 SDK C# 代码生成。
- 支持生成 TypeScript 客户端的联调代码,通常用在 cocos、laya 客户端,具体可阅读 SDK TypeScript 代码生成。
public static void main(String[] args) {
// 添加枚举错误码 class,用于生成错误码相关信息
IoGameDocumentHelper.addErrorCodeClass(GameCode.class);
// 添加文档生成器,文本文档
IoGameDocumentHelper.addDocumentGenerate(new TextDocumentGenerate());
// 添加文档生成器,Ts 联调代码生成
IoGameDocumentHelper.addDocumentGenerate(new TypeScriptDocumentGenerate());
// 生成文档
IoGameDocumentHelper.generateDocument();
}
上述代码
- 添加了错误码的生成
- 添加了文本文档的生成
- 添加了 Ts 客户端联调代码的生成(包括 action、广播、错误码...相关代码的生成), SDK TypeScript 客户端代码生成;方便 CocosCeator、或其他支持 TypeScript 的客户端对接。 #329
addDocumentGenerate 是可扩展的,这将意味着开发者可以扩展出 C#、GodotScript、Js ...等不同客户端的联调代码。默认,我们提供了一个文本文档,即 TextDocumentGenerate,如果默认的实现满足不了当下需求,开发者也可以定制个性化的文档,如 json 格式的。
更多内容请阅读 游戏对接文档生成 (yuque.com)
新增 DocumentGenerate 接口
开发者可利用该接口进行定制个性化的对接文档,如代码生成 ...等。
/**
* 对接文档生成接口,可扩展不同的实现
*/
public interface DocumentGenerate {
/**
* 生成文档
*
* @param ioGameDocument ioGameDocument
*/
void generate(IoGameDocument ioGameDocument);
}
/**
* 文档相关信息,如 action 相关、广播相关、错误码相关。
*/
@Getter
public final class IoGameDocument {
/** 已经解析好的广播文档 */
List<BroadcastDocument> broadcastDocumentList;
/** 已经解析好的错误码文档 */
List<ErrorCodeDocument> errorCodeDocumentList;
/** 已经解析好的 action 文档 */
List<ActionDoc> actionDocList;
}
开发者可以通过实现 DocumentGenerate 接口来扩展不同的文档生成,开发者可以扩展此接口来定制更多个性化的扩展,如
- html 版本的文档。
- json 版本的文档。
- 其他语言的联调文档 ...等。
// 使用示例
private static void test() {
var documentGenerate = new YourDocumentGenerate();
IoGameDocumentHelper.addDocumentGenerate(documentGenerate);
}
其他:废弃旧版本对接文档相关类 DocActionSend、DocActionSends、ActionDocs、ActionSendDoc、ActionSendDocs、ActionSendDocsRegion、BarSkeletonDoc、BroadcastDoc、BroadcastDocBuilder、ErrorCodeDocs、ErrorCodeDocsRegion。
21.10 及之前版本的使用示例(对接文档)
public static void main(String[] args) {
... 省略部分代码
new NettyRunOne()
... ...
.startup();
// 生成对接文档
BarSkeletonDoc.me().buildDoc();
}