用户:
阳光的流熔怪Uyt5查看:905 回复:12 评论:36 创建时间:2021-01-05T20:29:51

源灵工作室 一个路人 出品
hoho各位好这里是路人
想必大家都听说过多人联机游戏
今天呢小编就给大家……(被打)
咳咳说正事
首先,一个多人联机游戏至少需要两个功能:
1.游戏玩法
2.多人联机
今天就从最简单的说起:一个2D的漫游
1.游戏玩法:可以用WASD键进行移动
2.多人联机:可以看到同时正在玩的其他玩家
成品:
第一个玩法很容易实现,但比较难的是第二个:如何把其他玩家的数据发送到自己这里呢?
众所周知编程猫源码编辑器有一个东西叫做云变量
用这个东西可以将自己的数据存储到公共变量上使得别的人的程序也能看到
看起来是这样的:

但是,这样还不够
我们做的是多人联机,就代表着可能玩家不止两个,如何同时获取他们的信息呢?
我们可以使用云列表
现在它会变成这样:

这就很完美是不是?
接下来,分析我们要存储的信息:对于每个玩家,“能让别人看到他”这个条件只需要对方能够知道他的位置,从而显示出他的影像,所以我们只需要存储他的x和y坐标即可
等等,还有一个问题!
如何判断一个玩家是否离线?
编程猫中玩家一旦退出程序是不会有反应的,怎么样才能判断一个玩家是否已经退出了呢?
答案是:数数
想象一下你和你的同伴在一个小黑屋里,互相看不到对方也听不见其他人说话
你们没人面前有一个黑板,可以被别人看见,这个黑板写上去的字会一直保存直到下一次写字,并且只能写“1”个字
(云变量的性质)
这时候你想知道你的所有同伴是否都一直在这里,怎么办呢?
容易想到的是让你的同伴一直写字,在这种情况下一旦有人离开就会停止写字
但是这种方案有一个问题,将它应用到程序上时,一次只能看到云变量的一个时刻状态,怎么才能知道别人还在不在写字呢
一种更好的办法是让每个人都不断地写自己看到的时间,这样当别人写的时间和自己的不一样时,你就可以知道别人离开了
那么,将它改成程序,就是在用户数据云列表中添加一栏“t”,表示这个用户的时间
每个用户只要他还在线他的程序就会不断地隔一段时间更新t为当前的时间
然后可以根据用户数据列表里t一栏来判断这个用户是否在线
所以看起来是这样的:

(完)
作业:请试试实现用云列表储存用户数据
(路人你慢着()源灵可能以后会找人换图标(过于简陋))
哈哈哈哈哈哈哈哈路人给源灵的教程开了一个好头()
对联机这玩意的解释实在太精辟了(笑死在电脑前)
唯一的建议是……路人你把刚刚吞下去的积木块吐出来()
(哔——)
观澜区质检完会着手研究剧情作品的教程(泪目)边写作业边做作品边研究边整岛三边玩游x……(划掉)
(观澜:路人加油路人冲啊路人赛高!٩(๑òωó๑)۶)
点赞0
评论
观澜赛高!
积木什么的中下会弄哒
路人你意——(哔——)路人赛高┗|`O′|┛
观澜赛高┗|`O′|┛
(商业互吹现场)
(大型商业互吹现场)(继续编教程了哈)
呼写完了(别写作业边弄)
好了2.0写完了(边刷题边弄)(观澜继续提建议哈)
说好的不进工作室呢
晨月霜星这个联机会,只是不会分房间匹配,已导致只能做有限人数的联机程序
点赞0
评论
匹配还是比较容易的,虽然我说不出来
并不是有限人数哦,云列表从理论来说只要足够大就可以装下所有人的数据
主要问题还是匹配
有待研究
嘛,如果是匹配的话可以去看云业余大佬的联机教程
云列表的话,要是配合登录系统(我说的不是编程猫账号登录,是直接用云列表注册。况且那种编程猫账号登录我还真不会),那x,y的两个列表就得和玩家项对应上。(可能各位大佬做的原理和我的不一样)
用私云存玩家编号位置,再弄个变量压缩即可
(好像没有人注意到第二期早就出来了)
我去看看。。。 我们现在的工程不需要云端,暂时不用
啊,我去搜
看顶上。。。
……
az
我只是写了个教程周六日再做地图啊喂!(大雾)
?/?
十分疑惑,你在说啥
没事。。。
别我跑到哪你捉到哪(还有别在别人评论底下聊哈)
哦哦哦,好似懂了!(疯狂的捉对吧!)
可爱的我不知所措
什么压缩
哦谢谢