猫史档案馆


【星空小镇物语】

用户:pspandaacepspandaace查看:10 回复:28 评论:10 创建时间:2020-08-01T15:40:15


欢迎来到星空小镇O(∩_∩)O
在这里,你可以交到朋友
可以自由聊天灌水
楼主长时间在线
大家快来一起玩


回复

上一页1 页 / 共 1下一页
pspandaacepspandaace

欢迎入驻

点赞0


评论


pspandaacepspandaace

空余房间:4(双人房2,单人房1)
一杯咖啡(4星空币   作用:可以送给喜爱的小伙伴哦) 单人床(10星空币)
发一条评论可以获得一枚星空币,用于购买虚拟物品或者与其他用户进行交易,购买素材等等
如果你没有家的话一天会扣除一枚星空币哦

点赞0


评论


pspandaacepspandaace

第一个入驻的用户有10星空币奖励
第二个5枚
第三个3枚

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

王迪发

点赞0


评论


pspandaacepspandaace

先给自己刷

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

啊啊啊啊啊啊啊啊啊啊啊

点赞0


评论


pspandaacepspandaace

11了耶

点赞0


评论


雨还在下Rc雨还在下Rc


今天第一堂课,教给大家联机的最基本原理!

联机游戏,是编程猫里最多人想做却不知道如何下手的东西,都觉得联机很难,其实如果去掉其他复杂的东西,联机的核心机制反而是最最简单的!

一、误区

最初我和大多数人一样,都认为联机是大佬才会的东西,是很复杂的,其实不然。按照一开始的想法,联机游戏应该是有很多人同时在匹配,然后随机两两配对,也就是同一个游戏有很多人同时在联机玩。后来发现这其实是错的!

其实联机游戏,就是按照点击匹配按钮的先后,决定最先点击的两个人进入对战。

二、联机的核心机制

在做完《契灵者》后,我才开始思考联机游戏,买了《战棋》看了源码,对于萌新的我,还是不懂。去社区搜索联机教程,发现也是寥寥无几。然后终于有一天,我想明白了。

今天我教大家的是抛开其它复杂的排队,检测离线,如何在两个玩家间产生联动等等东西,这些咱们先不想,咱们就先思考如何匹配!

联机游戏的核心是云变量,有了云变量,才能实现联机,而实现匹配跳转,只需要两个云变量。

三、如何匹配

1、添加云变量模块(如果连如何添加云变量都不会的话,请不用看这个教程了哈),新建一个云变量命名为“玩家编号”,另一个命名为“房间”。

center_image

center_image

2.添加一个匹配按钮,在按钮上拼积木。

center_image

接下来解释一下这段积木的意思。

当开始匹配按钮被点击的时候,让云变量“玩家编码”增加1,云变量“房间”增加1,普通变量玩家等于此时的云变量“玩家编码”。

问:为什么要让云变量加1呢?

第一个云变量“玩家编码”,是为了在联机中区分谁是玩家1,谁是玩家2,不同的玩家看到的画面当然都是相对的,这个暂时不说,今天单说匹配。

想象一下,老师手里拿着一副按从小到大顺序放好的数字扑克牌。老师要你们一个一个上来领一张扑克牌。第一个拿到扑克牌的人,手里的扑克牌就是1,轮到第二个人的时候,他拿到的扑克牌自然就是2了,第三个人拿到的,当然就是3的扑克牌了,以此类推。

然后老师说,拿到扑克1和扑克2的人,上台来打架……(当然是不可能的!)然后对战就开始了。

同理,如果云变量“玩家编码”的初始值是0,点击一下,云变量变成1了,然后用一个普通变量去等于此刻云变量的值,那么你的号码牌已经确定了,你就是编号为1 的玩家。如果这时候有第二个人点击,云编号是不是又增加1了?那么此时云变量等于2,第二个人也用普通变量等值于此刻的云变量,那么第二个玩家的编号就等于2了。

这个时候玩家的编号就确定了,第一个点击的是玩家1,第二个点击的是玩家2.

既然已经凑齐人了,是不是该开打了?如何判断人够了?这就是云变量“房间”的作用!

每点击一次,房间云变量增加1,所以有两个人点击匹配,房间的值就变成2了。也就是说,现在有两个人了,可以开撸了。所以后面的“如果”语句,就是判断是否该跳转对战了。

于是,可以开始联机了。

问:如果我拼命点击,岂不是自己和自己打了?

理论上是这样,但为了防止同一个玩家没事做,自己点两次匹配,一般都会加一个匹配中的造型,然后来点动画效果,加个积木重复执行直到房间人数等于2。这样的话,按钮程序会在动画效果里循环,同一个玩家点击便不会有变量的改变了。

问:如果有人在对战了,其他人也点击了怎么办?

当然,刚才给大家的代码是不齐全的。可以增加一个当点击时,如果房间人数小于2,正常匹配,否则新建对话“有人在对战了”或者干脆没反应,自由发挥。

问:联机真的这么简单么?

联机当然没有那么简单,要考虑的东西很多。比如有人觉得不好玩喀拉一声就直接关掉网页或者界面怎么办?房间岂不是一直被霸占着?比如怎么样让玩家1看到的和玩家2看到的画面是相对的,很多东西都要考虑,还需要用到很多的云变量去同步两个玩家的状态。

所以建议大家如果要做联机游戏,一开始做些简单的。比如联机石头剪刀布,联机掷骰子之类的,只需要一两个云变量就能同步的游戏。

最后说一句,光看教程没有用,只有正真动手做才能真正进步和学会知识。

点赞0


评论


pspandaacepspandaace

奇怪的知识增加了。。。

点赞0


评论


SGY喵茶九尾SGY喵茶九尾

az

点赞0


评论


SGY喵茶九尾SGY喵茶九尾

把一间双人房抢走

点赞0


评论


pspandaacepspandaace

还剩双人间1,单人间2,快来抢啊(现在双人间要3币 单人间2币)

点赞0


评论


pspandaacepspandaace

欢迎新人

点赞0


评论


pspandaacepspandaace

欢迎

点赞0


评论


pspandaacepspandaace

继续刷

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

有人吗有人吗有人吗有人吗有人吗有人吗有人吗

点赞0


评论


pspandaacepspandaace

都25楼了

点赞0


评论


pspandaacepspandaace

点赞0


评论


pspandaacepspandaace

点赞0


评论


SGY喵茶九尾SGY喵茶九尾

突然出现

点赞0


评论