開源遊戲框架
一、netty+redis分散式搭建棋牌遊戲伺服器
https://github.com/shiyun3210/jyqp
https://github.com/shiyun3210/jyqp.git
二、開源麻將,供使用者學習。使用netty 開發
https://github.com/henanren/majiang
https://github.com/henanren/majiang.git
作者部落格:
啟動流程:
三、使用netty4.X實現的手機遊戲伺服器
支援tcp,udp,http,websocket連結,採用protobuf自定義協議棧進行網路通訊,支援rpc遠端呼叫,使用mybatis3支援db儲存分庫分表,支援非同步mysql儲存,db儲存時同步更新reids快取。 使用ExcelToCode工程,將excel資料生成java類和json資料字典,DictService直接讀取json,減少資料字典部分程式碼。使用game-executor工程,增加遊戲內的非同步事件全域性服務, 支援事件sharding,均衡的非同步執行事件邏輯
https://github.com/jwpttcg66/NettyGameServer
https://github.com/jwpttcg66/NettyGameServer.git
文件地址
https://github.com/jwpttcg66/NettyGameServer/wiki
四、JgFramework - 基於Netty的強大的遊戲伺服器框架
https://github.com/bupt1987/JgFramework
https://github.com/bupt1987/JgFramework.git
特點
1、使用netty作為底層,效能得到保障
2、支援socket和websocket2種連線模式,可以自由選擇
3、簡單實用的路由,方便handler開發
4、非同步無鎖的資料同步
5、spring+Hibernia的自動注入和事務管理
6、mysql資料庫的讀寫分離以及對多資料庫的讀寫支援
7、傳輸資料的多樣化,可以自用實現介面來實現不同的傳輸資料型別,現在使用的是json
8、框架自帶了認證服務和管理服務,有簡單的管理命令,需要telnet連線到埠(預設38080)
9、方便的ip段限制功能
10、方便設定心跳檢查
11、登入方和服務端之間的認證,可通過實際介面來完成,預設使用的rsa加密傳輸認證碼
12、效能優良的排隊系統
13、豐富的工具類:memcache、redis等
14、基本遊戲模組的抽象
效能測試
測試資訊
cpu : AMD A10
記憶體 : 8G
測試專案 : https://github.com/bupt1987/JgWeb
測試指令碼 : src/test/java/client/TestWebSocket.java
測試方式 : 自壓
測試結果
在100個登入使用者,每個使用者在登入完成,再init操作之後,每個使用者傳送100000個請求,
得到每秒處理請求數在3.5W左右。
歡迎加入
如果對該系統有興趣可以發郵件至 [email protected] 一起探討,歡迎加入
五、JgFramework-demo
https://github.com/bupt1987/JgWeb
https://github.com/bupt1987/JgWeb.git
注意事項
1、開發是在Eclipse下開發的,需要maven支援,jdk在1.7以上
2、啟動使用tomcat或者直接執行com.zhaidaosi.game.serve.BootStart 中的main方法。
3、如果是tomcat的訪問http://127.0.0.1/JgWeb,如果是執行main方法的,
用瀏覽器開啟src/main/webapp/index.html即可
4、注意新建資料庫,sql在docs目錄下,還要注意資料庫使用者名稱密碼,
在src/main/java/jdbc.properties
配置檔案
見src/main/java/下
1、spring的配置檔案:applicationContext.xml和services.xml
2、框架配置檔案:jgframework.properties,
預設配置見JgFramework框架中的default_jgframework.properties
3、資料庫配置:jdbc.properties
六、一個初級基於netty的java遊戲後臺開發框架
https://github.com/vincepeng/gameNettyDemo
https://github.com/vincepeng/gameNettyDemo.git
這是一個基於netty的java遊戲後臺開發框架,很初級但是和當前我司實際開發環境也比較類似. 使用protobuf編碼資料,使用一個short位元組區分訊息型別. 用法: 先搭建好protobuf環境,protobuf.exe放置在lib目錄裡面 然後執行nettyServer; 執行client1,client2,client3之一,可以自動連線服務端,服務端回包歡迎,對應客戶端傳送給服務端一句話,服務端push給所有線上玩家