KBengine一年前就知道了,但是没来得及学(只记得是C++ + python脚本),前一个项目unity3d+fkask+socketio+sqlite硬怼出来的。这半年也没来得及管。(好像当时看,还只是python2)
最近看了ECS架构的文章
《守望先锋》架构设计与网络同步 -- GDC2017 精品分享实录
忽然想起了KBEngine,结果发现现在已经叫CBEngine了。。。
又看了一下KBE的文档,发现开发方式很不错:
1 后端用xml的形式,Declarative声明 entity的属性和方法(entity有方法,和ECS还不一样) 。用python具体实现各个entity的class和方法。
也就是说,.def ≈.h .py ≈ .cpp
2 对变量和方法的作用域划分了 base cell client, 但base client 之间,根据def声明的暴露,都可以类似prc的方式访问到彼此。这样,在前后端开发,好像在操作同一套代码。不用py C#各搞一套。
3 根据def,后端能自动生成很多U3d部分C#代码。单人工作的话,直接输出到u3d scripts路径下单独一个文件夹。感觉类似fairyGUI对待UI的方式,很爽。
3 对网络传输部分透明化了.socket传binary stream,似乎u3d下不用bestHTTP pro自己撸了。。。
4 account之类的都做掉了,省的自己写了。
——直观上有这么多好处,所以跃跃欲试(已经纯手撸过C#客户端和py服务器端,这半年多又刷完了《SCIP》《Unix编程艺术》和《流畅的python》不信干不出来!)。
于是,跟着B站视频疯狂的青蛙kbengine的kbengine麻将制作教程,开始学一下。
跟着视频和官网文档注记一下。我不喜欢边看边跟着做,脑袋老是要高并发式的切换,感觉效率低。我喜欢集中一段时间只看视频,然后只实践(我的脑袋就是个单线程效率超低的机器,也搞不起coroutine),
“学不下去了,就去干;干不下去了,就去学”。
写这些注记,主要是因为
1官网文档似乎针对的是v1.0的,现在2.0了
2文档的有些细节还是有点简略,我这个笨人还是把细节补记清楚点。
既然视频和官方文档 似乎都建议 开发用win+VS2017 统一调试前后端,我也就照做了。(不然,后端我现在基本是pycharm ssh到linux+docker的,就免了配mysql什么的)
安装
安装部分文档
https://www.comblockengine.com/docs/1.0/install/index/
编译kbe工程:
从github上下载了kbengine-2.0.0-preview4
解压缩,解决方案vs140.sln在 D:kbengine-2.0.0-preview4kbesrc
用vs2017编译的时候,选成release x64 (之前做科学计算,选x64习惯了,py也是x64的)然后要在解决方案资源管理器 解决方案上右键,“重定解决方案目标”。
安装mysql8.0
(忽然感觉一下从万年不变的5.6一下就8.0了 2333 ,之前用sqlite postgres redis MongoDB 比较多,反而没太用mysql)
下载:
1 官网 https://dev.mysql.com/downloads/installer/
选体积大230M的,防止一遍安装失败重新下载(我就重新弄了一次)
2 下一个页面提示注册,害得我想了半天密码,其实不用管,直接点最下面小字:“No thanks, just start my download”
3 安装
1登录权限不要第一个,选下面5.7那个。
注意安装好之后,不要前进到initial database,要先去 “C:ProgramDataMySQLMySQL Server 8.0”下(官网文档没说太清楚,导致我在C:Program FilesMySQL找了半天my.ini。。。),看见有了my.ini 就直接进去
在
这是百度来的,必须在初始化数据库之前做这一步,否则初始化好了,就不行了。好像是8.0才这样的,我反正因为这个重新安装了一遍mysql。
然后继续next,搞定。
然后按官网文档,用mysql的cli测试建立一个大写字母的数据库NESTEST,OK
全部启动出来的命令行窗口应该是9个