天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟

标题: 【通用】浅述异步与分车 [打印本页]

作者: Seago    时间: 2020-11-11 17:22
标题: 【通用】浅述异步与分车
本帖最后由 Seago 于 2020-11-11 17:28 编辑

本篇教程将简单讲述异步与分车现象之间的关系,以及如何利用异步。
首先要明确一点,异步并不等于分车。发生分车通常会与异步有关,但并不意味着异步一定会导致分车。所以不用害怕异步,相反,合理的运用异步可以带来很多便捷。

所谓异步,即不同客户端执行了不同的代码、读取了不同的数据、产生了不同的结果。最为常见的就是许多人闻风丧胆的“本地玩家”。本地玩家,顾名思义,这个本地操控者对应的玩家,不同的客户端对应的结果自然是不同的。
针对不同的异步形式,我们姑且定义两个名词:异步操作异步执行
异步操作:不同的客户端执行了不同的代码。
如:用本地玩家进行判断if(本地玩家 == 玩家1)then……endif并非所有玩家都可以满足这个条件,所以if分支内部的都是异步操作。
异步执行:不同的客户端执行了相同的函数,但涉及的数据不同,结果也可能不同。
如:给玩家发送消息,消息为本地玩家Id转换成字符串。那么虽然每个客户端都执行了同样的操作,但每个玩家看到的消息缺是不同的。

异步为什么会存在
联系我们的游戏实践其实很容易理解。玩家需要和游戏进行交互,需要进行一系列的操作,而这些操作每个玩家之间必然是不会完全相同的,所以异步就自然而然的产生了。

什么样的异步是危险的
这点并没有官方的说明,通常都是作者之间总结交流得到一些结论。以我个人经验有以下一些注意事项:
1、涉及到handle的一定要同步操作。比如创建单位、创建特效等。一定要是同步操作,这样才能保证虚拟机种的handle地址始终是对齐的。
而特效并不会实质的参与游戏影响数据,所以也可以尝试同步操作异步执行。单位会参与游戏,可能死亡等,所以一定要同步操作同步执行。
2、单纯的数值类型运算通常是安全的。
这里的数值类型包括整数、实数、布尔值。如果是局部进行计算,并且不影响其他handle的情况下,通常是安全的。
3、字符串最好保持同步。
并没有进行严格的测试去证明这一点,但鉴于对字符串的特殊处理机制,最好时刻对字符串保证同步。

异步的常见用法
1、根据本地玩家,进行异步操作
这是非常常见的。常用于发送特定消息。
2、通过本地玩家,进行异步执行
群发消息消息时可以借由本地玩家异步执行来达到循环的效果,避免不断的if判断。
也可以同步存储数据,再通过本地玩家来异步读取,达到异步展示多面板的效果。这点在此前的哈希表教程中有所讲述。
3、UI相关的大量操作
后续准备推出UI相关的系列教程,将会进行详细的讲述。

不难发现,异步用的多,或者可以带来便利的地方,或多或少都与人机交互有关。



作者: 追风丶    时间: 2020-11-11 17:24
好家伙,我直接踏马好家伙
作者: 天天维度    时间: 2020-11-11 21:36
谢谢分享
作者: 红夜_    时间: 2020-11-11 23:58
不错的经验
作者: thk1992    时间: 2020-11-12 01:12
大佬言之有理
作者: CNWorth    时间: 2020-11-12 09:24
终于明白是什么是异步,什么是分车了!
作者: yishiwangxi    时间: 2020-11-13 10:31
感谢大佬分享

作者: jack-z    时间: 2020-11-15 21:11
谢谢大佬分享
作者: Secret放肆    时间: 2020-11-16 22:57
感谢大佬分享,学习了。
作者: hoyure    时间: 2020-11-17 23:15

不用网易api的ui有木有
作者: Seago    时间: 2020-11-18 00:39
hoyure 发表于 2020-11-17 23:15
不用网易api的ui有木有

没有关注过。
作者: Oeanc    时间: 2020-11-23 01:28
感谢大佬分享
作者: Sun丶包子    时间: 2020-11-28 15:24
看一看。。。
作者: 小水牛喝水    时间: 2020-12-6 23:59
感谢感谢  学习学习
作者: 17671461265    时间: 2020-12-7 16:51
这个有点厉害
作者: FrostKing    时间: 2020-12-9 12:11
大佬牛逼
作者: yu2017    时间: 2020-12-13 05:39
谢谢分享
作者: zcx123456    时间: 2021-1-6 13:42
6666666666666
作者: 天天曰    时间: 2021-1-8 11:09

谢谢分享
作者: 蓝忘机    时间: 2021-1-8 20:49
{:8_295:看了
作者: zqrzogpg    时间: 2021-1-20 09:29
正需要,谢谢大佬
作者: nkjvxdaf    时间: 2021-1-23 16:39
谢谢分享
作者: q345895843    时间: 2021-1-24 18:40
支持一下~~~~
作者: guisheng123    时间: 2021-1-26 08:53
感谢大佬分享
作者: yrtpestu    时间: 2021-2-4 00:29
感谢dalao分享
作者: qq2442519362    时间: 2021-2-4 18:20
好家伙,我直接踏马好家伙
作者: 楼十三    时间: 2021-2-19 08:13
感谢楼主分享

作者: a1308688962    时间: 2021-2-22 11:40
很好用的东西
作者: zh6228812    时间: 2021-2-24 20:43
很不错,支持一个!!!很不错,支持一个!!!
作者: dingbo861    时间: 2021-3-12 10:15
我初次了解异步的时候,看的第一句话就是,尽量只读取不赋值
但看了很多演示图,在异步环境里各种赋值
因此我猜测,有一些变量类型在异步环境里是可以赋值的,但有哪些并不清楚
作者: Seago    时间: 2021-3-12 17:20
dingbo861 发表于 2021-3-12 10:15
我初次了解异步的时候,看的第一句话就是,尽量只读取不赋值
但看了很多演示图,在异步环境里各种赋值
因此 ...

对于值类型,即整数、实数、布尔值等,完全可以异步赋值,只要他们不被用于同步计算。异步读取的前提也是不参与同步计算。例如:你可以异步读取数据供多面板展示,但你不能去计算单位生命值、玩家资源等这些应该同步的数据。
对于handle类型,即常见的点、单位这些,最好不要异步创建或赋值,除非自己对它的整个周期都把握得比较透彻。
作者: Seago    时间: 2021-3-12 17:23
dingbo861 发表于 2021-3-12 10:15
我初次了解异步的时候,看的第一句话就是,尽量只读取不赋值
但看了很多演示图,在异步环境里各种赋值
因此 ...

比较常见的一种异步赋值是调整镜头距离。因为镜头距离本身就是一种异步数据,每个玩家各自没有影响,所以完全可以用同一个变量记录去异步地读和写,每个玩家只需要自己的数据,不关心别人的,整个周期都是异步的,所以没有影响。
作者: demonsung    时间: 2021-3-13 08:43
学习学习

作者: dingbo861    时间: 2021-3-13 10:16
Seago 发表于 2021-3-12 17:23
比较常见的一种异步赋值是调整镜头距离。因为镜头距离本身就是一种异步数据,每个玩家各自没有影响,所以 ...

好的,多谢了
作者: qqwwee147159    时间: 2021-3-17 19:08
谢谢楼主 受益匪浅啊
作者: 你家小夜神    时间: 2021-3-24 13:59
谢谢大佬的讲述
作者: kip0149    时间: 2021-3-26 15:22
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: q1332104840    时间: 2021-4-24 00:27
支持!!!!!!!!!!!!!!!
作者: z409733721    时间: 2021-5-6 18:12
感谢大佬分享
作者: 红尘    时间: 2021-6-24 05:16
观摩加学习  学习
作者: jplenpdl    时间: 2021-7-10 05:50
感谢大佬分享,学习了
作者: alwk    时间: 2021-7-17 04:24
学习一下
作者: uepthsrq    时间: 2021-7-29 14:40
谢谢分享
作者: 咯咯咯    时间: 2021-8-2 12:11
感谢分享,学习学习
作者: 305504952    时间: 2021-8-5 14:11
浅述异步与分车 谢谢分享
作者: 幾千夢想    时间: 2021-10-9 16:35
咔咔咔咔咔咔扩扩扩扩扩扩扩
作者: 洛熙湮    时间: 2021-10-15 18:49
谢谢分享
作者: 小明同学的同学    时间: 2021-10-21 18:11
学习一下
作者: a521367    时间: 2021-11-2 10:36
正好需要,感谢
作者: Lahee~    时间: 2021-11-6 13:28
学习了,感谢大佬
作者: ZAYLB    时间: 2021-11-28 02:57
学习了,谢谢
作者: 随风    时间: 2021-12-6 22:16
谢谢讲解
作者: 万青    时间: 2021-12-8 17:38
走一走看一看
作者: tkatmjyc    时间: 2021-12-9 15:42
666666666666666
作者: hushen0824    时间: 2021-12-18 20:32
看看隐藏的是啥。。。
作者: wszt1234    时间: 2021-12-27 22:30
来学习学习!
作者: Q2336426445    时间: 2021-12-28 11:36
感谢大佬,刚好在研究
作者: kvjesupv    时间: 2022-1-3 02:10
学习一下分车是怎么造成的
作者: 今晚不打老虎    时间: 2022-1-3 05:19
看看,最近异步闹的头疼!!
作者: 死肥宅    时间: 2022-1-8 06:33
5555555666666666
作者: 白泽233    时间: 2022-1-13 09:46
不错的经验,好贴
作者: Tasdasfas    时间: 2022-1-15 20:41
学习了,感谢大佬分享
作者: vdvpdcgb    时间: 2022-1-16 13:09
学到了,感谢大佬的教程
作者: 南宫镇海    时间: 2022-1-29 09:29
不错,支持下楼主
作者: 孤狼    时间: 2022-2-9 14:20
谢谢大佬分享
作者: 洛天雨依依    时间: 2022-2-11 10:35
学习下~~~~~
作者: 祸兮福所倚    时间: 2022-2-21 00:13
大佬的大腿呜呜呜
作者: jxuvkplq    时间: 2022-2-23 22:15
异步与ui 新手噩梦
作者: 1148172801    时间: 2022-3-10 11:42
支持好动西!!!
作者: 咯咯咯    时间: 2022-3-17 16:49
学习学习
作者: kabasiki    时间: 2022-3-18 12:14
大佬牛逼
作者: xianshi    时间: 2022-3-19 23:46
感谢分享666
作者: 迪奥·布兰度    时间: 2022-3-25 15:40
大佬niubi
牛逼
作者: 酒徒_    时间: 2022-3-25 16:23
7777777777777777777777777777777777777777777777777777
作者: 根本停不下来    时间: 2022-4-11 06:16
谢谢分享
作者: nxyjjekb    时间: 2022-5-22 21:48
灌水灌水灌水灌水
作者: foacbfmg    时间: 2022-6-23 01:25
学习学习
作者: 793591431    时间: 2022-7-2 15:31
楼主辛苦了 谢谢分享
作者: gxmy2012    时间: 2022-7-9 01:10
感谢分享前来学习
作者: loclo咯    时间: 2022-7-11 18:48
学习学习
作者: 不朽    时间: 2022-8-2 08:30
看看,感谢!!
作者: qq3878217    时间: 2022-8-26 23:18
支持一下
作者: x2831148090    时间: 2022-9-17 18:12
感谢大佬的分享
作者: 天功作者    时间: 2022-10-1 21:31
大佬真厉害啊~~~~
作者: 剑云    时间: 2022-11-24 10:35
好的东西 6666666
作者: 3142088298    时间: 2022-11-24 22:17
前来学习一下!!!!
作者: 观茶员    时间: 2023-1-18 13:27
学习了!感谢大佬!
作者: 叽叽咋咋    时间: 2023-3-21 02:42
谢谢分享
作者: youwangjile    时间: 2023-4-6 16:04
谢谢分享
作者: OK了    时间: 2023-4-13 14:43
感谢大佬分享,学习了
作者: q332008679    时间: 2023-5-6 14:44
感谢大佬的分享 谢谢
作者: 孟星魂    时间: 2023-5-11 13:10
给我看看
作者: 諏訪百華    时间: 2023-5-11 15:23
感谢大佬分享
作者: cesup852    时间: 2023-5-17 21:57
谢谢大佬分享
作者: xphxgroo    时间: 2023-5-23 13:32
学习学习
作者: Güānɡ    时间: 2023-6-6 16:02
谢谢分享
作者: cfcfp1059    时间: 2023-6-16 17:15
看看,想学异步信息怎么同步
作者: voncy    时间: 2023-6-22 18:09
继续学习
作者: GMs2484990328    时间: 2023-6-22 20:22
隐藏的是什么
作者: zheng4929    时间: 2023-6-25 23:18
看看个看看个看看个看看个看看个看看个




欢迎光临 天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟 (http://bbs.mvprpg.com/) Powered by Discuz! X3.4