kice
2022-09-27 12:38:54 +08:00
首先单机游戏做成 CS 架构没啥问题,隔壁 V 社的起源引擎和 MC 也是 CS 架构走 RPC (起源为了减少延迟,单机模式下开后门,不走 localhost 那边的 memcpy )。
其次 50000+端口基本上属于很难被其他程序使用。估计程序员比较菜?写死了估计还没想到办法端口号变动之后怎么连服务器。
走网络通讯是最简单最方便的 RPC 途径,其他的各种方法都不好移植,例如命名管道,mmap 之类。甚至可能是 HTTP 或者 HTTP over UDP 也是可行。
我个人认为最蠢的地方是服务器逻辑单独一个进程进行处理。虽然知道是因为 unity ,但是如果我来做的话会尝试把服务器逻辑做成一个 C 井库,客户端既可以给玩家用,也可以本地开服务器局域网联机;然后再额外做一个没有渲染或者没有客户端逻辑的独服给公网(社区服)用。这样方案下,mod 环境某种意义上比较成熟( bepinex 之类的框架大家都会用)。
单独服务器进程之下,mod api 就可以随意发挥,脱离 bepinex 之类的 mod 框架。缺点可能就是如果要修改素材,渲染方面,还是要用 bepinex ,然后服务器那边也要单独一个 mod ;虽然能避免,但是个人就比较怀疑团队那边有没有能力设计且实现好这个大饼。