跳至正文

[Walo系列]2.企划和环境搭建

  • 随笔

企划

还是打算启动这个企划,核心的目标就像前一篇说的,我想做一个游戏的网络rpc的库。相比传统的rpc框架,核心在于这个是给游戏用的。

思考

游戏用的rpc和互联网的主要差别在哪呢?
这几天我一直在思考这个问题,互联网的请求更多的是我发起、等待然后收到回调。同时互联网有大量的基础设施,在rpc的通信中有大量的扩散的请求。例如一个订单可能涉及到向多个微服务发起服务,最终汇聚成一个请求返回到客户端。

互联网的rpc更注重跨语言,快速实现需求,还要考虑多服务的均衡、容灾等等…

而游戏的网络框架其实分两个部分,拿平安京举例,大厅的部分跟互联网的rpc没有太多差别的;但是战斗跟大部分互联网的需求是不同的,战斗更注重的是快速地相应,对游戏战场的控制方式。

所以我做这个还是有意义的,例如互联网的rpc框架默认就是基于TCP的,附带大量微服务特性的。

期望的特性

  1. 基于C++20:目的是学习;
  2. 支持UDP、TCP和WebSocket等协议:目的适配更广泛的游戏场景;
  3. 提供网卡、网络到连接层面的封装:目的是对网络有更精确的掌控力;
  4. 提供基于Entity和属性的同步:简化游戏开发;
  5. 提供局域网探测的功能:同样是为了提供简化的联网能力;

环境和依赖

稍微研究了一下,最后还是决定使用CMake + Conan做依赖管理。
尽量用公版以及conan中拥有的库做开发,减少我的开发成本,以及未来可能的管理成本。

倒腾了一个晚上,终于把conan2和cmake的融合做好了。
由CMake构建的时候引入conan2的conan_provider.cmake,这个cmake提供自动从云端的conan find_package,解决依赖问题。
工程只需要包含CMake以及工程源码,CMake就能自动从公版拉相应的库下来。

以及工程命名:Walo,想着朗朗上口,又要含义简单,取自网络的中文谐音。

End。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

目录