首页| 论坛| 消息

标题:Qt(QML)做的一个游戏框架,用JS来开发跨平台网络游戏
作者:leamus
日期:2020-04-20 10:10
内容:

之前做了一个网络卡牌类游戏(www.yingyusha.com),觉得Qt做个游戏框架还是挺不错的,理论上C/S和B/S都能做,于是花了一段时间做出个框架Demo,这个Demo解决了以下一些问题(以下用Qt英语杀来作为例子):
1、跨平台
个人浅显研究了各个平台下英语杀的表现效果,除了ios设备上没弄出来sqlite加密和操作有点卡顿(有可能是我用了多线程的原因吧)外,其他感觉还可以,对安卓的支持进行了较深入的研究(JNI和设备的一些功能),可以说,Qt的C/S跨平台模式还是相当不错的,B/S模式的话,除了Windows的MinGW不能做外(vs可以),其他都能做,而且可以与用C++交互。
2、网络通讯
我自己用IOCP模型做了一个服务器(VC6做的内核,Qt封装后使用),运行在windows,支持TCP和UDP协议,TCP协议上又封装了一些常用的功能,比如加密、断线重连等等,QML中直接封装了数据发送和接收,都是以JSON来通信的。
3、数据库
数据库用了MySQL,MySQL专门定义了一个表,存储用户自定义的字段(JSON格式),可能会拖累速度,当然如果做好成品的话直接可以转换为表。还可以存储一些二进制格式的文件。
本地的话,SQLite不用说,QML和Qt都支持,我又用了豆子写的加密SQLite版本,也加在了框架里。
4、其他特色和功能
a、IO多线程:耗时的数据库操作和日志文件的读写,都采用了多线程模式,所以这个游戏服务器的稳定和优化我还是很有自信的~
b、纯JS或QML编写游戏:由于框架本身是由Qt写的,所以Qt和QML的功能产品中都可以使用,而且我把一些该封装的都用C++封装好了(包括一些常用的安卓功能),直接可以在QML中使用,所以产品本身可以全部用QML来写;有些童鞋可能会JS但不太懂QML(毕竟还是有差别的),没关系,我把QML也封装了,直接用js函数来创建QML对象、绑定信号等等(这个使用起来可能还有些问题,得慢慢改进完善)。一句话,你用js可以做出来单机、联网的各种类型(RPG、即时战略、卡牌、AVG等等)的跨平台游戏(QML支持3d,会3d的童鞋甚至可以做3d游戏)。
c、热更新:QML文件本身是以单独的资源文件来载入的,比较好更新,至于框架文件本身,我也准备用库的形式来热更新(不用每次改个小毛病都要重新下载一次apk和安装),当然这是下一步计划的,技术上是没问题了。
今天就 ..


#1 [圣域天子 04-20 10:43]
我是Qt开发的框架+lua做游戏玩法。
看来我们俩可以凑成一对哎~~~
#2 回 圣域天子 的帖子 [leamus 04-20 14:17]
圣域天子:我是Qt开发的框架+lua做游戏玩法。
看来我们俩可以凑成一对哎~~~  (2020-04-20 10:43) 
哈哈,是啊是啊,你的框架有发布吗?或者用框架开发的什么项目,让我学习一下
#3 回 leamus 的帖子 [圣域天子 04-20 23:19]
leamus:哈哈,是啊是啊,你的框架有发布吗?或者用框架开发的什么项目,让我学习一下 (2020-04-20 14:17) 
除了Qt,全部为纯手工打造~~~支持Epoll & IOCP、Postgres、插件扩展功能、Lua/JS、多网关集群模式、协议转换插件等等。
#4 [leamus 04-21 10:39]
有没有发布啊,让我研究研究
#5 回 圣域天子 的帖子 [suoniao 08-07 23:08]
圣域天子:除了Qt,全部为纯手工打造~~~支持Epoll & IOCP、Postgres、插件扩展功能、Lua/JS、多网关集群模式、协议转换插件等等。 (2020-04-20 23:19) 
游戏上线了吗

<< 1 2 >> (1/2)

回复 发表
主题 版块