{"id":15014306,"url":"https://github.com/kingston-csj/jforgame","last_synced_at":"2025-05-14T19:05:44.947Z","repository":{"id":38867542,"uuid":"94669987","full_name":"kingston-csj/jforgame","owner":"kingston-csj","description":"jforgame是一个一站式游戏服务器开发框架。包含游戏服务器开发所需要的各种组件，比如网关，socket服务端与客户端，自定义高效消息编解码，游戏热更新，游戏通用工具等等。包含游戏服，跨服，匹配服，后台管理系统等实现，同时提供大量业务案例以供学习。亦可用于其他socket应用，例如及时聊天等。","archived":false,"fork":false,"pushed_at":"2025-03-08T04:52:18.000Z","size":2884,"stargazers_count":983,"open_issues_count":1,"forks_count":319,"subscribers_count":51,"default_branch":"master","last_synced_at":"2025-04-06T09:03:30.561Z","etag":null,"topics":["cocos","game","game-framework","game-server","hotswap","java","mina","netty","network","socket-io","socket-io-client","socket-io-server","socketio","unity","websocket"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kingston-csj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-18T06:41:13.000Z","updated_at":"2025-03-27T09:57:40.000Z","dependencies_parsed_at":"2024-02-26T15:25:24.779Z","dependency_job_id":"fed8d121-d791-43f6-b317-9ede90b05f87","html_url":"https://github.com/kingston-csj/jforgame","commit_stats":{"total_commits":367,"total_committers":8,"mean_commits":45.875,"dds":0.4386920980926431,"last_synced_commit":"adcb78bbcf615568782d34d18e8c22ffafbc1b6a"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingston-csj%2Fjforgame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingston-csj%2Fjforgame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingston-csj%2Fjforgame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingston-csj%2Fjforgame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kingston-csj","download_url":"https://codeload.github.com/kingston-csj/jforgame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248717240,"owners_count":21150387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cocos","game","game-framework","game-server","hotswap","java","mina","netty","network","socket-io","socket-io-client","socket-io-server","socketio","unity","websocket"],"created_at":"2024-09-24T19:45:26.772Z","updated_at":"2025-04-13T12:46:06.451Z","avatar_url":"https://github.com/kingston-csj.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"﻿  ## 中文 | [English](README_EN.md)  \n\n  ## 项目介绍　　\n  jforgame，是一个用java编写的轻量级高性能手游服务端框架。项目提供各种支持快速二次开发的组件，以及对生产环境的服务进行管理的工具。同时，为了使用户能够快速上手，项目提供了若干常用业务功能作为演示。\n\n  ## 项目特点  \n  * 搭配框架博客栏目教程，快速理解项目模块原理  \n  * 支持socket/webSocket接入，完美适配手游/页游/H5/小游戏服务端架构  \n  * 通信协议支持protobuf或普通javabean，为客户端提供多种选择  \n  * 强大的客户端异步/同步api，轻松实现跨进程通信\n  * 使用自定义的轻量级orm工具库，支持多数据源，自动建表增加字段，支持表字段全量/增量更新\n  * 框架提供多种组件，可以直接二次开发业务逻辑  \n  * 不停机热更代码，不停机热更配置，运维，运营不掉线\n  * 喜欢Go语言，这里也支持  --\u003e [Go版游戏服务器](https://github.com/kingston-csj/gforgame)  \n  * 有独立http管理后台网站，为游戏运维/运营提供支持  --\u003e [后台管理系统](https://github.com/kingston-csj/gamekeeper)  \n  * 除了做游戏，也可以用来开发其他网络应用，例如实时聊天  --\u003e [仿QQ聊天应用](https://github.com/kingston-csj/im)  \n\n\n  ## 模块组织结构  \n  ``` git\n  jforgame\n  ├── jforgame-commons --基础公共服务  \n  ├── jforgame-runtime --应用运行时监控数据，包括内存，线程，类等等\n  ├── jforgame-socket-parent     --Tcp socket通信，包括io网关模块，消息路由，会话管理，包含netty和mina版本      \n      ├── jforgame-socket-api    --服务端/客户端基础API接口\n      ├── jforgame-socket-netty  --netty版实现，包含简易WebSocket\n      ├── jforgame-socket-mina   --mina版实现\n  ├── jforgame-orm     --使用自定义精心定制的orm库，用于数据库表记录与程序pojo对象的相互转换        \n  ├── jforgame-spring-boot-starter-data    --以springboot的starter模式封装对配置数据的读取，支持csv，excel等文件格式。支持配置数据热更新,支持二级缓存。       \n  ├── jforgame-hotswap  --支持游戏业务热更新\n  ├── jforgame-codec-parent         --用于socket通信的数据编解码  \n      ├── jforgame-codec-api        --消息编解码API接口\n      ├── jforgame-codec-protobuf   --protobuf实现\n      ├── jforgame-socket-mina      --普通javabean，反射实现  \n  ├── jforgame-demo  --游戏基础组件以及业务逻辑模块  \n  |    ├──  cache包，使用guava cache库，用于支持系统的缓存框架    \n  |    ├──  db包，使用独立线程，异步处理玩家及公共数据的持久化  \n  |    ├──  monitor包，系统监控模块，包括使用jmx对程序进行监控  \n  |    ├──  listener包，事件驱动模型  \n  |    ├──  doctor包，采用Groovy执行任意动态代码，或JDK的instrument机制修改类方法体 \n  |    ├──  cross包，跨服赛事的通信基础 \n  |    ├──  game/gm包，游戏内部金手指命令\n  |    ├──  game/admin包，游戏运营/运维后台命令  \n  |    ├──  redis包，跨服通信（比如跨服排行榜）  \n  |    ├──  tools包，简化项目开发的辅助小工具  \n  |    └──  utils包，各种工具类    \n  ```\n\n  ## 快速开始  \n  1. 各模块demo教程 --\u003e [wiki](https://github.com/kingston-csj/jforgame/wiki/Examples)  \n  2. 使用git下载代码 git clone https://github.com/kingston-csj/jforgame;  \n  3. 将代码导入带有maven插件的IDE(选择根目录下的pom.xml文件);  \n  4. 新建数据库game_data_001和game_user_001，并分别导入test/resources下的同名sql文件;  \n  5. 启动服务端，入口为ServerStartup类;    \n  （如果导入项目所有模块，还需要设置好工作区间。例如idea设置：run-\u003eEditConfirations-\u003eWorkingdirectory,设置为，**\\jforgame\\jforgame-demo。）;  \n  6. 启动客户端，入口为ClientStartup类;  \n  （如果导入项目所有模块，还需要设置好工作区间。例如idea设置：run-\u003eEditConfirations-\u003eWorkingdirectory,设置为，**\\jforgame\\jforgame-demo。)  \n  7. 作为组件导入\n  ```\n    \u003cdependency\u003e\n        \u003cgroupId\u003eio.github.jforgame\u003c/groupId\u003e\n        \u003cartifactId\u003ejforgame-socket-netty\u003c/artifactId\u003e\n        \u003cversion\u003e2.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003eio.github.jforgame\u003c/groupId\u003e\n        \u003cartifactId\u003ejforgame-codec-struct\u003c/artifactId\u003e\n        \u003cversion\u003e2.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n  ```  \n \n  一行代码启动服务器(socket/websocket)\n  ```\n   TcpSocketServerBuilder.newBuilder()\n    .bindingPort(HostAndPort.valueOf(ServerConfig.getInstance().getServerPort()))\n    .setMessageFactory(GameMessageFactory.getInstance())\n    .setMessageCodec(new StructMessageCodec())\n    .setSocketIoDispatcher(new MessageIoDispatcher(ServerScanPaths.MESSAGE_PATH))\n    .build()\n    .start();\n  ```  \n\n  ## 本栏目详细教程   \n  [从零开始搭建游戏服务器框架](https://blog.csdn.net/littleschemer/category_9269220.html)  \n  [漫谈游戏服务器](https://blog.csdn.net/littleschemer/category_12576391.html)\n\n\n  ## 一起交流  \n  欢迎star/fork，欢迎学习/使用，期待一起贡献代码！！\n  如果您发现bug，或者有任何疑问，请提交issue !!  \n  mysql合服工程，基于jforgame的分布式五子棋源代码，私聊获取。  \n  合作/咨询：+Q 641711541  \n  我刚开通了知识星球，快来瞧一瞧吧~~  \n  定时更新基础业务模块开发，付费用户可向星主索取整套可运行源码~~  \n  ![](/screenshots/zsxq.jpg \"知识星球\")\n\n   ## 免责申明\n   本项目只用于学习研究，禁止用于非法获利和商业活动。如产生法律纠纷与作者无关！！\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingston-csj%2Fjforgame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkingston-csj%2Fjforgame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingston-csj%2Fjforgame/lists"}