你说的雷神之锤3是出了外域DLC的Valve这个雷神之锤3吗?
它的并行监督机制我还稍稍了解一点,但没有详细了解,凭记忆稍稍说点吧。(如有错误请指正,即使我也想学习。)
可能玩红魔玩得少。只但是雷神之锤3的并行很有意思。说到联网,必然有一台伺服器(PS3)。而格斗游戏中的诸多情形,例如专业技能认定,Benfeld犯罪行为,笔记本电脑AI犯罪行为,诸如此类诸多,伺服器皆不管,全部交由应用程序自行认定。
因而这点上和一般的网游不那样呢。
那PS3干吗呢?实际上PS3只干两个简单的事情。
当某玩者A用鼠标选中两个基层单位,让他放个专业技能后。应用程序A首先会向伺服器发一条重要信息,说,我要放专业技能吧。伺服器接到这条重要信息后,会给这个重要信息定两个天数,如某年某月某日某分某秒,应用程序A放了个专业技能。然后把这个结论(主要包括天数戳)该台给大部份应用程序。只好大部份应用程序受到了这条该台(主要包括最初向伺服器发我要放专业技能这条重要信息的应用程序A)。
只好大部份的应用程序根据伺服器该台的重要信息,分别认定和计算应用程序A的玩者在特定天数放这个专业技能可能带来的影响。
特别的,在此过程中,伺服器显然不进行认定,伺服器甚至显然都不知道这局格斗游戏的世界地图长甚么样子,世界地图上有多少个兵。伺服器只做两件事情:该台应用程序提交的最新消息,以及为最新消息加两个标准化的天数戳。
所以既然伺服器认定都不认定,所以同五局格斗游戏为每两个应用程序都可能看见完全相同的情景呢?(假如你在A的笔记本电脑上看见武当派在Murviel皮顿,所以在B的笔记本电脑、C的笔记本电脑上看见的也是武当派在Murviel皮顿。)
即使每五局格斗游戏开始的情形是完全相同的。我们都CX480一个张世界地图,而世界地图都是那样的。因而五局格斗游戏的自变量在每两个应用程序上都是那样的。
而每两个玩者的操作方式,单厢被伺服器标准化加两个天数戳并该台给大部份应用程序。因而在每两个应用程序上,任何玩者(主要包括其它其它应用程序表示的玩者)的任何操作方式也是那样的。
即使我们都是玩同两个格斗游戏,所以专业技能的认定、Benfeld(或笔记本电脑)AI的认定也是那样的。
因而,能明确:对于任一应用程序,自变量完全相同 -> 操作方式完全相同 -> 认定完全相同 -> 结论也完全相同。只好乎,你让你的武当派Murviel皮顿,大部份人的萤幕上单厢看见你的武当派在Murviel皮顿。但在此过程中,伺服器甚至不需要知道“武当派“是甚么,他的大招是甚么。伺服器只负责把大部份应用程序科季夫的最新消息盖个标准化的天数戳再该台出去要是。
当然还有一点值得一说:格斗游戏中是有乱数认定的,怎么保证大部份应用程序的乱数认定结论都完全一致呢?(假如不完全一致会很麻烦,你的萤幕中武当派跳劈劈死敌方了,而他萤幕中武当派只是普通A下被别着急,同五局格斗游戏同两个武当派在两个人看来杀死了敌方,另两个人看来已经死了。此时武当派处于量子叠加态,堪称薛定谔的猫了。)
只但是在格斗游戏开始时,伺服器给每两个应用程序分两个标准化的乱数数种子要是。
OK,大部份问题解决。我们终于能愉快的开五局红魔3了。但是事先声明一下,以上结论都是我的推测,我也没听过Valve官方有说过甚么。假如有谁有权威的解释,方便的话在答案中AT下我咯。
另外,这么做怕应用程序舞弊吗?嗯,得分甚么舞弊。假如是开图此种绅士舞弊犯罪行为,此种监督机制是避免不了的。但假如是飞龙、直降、宋改此种流氓舞弊犯罪行为,此种监督机制显然怕。
即使飞龙、直降、宋改必须有位合理的理由,例如喝飞龙药水,提升反击直降等。自然而然的飞龙和直降敌方的最新消息,你要怎么发给伺服器,而且令伺服器乖乖该台给其它应用程序?换句话说,假如应用程序BUG令玩者能自然而然飞龙直降,所以会发生甚么。
想象一下这么两个情景,两个武当派自然而然迎头痛击率100%反击力1W,只好四处跳劈杀得敌方屁滚尿流。只好舞弊玩者看着心里这个爽。但是武当派自然而然变强这一结论无法该台给其它应用程序,只好其它应用程序那里,武当派只是个战五渣还四处追人砍,然后两遍两遍被别人秒。
只好舞弊玩者更像是陷入了某种幻境中,以为自己叼炸天,只但是自己就一战五渣。被别人血虐自己还不知道呢。
(但是实际情形开此种BUG的玩者早即使数据不并行弹出格斗游戏了。)
顺便提点推论的依据:
1、dota不能断线重连,LOL能。
2、红魔3的录像只能快进,不能跳过。
3、红魔3外怪能开世界地图,即看见隐身基层单位和视野之外的基层单位,但不允许反击。
————少许补充————–
提及了GetLocalPlayer表达式,这是Valve开发的JavaScriptJASS可调用的两个表达式。这个表达式的存在以及利用这个表达式能实现的一些有趣效果,能作为我以上言论的铁证。但是这里涉及到红魔世界地图制作的一些知识,以后有机会展开讨论吧。
