推广下自己的JAVA开源游戏服务端框架

Carmelo是基于Java的游戏服务端框架,适合于页游和手游。它的主要特点是:

  1. 利用Netty实现高效的NIO通信,同时支持TCP/HTTP协议
  2. 完善的三层架构模型,易扩展
  3. 通用、完善的session管理机制,无需从头实现
  4. 提供了完整的server/client demo,可以作为很好的开发参考
  5. 提供较多游戏开发常用的工具类(后面准备陆续加入)

项目网址(欢迎watch和star):
https://github.com/needmorecode/game-server-framework

第一次做开源项目,万事开头难。目前项目只是一个雏形,想必还有许多考虑不周和不完善的地方,欢迎指出和提建议。我只要有时间都会一一回应。做这个项目也是打算长期经营下去,尽力做到完善,达到传播技术、共同学习的目的。

—————————————————————————————————————————
2018.7.22更新版本1.0.1:

  • 完善新手实例
  • 完善session id生成机制(加密)
  • 加入心跳包机制(三分钟超时)

—————————————————————————————————————————
2018.7.29更新:

  • 改进json工具类

—————————————————————————————————————————
2019.3.2更新:

  • 日志管理
    引入logback,日志分为多种:interface,login,timer,error。

—————————————————————————————————————————
2019.3.6更新:

  • 加入定时器
    考虑到Java自带的timer有以下缺点:

    • 不支持修改系统时间。它是基于wait实现的,系统时间调整后无法随之动态调整。
    • 是用单线程实现。所以当一个任务执行时间过长时,会影响下个任务执行。
    • 未捕捉的异常会导致线程死掉,无法继续执行后续任务。

自己实现的timer规避了以上问题,使用线程池调度任务,基于线程轮询而非wait来处理任务执行,且框架支持timer日志打印。
—————————————————————————————————————————
2019.3.13更新:

  • 增加热更新功能
    目前最主流的Java热更新方法,主要思想是attach到Java进程,替换class文件,使用到agentmain、Instrumentation等技术;虽然有只能修改方法体内部的限制,但对于游戏来说已足够。
    同时看到有个开源项目HotswapAgent,号称可以做到无限制修改运行时的class,具体没有深究。

  • 使用druid替代proxool
    考虑到proxool已经多年没有维护了,而druid是目前最主流的数据库连接池之一,性能更好。

—————————————————————————————————————————
2019.3.24更新:

  • 使用gzip压缩服务端返回消息
  • 增加服务器之间的rpc功能
    实现思路是将参数和返回值中的对象序列化成json字符串,然后rpc command本身也编码进字节数组(同普通command)。实现效果是要做到同本地调用方法一样方便。

—————————————————————————————————————————
2019.3.27更新:

  • 支持websocket协议

—————————————————————————————————————————
2019.11.16更新:

  • 支持kcp协议
    kcp是一种应用较广泛的可靠udp协议,开发者是linwei。它适合于追求极低延迟的游戏场景。这里使用的是它的一个Java实现:kcp-netty
  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值