向 Lance Game 中的个别玩家发送 "secret" 数据
Sending "secret" data to individual players in Lance Game
我想知道 lance-gg 中是否有一种简单的方法可以将玩家特定数据仅发送给每个玩家,而不是将所有数据发送给所有玩家。
我希望创建一个扑克游戏,并且不希望将每个玩家所持牌的数据广播给所有玩家,而是只让每个玩家收到有关他们自己牌的信息。
在当前的 GameEngine 和 ServerEngine 之间是否可以轻松实现?
在游戏过程中需要执行以下步骤:
- "deal" 给每位玩家发牌(分别向每位玩家发牌,并广播一个事件以指示其他客户端应该为正在发牌的玩家制作接收卡片的动画)
- 在要更新的其他数据之外存储和保存发牌
- 如果玩家断开连接并在手牌中重新连接,则检索玩家卡
- "reveal" 张牌(向所有玩家广播任何翻牌和摊牌牌)
玩家的卡片也需要存储在服务器上,而不是每一步都重新广播。
Lance 中有一个可用于客户端-服务器通信的低级网络层。
例如,如果服务器要向所有客户端发送带有数据 shakeData = { ... }
的事件 shakeItUp
,游戏的 serverEngine 将调用:
this.io.sockets.emit('shakeItUp', shakeData);
要向特定玩家发送事件和数据,serverEngine class 可以做到
for (let socketId of Object.keys(this.connectedPlayers)) {
let player = this.connectedPlayers[socketId];
let playerId = player.socket.playerId;
let message = `hello player ${playerId}`;
this.connectedPlayers[socketId].socket.emit('secret', message);
}
客户端监听来自ClientEngine子class的消息,连接建立后:
// extend ClientEngine connect to add own events
connect() {
return super.connect().then(() => {
this.socket.on('secret', (e) => {
console.log(`my secret: ${e}`);
});
});
}
我想知道 lance-gg 中是否有一种简单的方法可以将玩家特定数据仅发送给每个玩家,而不是将所有数据发送给所有玩家。
我希望创建一个扑克游戏,并且不希望将每个玩家所持牌的数据广播给所有玩家,而是只让每个玩家收到有关他们自己牌的信息。
在当前的 GameEngine 和 ServerEngine 之间是否可以轻松实现?
在游戏过程中需要执行以下步骤:
- "deal" 给每位玩家发牌(分别向每位玩家发牌,并广播一个事件以指示其他客户端应该为正在发牌的玩家制作接收卡片的动画)
- 在要更新的其他数据之外存储和保存发牌
- 如果玩家断开连接并在手牌中重新连接,则检索玩家卡
- "reveal" 张牌(向所有玩家广播任何翻牌和摊牌牌)
玩家的卡片也需要存储在服务器上,而不是每一步都重新广播。
Lance 中有一个可用于客户端-服务器通信的低级网络层。
例如,如果服务器要向所有客户端发送带有数据 shakeData = { ... }
的事件 shakeItUp
,游戏的 serverEngine 将调用:
this.io.sockets.emit('shakeItUp', shakeData);
要向特定玩家发送事件和数据,serverEngine class 可以做到
for (let socketId of Object.keys(this.connectedPlayers)) {
let player = this.connectedPlayers[socketId];
let playerId = player.socket.playerId;
let message = `hello player ${playerId}`;
this.connectedPlayers[socketId].socket.emit('secret', message);
}
客户端监听来自ClientEngine子class的消息,连接建立后:
// extend ClientEngine connect to add own events
connect() {
return super.connect().then(() => {
this.socket.on('secret', (e) => {
console.log(`my secret: ${e}`);
});
});
}