找回密码
 立即注册
收起左侧

Qt(QML)做的一个游戏框架,用JS来开发跨平台网络游戏

0
回复
6018
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2020-4-20 10:19:02 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
之前做了一个网络卡牌类游戏(3w。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和安装),当然这是下一步计划的,技术上是没问题了。

今天就写这么多,其实还有很多没写出来,比如框架的发布形式还没想好等等,也希望有童鞋能一起来完成,或者试用这个框架来提供宝贵的意见。
以后会慢慢更新使用教程和框架细节。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了