整理下这篇文章到目前为止做了什么事情:
总结下出现的几种概念:
到目前为止的拓扑图:
系统设计中的static parts与dynamic parts
gate/mq/zk/redis/mysql
almost all custom services
这篇文章的灵感起源是the log,看完之后深有感触。虽然JAVA不是一门好语言,但是JAVA技术栈却发展得如此优雅。JAVA技术栈上的每一种IA都专注于解决特定的一小块问题,比如这里提到的。未来的应用框架开发者,就像是用胶水将这些基础设施粘合起来。游戏服务端程序员通常习惯于c++的小圈子,甚至有一种传教的趋势宣扬c++才是代表的游戏服务端的核心技术。有的时候,游戏程序员需要从c++的小圈子跳出来向外走一走,有可能你就不想再湮没在繁文缛节中,而是发现更大的世界。
不过话又说回来,不喜欢跳出c++小圈子的游戏服务端程序员,大部分又都对c++本身其实知之甚少,奉OOP为圭臬,各种虚继承、多继承出来的代码看到想吐。尝试用模板的各种奇技淫巧把c++写成haskell的虽然更有跳出c++小圈子的倾向,但是既然都如此用了,又何必拘泥于c++?
其他
我在这篇文章里尽量少的插入代码,尽量描述游戏服务端定义问题、解决问题的思路。服务端用C#写的毕竟是少数,但是有了思路随便改写成其他语言都没问题。
我顺便也借着写这篇博客的机会,整理了下一些小东西放在github上。
比如之前的面向组合子博客提到的代码生成器组合子,CodeC
比如之前的定时器博客提到的linux内核风格定时器,以及基于定时器写的example,C#协程,都放在这里,CoroutineSharp
比如之前的游戏AI博客提到的行为树编译器原型和c# runtime示例,Behaviour
还有学习parsec的一个小结,可以用来parse单个c#文件拿到一些描述信息的,当然纯属学习性质,有这种需求的时候最好优先用反射。cs_file_parser
然后就是跟这篇博客相关的
一个简单的网络库,Network;
一个简单的基于Network的Gate,GateSharp;
规范的整个底层库,Phial;
为底层库开发的两个配套代码生成器,Phial.CodeGenerator;
示例实现,Phial.Fantasy。
github中的以演示为目的,因此相比于博客,还有不少部分是to be determined(比如详细的配置流程、MQ的集群化、mysql的故障转移集成、落地服务的实现细节等等),之后我也会继续维护。