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

Netty应用:从零搭建Java游戏服务器网络框架 本文介绍了基于Java和Netty框架构建游戏服务器网络框架的技术方案。项目采用Maven管理,支持TCP/UDP双协议,包含完整的服务端和客户端实现。核心部分使用Netty处理网络通信,通过自定义消息处理器实现业务逻辑分发。服务端实现了TCP/UDP服务器的启动配置,客户端完成连接和消息交互功能。文章详细展示了代码结构、核心类实现以及运行测试方法,为游戏网络开发提供了可扩展的基础框架,开发者可在此基础上进一步优化功能。 阅读详情

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。
为什么游戏服务端开发不能踩私服版权红线 当开发者讨论网络游戏服务端架构时,关注的往往是并发处理、状态同步与服务器部署等技术议题。游戏服务端开发作为网络游戏的核心支撑,涉及从底层网络通信到上层业务逻辑的完整技术链路,其技术价值在于支撑大规模玩家同时在线的稳定体验。无论是独立游戏还是商业项目,合法构建游戏服务器都需要遵循软件许可协议与著作权保护原则。然而,所谓冒险岛085服务端源码能进游戏这类话题,本质上绕过了游戏服务端的合法授权边界,涉及对商业服务端程序的非授权获取与运营。这类私服搭建行为不仅侵害游戏版权方的合法权益,也令开发者面临法律风险。理解服 阅读详情

相关推荐

kcp-netty:Java implementation of KCP based on Netty. 基于netty实现的java版kcp

kcp-netty 基于Netty的KCP的Java实现 要使用Maven添加依赖项,请执行以下操作: < dependency> < groupId>io.jpower.kcp</ groupId> < artifactId>kcp-netty</ artifactId> < version>1.4.10</ version> </ dependency> 如何使用 您可以在目录中找到。

Java中使用KCP协议

Java中使用KCP协议_何小成的成长记录-优快云博客_java kcp Java中使用KCP协议——性能测试及应用_何小成的成长记录-优快云博客_kcp协议 传统游戏项目一般使用TCP协议进行通信,得益于它的稳定和可靠,不过在网络不稳定的情况下,会出现丢包严重。 不过近期有不少基于UDP的应用层协议,声称对UDP的不可靠进行了改造,这意味着我们既可以享受网络层提供稳定可靠的服务,又可以享受它的速度。KCP就是这样的一个协议 不过网上说的再天花乱坠,我们也得亲自调研,分析源码和它的机制,并测试它的

优秀技术文章收录 2720

基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务.zip

Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。

java 分布式游戏服务器框架,集群游戏服务器框架,游戏服务器网关框架 ioGame 网络游戏服务器框架

ioGame 是一个由java语言编写的网络游戏服务器框架。支持 websocket、tcp ,适用于全球同服、回合制游戏、策略游戏、即时战斗等游戏服务器的开发。具有高性能、稳定、易用易扩展、超好编程体验等特点。可做为 H5、手游、端游的 java 游戏服务器。ioGame 是轻量级的网络游戏服务器框架,在使用 ioGame 时,只需一个依赖即可获得整个框架,而无需在安装其他服务,如: Nginx、Redis、MQ、Mysql、ZooKeeper、Protobuf协议编译工具 ... ...等。

sinat_40572875的博客 3204

java-Kcp:基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务

java-Kcp 基于netty版本实现的kcp(包含fec功能的实现) KCP是一个基于udp的快速可靠协议(rudp),能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。 maven地址: <dependency> <groupId>com.github.l42111996</groupId> <artifactId>kcp-base</artifactId> <version>1.5</version> </dependency> 兼容性: 兼容c版本kcp fec基于 实现 完美兼容的C#版本, ,快速构建游戏前后端网络库 优化: 基于事件驱动,充分利用多核 优化fastack逻辑,降低10%流量 优化check函数。 优化集合迭代器。 包含fec,降低延迟 附带crc32校验 使用时间轮,优化大量连接cpu

一个基于Java的开源游戏服务器框架实现,使用了Netty、ProtoBuf、Disruptor等.zip

一个基于Java的开源游戏服务器框架实现,使用了Netty、ProtoBuf、Disruptor等

【游戏开发】《Java游戏服务器架构实战》项目在windows上部署

【游戏开发】《Java游戏服务器架构实战》项目在windows上部署

qq_33934427的博客 4474

kcp for java (kcp是一种独立于底层通信协议的重传算法)

kcp是一种独立于底层通信协议的重传算法,jkcp直接构建于udp之上 并提供方便的编程接口,只需要继承相关的类即可;用户不用关心udp 和kcp的使用细节就能轻松驾驭视频、moba类等需要高速传输环境的应用开发

研究了下kcp协议(java netty)

通过织入实现了对获取的udp包的缓存,以实现kcp的操作(超时重传、滑动窗口、分包等)看源码之前还是得先理解其实现用的底层,比如netty,从netty入手知道netty的数据处理一般都是ChannelPipeline.addlast()加入,便能快速理清思路了。十分眼熟的netty标准实现方式,根据配置文件选择channel等。HashedWheelTimer时间轮实现超时重传等功能。一个基于udp协议的低延迟,带宽利用低的可靠传输协议。首先看init:一个用config初始化的函数。

ysqyes的博客 1095

MiniMax H3本地部署与ComfyUI集成实战:从环境配置到提示词优化

文本到视频生成是AI内容创作领域的关键技术,它基于扩散模型等深度学习原理,将自然语言描述转化为连贯的动态视觉序列。这项技术的核心价值在于大幅降低了视频制作的门槛,为短视频创作、概念可视化、教育内容生成等场景提供了高效工具。在实际工程实践中,成功部署和运行此类模型,如近期备受关注的MiniMax H3,需要精准处理环境配置、显存优化和提示词工程等环节。其中,解决“CUDA error: no kernel image is available”等版本兼容性问题,以及针对“8G显存”等有限资源进行参数调优,是确

weixin_33674976的博客 478

用R语言做WGCNA分析全步骤一(附代码解读)【转载】

代码逐句分析一、文章来源二、基因共表达网络构建及模块识别1.数据导入、清洗及预处理2.检查过度缺失值和离群样本3.聚类做离群样本检测4.载入临床特征数据三、自动构建网络及识别模块1.确定合适的软阈值:网络拓扑分析2.一步构建网络和识别模块 一、文章来源 初学WGCNA,觉得博主的代码写的很不错,但其中很多代码在第一遍看的时候有很多地方不理解,后查阅了很多资料,终于看明白了,于是写了一篇笔记,记录自己的学习心得,有不准确的地方,还望各位大佬们不吝赐教~ 原文链接:WGCNA简明指南 二、基因共表达网络构建及模

qq_43138237的博客 2万+

Java语言的游戏开发

游戏开发是一个复杂而有趣的领域,其中涵盖了图形学、物理模拟、人工智能、网络编程等多个学科。随着技术的发展,Java语言在游戏开发中的应用越来越广泛。尽管C++和C#等语言常常占据游戏开发的主流,但Java凭借其跨平台的特性、强大的社区支持以及丰富的类库,逐渐成为一些游戏开发者的首选语言。本文将探讨Java在游戏开发中的应用,介绍其优势与劣势,分析开发流程,并结合实际案例提供一些开发技巧和建议。

2501_90587115的博客 881

【GNSS/Linux】BKG Ntrip Client (BNC) 的编译与安装

【GNSS/Linux】BKG Ntrip Client (BNC) 的编译与安装 1. BNC软件 1.1 软件介绍 The BKG Ntrip Client (BNC) is an Open Source multi-stream client program designed for a variety of real-time GNSS applications. It was primarily designed for receiving data streams from any Ntrip

小马甲的新马甲 7806

python+django/flask游戏分享/游戏资源/游戏下载/游戏平台/游戏社区/游戏论坛/游戏攻略/游戏评测/游戏推荐/游戏大全

网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合,利用python技术建设游戏分享网站,实现游戏分享的信息化。则对于进一步提高游戏分享管理发展,丰富游戏分享管理经验能起到不少的促进作用。

QQ511008285的博客 817

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 758

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 双机位C卷 200分)

这个问题要求模拟打印机的文件调度过程,关键在于正确处理每个打印机队列中的文件优先级和文件进入队列的顺序。优先级处理:每个文件有一个 1 到 10 的优先级,数字越大优先级越高,打印机应首先处理优先级最高的文件。在打印机 1 的队列中插入了 3 个文件,分别有不同的优先级,其中编号 3 的文件优先级最高,先被取出。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10 不同的 优先级,其中数字越大优先级越高。在打印机 2 的队列中插入了 1 个文件,优先级为 1,因此它被首先取出。

学Java,找哪吒 1079

GitHub 漫游指南:从零构建并推广一个成功的 GitHub 开源项目

> 《GitHub 漫游指南》是一本以作者十年 GitHub 实战经验写成的中文电子书,完整讲述了"创建一个开源项目 → 用 Git 与测试、CI 打磨代码质量 → 编写文档与 README → 营销推广 → 维护与获取 Star"的全流程。本文以 [README.md](https://link.gitcode.com/i/f1e1d46bf73316f65118ad246fdb2c51) 为入

gitblog_00169的博客 81

基于YOLOv11的农作物病虫害检测系统设计与实现

我们使用公开的IP102病虫害数据集作为基础,该数据集包含102种病虫害类别,覆盖水稻、小麦、玉米等多种主要农作物。图像数量:75,222张类别数:102图像分辨率:从640×480到4000×3000不等标注格式:PASCAL VOC格式此外,我们还收集了部分田间实际拍摄的图像以增强模型泛化能力。

YOLO 595

CodeCombat 开源项目完全指南:多人在线编程游戏的技术架构、本地开发与贡献实践

CodeCombat 是一个以"游戏化编程学习"为核心的多人在线编程游戏开源项目——玩家通过编写真实代码(Python、JavaScript 等)操控游戏角色闯关,在战斗与解谜中掌握编程技能。本文以仓库根目录 [README.md](https://link.gitcode.com/i/895336f4fccdf3bbafc6ea76004f1f7c) 为主体脉络,结合 [package.json

gitblog_00258的博客 955

18006.STM32通过SPI读取LAN9253数据

【代码】18006.STM32通过SPI读取LAN9253数据。

写给自己的笔记 556

零基础做AI漫剧:Kimi K2.5写本 + Flux生图 + Seedance 2.0动效的保姆级教程

很多零基础小伙伴想做AI漫剧,却被“写剧本、画分镜、做动效”三大难题劝退——不会写剧情、不会画插画、不会做动态,觉得门槛太高。其实不用慌!今天就给大家带来保姆级教程,全程用Kimi K2.5(写剧本)、Flux(生分镜图)、Seedance 2.0(做动效)三个工具,不用专业技能,不用手动绘画,零基础也能在1小时内做出1分钟完整AI漫剧,全程步骤拆解、示例齐全,跟着做就能出片!

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3036

G-Star 精选开源项目推荐|第二期

IvorySQL 是一款先进、功能全面的开源 Oracle 兼容 PostgreSQL,始终承诺 100% 兼容最新版本的 PostgreSQL,并可作为其无缝替代方案。

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 841

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php+vue+Laravel游戏分享网站nodejs-计算机毕业设计

游戏分享网站能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知游戏分享网站的便捷高效,不仅为群众提供了服务,而且也推广了自己,让更多的群众了解自己。对于游戏分享而言,若拥有自己的系统,通过系统得到更好的管理,同时提升了形象。

QQ_511008285的博客 678

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

微服务分布式架构springcloud游戏创意工坊与推广平台的设计与实现_

前端:vue.js+ElementUI开发工具:IDEA 或者eclipse都支持编程语言: java框架:springboot-springcloud数据库: mysql 版本不限数据库工具:Navicat/SQLyog都可以。

QQ3166678367的博客 683

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python基于flask/django游戏分享网站Django-SpringBoot-php-Node.js-flask

网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合,利用python技术建设游戏分享网站,实现游戏分享的信息化。则对于进一步提高游戏分享管理发展,丰富游戏分享管理经验能起到不少的促进作用。

QQ_511008285的博客 1106

项目框架搭建

基本框架: 1、UI框架: 采用网上的一个开源的很火的多层listview嵌套框架,实现系统的主页搭建,以及其他相应界面的搭建,其他界面仍在开发过程中,所以这里暂时没有贴图 2.网络框架 采用valley网络框架: 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西...

chenliang0252的博客 165
上一篇: 如何将普通Java工程转成Maven工程
下一篇: Pomelo环境搭建完整攻略
长三月
博客等级 码龄9年 228粉丝 80原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值