猫史档案馆


【业余课程】详解联机匹配模块

用户:云业余云业余查看:4232 回复:66 评论:18 创建时间:2020-03-17T01:39:46


好久没写教程了,为了让大学都能学会联机,我正在创作联机教程作品,会把联机用到的所有模块都教一遍。今天完成了联机模块的讲解,先放给大家学习。真正的作品里边有形象的演示,希望大家都能做出自己心仪的联机作品吧!

匹配模块

  

  匹配是联机的第一步,也是入门时候比较难的一步。

首先,匹配的原理是啥怎么才能匹配玩家?很多人在这一步就被难住了。这不怪大家,我当初也是一脸懵逼,后来喵了一下,然后就灵光一闪融汇贯通了(其实不是!)……-当初是在论坛里把所有关于联机的帖子都翻了一遍,这才慢慢融会贯通的。-那时候翻到《战棋》的源码,感叹作者的排队联机牛掰的同时,自己身为一个萌新却是难懂大神的思路。后来我终于想到了更加简单的联机

匹配方法:

  

  1.首先创建一个公有云变量(不是私有哦),我习惯命名为“玩家编号”。

  

  -2.创建一个本地普通变量,命名为“本地玩家编号”。-然后我先上积木,待

  

  会儿再来解释意思。

center_image

  

  现在我们来看一下,刚才你点的那一下按钮,里边的程序运行到底发生了什么

  

  事情。(大家可以在作品里拼出这段积木,写在匹配按钮里,匹配按钮三个造型)

  

  对照着点击按钮后变量的变化,咱们来看一下第一段匹配积木。

center_image

截图中的这一段积木,是给匹配的玩家编个号码,以便于区分两个玩家看到的不同画面和操

作对象。还有就是记录有多少个人在匹配,如果云变量等于2,就是说有两个人点击了匹配,那么咱们就可以成功切换屏幕进入对战了。

咱们再来分析一下。为什么要让云变量玩家编号增加1呢?

很简单,这是为了记录现在有多少人按下匹配按钮。

你可以把云变量玩家编号想象成一个房子,每当有一个玩家点击匹配的时候,就等于进入了这个房子里。空的房子,里边没有人,所以没人匹配的时候,云变量为0;当有一个人点击匹配的时候,等于房子里进去了一个人,所以要让【云变量玩家编号】增加1啦!

  那为什么又要设置普通变量本地玩家编号等于云变量呢?-这么做是为了区分两个玩家,给匹配的玩家编个号码。这样在对战的时候,才能让程序分辨现在操作的是哪个玩家,看到的画面和操作的角色是哪个。不同玩家看到的画面都是相对的,这个咱们后面再讲。

  

  用云玩家编号记录了房间人数以及给匹配的玩家编号以后,咱们就要让这段程序进入一个循环,否则如果没有进入循环,自己再次点击就会与自己匹配,再次增加云编号人数和重新给玩家编号,就会出现BUG。-进入循环积木后,按钮就会一直改变大小,直到满足“房间有两个人了”或者“玩家自己取消了匹配”这两个条件,才会退出循环,进入下一个积木程序。(补充:在进入循环之前,应该还要加个广播让原本隐藏的取消按钮出现,这里忘记加了。)

  

  然后咱们来看最后的下半段积木。

center_image  如果满足了循环退出条件,那么肯定就会出现两种情况中的一种。所以咱们分别用如果积木来规定出现的每一种情况,该怎么做。-

  第一种情况,就是匹配成功了,云变量变成了2,说明有两个人点击了匹配。既然匹配成功,为了让玩家能够看到“匹配成功”几个字,咱们等待0.5秒,然后就把匹配的两个人送到对战屏幕去,这样完整的匹配过程就完成了。

  

  因为其它玩家没有点击匹配按钮,所以他们并没有进入积木点击后的程序,即便云变量改变,对没有匹配的玩家来说,也是没有影响的。就算有玩家点击了匹配,但如果云变量也就是房间人数大于2满了,那么他就不满足进入匹配的条件,就会显示提示“房间对战中,请稍后”。这样的话,他也同样进入不了匹配程序,从而不会受到切换屏幕的影响。

  

  然后是第二种情况,玩家自己取消匹配。这里我设置了一个普通变量“取消”,用数字“0”,代表默认不取消,用“1”代表玩家选择了取消匹配。当玩家点击匹配时候,会发送广播,让原本隐藏的取消按钮显示。当玩家点下取消按钮的时候,按键隐藏,同时设置取消的值为1,也就是告诉程序,我不匹配了!-所以这也是为什么设置“取消=1”的时候退出循环。如果是因为玩家自己取消退出循环的,那么我们就要用如果积木,执行玩家取消匹配以后的操作。

  

  玩家自己取消匹配以后,可不单单是直接切换到“开始匹配”造型而已。因为你点击匹配的时候,使得云变量增加了,还给你自己编了号,然后点取消按钮的时候,变量取消的值也变了。所以如果分手了,请把我给你的所有东西还给我!-于是你就看到了,如果取消=1,云变量玩家编号减掉1(等于有个人不在房间里了),自己的本地编号也要还原,设为0。最重要的还有变量取消的值,也给变回来,等于0,否则会出BUG,导致无法匹配。

  

  至此,匹配的完整机制已经形成。这个匹配机制讲的是“先到先得”,即哪两个人先点了匹配,就给哪两个人进去对战。-大家不要光看不练,建议每学一个模块,都要动手制作试一试,这样理解才会加深。入门了匹配以后,接下来就是联机数据模块了。-准备好了吗?OK,进入下一课吧!(以后作品里每搞定一个模块,我就 先发一个关于这个模块的教程)

  最后还需要补充一段程序,也就是:如果刚开始的时候,在线人数小于等于1,就让云数据恢复初始,清零。如下图。

center_image

 

  这是防止只有一个玩家在线的时候,点了匹配,退出以后再次点击匹配能和自己配对,也是清理房间数据的一个小模块之一。剩下的房间清理模块,我会放到以后说。当然,如果你想测试匹配按钮是否成功,在做作品的时候,可以先把这段积木拆了,测试完再装回去。

  

  

 


回复

上一页第 1 页 / 共 3 页下一页
云业余云业余

求官方加精了喂!让更多人学习到联机知识!

点赞1


评论

哇草我现在才看到


墨绿色的雨墨绿色的雨

顶一顶emotion_编程猫_点赞

点赞0


评论


BW妖妖灵(2号)BW妖妖灵(2号)

666,我必须要收藏

点赞0


评论

怎么收藏?

复制链接

好的谢谢

不用谢


教程喵教程喵

dd

点赞1


评论


WE丶辰风WE丶辰风

期待你后面的教程.赞赞赞!

点赞1


评论


WE丶辰风WE丶辰风

DD

点赞1


评论


北酱北酱

加精!

点赞0


评论


无音音音音无音音音音

如果分手了请把所有东西还给我哈哈哈哈哈哈哈哈哈哈哈草

点赞0


评论

????

迷惑???


一只亿易喵吖一只亿易喵吖

这些按钮的我都知道,但是联机游戏的界面我却无法做出来,因为用两个号试了好几次就是看不到对方的移动和攻击emotion_编程猫_紧张emotion_编程猫_冷漠

点赞1


评论

你这个的话呢,建议公云。第二个就是,你真的用把移动的坐标和攻击的判断创建了云变量吗?


传说中的神眷传说中的神眷

可以是可以,但是联机中怎么移动啊

点赞0


评论

为什么我的不行啊


SYS太阳不及你暖心iSYS太阳不及你暖心i

emotion_编程猫_加油emotion_编程猫_加油emotion_编程猫_加油

点赞0


评论


KLPilMC闪电苦力怕KLPilMC闪电苦力怕

emotion_编程猫_加油

点赞0


评论


名字是什么a名字是什么a

喵d

点赞0


评论


後德载物後德载物

大佬能不能发个帖子讲联机心跳测试?我不会啊T _ T(都是老粉了,就发一个教程吧)

点赞0


评论


CJP碧空万顷CJP碧空万顷

明白了

点赞0


评论


坏坏_坏坏_

大佬又重新了,捕捉

点赞0


评论


小东呀小东呀

emotion_雷电猴_围观

点赞0


评论


欲买桂花同载酒,欲买桂花同载酒,

emotion_编程猫_加油emotion_编程猫_加油emotion_编程猫_加油

点赞0


评论


幻梦无双幻梦无双

emotion_编程猫_加油

点赞0


评论


23K不纯金滑稽23K不纯金滑稽

收藏

点赞0


评论


MC-7UMC-7U

emotion_编程猫_点赞emotion_编程猫_嗨起来

点赞0


评论


MC-7UMC-7U

emotion_编程猫_点赞

点赞0


评论


唯爱_晨曦骄阳唯爱_晨曦骄阳

center_image

点赞0


评论


皇家666皇家666

emotion_雷电猴_笑趴emotion_雷电猴_围观emotion_编程猫_点赞emotion_编程猫_谢谢老板

点赞0


评论


BSS梅者如西BSS梅者如西

真棒,我学废了

点赞0


评论

我也是

针不戳,我学会了


细心的草灵灵As0X细心的草灵灵As0X

emotion_编程猫_冷漠

点赞0


评论


云游box3der尖头叉子云游box3der尖头叉子

emotion_雷电猴_疑问

点赞1


评论


勤劳的流星猫zkqY勤劳的流星猫zkqY

emotion_编程猫_加油

点赞0


评论


野生编程猫野生编程猫

emotion_编程猫_搓头

点赞0


评论


马虎的星能猫Gqjt马虎的星能猫Gqjt

emotion_编程猫_谢谢老板

点赞0


评论