本意是想深入研究和学习一下grpc的设计,来给自己的游戏网络通信引擎提供多一份参考。但是细致的看了一圈文档意识到grpc的实际应用场景不是给游戏,而是像文档里描述的给微服务和多语言部署的大型业务。
grpc作为定义好comn中间结构体就能够注册到服务发现集群,其他的业务可以直接将comn结构下载下来,快速地请求到新业务的一套跨越多语言的协议+底层框架。
这是它的核心,或者说它解决的问题。
就忽然想起来之前华仔说面试的是时候是要问对方解决问题的能力,遇到了什么问题,提出了什么方案。
最近也研究godot和unreal的网络框架实现原理,顺便也看了一下如何给这些引擎做共享。
就看见godot的贡献原则:
要从问题出发寻找结论,而不是我觉得这个可以,然后它就可以。要解决一个具体的问题,解决常见的问题。
不想当厨子的裁缝绝不是好司机,我今年想自己写一个网络通信引擎,一方面是学习和练习,另外也想对工作有一些反哺。最近就也在思考,如果真的开始动手写我的库,这个库需要哪些特性?如何跟其他的引擎结合?甚至如何让其他人用我的这个库?
特性:
- 基于C++20,目的是学习和练习C++20;
- 支持UDP、TCP和WebSocket等协议;
- 提供网卡、网络到连接层面的封装;
- 提供基于Entity和属性同步和管理和rpc;
- 提供局域网探测的功能;
如何跟引擎和语言结合:
- python: nanobind
- lua: 未来可以支持
- UE:不好融合;
- Unity: 增加插件
- Godot:
如何让其他人用:
- 开源
- 好用
End。