如何在服务端实现游戏逻辑

在上一期,我们分享了如何开发答题对战小游戏,通过这个小游戏给大家展示了对战开发的基础结构:对战类游戏有很多房间在同时进行游戏,游戏过程中,房间内玩家之间的通信均通过 LeanCloud Play 实时对战转发。


640?wx_fmt=jpeg


游戏中,我们还使用了 MasterClient ,作为一个裁判或上帝视角的角色,用于出题及判断每个玩家的分数。Play 实时对战默认房间的创建者为 MasterClient,也就是说,创建房间的 Client 会有两种身份,一个是普通的玩家,另一个是 MasterClient 裁判角色。


640?wx_fmt=png


MasterClient 除了在答题小游戏中出题之外,还可以在卡牌类游戏中洗牌、控制刷怪的时机或等级、判断游戏胜负等等。它掌握着房间内整个游戏逻辑。


640?wx_fmt=png


既然 MasterClient 是个这么重要的角色,那么我们把他放在客户端就会有一个重要问题:安全隐患。例如客户端的代码被破解之后,MasterClient 身份的玩家可以篡改游戏数据,指定本该输掉的人胜利等。


640?wx_fmt=png


为了解决这个问题,我们把控制游戏逻辑的 MasterClient 从客户端移到服务端,这样从客户端就拿不到游戏逻辑代码,进而也无法控制游戏逻辑。我们把每个房间的 MasterClient 托管在一个叫 Client Engine 的后端服务上,MasterClient 在 Client Engine 中通过实时对战后端服务和客户端进行交互。产生了新的架构:


640?wx_fmt=png


这里 Client Engine 和实时对战云都是 LeanCloud 的服务,同在 LeanCloud 的后端内网中。


实战开发


目标 Demo


下面我们感受下如何基于这种架构开发小游戏,在这次分享中我们的目标是开发一个剪刀石头布对战小游戏(https://client-engine-app.leanapp.cn/)。你可以用两个浏览器打开这个页面,感受下整个小游戏。两个客户端点击「快速开始」,进入到同一个房间内,游戏开始后进行猜拳,一轮猜拳后判断胜负,游戏结束。


游戏逻辑


我们把游戏逻辑拆解为以下步骤:


  1. 进入房间:客户端点击「快速开始」时,MasterClient 及玩家客户端 A 和 B 进入同一房间

  2. 双方开始游戏:

  • 玩家 A 选择手势

  • 玩家 B 界面展示:对方已选择

  • 玩家 B 选择手势

  • 玩家 A 界面展示:对方已选择

  • 玩家 A 及 B 的界面展示结果

  3. 游戏结束,双方离开房间,房间销毁。


服务和语言


  1. 服务选择:选择已经搭建好的后端服务 LeanCloud Play,不需要我们再自己去搭建后端整体架构。

  • 服务端逻辑控制:Client Engine

  • 游戏内通信:实时对战服务

   2.  语言选择:JavaScript(这样我们一个人就能搞定前端和后端的代码)


明确服务端及客户端的分工


  • 服务端:托管 MasterClient 代码,控制游戏逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值