猫史档案馆


简易的联机游戏(转发)

用户:臻才塑料臻才塑料查看:0 回复:0 评论:0 创建时间:2020-05-07T20:03:30


大噶好,又是我!上次讲了联机匹配的原理和机制,大家都学会了吗?如果没看过的同学可以戳这里飞过去补习一下!

上期地址:《几分钟学会联机原理》https://shequ.codemao.cn/community/177178

既然大家已经知道如何匹配了,那么接下来,咱们就该进阶了,开始制作联机游戏了!这里依旧刨除其它复杂的东西,在不考虑其它优化的情况下,咱们开始来做一个简单的联机小游戏!

一、准备

所谓的联机游戏,就是要有数据的交换,咱们今天不搞太复杂的联机,除了匹配用到的云变量外,游中联机用到的云变量只需要两个!

  正好今天我的新游戏《联机接饮料大赛》发布了,咱们就以这个小游戏的机制为核心,做一个简化版的联机。

  游戏地址:https://shequ.codemao.cn/work/32058872

  做游戏前一定要先想好大概需要实现的效果,和胜负的判断。那么以接下来要做的游戏为例子,机制如下:

按钮控制杯子,接取饮料瓶里随机出现的饮料,谁接的多,谁就获胜!

然后想一下,哪里需要用到云变量呢?当然就是对比两个玩家接取的饮料数据,以此判断输赢,这样一个简单的数据交互联机机制就成型了。

想好框架后,那么就开始准备素材吧!

素材当然是杯子,左右按钮(照顾手机玩家),饮料瓶,水柱(饮料倒出效果,可以自己画。),然后用系统画板写字:对方接取数量,自己接取数量两个素材。

center_image

素材准备好,放在需要的位置后,咱们就开始拼积木了。

二、游戏制作概述

首先要让水柱随机出现在三个瓶子的瓶口,可以让游戏切换到对战屏幕时,开始重复执行。咱们把三个瓶子编号,分别为1,2,3,号。创一个变量命名为“随机水龙头”,让变量随机等于1到3.如果随机数为1,就让水柱显示,移到一号饮料瓶口下边,如果是2号,就移到2号瓶口下边……以此类推。不断重复执行直到倒计时为0。然后是杯子的控制和移动,很简单,这里就不展开说了。

 以上内容都不是重点,联机游戏的内容可以随便换,比如可以不用那么麻烦,直接接取天上掉下的各种东西,然后计算分数等等。

今天教大家的是联机游戏的思路以及核心,所以不会完整地把游戏积木和制作过程啰嗦一遍,想弄联机的同学相信都有点积木编程的基础了,这里就不啰嗦。

接下来是联机的重点:数据的交互。

联机之所以叫联机,是因为敌方的游戏数据,也是另一个玩家制造出来的。联机的核心其实就是将两个玩家的数据同步就可以了。

 在接饮料游戏里,需要同步的游戏数据只有一个:接取的毫升数。那么就简单了,创建两个云变量,分别记录玩家1和玩家2的数值,直接让杯子碰到水柱后,让玩家的云变量实时增加就可以了。

因为云变量是共用的,每个云变量的数值变化,大家都是看得到的,只要用普通变量等于云变量,将普通变量的文字样式修改一下,就可以实时看到对方接取的毫升数了。

但这里要注意的是,哪个云变量对应哪个玩家,需要设定好来。因为匹配的时候咱们已经给玩家编好号码了,所以只要区分谁是玩家1,谁是玩家2,就能用对应的云变量记录了。

center_image

上面这个积木截图是我联机游戏里复制出来的,用的是云列表,道理是一样的。

记录好分数后,等待倒计时为0后,就可以比对谁的云变量更大,大的一方获胜,另一方失败,这样一个完整的联机游戏就做出来了。

 

二、联机游戏的重要思路

最重要的思路还是区分哪个是玩家1,哪个是玩家2,然后分别对应各自数据变化后的情况。所以在联机中,经常会用到以下积木:

center_image

在上边的简化例子中,收到的广播是玩家1失败了,那么相对于玩家2来说,那就是玩家2赢了。所以当他们收到了同样的广播后,不同的玩家会发生不同的情况。玩家1会切换到失败界面,而玩家2则切换到胜利界面。

知道了这个思路后,做联机游戏的时候就要经常在一会儿把自己当成玩家1,一会儿把自己当成玩家2去看代码,在二者中切换思路。所以复杂的联机真的很烦,很不好做!一不小心就会出BUG!

  最后总结一下。

联机的核心是两个玩家的数据交换和同步,以及同一个变化,两个玩家会产生两个不同的相对应反应。

最后举个形象点的例子让大家理解一下联机的原理吧!

树下有三个老头,两个老头要对弈,但他们互相嫌对方长得丑,影响发挥,于是一人拿着一副棋,中间用一个东西遮挡,谁也看不到谁。

  当他们的棋摆好后,让第三个老头(云变量)充当中间人,然后开始下棋了。

 老头1下了一步棋,充当中间人的老头看了一眼老头1下的位置,然后在老头2的棋盘上,摆出了老头1下棋落子后一样的位置。这时老头2知道了对面把棋下在了哪里,也拿着棋下了一步。中间人看到老头2下的位置后,又在老头1 的棋盘上将老头2的棋子位置摆好,这时候老头1自然也知道了对方将棋下在哪里。

  于是重复多次后,一方胜利,一方输了。

虽然他们都没有真正看到对方的棋盘,但有了中间人将两人的棋子坐标同步,自然是可以玩下去了。

这么说,你听明白了吗?


回复

上一页1 页 / 共 0下一页