猫史档案馆


【源灵工作室教程】论如何做一个华丽丽(划去)的多人联机作品(多人联机教程·上)

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


center_image

源灵工作室 一个路人 出品

hoho各位好这里是路人

想必大家都听说过多人联机游戏

今天呢小编就给大家……(被打)

咳咳说正事

首先,一个多人联机游戏至少需要两个功能:

1.游戏玩法

2.多人联机

今天就从最简单的说起:一个2D的漫游

1.游戏玩法:可以用WASD键进行移动

2.多人联机:可以看到同时正在玩的其他玩家

成品:

第一个玩法很容易实现,但比较难的是第二个:如何把其他玩家的数据发送到自己这里呢?

众所周知编程猫源码编辑器有一个东西叫做云变量

用这个东西可以将自己的数据存储到公共变量上使得别的人的程序也能看到

看起来是这样的:

center_image

但是,这样还不够

我们做的是多人联机,就代表着可能玩家不止两个,如何同时获取他们的信息呢?

我们可以使用云列表

现在它会变成这样:

center_image

这就很完美是不是?

接下来,分析我们要存储的信息:对于每个玩家,“能让别人看到他”这个条件只需要对方能够知道他的位置,从而显示出他的影像,所以我们只需要存储他的x和y坐标即可

等等,还有一个问题!

如何判断一个玩家是否离线?

编程猫中玩家一旦退出程序是不会有反应的,怎么样才能判断一个玩家是否已经退出了呢?

答案是:数数

想象一下你和你的同伴在一个小黑屋里,互相看不到对方也听不见其他人说话

你们没人面前有一个黑板,可以被别人看见,这个黑板写上去的字会一直保存直到下一次写字,并且只能写“1”个字

(云变量的性质)

这时候你想知道你的所有同伴是否都一直在这里,怎么办呢?

容易想到的是让你的同伴一直写字,在这种情况下一旦有人离开就会停止写字

但是这种方案有一个问题,将它应用到程序上时,一次只能看到云变量的一个时刻状态,怎么才能知道别人还在不在写字呢

一种更好的办法是让每个人都不断地写自己看到的时间,这样当别人写的时间和自己的不一样时,你就可以知道别人离开了

那么,将它改成程序,就是在用户数据云列表中添加一栏“t”,表示这个用户的时间

每个用户只要他还在线他的程序就会不断地隔一段时间更新t为当前的时间

然后可以根据用户数据列表里t一栏来判断这个用户是否在线

所以看起来是这样的:

center_image

(完)

作业:请试试实现用云列表储存用户数据


回复

上一页1 页 / 共 1下一页
阳光的流熔怪Uyt5阳光的流熔怪Uyt5

点赞0


评论


阳光的流熔怪Uyt5阳光的流熔怪Uyt5

点赞0


评论


望_庐山望_庐山

沙发()

点赞0


评论


未命名用户015734未命名用户015734

(路人你慢着()源灵可能以后会找人换图标(过于简陋))

哈哈哈哈哈哈哈哈路人给源灵的教程开了一个好头()

对联机这玩意的解释实在太精辟了(笑死在电脑前)

唯一的建议是……路人你把刚刚吞下去的积木块吐出来()

(哔——)

观澜区质检完会着手研究剧情作品的教程(泪目)边写作业边做作品边研究边整岛三边玩游x……(划掉)

(观澜:路人加油路人冲啊路人赛高!٩(๑òωó๑)۶)

点赞0


评论


­­­­­­­­­­­­­­

哈哈哈哈

不错不错

用心了的

加油嗷嗷

欢迎来到

养老院吖

点赞1


评论


蕉饼蕉饼

ywty

点赞0


评论


阳光的流熔怪Uyt5阳光的流熔怪Uyt5

dd

点赞0


评论


阿尔法官方阿尔法官方

emotion_编程猫_点赞

点赞4


评论


韵律源点Arcaea韵律源点Arcaea

加精了!ohhhhhhhhhhhhhhhhhhhhh

点赞0


评论


Mellin_AmpMellin_Amp

dd

点赞0


评论


晨月霜星晨月霜星

这个联机会,只是不会分房间匹配,已导致只能做有限人数的联机程序

点赞0


评论


阳光的流熔怪Uyt5阳光的流熔怪Uyt5

第二期链接:https://shequ.codemao.cn/community/356502

点赞0


评论