# fastjgame
fastjgame 为 fast java game framework的缩写,如名字一样,该项目的目标是一个高性能,高稳定性的游戏架构。
它将是一个分布式多进程架构,游戏逻辑线程为单线程。 游戏逻辑运行在Disruptor消费者线程中,其它线程都为辅助线程,整体为多生产者单消费者模式。
高性能从网络层开始:
IO框架为Netty,HttpClient为OkHttp3;
支持断线重连,支持websocket和tcp同时接入。
支持google protoBuf,json以及自定义消息序列化方式。
支持自定义消息映射;
目前来说除了同步rpc调用那块为了支持重连,设计的不太完美以外,整体来说暂时应该不会改动。较之我工作中的项目而言,消除了许多不必要的同步。
游戏的玩法架构已确定:
游戏世界划分为多个区域,每个进程(频道)承载一个或多个区域,支持跨运营平台,跨服玩法。
在game-core包的doc文件夹下可以看见服务器架构、场景区域划分等图。
待完善的是负载均衡和宕机恢复。
游戏服务器的节点发现以完成:
基于zookeeper实现,同时zookeeper作为配置中心,以及分布式锁.
数据库引入:MongoDB
MongoDB是NOSQL数据库,个人感觉其对程序员非常友好,而且数据扩展容易,性能也好。
最近有了一些新的思路,一直在构思,复杂度会增加不少,如果能够完善,那么场景服的突破可能会很大,主要思路是这样的:
游戏有一些独特的特征:
1. 游戏大多数玩法来说都是独立的,玩家之间的数据是互不影响的;
2. 玩家的直接交互都在同一个场景下才能发生,否则一个玩家是无法对另一个玩家造成影响的(重点);
3. 但凡间接交互的都通过CenterServer处理;
4. 因此,我们可以以场景为单位绑定线程,玩家在哪个场景,就使用场景相同的线程(借鉴Netty);
5. 如果场景之间有关联,需要共享数据,我们只需要保证这些场景在同一个线程里。
这样的话,场景服就可以是多线程的,但是要支持它的话,感觉改动还是比较大的。
### 说下自己为什么开源
1. 从校园步入社会已经三年了,这三年里,参与了两个项目。接触了太多的新东西,netty disruptor zookeeper...
我现在的状态是:学了很多,理论知识还可以,但是缺乏实践,需要写一个完整的项目练手。
2. 个人稍微看过几个他人的游戏项目,个人觉得并不如我们项目的架构,此外代码质量太差,编程模型不够简单。
3. 我对我们项目的某些设计也有不太认可的地方,有一些自己的想法,想写一个自己期望的框架。
4. 我个人非常看重游戏的创意,而这些创意很多时候在中小型游戏公司产生,而往往缺乏技术支撑的却是他们。
5. 最后,感谢之前的leader **李诗乐** 允许我将项目中学到的东西开源。
(Markdown语法不是很熟悉,排版什么的后期有空再优化~)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。用java写的项目,源码都经测试过,真实可靠,欢迎自行下载学习。
资源推荐
资源详情
资源评论
收起资源包目录
基于spring boot的高稳定性的游戏架构设计与实现 (364个子文件)
generateproto.bat 335B
generateMessageId.bat 47B
.gitignore 506B
p_center_scene.java 101KB
p_sync_center_scene.java 89KB
p_center_warzone.java 39KB
C2SSessionMrg.java 28KB
SyncS2CSessionMrg.java 28KB
S2CSessionMrg.java 25KB
MongoDBMrg.java 23KB
CuratorMrg.java 22KB
Scene.java 18KB
SyncC2SSessionMrg.java 16KB
MathUtils.java 15KB
World.java 13KB
SceneInCenterInfoMrg.java 12KB
NettyTypeParameterFinderAdapter.java 12KB
ZKPathUtils.java 11KB
BaseSyncRpcCodec.java 10KB
BaseCodec.java 10KB
CollectionUtils.java 10KB
ExampleLoginServerWorld.java 10KB
NetConfigMrg.java 9KB
NetUtils.java 9KB
TokenMrg.java 8KB
CenterInSceneInfoMrg.java 8KB
ViewGridSet.java 8KB
InnerAcceptorMrg.java 8KB
CoordinateSystem2D.java 8KB
ConcurrentUtils.java 8KB
CenterDiscoverMrg.java 7KB
HttpClientMrg.java 7KB
AcceptorMrg.java 7KB
ExampleGameServerWorld.java 7KB
FastCollectionsUtils.java 7KB
SceneWorld.java 6KB
ClientCodec.java 6KB
GameUtils.java 6KB
TableSheet.java 6KB
SceneSendMrg.java 6KB
SceneWorldInfoMrg.java 6KB
WarzoneInCenterInfoMrg.java 6KB
ConfigLoader.java 6KB
ClientSyncRpcCodec.java 6KB
NetBootstrap.java 6KB
Triangle.java 6KB
LoginDiscoverMrg.java 6KB
TableReader.java 6KB
MessageDispatcherMrg.java 6KB
WorldWrapper.java 5KB
ServerCodec.java 5KB
ConfigHelper.java 5KB
ServerSyncRpcCodec.java 5KB
ReflectionUtils.java 5KB
DisruptorMrg.java 5KB
HttpResponseHelper.java 5KB
MessageQueue.java 5KB
SceneRegionMrg.java 5KB
CenterWorld.java 5KB
Sector.java 5KB
HttpDispatcherMrg.java 5KB
ZkGuidMrg.java 5KB
GameObjectContainer.java 5KB
WarzoneWorld.java 5KB
Main.java 4KB
HttpRequestParamDecoder.java 4KB
Rectangle.java 4KB
WsClientChannelInitializer.java 4KB
CenterInWarzoneInfoMrg.java 4KB
TableSheetConfigWrapper.java 4KB
ForbiddenTokenHelper.java 4KB
WsServerChannelInitializer.java 4KB
NetEventHandlerImp.java 4KB
WatcherTest.java 4KB
LoadFactorTest.java 4KB
SystemTimeMrg.java 4KB
MessageEnum.java 4KB
SceneInCenterInfo.java 3KB
BackoffRetryForever.java 3KB
MapData.java 3KB
LoginWorld.java 3KB
SyncNettyThreadMrg.java 3KB
Token.java 3KB
AbstractThreadLifeCycleHelper.java 3KB
ServerInfo.java 3KB
SceneMrg.java 3KB
Timer.java 3KB
TriggerSystem.java 3KB
MessageMapper.java 3KB
ExampleLoginServerInfoMrg.java 3KB
SyncRequestDispatcherMrg.java 3KB
CenterWorldInfoMrg.java 3KB
ViewGrid.java 3KB
GameConfigMrg.java 3KB
CenterInLoginInfoMrg.java 3KB
Point3D.java 3KB
InitCapacityHolder.java 3KB
SleepingWaitExtendStrategy.java 3KB
ExcelCsvUtils.java 3KB
ArrayBasedMapper.java 3KB
共 364 条
- 1
- 2
- 3
- 4
资源评论
c++服务器开发
- 粉丝: 3045
- 资源: 4463
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功