1.本发明有关多人
游戏,尤其是第一人称射击(first person shooter,fps)的在线多人游戏。
背景技术:
2.在玩在线多人第一人称射击(fps)游戏时,所有动作(移动、启用武器、驾驶车辆)都具有结果(例如,移动虚拟化身到位置x、命中或未命中目标t、驾驶车辆到位置x)。
3.实现在线多人fps游戏的传统方式是所有动作-结果对皆需要由
服务器验证,然后动作的结果才能在游戏中呈现。这是为防止作弊或减少任何不诚实的行为。例如,若玩家提供执行动作“向左移动”的命令,则(1)必须发送数据包到服务器。(2)服务器根据数据包的内容判断动作的结果是否为“虚拟化身移到位置x”。(3)服务器而后将动作的结果发送到
用户装置。(4)在收到后,用户装置而后在游戏中呈现结果。
4.换句话说,在一些情形中,服务器必须判断动作的结果,并将结果提供给用户装置,然后才能在用户装置上呈现结果。这种方案具有某些缺点。首先,完成步骤(1)至(4)所花费的时间会导致游戏的高度延迟。这是因为即使玩家已经执行动作,也只能在步骤(1)至(4)完成后,所述动作的后果或结果才能在用户装置上的游戏中呈现。因此,步骤(1)至(4)及所述步骤的任何迟滞都可能导致间歇性暂停及游戏历程卡顿不流畅,这对使用者体验具有负面影响。
5.此外,在一些情形中,为了计算每个动作的结果,必须不断地且以非常高的频率将大量数据包从用户装置发送到服务器。这会导致极高的数据传输,将消耗大量数据及带宽。这个问题特别是在手机游戏历程中变得更加复杂,在这种情况下,玩家基本上依赖具有每月数据量上限及网络带宽限制的数据订阅方案。
6.因此,需要一种用于实现多人游戏的新颖方法,通过降低延迟及改善游戏的响应性来解决前述问题以增进使用者体验,同时仍够稳健以减少作弊。这种方法还应能理想地降低用户装置与服务器之间的数据传输量及频率,以节省玩家的数据传输成本。此外,从后面的实施方式及文后申请专利范围、连同附图及本发明的背景,将更清楚说明其他期望的特征及特性。
技术实现要素:
7.根据本发明的一样态,揭露一种用于实施多人游戏的方法,该方法包含下列步骤:由第一用户装置上的第一用户应用程序启动该多人游戏的第一实例;在该第一用户应用程序端接收命令,以执行动作;在第一用户应用程序端计算该动作的结果;以及由第一用户应用程序在多人游戏的第一实例中呈现结果。
8.该方法更包含下列步骤:由第一用户应用程序判断结果具有游戏变更影响;从第一用户装置发送数据包到服务器,数据包包括动作、结果及游戏变更影响;由服务器接收数据包;由服务器判断结果有效;由服务器判断游戏变更影响有效;且由服务器将数据包传播
到其他用户装置,使得其他用户装置中的用户应用程序可在多人游戏的其他实例中呈现结果及游戏变更影响。
9.该方法更包含下列步骤:由服务器发送有效通知到第一用户装置;由第一用户装置接收有效通知;以及由第一用户应用程序在多人游戏的第一实例中呈现游戏变更影响;其中,在多人游戏的第一实例中,该第一用户应用程序所进行的该结果呈现与该游戏变更影响呈现之间存在时间迟滞,且其中该时间迟滞的影响反映在该多人游戏的第一实例中。
10.优选地,该方法更包含下列步骤:由服务器判断结果无效;由服务器发送恢复通知到第一用户装置;由第一用户装置接收恢复通知;且由第一用户应用程序,将多人游戏的第一实例的状态恢复到从未呈现该结果的状态。
11.优选地,该方法更包含下列步骤:由服务器判断游戏变更影响无效;由服务器发送无效通知到第一用户装置;以及由第一用户装置接收无效通知,其指示第一用户应用程序不要在多人游戏的第一实例中呈现游戏变更影响。
12.优选地,由服务器判断结果有效的步骤包含,由服务器判断结果满足一组预定义条件的步骤。
13.优选地,该方法更包含下列步骤:由服务器计算正确结果;由服务器发送正确结果到第一用户装置,使得第一用户应用程序可在多人游戏的第一实例中呈现正确结果;以及由服务器将正确结果传播到其他用户装置,使得其他用户装置中的用户应用程序可在多人游戏的其他实例中呈现正确结果。
14.优选地,由服务器判断游戏变更影响有效的步骤包含下列步骤:由服务器计算正确游戏变更影响;以及由服务器判断游戏变更影响与正确游戏变更影响之间的变异数落在可接受临界值内。
15.优选地,由服务器判断游戏变更影响有效的步骤包含,由服务器判断游戏变更影响满足另一组预定义条件的步骤。
16.优选地,该方法更包含下列步骤:由服务器计算正确游戏变更影响;由服务器发送正确游戏变更影响到第一用户装置,使得第一用户应用程序可在多人游戏的第一实例中呈现正确游戏变更影响;以及由服务器将正确游戏变更影响传播到其他用户装置,使得其他用户装置中的用户应用程序可在多人游戏的其他实例中呈现正确游戏变更影响。
17.优选地,该方法更包含下列步骤:在第一用户应用程序端接收命令,以执行系列动作,该系列动作包含第一动作;由第一用户装置发送初始化数据包到服务器,该初始化数据包指出系列动作的开始;在第一用户应用程序端计算第一动作的第一结果;由第一用户应用程序在多人游戏的第一实例中呈现结果;由第一用户应用程序判断第一结果不具有游戏变更影响,并省略从第一用户装置发送第一数据包到服务器;以及由第一用户装置发送最终化数据包到服务器,该最终化数据包指出系列动作的结束。
18.优选地,系列动作是武器的持续启用,且第一动作是武器的第一启用,且第一结果是射击未命中目标,且第一数据包包含涉及武器的第一启用的数据。
19.优选地,若动作具有相关联的系列动画,则方法包含下列步骤:由第一用户应用程序在多人游戏的第一实例中呈现系列动画;从第一用户装置发送另一数据包到服务器,该另一数据包包括动作;由服务器接收另一数据包;由服务器将另一数据包传播到其他用户装置,使得其他用户装置中的用户应用程序可在多人游戏的其他实例中呈现系列动画;由
服务器计算动作的正确结果;由服务器计算结果的正确游戏变更影响;由服务器发送正确结果及正确游戏变更影响到第一用户装置,使得第一用户应用程序可在多人游戏的第一实例中呈现正确结果及正确游戏变更影响;以及由服务器将正确结果及正确游戏变更影响传播到其他用户装置,使得其他用户装置中的用户应用程序可在多人游戏的其他实例中呈现正确结果及正确游戏变更影响。
20.优选地,系列动画包含投掷的动画、降落在一位置的动画、以及引爆覆盖爆炸半径的动画。
21.优选地,多人游戏是在线第一人称射击(fps)游戏。
22.优选地,第一用户装置及其他用户装置是移动装置。
23.以下实施方式提出的一些优选实施例将更清楚说明本发明的其他样态。
附图说明
24.在附图中,类似的标号在各图式中表示相同或功能相似的组件,且附图与后面的实施方式并入并形成说明书的一部分,仅以示例的方式阐明各种实施例,并根据现有实施例解释各种原理及优点。
25.图1显示根据某些实施例的用于实现多人游戏的系统。
26.图2显示根据某实施例的用于实现多人游戏的方法。
27.图3显示动作及其可能结果的多个示例。
28.图4显示根据某些实施例的用户装置与服务器之间降低的数据传输。
29.图5显示根据某些实施例,图2方法的附加步骤,以满足结果具有游戏变更影响的情境。
30.图6显示结果及其可能游戏变更影响的多个示例。
31.图7(a)至7(c)为时间序列图,显示由用户应用程序在游戏中呈现的结果与游戏变更影响两者间的时间迟滞。
32.图8显示根据某些实施例,当动作具有相关联系列动画时用于实现多人游戏的方法。
33.图9(a)及图9(b)显示根据某些实施例,由服务器计算动作的正确结果。
34.本领域一般技术人员将理解,图式中揭露组件是简单版本,以清楚标示为目的,且未必按比例绘出。例如,方块图中的一些组件的尺寸或流程图中的步骤可能相对于其他组件特别放大,以帮助增进对本实施例的理解。
具体实施方式
35.以下实施方式本质上仅以示例为目的,并非旨在限制本发明或本发明的应用及用途。此外,亦不受本发明的前述先前技术背景或以下实施方式中提出的任何理论的束缚。
36.某些实施例的目的在于教示一种用于实现多人游戏的方法,该方法包含下列步骤:由用户装置上的用户应用程序启动多人游戏的第一实例;在用户应用程序端接收命令,以执行动作;以及在用户应用程序端计算动作的结果。该方法也包含下列步骤:由用户应用程序在多人游戏的第一实例中呈现结果;以及从用户装置发送数据包到服务器,该数据包包含动作及结果。
37.该方法更包含服务器检查结果是否有效。若服务器判断结果有效;服务器会将数据包传播到其他用户装置,使得其他用户装置中的用户应用程序可在多人游戏的其他实例中呈现结果。其中,由用户应用程序在多人游戏的第一实例中呈现结果的步骤,是在由服务器判断结果有效的步骤之前执行。
38.若服务器判断结果无效,则服务器会发送恢复通知到用户装置。在用户装置接收恢复通知后,用户应用程序将多人游戏的第一实例的状态恢复到从未呈现该结果的状态。
39.本质上,本发明的实施例描述一种合作游戏历程的方法,首先由实时玩家的用户装置的用户应用程序计算及呈现玩家动作的结果。只有在结果已经在玩家的用户装置上呈现后,服务器才会检查动作的结果是否有效。服务器判断结果有效后,服务器再将数据包传播给参与多人游戏的其他玩家的其他用户装置,使得结果可以同样地呈现在其他用户装置上,从而同步游戏历程。
40.因为用户装置的用户应用程序是计算动作的结果的应用程序,所以用户应用程序不需要等待服务器来计算动作的结果。相反,用户应用程序可在玩家提供执行动作的命令后,立即计算并在游戏中呈现结果。这给人的印象是游戏反应速度极快且延迟极低,从而改善使用者体验。
41.此外,由于用户应用程序可独立计算并呈现游戏中动作的结果,用户装置不需要将所有游戏数据发送到服务器。在特定实例下,用户装置可选择省略发送某些游戏数据到服务器。举例来说,若动作是“启用武器”。只要发送(为了同步)初始化数据包(当武器第一次启用时发送)及最终化数据包(当武器不再启用时发送),当用户装置计算出的结果是射击未命中目标时,就不需要从用户装置发送数据包到服务器。
42.换句话说,在动作的结果不具有游戏变更影响,或者结果对游戏的同步没有影响的实例下,用户装置可避免在这些实例期间将数据包发送到服务器。相较于一些情形,通过不发送这些“无关紧要的”数据包,可有利降低从用户装置发送到服务器的整体数据。
43.用户装置可独立于服务器来计算结果及呈现结果的另一优点在于,用户装置不需要以如此高的频率发送数据包到服务器。例如,用户装置可在每5个讯框或每10个讯框后,发送数据包到服务器,而不是每个讯框发送数据包。换句话说,相较于一些情形,数据包从用户装置发送到服务器的比率可以更低。因此,本发明的实施例可有利降低数据传输的频率。
44.在服务器已经判断动作结果无效的情境下,可能出现本发明的实施例的可能缺点。在此情境下,服务器发送恢复通知到用户装置。在接收恢复通知后,用户应用程序将游戏的状态恢复到从未呈现该结果的状态。但,这种恢复行为可能会导致游戏突然变化,可能会影响游戏的流畅性及无缝性,并使游戏历程显得脱节。然而,这是可接受的折衷方案,因为这种情况经常发生的机率很低(除非玩家作弊),且前述优点利大于弊。
45.图1显示根据某些实施例的用于实现多人游戏的系统100。多人游戏可为第一人称射击(fps)游戏。多人游戏可为在线游戏。系统100包括服务器101、用户装置103及其他用户装置105。可经由安装在用户装置103上的用户应用程序102来启动游戏的实例。同样地,可经由安装在其他用户装置105上的用户应用程序104来启动游戏的多个实例。启动游戏的多个实例后,作为多人游戏功能的一部分,使用用户装置103的“一号玩家”可与使用其他用户装置105的“其他玩家”参与合作游戏历程。
46.服务器101配置成与用户装置103及其他用户装置105进行双向沟通。用户装置103及其他用户装置105可为(但不限于)移动装置、智能型手机、个人计算机、膝上型计算机、游戏机及电视。
47.图2显示根据某些实施例的用于实现多人游戏的方法200。由安装在用户装置103上的用户应用程序102来启动游戏的实例。
48.在步骤201,用户应用程序102从一号玩家接收命令,以在游戏中执行动作。该动作可与一号玩家在游戏中的虚拟化身有关。动作的示例可为“向左移动”或“启用武器”。图3还提供动作的范例性示例。一号玩家可经由用户装置103上的任何输入介质(例如,触控屏幕、触摸板、键盘、鼠标、游戏控制器等)来提供命令到用户应用程序102。
49.在步骤202,用户应用程序102独立计算动作的结果。例如,若动作是“向左移动”,则用户应用程序102会计算结果是“虚拟化身移到位置x”。在另一示例中,若动作是“启用武器”,则用户应用程序102会计算结果是“射击命中目标t”。在又一示例中,若动作是“驾驶车辆向左”,则用户应用程序102会计算结果是“驾驶车辆到位置x”。在又一示例中,若动作是“武器转换”,则用户应用程序102会计算结果是“武器从武器a变为武器b”。
50.用户应用程序102可使用游戏数据来计算动作的结果。例如,游戏数据可包括虚拟化身的当前位置、虚拟化身携带的武器类型、目标t的位置等。
51.在步骤203,用户应用程序102立即在游戏中呈现结果。用户应用程序102不等待来自服务器101的核准或任何输入,而是直接在游戏中呈现结果。也会产生呈现结果伴随的视觉及声音效果。例如,用户应用程序102通过将一号玩家的虚拟化身从其原始位置转换到位置x来呈现结果。在另一示例中,用户应用程序102通过提供视觉及声音效果,以表示射击命中目标t来呈现结果。视觉效果可能是目标t因被击中而受伤或流血。在又一示例中,用户应用程序102通过将车辆从其原始位置转换到位置x来呈现结果。在又一示例中,用户应用程序102通过将一号玩家的虚拟化身持有的武器从武器a变为武器b来呈现结果。
52.在步骤204,用户装置103发送数据包到服务器101。该数据包含涉及动作及结果的数据。该数据包可亦包含游戏数据。
53.在步骤205,服务器101从用户装置103接收数据包。
54.在步骤206,服务器101判断结果是否有效。服务器101可利用数据包中的游戏数据来做出此判断。
55.在步骤207中,服务器101判断结果有效。若结果满足一组预定义条件,则服务器101可判断结果有效。例如,服务器101判断一号玩家的虚拟化身的位置x有效,因为位置x中没有障碍物或墙壁。在另一例子中,服务器101判断射击命中目标t有效,因为一号玩家的虚拟化身与目标t非常接近。在又一示例中,服务器101判断车辆的位置x有效,因为位置x中没有障碍物或墙壁。在又一示例中,服务器101判断武器转换为武器b有效,因为一号玩家的虚拟化身持有武器b。
56.在步骤208,服务器101传播数据包到其他用户装置105。
57.在步骤209,其他用户装置105接收数据包,且用户应用程序104也在其游戏实例中呈现结果。因此,一号玩家执行的动作与该动作的结果在用户装置103及其他用户装置105中的所有游戏实例间同步,且游戏历程对于在多人游戏中的所有玩家是同步。
58.在步骤221,服务器101判断结果无效。若结果未满足一组预定义条件,则服务器
101可判断结果无效。例如,服务器101判断一号玩家的虚拟化身的位置x无效,因为位置x中有障碍物或墙壁。在另一例子中,服务器101判断射击命中目标t无效,因为一号玩家的虚拟化身与目标t相对彼此超出范围。在又一示例中,服务器101判断车辆的位置x无效,因为位置x中有障碍物或墙壁。在又一示例中,服务器101判断武器转换为武器b无效,因为一号玩家的虚拟化身并未持有武器b。
59.在步骤222,服务器101发送恢复通知到用户装置103。
60.在步骤223,用户装置103接收恢复通知,且用户应用程序102将游戏的状态恢复到从未呈现该结果的状态。换句话说,当服务器101认为结果无效时,服务器101指示用户应用程序102去忽略所呈现的结果,且游戏应恢复或“返回”到从未呈现该结果的状态。
61.例如,假设动作是“向左移动”,且用户应用程序102已经通过将一号玩家的虚拟化身从其游戏中的原始位置转换到位置x来呈现结果。在接收恢复通知后,用户应用程序102会立即将一号玩家的虚拟化身移回其原始及先前位置(亦即在接收到来自一号玩家的执行动作的命令时,一号玩家的虚拟化身的位置),以将游戏状态恢复到从未呈现该结果的状态。
62.在另一示例中,假设动作是“射击命中目标t”,且用户应用程序102已经提供视觉效果以表示目标t因被击中而受伤或流血来呈现结果。在接收恢复通知后,用户应用程序102会立即停止以指出目标t被射击命中的任何视觉效果,从而将游戏状态恢复到从未呈现该结果的状态。
63.在又一示例中,假设动作是“驾驶车辆向左”,且用户应用程序102已经通过将车辆从其原始位置转换到游戏中的位置x来呈现结果。在接收恢复通知后,用户应用程序102会立即将车辆移回其原始及先前位置(亦即在接收到来自一号玩家的执行动作的命令时,车辆的位置),以将游戏状态恢复到从未呈现该结果的状态。
64.在又一示例中,假设动作是“武器转换”,且用户应用程序102已经通过将一号玩家的虚拟化身持有的武器从武器a变为武器b来呈现结果。在接收恢复通知后,用户应用程序102会立即将一号玩家的虚拟化身持有的武器从武器b改回武器a,以将游戏状态恢复到从未呈现该结果的状态。
65.当结果已被服务器101判断为无效,服务器101不会将数据包传播到其他用户装置105。
66.因此,本发明的实施例描述,该动作的结果是由用户装置103上的用户应用程序102所计算,且独立于服务器101。计算后,用户应用程序102会在服务器101对结果进行确认或验证之前,立即在游戏中呈现结果。
67.此新颖的做法有许多优点。首先,由于用户应用程序102是计算动作结果的应用程序,所以用户应用程序102不需要等待服务器101来计算及提供动作的结果。相反,用户应用程序102可在一号玩家提供执行动作的命令后,立即计算并在游戏中呈现结果。这给人的印象是游戏反应速度极快且延迟极低,从而大幅改善使用者体验。
68.此外,由于用户应用程序102可独立计算并呈现游戏中动作的结果,因此用户装置103不需要将所有游戏数据发送到服务器101。在特定实例下,用户装置103进行选择,并选择省略发送某些游戏数据到服务器101。举例来说,若动作是“启用武器”,只要发送(为了同步)初始化数据包(当武器第一次启用时发送)及最终化数据包(当武器不再启用时发送),
当每次用户装置计算出的结果是射击未命中目标时,就不需要从用户装置103发送数据包到服务器101。
69.换句话说,在动作的结果不具有游戏变更影响,或者动作结果对游戏的同步没有影响的实例下,用户装置103可避免将数据包发送到服务器101。相较于一些情形,通过不发送这些“无关紧要的”数据包,可有利降低从用户装置103发送到服务器101的整体数据。
70.这在图4的图表中详细说明并示范,其显示根据某些实施例的用户装置103与服务器101之间降低的数据传输。在此图示中,动作是“启用武器”,且一号玩家的输入命令持续,亦即一号玩家按住攻击按键一段时间而导致一系列动作(第一动作、第二动作、第三动作等)。
71.在事件401,开始启用武器动作。用户装置103针对事件401发送初始化数据包到服务器101。初始化数据包可包含游戏数据,像是一号玩家的虚拟化身所使用的武器的武器id,及当开始启用武器动作时的时间戳。服务器101接收初始化数据包,然后将其传播到其他用户装置105,使得在其他用户装置105中的所有游戏实例之间,同步启用武器动作的初始化。
72.在事件402,从武器发射第一(亦即第一动作)。用户装置103判断第一动作的结果是“射击未命中目标t”。由于此第一动作的结果不具有一游戏变更影响,且不影响游戏同步,所以用户装置103不会针对事件402发送任何数据包到服务器101。因此,服务器101针对事件402不会传播任何数据包到其他用户装置105。
73.在事件403,从武器发射第二(亦即第二动作)。用户装置103判断第二动作的结果是“射击命中目标t”。用户装置103针对事件403发送数据包到服务器101。数据包可包含游戏数据,像是一号玩家的虚拟化身所使用的武器的武器id、虚拟化身的当前位置及方向、目标t的坐标、目标t的id、目标区域、伤害、十字准线的散射值及当前射击次数(亦即第二次射击)。
74.服务器101接收数据包,然后将其传播到其他用户装置105,使得在其他用户装置105中的所有游戏实例之间,同步第二次射击时的命中目标t。
75.在事件404,从武器发射第三(亦即第三动作)。用户装置103判断第三动作的结果是“射击未命中目标t”。由于此第三动作的结果不具有游戏变更影响,且不影响游戏同步,所以用户装置103不会针对事件404发送任何数据包到服务器101。因此,服务器101针对事件404不会传播任何数据包到其他用户装置105。
76.在事件405,停止启用武器动作(玩家放开攻击按键)。用户装置103针对事件405发送最终化数据包到服务器101。最终化数据包可包含游戏数据,像是消耗的弹药。服务器101接收最终化数据包,然后将其传播到其他用户装置105,使得在其他用户装置105中的所有游戏实例之间,同步启用武器动作的停止。
77.如图4所示,本发明的实施例可导致用户装置103与服务器101之间的数据传输降低。由于用户应用程序102可独立计算第一次及第三次的射击未命中目标t,因此不会导致任何游戏变更影响,用户装置103可避免(或省略)针对事件402、404发送数据包到服务器101,有利减少用户装置103与服务器101之间的数据传输,亦有利降低服务器101与其他用户装置105之间的数据传输,达到涟漪效应。
78.游戏的同步亦不会受到影响。这是因为其他用户装置105将接收初始化数据包(其
具有射击开始时间、武器类型及武器的射击率的信息)及最终化数据包。因此,其他用户装置105中的用户应用程序104,会知道何时呈现第一次及第三次射击的视觉及声音效果,即便针对事件402及事件404未向其发送数据包。相较于一些情形,通过不发送“无关紧要的”数据包,可有利降低从用户装置103发送到服务器101的整体数据,而在此情境下的常规方法必须针对所有事件401、402、403、404及405发送数据包。
79.用户装置103的用户应用程序102在游戏中独立于服务器101计算结果及呈现结果的另一优点在于,用户装置103不需要以如此高的频率发送数据包到服务器101。例如,用户装置103可在每5个讯框或每10个讯框后,发送数据包到服务器101,而不是每个讯框皆发送数据包。换句话说,相较于一些情形,数据包从用户装置103发送到服务器101的速率可以更低。因此本发明的实施例可有利降低从用户装置103到服务器101的数据传输频率。
80.在服务器101认为动作结果无效的情况下(图2中的步骤221、222及223),本发明的实施例的可能缺点可能会浮上台面。在此情境中,服务器101发送恢复通知到用户装置103,使用户应用程序102将游戏状态恢复到从未呈现该结果的状态。用户应用程序102的恢复行为可能导致游戏突然变化(亦即将一号玩家的虚拟化身移回原始位置),可能会在这些实例中影响游戏的流畅性及无缝性,并使游戏历程显得脱节。然而,这是可接受的折衷方案,因为这种情况经常发生的机率很低(除非玩家作弊),且前述优点利大于弊。
81.结果可能或可能不具有游戏变更影响。当结果对游戏的结果具有作用时,该结果具有游戏变更影响。此作用可以是例如减少目标t的生命值、减少一号玩家的虚拟化身的生命值、目标t死亡,或一号玩家的虚拟化身死亡等。因此,命中目标t的射击可具有使目标t的生命力减少20点的游戏变更影响,或驾驶车辆到位置x可具有使目标t的生命力减少30点的游戏变更影响(因为目标t在位置x),或移动一号玩家的虚拟化身到有电气围栏的位置x可具有使一号玩家的虚拟化身的生命力减少10点的游戏变更影响。
82.当结果对游戏的后果不具有任何作用时,该结果不具有游戏变更影响。示例可以是射击未命中目标t,或者当驾驶车辆到位置x时,在位置x中没有目标或障碍物。图6显示结果及其可能游戏变更影响的一些示例。
83.图5中的方法500显示根据某些实施例的方法200的附加步骤,以满足结果具有游戏变更影响的情境。
84.在步骤501,用户应用程序102判断结果具有游戏变更影响。用户应用程序102可利用游戏数据来做出此判断。例如,用户应用程序102判断将一号玩家的虚拟化身移到位置x会导致一号玩家的虚拟化身的生命力减少10点(例如,由于位置x中有刺铁线或电气围栏)。在另一示例中,用户应用程序102判断命中目标t的射击会使目标t的生命值减少20点。在又一示例中,用户应用程序102判断将车辆移到位置x会导致目标t的生命值减少30点(例如,目标t在位置x上)。
85.重要的是,要注意即使用户应用程序102已经判断出结果的游戏变更影响,但用户应用程序102还没有在游戏中呈现游戏变更影响,而是推迟这一点。相反,在步骤502,用户装置103发送数据包到服务器101。此数据包类似于图2的步骤204中所发送的数据包,因为此数据包亦含有涉及动作及结果的数据,及游戏数据。然而,此数据包额外包含由用户应用程序102判断的结果的游戏变更影响。
86.在步骤503,服务器101从用户装置103接收数据包。
87.在步骤504,服务器101判断游戏变更影响有效。服务器101可利用涉及动作及结果的数据,以及数据包中的游戏数据来做出此判断。服务器101可通过评估游戏变更影响是否满足一组预定义条件来判断游戏变更影响有效还是无效。例如,若游戏变更影响是使目标t的生命力减少20点,但服务器101评估一号玩家的虚拟化身当前持有的武器可造成的最大可能伤害仅为10点,则服务器101会判断游戏变更影响无效。相反地,若服务器101评估20点的伤害完全在一号玩家的虚拟化身当前持有的武器可造成的最大可能伤害范围内,则服务器101会判断游戏变更影响有效。
88.或者,服务器101可通过计算“正确”的游戏变更影响来判断游戏变更影响有效还是无效,接着检查游戏变更影响(由用户装置103判断)与正确游戏变更影响之间的变异数是否落在可接受临界值内。若游戏变更影响(由用户装置103判断)与正确游戏变更影响之间的变异数落在可接受临界值内,则服务器101判断游戏变更影响有效。相反地,若游戏变更影响(由用户装置103判断)与正确游戏变更影响之间的变异数落在可接受临界值外,则服务器101判断游戏变更影响无效。
89.两方法之间的差异在于,相较于执行独立计算以判断正确的游戏变更影响,由服务器101检查游戏变更影响(由用户装置103判断)是否满足一组预定义条件在计算上可能更快。
90.在步骤505,服务器101判断游戏变更影响有效。
91.在步骤506,服务器101传播数据包到其他用户装置105。
92.在步骤507,服务器101发送有效通知到用户装置103。该有效通知用于指示用户应用程序102在游戏中呈现结果的游戏变更影响。
93.步骤506及507可同时或连续执行。或者,步骤507可在步骤506之前执行。
94.在步骤508,用户装置103接收有效通知,且用户应用程序102在游戏中呈现结果的游戏变更影响。例如,用户应用程序102会在游戏中呈现目标t的生命力已减少20点。
95.在步骤509,其他用户装置105接收数据包,且用户应用程序104亦在其游戏实例中呈现结果的游戏变更影响。例如,用户应用程序104会在其游戏实例中呈现目标t的生命力已减少20点。
96.在步骤508及509之后,一号玩家执行的动作、该动作的结果及其游戏变更影响,会在用户装置103及其他用户装置105中的所有游戏实例间同步。
97.在步骤521,服务器101判断游戏变更影响无效。
98.在步骤522,服务器101发送无效通知到用户装置103。
99.在步骤523,用户装置103接收无效通知,且用户应用程序102在游戏中不呈现结果的游戏变更影响。
100.因此,本发明的实施例描述,用户应用程序102不会在没有先从服务器101获得验证或核准的情况下呈现结果的游戏变更影响。这是由于游戏变更影响将对游戏结果产生作用的重要性。由于这会是任何作弊的关键,因此结果的游戏变更影响需要经由服务器101验证或核准,方能呈现于游戏之中。
101.在服务器101判断游戏变更影响无效的情境下,服务器101不会传播数据包到其他用户装置105。若用户应用程序102判断结果不具有游戏变更影响,将不会执行方法500。
102.总之,本发明的实施例描述,用户装置103的用户应用程序102会立即在游戏中呈
现动作的结果,而无需先从服务器101获得任何验证或核准。然而,若结果具有游戏变更影响,用户应用程序102将先等待从服务器101接收验证或核准,然后才在游戏中呈现结果的游戏变更影响。因此,由用户应用程序102在游戏中呈现的结果与呈现的游戏变更影响,两者之间存在时间迟滞。
103.图7(a)至7(c)为显示由用户应用程序在游戏中呈现的结果与游戏变更影响,两者之间时间迟滞之时间序列图。图7(a)显示在时间戳1执行游戏的用户装置103的显示屏幕701。显示屏幕701显示游戏的虚拟环境的第一人称视角。该虚拟环境包含一号玩家的虚拟化身的武器702、电气围栏703,及一号玩家的虚拟化身的生命力长条704。在时间戳1处,一号玩家输入命令以向前移动。
104.图7(b)显示在时间戳2执行游戏的用户装置103的显示屏幕701。用户应用程序102已经判断向前移动动作的结果是将一号玩家的虚拟化身移到接触电围栏703的位置,且游戏变更影响是一号玩家的虚拟化身因电气围栏703触电而损失10生命值。
105.在时间戳2,用户应用程序102会立即在游戏中呈现动作的结果,而无需先从服务器101获得任何验证。如图7(b)所显示,一号玩家的虚拟化身接触电气围栏703。用户应用程序102可亦在游戏中呈现诸如闪电705之类的戏剧效果,以表示一号玩家的虚拟化身因电气围栏703触电。然而,在时间戳2,生命力长条704仍然表示一号玩家的虚拟化身的生命力尚未受到影响(亦即仍处于100生命值)。这是因为在时间戳2,用户装置103尚未从服务器101接收到有效通知以呈现结果的游戏变更影响。
106.图7(c)显示在时间戳3执行游戏的用户装置103的显示屏幕701。在时间戳3,用户装置103接收有效通知以呈现结果的游戏变更影响,且用户应用程序102通过从生命力长条704中扣除10生命值,在游戏中呈现游戏变更影响来反映对一号玩家的虚拟化身的损失。
107.在本发明先前描述的实施例中,服务器101仅对结果及游戏变更影响进行验证及确认,但没有执行任何独立的重新计算以判断正确结果,亦无发送正确结果及正确游戏变更影响到用户装置103。这是因为比起执行结果的独立计算,由服务器101检查结果是否有效在计算上更快。
108.然而,在本发明的某些实施例中,当发现结果或游戏变更影响无效时,服务器101会执行独立计算以判断正确结果及正确游戏变更影响。例如,如图9(a)所示,用户应用程序102判断移动动作的结果是玩家的虚拟化身将从其原始位置901转换到新位置902。
109.然而,服务器101判断结果(亦即新位置902)无效,是因为障碍物903阻挡在原始位置901与新位置902之间的路径。服务器101会计算正确结果并判断其为正确位置904(见图9(b))。然后,服务器101发送正确结果(正确位置904)到用户装置103及其他用户装置105,使得多人游戏中的所有游戏实例呈现正确结果。
110.服务器101会以类似方式判断游戏变更影响无效。例如,若游戏变更影响是使目标t的生命力减少20点,但服务器101评估一号玩家的虚拟化身当前持有的武器可造成的最大可能伤害仅为10点。服务器101就会计算正确游戏变更影响,并判断它对目标t的生命力造成5点的伤害。然后,服务器101发送正确游戏变更影响(对目标t的生命力造成5点的伤害)到用户装置103及其他用户装置105,使得多人游戏中的所有游戏实例呈现正确游戏变更影响。
111.某些动作可能需要精致的效果以呈现虚拟化动作。该动作的示例是“投掷手榴
弹”。为了虚拟化游戏中被投掷、降落到一位置,然后爆炸,可能需要呈现一系列动画。此一系列动画可能具有持续时段并需要一些时间才能完成。
112.一旦一号玩家执行“投掷”动作,用户应用程序102会呈现系列动画,以虚拟化“投掷”动作。该系列动画可包括投掷的动画、降落在一位置的动画,以及引爆以覆盖爆炸半径的动画。如前述,该系列动画可能需要一些时间才能完成(例如,1或2秒)。
113.本发明的某些实施例可利用此“时段”(亦即完成系列动画所花费的时间),使得服务器101计算动作的结果及游戏变更影响两者(且用户应用程序102既不计算动作的结果也不计算游戏变更影响)。这样做的原因是,在完全保证没有任何作弊行为的理想世界中,应该由服务器101来计算所有结果及所有游戏变更影响。然而,如前面的一些实施例(例如图2)所述,用户应用程序102会计算结果及游戏变更影响,同时服务器101扮演“验证者”的角,以在游戏响应性与公平性之间到适当的平衡。
114.也有些例外,若动作具有相关联的系列动画而可能需要一些时间来完成,则服务器101会计算动作的结果及游戏变更影响(且用户应用程序102既不计算动作的结果也不计算游戏变更影响),且服务器101提供动作的结果及游戏变更影响到用户装置102及其他用户装置105。图8显示方法800,说明在这些实施例中执行的详细步骤。
115.在步骤801,用户应用程序102从一号玩家接收命令,以在游戏中执行动作,该动作具有相关联的系列动画。例如,该动作可以是“投掷”动作,且该系列动画可包括投掷的动画、降落到一位置的动画,以及引爆以覆盖爆炸半径的动画。
116.在步骤802,用户应用程序102呈现系列动画。
117.在步骤803,用户装置103发送数据包到服务器101,数据包含有关动作的数据,例如有关“投掷”动作的数据。
118.步骤802及803可采取任何顺序进行。可同时或实质上连续进行。
119.在步骤804,服务器101从用户装置103接收数据包,并传播该数据包到其他用户装置105,使得其他用户应用程序104亦可呈现系列动画。
120.在步骤805,服务器101计算动作的正确结果。例如,服务器101计算“投掷”动作的正确结果是“目标t1及目标t2被伤害”。
121.在步骤806,服务器101计算结果的正确游戏变更影响。例如,服务器101计算的正确游戏变更影响是,在目标t1降低10点生命值,以及在目标t2降低20点生命值。
122.在步骤807,服务器101将正确结果及正确游戏变更影响传播到用户装置103及其他用户装置105,使得用户应用程序102及其他用户应用程序104可在他们的游戏实例中呈现正确结果及正确游戏变更影响。因此,这些实施例利用与特定动作相关联的系列动画所建立的“时间窗口”,并依赖服务器101计算动作的结果及游戏变更影响,再将其传播到用户装置103及其他用户装置105,从而保证至少该特定动作不会有任何作弊行为。
123.本发明可在游戏中实施,该游戏可使用各种装置或游戏系统操作。例如,装置可为个人计算机、家庭娱乐系统、可携式游戏设备或移动计算设备。本文描述的本方法论,完全是以可在各种装置或游戏系统上操作为目的。凡适用于执行本文描述的方法论的任何硬件平台,都适用于本发明。计算机可读储存介质是指任何参与提供指令到中央处理器(cpu)以供执行的一个或多个介质。该介质可采用多种形式,例如但不限于,分别包含光盘或磁盘及
易失存储器的非挥发性及挥发性介质。计算机可读介质的常见形式包括,例如磁盘、软性磁盘、硬盘、磁带、任何其他磁性介质、光驱(cd-rom)、数字光盘(digital video disk,dvd)、任何其他光学介质、随机存取内存(ram)、可程序化只读存储器(prom)、可抹除可程序化只读存储器(eprom)、快闪可抹除可程序化只读存储器(flash eprom)、任何其他内存芯片或卡匣。
124.各种形式的传输介质可能涉及携带供cpu执行的一个或多个序列的一个或多个指令。总线携带数据到系统ram,cpu从中撷取并执行指令。系统ram接收的指令可选择性在cpu执行之前或之后储存在固定磁盘上。
125.除非另外特别说明,且如下文显而易见,贯穿本说明书所使用的词汇,诸如“接收”、“识别”、“开始”、“标记”、“传输”、“执行”、“递增”、“判断”、“分配”、“核准”、“选择”、“发送”、“计算”、“判断”、“替换”、“产生”、“初始化”、“输出”等,指的是计算机系统或类似电子装置的操作及程序,将计算机系统内代表为实体量的数据处理和变换为计算机系统或其他信息储存、传输或显示设备内类似代表为实体量的其他数据。
126.在本技术中,除非另有说明,否则术语“含有”、“包含”及其语法变体旨在表示“开放”或“包容性”语言,使得其包括所列举的组件,但亦允许包括添加额外的、非明确引用的组件。
127.很明显,在不违背本技术的精神与范畴的情况下,本领域一般技术人员在阅读前述揭露内容后将明白,本技术的各种其他修改和变动,都涵盖于文后申请专利范围的范畴内。
技术特征:
1.一种用于实现多人游戏的方法,其包含下列步骤:由第一用户装置上的第一用户应用程序启动该多人游戏的第一实例;在该第一用户应用程序端接收命令,以执行动作;在该第一用户应用程序端计算该动作的结果;由该第一用户应用程序在该多人游戏的该第一实例中呈现该结果;由该第一用户应用程序判断该结果具有游戏变更影响;从该第一用户装置发送数据包到服务器,该数据包包含该动作、该结果及该游戏变更影响;由该服务器接收该数据包;由该服务器判断该结果有效;由该服务器判断该游戏变更影响有效;由该服务器将该数据包传播到其他用户装置,使得其他用户装置中的用户应用程序可在该多人游戏的其他实例中呈现该结果及该游戏变更影响;由该服务器发送有效通知到该第一用户装置;由该第一用户装置接收该有效通知;以及由该第一用户应用程序在该多人游戏的该第一实例中呈现该游戏变更影响;其中,在该多人游戏的该第一实例中,该第一用户应用程序所进行的该结果呈现与该游戏变更影响呈现之间,存在时间迟滞,且其中该时间迟滞的影响反映在该多人游戏的该第一实例中。2.如权利要求1所述的方法,其更包含下列步骤:由该服务器判断该结果无效;由该服务器发送恢复通知到该第一用户装置;由该第一用户装置接收该恢复通知;以及由该第一用户应用程序,将该多人游戏的该第一实例的状态恢复到从未呈现该结果的状态。3.如权利要求1所述的方法,其更包含下列步骤:由该服务器判断该游戏变更影响无效;由该服务器发送无效通知到该第一用户装置;以及由该第一用户装置接收该无效通知,其指示该第一用户应用程序不要在该多人游戏的该第一实例中呈现该游戏变更影响。4.如权利要求1所述的方法,其中由该服务器判断该结果有效的步骤,其包含下列步骤:由该服务器判断该结果满足一组预定义条件。5.如权利要求2所述的方法,其更包含下列步骤:由该服务器计算正确结果;由该服务器发送该正确结果到该第一用户装置,使得该第一用户应用程序可在该多人游戏的该第一实例中呈现该正确结果;以及由该服务器将该正确结果传播到该其他用户装置,使得该其他用户装置中的该用户应用程序可在该多人游戏的该其他实例中呈现该正确结果。
6.如权利要求1所述的方法,其中由该服务器判断该游戏变更影响有效的步骤,其包含下列步骤:由该服务器计算正确游戏变更影响;以及由该服务器判断该游戏变更影响与该正确游戏变更影响之间的变异数落在可接受临界值内。7.如权利要求1所述的方法,其中由该服务器判断该游戏变更影响有效的步骤,包含下列步骤:由该服务器判断该游戏变更影响满足另一组预定义条件。8.如权利要求3所述的方法,其更包含下列步骤:由该服务器计算正确游戏变更影响;由该服务器发送该正确游戏变更影响到该第一用户装置,使得该第一用户应用程序可在该多人游戏的该第一实例中呈现该正确游戏变更影响;以及由该服务器将该正确游戏变更影响传播到该其他用户装置,使得该其他用户装置中的该用户应用程序,可在该多人游戏的该其他实例中呈现该正确游戏变更影响。9.如权利要求1所述的方法,其更包含下列步骤:在该第一用户应用程序端接收命令,以执行系列动作,该系列动作包含第一动作;由该第一用户装置发送初始化数据包到该服务器,该初始化数据包指出该系列动作的开始;在该第一用户应用程序端计算该第一动作的第一结果;由该第一用户应用程序在该多人游戏的该第一实例中呈现该第一结果;由该第一用户应用程序判断该第一结果不具有游戏变更影响,并省略从该第一用户装置发送第一数据包到该服务器的步骤;以及由该第一用户装置发送最终化数据包到该服务器,该最终化数据包指出该系列动作的结束。10.如权利要求9所述的方法,其中该系列动作是武器的持续启用,且该第一动作是该武器的第一启用,且该第一结果是射击未命中目标,且该第一数据包包含涉及该武器的该第一启用的数据。11.如权利要求1所述的方法,其中若该动作具有相关联的系列动画,则该方法包含下列步骤:由该第一用户应用程序在该多人游戏的该第一实例中呈现该系列动画;从该第一用户装置发送另一数据包到该服务器,该另一数据包包含该动作;由该服务器接收该另一数据包;由该服务器将该另一数据包传播到该其他用户装置,使得该其他用户装置中的该用户应用程序可在该多人游戏的该其他实例中呈现该系列动画;由该服务器计算该动作的正确结果;由该服务器计算该结果的正确游戏变更影响;由该服务器发送该正确结果及该正确游戏变更影响到该第一用户装置,使得该第一用户应用程序可在该多人游戏的该第一实例中呈现该正确结果及该正确游戏变更影响;以及由该服务器将该正确结果及该正确游戏变更影响传播到该其他用户装置,使得该其他
用户装置中的该用户应用程序可在该多人游戏的该其他实例中呈现该正确结果及该正确游戏变更影响。12.如权利要求11所述的方法,其中该系列动画包含投掷的动画、该降落在一位置的动画,以及该引爆以覆盖爆炸半径的动画。13.如前述权利要求中任一项所述的方法,其中该多人游戏是在线第一人称射击(fps)游戏。14.如前述权利要求中任一项所述的方法,其中该第一用户装置与该其他用户装置是移动装置。
技术总结
一种用于实现多人游戏的方法,该方法包含下列步骤:在用户装置上的用户应用程序端接收命令,以执行动作;在用户应用程序端计算动作的结果;以及由用户应用程序在游戏的第一实例中呈现结果。该方法更包含下列步骤:从用户装置发送数据包到服务器,该数据包包含该动作及该结果;由该服务器判断该结果有效;以及由服务器将数据包传播到其他用户装置,使得其他用户装置中的用户应用程序可在游戏的其他实例中呈现该结果。其中,由用户应用程序在游戏的第一实例中呈现结果的步骤,是在由服务器判断该结果有效的步骤之前执行。该结果有效的步骤之前执行。该结果有效的步骤之前执行。
技术研发人员:
陆晨
受保护的技术使用者:
竞舞娱乐私人有限公司
技术研发日:
2021.11.26
技术公布日:
2022/10/11