猫史档案馆


【业余课程】一个简易的联机小游戏制作思路

用户:云业余云业余查看:27 回复:20 评论:27 创建时间:2019-07-27T23:47:11


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

上期地址:《几分钟学会联机原理》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 页 / 共 1下一页
超能喵超能喵

我做的联机10个公云变量完全不够啊emotion_雷电猴_围观

点赞0


评论


银天X银天X

帮顶

点赞0


评论


新作审判者笑终生新作审判者笑终生

业余又发教程了

点赞1


评论


绿鸽LvGe绿鸽LvGe

有点看不懂

点赞1


评论


银天X银天X

给叔叔顶贴(滑稽)

点赞0


评论


银天X银天X

再给哥(叔)哥(叔)顶顶

点赞1


评论


可执行的YJL可执行的YJL

过来个云业(shu)余(shu)顶贴(手动滑稽)

点赞1


评论


YDSmnxYDSmnx

点赞1


评论


阿尔法官方阿尔法官方

阿尔法再打一次卡

点赞1


评论


猫悟淡猫悟淡

顶了个顶

点赞0


评论


假编程猫258假编程猫258

确实是好贴,喵

点赞0


评论


SGgs魔神修罗SGgs魔神修罗

大佬,你阔步阔以加入我们工作室啊?

点赞0


评论


EpiphyllumEpiphyllum

考古,但感觉这教程还是很厉害的,喵顶

点赞1


评论


无邪的小黄鸡qUsl无邪的小黄鸡qUsl

center_image

帮我看一下,问题在哪里

点赞0


评论


高贵的木叶龙A35d高贵的木叶龙A35d

电脑玩家:我**心态崩了,切换一下左右都要0.5秒!

点赞0


评论


SSR级学霸_拉文克劳SSR级学霸_拉文克劳

emotion_编程猫_点赞

点赞0


评论


尼安菌尼安菌

加入我们吧

点赞0


评论


SDSLSDSL

我感觉。。。我在想如果你加入我们工作室了会发生什么,估计都可以写进历史了。。。额嘿嘿

点赞0


评论


忠厚的刺牙螺7ftD忠厚的刺牙螺7ftD

很棒哦emotion_编程猫_点赞emotion_编程猫_点赞emotion_编程猫_点赞

点赞0


评论


传闻中的九黎初璃传闻中的九黎初璃

谢谢大佬!!

点赞0


评论