【云驻共创】有哪些值得学习的国内 c++ 开源项目之游戏篇
【云驻共创】有哪些值得学习的国内 c++ 开源项目之游戏篇
前言
今天看到云驻共创有这样一个题目《有哪些值得学习的国内 c++ 开源项目》,但是因为我最熟悉的是游戏项目,有一定的积累,所以我就把题目范围进行了缩小,,变成有哪些好的开源的国内的游戏项目,希望能对使用C++做游戏的开发同学一些帮助,从这些优秀的项目中汲取精华使用到自己的项目中,做出优秀的游戏项目,废话不多说,开始吧。
1、skynet
开源地址:
https://github.com/cloudwu/skynet
项目介绍
Skynet 是国内大名鼎鼎的游戏引擎,是网易的云风大神开发的,在那个引擎很少的年代,这算得上是开天辟地的。能做的如此优秀,属实不易。
Skynet提供了一个简洁、稳定、高效、高可用的分布式服务开发框架。
Skynet是一个轻量级通用的服务器基础框架
Skynet是基于C与Lua的开源服务端并发框架,使用单进程多线程Actor模型。
Skynet服务器支持10K+客户端接入和处理
Skynet当前规模是8K多行的C代码和2K多行Lua代码,实现了一个多线程高并发的在线游戏后台服务框架,提供定时器、开发调度、服务扩展框架、异步消息队列、命名服务等基础能力,支持Lua脚本。
Skynet是一个轻量级网络服务器架构而非完整的游戏服务端,它是服务端的最底层框架,和游戏业务相关的服务都是基于此框架之上开发的。其功能只是管理好服务(加载和调度)和服务之间的调用(请求和响应)。
学习点:
可以学习如何C++和Lua的混合编程,学习到Actor设计模式的实现
2、 NoahGameFrame
开源地址
https://github.com/ketoo/NoahGameFrame
项目介绍
曾经和NF的作者在同一家公司工作过,所以对引擎有种亲密感,是很不错的引擎,也表示表和属性的同步,用起来非常舒坦。
NoahGameFrame(NF)是一个轻量级,快速,可扩展的分布式插件框架。
- 易于使用,面向界面的设计
- 一个可扩展的插件框架,使您的应用程序快速,轻松地运行
- 一种干净,整洁的设计和稳定的发动机,已用于多种商业产品
- 高性能Actor模型(由Theron提供)
- 事件和属性驱动,使您的业务清晰易懂
- 基于标准C ++开发,确保跨平台支持
- 现有的C ++和C#游戏客户端,用于快速开发
- 跨平台支持
学习点:
项目NF受到OGRE和Bigworld的极大启发。可以从中学习到服务端的设计思想.
3、kbengine
开源地址
https://github.com/kbengine/kbengine
项目介绍:
一款开源的MMOG游戏服务端引擎, 仅Python脚本即可简单高效的完成任何游戏逻辑(支持热更新), 使用配套客户端插件能够快速与(Unity3D、UE4、OGRE、HTML5、等等)结合形成一个完整的客户端。 引擎使用C++编写,开发者无需重复的实现游戏服务端通用的底层技术, 将精力真正集中到游戏开发层面上来,稳定可靠并且快速的打造各种网络游戏。
Kbengine 已经收到千万投资进行了商业化开发,是非常优秀的服务端引擎,曾经在一个项目中用过,用python作为脚本开发,性能高,开发效率高,底层C++代码值得学习。
学习点
项目使用C++作为底层进行开发,应用层使用python作为脚本,可以学习C++和Python的混合编程,同时学习到MMO的经验
4、cocos2d-x
开源地址
https://github.com/cocos2d/cocos2d-x
项目介绍
Cocos2d-x 是一款国产的开源的手机游戏开发框架,基于MIT许可证发布。引擎核心采用C++编写,提供C++、Lua、JavaScript 三种编程语言接口,跨平台支持 iOS、Android 等智能手机,Windows、Mac 等桌面操作系统,以及 Chrome, Safari, IE 等 HTML5 浏览器。
cocos2d-x引擎的历年代表作有《我叫MT Online》《捕鱼达人》《大掌门》《刀塔传奇》《放开那三国》《全民飞机大战》《欢乐斗地主》《开心消消乐》《保卫萝卜》《梦幻西游》《大话西游》《神武》《问道》《征途》《列王的纷争》《热血传奇》《传奇世界》《剑与家园》《乱世王者》《传奇霸业》等
学习点
Don’t say so Much.
对于想要做客户端引擎开发的同学,可以学习cocos2d-x,开源且用户多
5、moleServer
开源地址:
https://gitee.com/akinggw/moleserver
项目介绍:
一个C++编写的基于websocket协议的游戏服务器框架,运行于linux上,底层主要基于epoll,性能强劲,登录验证,注册,游戏框架基本全部做好,您只需要添加游戏逻辑就可以了。
已经主要实现以下功能:
- 用户注册,验证,登录,更改信息;
- 游戏服务器可以通过网站进行监控,配置和管理;
- 游戏服务器已经实现了登录验证,桌子管理,掉线管理,掉线重回管理,定时器等等框架该有的功能都有了;
- 游戏逻辑框架,游戏中该用到的接口,如果进入房间,离开房间,掉线处理,掉线重回后处理,定时器处理等等都已实现
- 网站后台管理功能,已经实现对玩家,游戏,服务器的管理和监控
- 机器人功能,在数据库配置好机器人后,机器人就可以使用了
- 玩家无限制分成代理分销,充值,退款等功能
学习点
Moleserver 内置了一些现成的模块,能快速开发游戏,可以在代码中学习模块的设计,可进行功能迁移。
6、一些游戏项目推荐
6.1 植物大战僵尸
https://gitee.com/GITLZ/PlantsVsZombies
使用c++基于Cocos2dx V3.16 开发的植物大战僵尸游戏
6.2 麻将
https://gitee.com/xiyoufang/cocostudio-mahjong
基于Cocos2d-X 3.17 跨平台单机麻将,商业级麻将算法、AI算法
6.3 游戏服务器框架
https://gitee.com/ylmbtm/GameProject3
跨平台的多进程游戏服务器框架,网络层分别使用SocketApi, Boost Asio, Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。
6.4 我的武侠世界
https://gitee.com/lsylovews/ChivalrousMan
《我的武侠世界》使用cocos2d-x编写的一个简单的回合制网游,游戏内容和传统的回合制网游相似。 在游戏中玩家可以接取任务, 完成任务获得奖励升级提升自己的实力
6.5 碰碰球
https://gitee.com/lsylovews/CollisionBall
一个联网的趣味性小游戏,碰碰球,在游戏中通过操纵自己的小球吃掉随机产生的食物,不断壮大自己,或者撞击其它玩家,通过自己的体力和大小之间的关系和他人的体力与大小之间的关系决定谁是胜利者,主要学习物理引擎的使用。
总结
C++ 项目的入手难度略高,这是C++这门语言决定的,但是C++对机器性能的压榨还是让人趋之若鹜,对于有更高要求的游戏来说,现在很多游戏公司仍然在使用C++ 的服务端,虽然历史的趋势不会改变,越来越多的游戏服务器用Java和Nodejs 开发,但是这些优秀的项目依然在发光发热,对于依然坚守C++的同学依然值得学习。
本文整理自华为云社区【内容共创系列】活动。
查看活动详情:https://bbs.huaweicloud.com/blogs/314887
- 点赞
- 收藏
- 关注作者
评论(0)