All Projects → fhyfhy17 → Distributed_game_server

fhyfhy17 / Distributed_game_server

java,gameserver,distributed,vert.x,游戏服务器

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Distributed game server

Noahgameframe
A fast, scalable, distributed game server engine/framework for C++, include the actor library, network library, can be used as a real time multiplayer game engine ( MMO RPG/MOBA ), which support C#/Lua script/ Unity3d, Cocos2dx and plan to support Unreal.
Stars: ✭ 3,258 (+40625%)
Mutual labels:  game-engine, game-server, gameserver
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (+8087.5%)
Mutual labels:  game-engine, game-server, gameserver
ctf-gameserver
FAUST Gameserver for attack-defense CTFs
Stars: ✭ 38 (+375%)
Mutual labels:  game-server, gameserver
ARK
ARK is a lightweight, agile, elastic, distributed plugin framework written in C++,make it easier and faster to create your own application service.
Stars: ✭ 411 (+5037.5%)
Mutual labels:  game-server, gameserver
Linuxgsm
The command-line tool for quick, simple deployment and management of Linux dedicated game servers.
Stars: ✭ 3,063 (+38187.5%)
Mutual labels:  game-server, gameserver
Tdengine
game server for Rust + Lua
Stars: ✭ 203 (+2437.5%)
Mutual labels:  game-engine, game-server
rockgo
A developing game server framework,based on Entity Component System(ECS).
Stars: ✭ 617 (+7612.5%)
Mutual labels:  distributed, gameserver
litchi
这是一款分布式的java游戏服务器框架
Stars: ✭ 97 (+1112.5%)
Mutual labels:  distributed, game-server
Game Server Configs
A repo of game server configuration files used by LinuxGSM
Stars: ✭ 157 (+1862.5%)
Mutual labels:  game-server, gameserver
Kbengine
A MMOG engine of server.
Stars: ✭ 4,714 (+58825%)
Mutual labels:  game-server, gameserver
Ark
ARK is a lightweight, agility, elastic, distributed plugin framework written in C++,make it easier and faster to create your own application service.
Stars: ✭ 370 (+4525%)
Mutual labels:  game-server, gameserver
Lollipopgo
稳定分支2.9.X 版本已更新,由【Golang语言游戏服务器】维护,全球服游戏服务器及区域服框架,目前协议支持websocket、http、KCP、TCP及RPC,采用状态同步(帧同步内测),愿景:打造MMO多人竞技游戏框架! 功能持续更新中... ...
Stars: ✭ 500 (+6150%)
Mutual labels:  game-engine, game-server
Kaetram Open
An open-source 2D HTML5 adventure based off BrowserQuest (BQ).
Stars: ✭ 138 (+1625%)
Mutual labels:  game-engine, game-server
Kudos
Kudos is a simple, high-performance, easy to expand and easy to deploy distributed game service framework based on microservice architecture, It is based on RPC of rpcx, supports pomelo communication protocol and can be easily applied to game development.
Stars: ✭ 132 (+1550%)
Mutual labels:  game-engine, game-server
pigame
Just a game server template for Erlang/OTP.
Stars: ✭ 25 (+212.5%)
Mutual labels:  game-server, gameserver
Racingworld
💥 A multiplayer online 3D game about racing 💥
Stars: ✭ 50 (+525%)
Mutual labels:  game-engine, game-server
jwEngine
A cross-platform C++<->lua server quick solution
Stars: ✭ 226 (+2725%)
Mutual labels:  game-server, gameserver
Nettygameserver
使用netty4.X实现的手机游戏分布式服务器,支持tcp,udp,http,websocket链接,采用protobuf自定义协议栈进行网络通信,支持rpc远程调用,使用mybatis3支持db存储分库分表,支持异步mysql存储,db保存时同步更新reids缓存。 使用ExcelToCode工程,将excel数据生成java类和json数据字典,DictService直接读取json,减少数据字典部分代码。使用game-executor工程,增加游戏内的异步事件全局服务, 支持事件sharding,均衡的异步执行事件逻辑
Stars: ✭ 1,203 (+14937.5%)
Mutual labels:  game-server, gameserver
Rockgo
A developing game server framework,based on Entity Component System(ECS).
Stars: ✭ 532 (+6550%)
Mutual labels:  gameserver, distributed
Dolphin
**pigame** is a game server template for Erlang.
Stars: ✭ 23 (+187.5%)
Mutual labels:  game-server, gameserver

distributed_game_server


项目属于试水。 经过研究,ignite ,hazelcast等并不适合游戏开发,本项目已废弃,可用的项目地址 :simple_game_server

分布式Java游戏服务器

所用框架

  • Vert.x 构建服务间消息发送系统(这个目前可以用ZeroMQ方便的替换,为了再看看它的能力,留着吧)
  • Zookeeper 分布式发现与注册
  • Springboot 采用非web方式启动,注解编程,方便嫁接Spring系列和其它第三方框架
  • Kryo,fastjson 此两个做为序列化工具,最终还是采用protobuf做为序列化工具了(又测了几个,发现还是proto吧)
  • protobuf3 协议
  • hutool 方便的工具包,顺便学学怎么写各类工具代码
  • netty tcp连接,毕竟Vert.x不熟,暂时先使用netty做为tcp服务器包,后期会继续变更
  • disruptor 已经搭好,但发现它适合执行时间快的,有流水线结构的模型,目前用在项目中做dispatch的话,并没有作用,留着备用
  • MongoDB 数据库。之后要学习怎么集群
  • ignite 分布式Map,数据网格。现在用它实现了缓存系统和发现注册系统,之后想观察下它的分布式计算功能(分布式Map功能暂时不想用,太难配置好)

打算围绕Vert.x打造一款开发便利的分布式游戏服务系统

数据库初步打算使用ignite ------ 经历换了zookeepr,vertx,zeromq等方式后,集群连接目前采用的是 vertx+zookeeper方案。(已更换为Infinispan + vertx,上线肯定要用Zookeeper,Zookeeper还是稳,并且嵌入式的连接,节点增多为N时,每个节点都会维护N-1个心跳)(由于底层不打算用mysql,所以就只使用ignite做连接和缓存层,数据用MongoDB,由于用Spring data ,也可以任意替换的。)

研究了一个多月的缓存,终于用舒服的方式实现了。  本版实现为 ignite  write-behind模式,get可以load数据进入缓存,put会调用write方法实现写数据库。  实现了只对缓存层进行操作,基本数据,有缓存的部分,无需调用数据库操作。 其它需要调用数据库的如分页、排行、特定查询等,可以调用dao, 实现了灵活的操作与配置。 如需优化:如 根据名字等条件查询数据也做缓存---这个以后再考虑。

缓存的备选: ehcache,这个也有write-behind和其它灵活的配置方式,但不知道为什么对它巨长无比的类名、builder模式和非常复杂的配置不太感冒,以后可以再继续研究; caffeine 这个缓存也不错,待研究,本阶段还没有需要驱逐策略的缓存实现,以后也许有用。双层可以 redis,ehcache等。

之后的计划:

  • 0 最重要的公共缓存还没有设计,工会,好友,组队这几个,要保证一致性还有很长的路要走。
  • 1 把vertx再看详细点,暂时还未发现它有不可替代的作用,发消息层面,用netty和zeromq更顺手。看一下 vertx conf,做配置中心
  • 2 任务系统: 做游戏,这种任务系统比较重要,想设计一个大一统的任务系统。包括:任务、成就、活动、签到等等,只要是要完成一个事件,事件里要分几个步骤,每个步骤要收集多少东西,怎么完成怎么奖励,类似于这种东西,都可以集成在这个大系统里。想把这个当成一种插件形式的,只提供,步骤、天数、开始结束时间、个数、触发条件、完成条件等,不涉及具体设计,以便灵活使用。最好是配置的。
  • 3 quartz服务时间调度服务器,这个优先级比较低。
  • 4 线程池研究,对现在的线程发配方式比较不满意,想研究深入一点,线程池。
  • 5 监控系统研究、系统测试研究。使服务可观察,可测量。这方面知识比较少。
  • 6 Jenkins、TeamCity等流程化部署
  • 7 最后就是全部docker化,k8s研究

PS 了解到了 分布式conf原来只能提供键值对。也就是更适合做全局的控制配置,比如log级别,或者是取代profile,在多环境开发下,方便的控制各环境的变量 对异构的服务器,支持还是得放在properties里。excel这类的配置,可以放在统一服务器,做轮询处理或者是更改后统一通知其它端去取。 所以要使用Apollo,和自己写个conf服搞这个事

最近暂停一下了。分布式缓存这里并没有什么新的想法。 最近学习一下, 1 如何用Scala抹平Java里的设计模式 2 学习《设计数据密集型应用》这本书,了解数据在程序中的真正价值

ignite启动慢,过于复杂。 vertx的关键特性(异步)用不上。ignite的全局缓存也够呛能学会了。 下一步计划(临时,谁知道会不会改呢): 重弄个程序: 1 用hazelcast做发现,用hazelcast的 write-behind。尽量封装得里层些,对外部也只是简单缓存,抛弃分布 式缓存的想法吧,不适合用在游戏里。 2 用zeromq做节点通信。真是又快又稳呐,或者直接用hazelcast的? 3 改成rpc,抛弃发送消息的模式,做单发,和来回的就行,里面要包含超时和异常的处理。 4 可以试试做成Kotlin版的,这样就不用Quasar了,可以用协程,也试试新东西。 5 要不用hazelcast的一大套也行,分布式Event什么的

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].