Skip to content

Commit

Permalink
添加游戏相关的命令
Browse files Browse the repository at this point in the history
  • Loading branch information
shihuaping committed Aug 16, 2017
1 parent 38eec23 commit 177adb2
Show file tree
Hide file tree
Showing 11 changed files with 173 additions and 89 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,8 @@ game_svr 游戏服务器
服务器间通信协议都使用json,因为简单,好调试,易扩展。


游戏服务器包含多个房间,每个房间参数可配置,每个房间里有一个桌子,每个桌子有玩家。
游戏服务器包含多个房间,每个房间参数可配置,每个房间里有一个桌子,每个桌子有玩家。

第三方游戏支付:
骏付通
爱贝
6 changes: 6 additions & 0 deletions center_svr/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

中央服务器

功能:服务注册,服务查询
每一类服务器都有一个单独编号,编号是递增的。如果服务停掉了,这个编号可能会被下一个启动的服务使用。
每个服务都可以带有扩展信息,但是不建议使用,因为一旦添加了扩展信息就意味着中央服务器要修改,中央服务器修改后就需要重启。而中央服务器是单点,一重启就会导致客户端全部掉线。这个编号是给客户端用的,但同一个游戏有多个服务器的时候,用户连上网关以后,网关需要根据这个编号去找对应的服务器。否则就要保证服务端端口永不重复。
1 change: 1 addition & 0 deletions center_svr/center-handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const packet = require('../protocol/packet');
// ip
// port
// activeTime
// serverNo
// ext
// }
function registerServer(serverInfo) {
Expand Down
36 changes: 36 additions & 0 deletions center_svr/redis-oper.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,42 @@ function saveServer(serverInfo) {
if (!jArray) {
jArray = [];
}

let serverIDList = [];
for (let v of jArray) {
serverIDList.push(v.serverNo);
}

serverIDList.sort(function (a,b) {
if(a<b) return -1;
else if(a===b) return 0;
else return 1;
});

let serverId = 1;
let prevID = 0;
let count = 0;
for(let v in serverIDList) {
prevID = v;
count++;
if(count === 1) {
serverId = prevID;
continue;
}
// get a usefull id
if(Math.abs(v-prevID) > 1) {
serverId = prevID + 1;
break;
}
}

// set server number
if(maxServerId > 1000) {
maxServerId = 1;
}
serverInfo.serverNo = maxServerId + 1;


let found = false;
for (let v of jArray) {
if (v.ip === serverInfo.ip) {
Expand Down
67 changes: 16 additions & 51 deletions game_svr/game-handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,57 +2,7 @@

const packet = require('../protocol/packet');
const cmdDefine = require('../protocol/cmd-define');

//房间列表暂时不存数据库了

function createRoom() {

}

function enterRoom() {

}

function leaveRoom() {

}

function dismissRoom() {

}

function reenterRoom() {

}

function queryPlayInfo() {

}

function playerSitDown() {

}

function playerReady() {

}

function playerStandUp() {

}

function palyerWatch() {

}

function playerOpeCard() {

}

function playerWin() {

}

const room = require('./room');

function process(socket, data) {

Expand All @@ -62,28 +12,43 @@ function process(socket, data) {

switch (subCmd) {
case cmdDefine.SUB_GAME_CREATE_ROOM: //创建房间
room.createRoom(socket, jObj);
break;
case cmdDefine.SUB_GAME_ENTER_ROOM: //加入房间
room.enterRoom(socket, jObj);
break;
case cmdDefine.SUB_GAME_LEAVE_ROOM: //离开房间
room.leaveRoom(socket, jObj);
break;
case cmdDefine.SUB_GAME_DISMISS_ROOM: //解散房间
room.dismissRoom(socket, jObj);
break;
case cmdDefine.SUB_GAME_REENTER_ROOM: //断线重进房间
room.reenterRoom(socket, jObj);
break;
case cmdDefine.SUB_GAME_QUERY_PLAYER_INFO: //查询玩家游戏状态
room.queryPlayerInfo(socket, jObj);
break;
case cmdDefine.SUB_GAME_DESK_SIT_DOWN: //坐下
room.playerSitDown(socket, jObj);
break;
case cmdDefine.SUB_GAME_DESK_READY: //准备
room.playerReady(socket, jObj);
break;
case cmdDefine.SUB_GAME_DESK_STAND_UP: //起立
room.playerStandUp(socket, jObj);
break;
case cmdDefine.SUB_GAME_DESK_WATCH: //观战
room.playerWatch(socket, jObj);
break;
case cmdDefine.SUB_GAME_DESK_OPE_CARD: //出牌,过牌,吃牌,碰,杠....等牌操作
room.playerOpeCard(socket, jObj);
break;
case cmdDefine.SUB_GAME_DESK_WIN: //胡牌
room.playerWin(socket, jObj);
break;
case cmdDefine.SUB_GAME_KICK_PLAYER: //房主踢人
room.kickPlayer(socket, jObj);
break;
default:
logger.error("unknown mainCmd:%d,subCmd:%d", mainCmd, subCmd);
Expand Down
1 change: 1 addition & 0 deletions game_svr/plugin/ddz-rule.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

24 changes: 0 additions & 24 deletions game_svr/plugin/ddz.js
Original file line number Diff line number Diff line change
@@ -1,25 +1 @@


//游戏开始
function gameStart() {

}

//游戏结束
function gameEnd() {

}

function gameMessage() {

}

//出牌
function outCard() {

}

//过牌
function passCard() {

}
2 changes: 1 addition & 1 deletion game_svr/register-center.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ function registerSelf() {
let serverInfo = {};
serverInfo.type = constDefine.SERVER_TYPE_GAME;
serverInfo.port = sysConfig.svrPort;
serverInfo.name = "gate_svr";
serverInfo.name = "game_svr";

jObj.body = serverInfo;

Expand Down
12 changes: 12 additions & 0 deletions game_svr/room-list.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

roomIDList = [];
roomList = {};

function initRoomIDList() {

}

function getRoomID() {

}

70 changes: 70 additions & 0 deletions game_svr/room.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@

// room - desk

//房间列表暂时不存数据库了

function createRoom(socket, packet) {

}

function enterRoom(socket, packet) {

}

function leaveRoom(socket, packet) {

}

function dismissRoom(socket, packet) {

}

function reenterRoom(socket, packet) {

}

function queryPlayInfo(socket, packet) {

}

function playerSitDown(socket, packet) {

}

function playerReady(socket, packet) {

}

function playerStandUp(socket, packet) {

}

function playerWatch(socket, packet) {

}

function playerOpeCard(socket, packet) {

}

function playerWin(socket, packet) {

}

function kickPlayer(socket, packet) {

}

exports.createRoom = createRoom;
exports.enterRoom = enterRoom;
exports.dismissRoom = dismissRoom;
exports.reenterRoom = reenterRoom;
exports.leaveRoom = leaveRoom;
exports.queryPlayerInfo = queryPlayInfo;
exports.playerSitDown = playerSitDown;
exports.playerReady = playerReady;
exports.playerStandUp = playerStandUp;
exports.playerWatch = playerWatch;
exports.playerOpeCard = playerOpeCard;
exports.playerWin = playerWin;
exports.kickPlayer = kickPlayer;
37 changes: 25 additions & 12 deletions protocol/cmd-define.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,29 @@
3000-10000 // game server
{
"head":{
"mcmd":1,
"scmd:":1,
"remoteAddress":"127.0.0.1",
"seqNo":0
},
"body": {
//as your wish
}
}
//packet:{
// "head":{
// "mcmd":1,
// "scmd:":1,
// "remoteAddress":"127.0.0.1",
// "seqNo":0
// },
// "body": {
// //as your wish
// }
//}
center server
//
// serverInfo:{
// name
// type
// ip
// port
// activeTime
// serverNo
// ext
// }
*/

module.exports = {
Expand Down Expand Up @@ -49,5 +61,6 @@ module.exports = {
SUB_GAME_DESK_WIN:9, //胡牌
SUB_GAME_REENTER_ROOM:10, //断线重进房间
SUB_GAME_QUERY_PLAYER_INFO:11, //查询玩家游戏状态
SUB_GAME_DESK_WATCH:12 //观战
SUB_GAME_DESK_WATCH:12, //观战
SUB_GAME_KICK_PLAYER:13 //房主踢人
};

0 comments on commit 177adb2

Please sign in to comment.