IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲騰▼▲訊▼科技(深▲セン▼)有限公司の特許一覧

特表2024-541214仮想オブジェクトの制御方法、装置、機器、及びプログラム
<>
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図1
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図2
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図3
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図4
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図5
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図6
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図7
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図8
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図9
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図10
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図11
  • 特表-仮想オブジェクトの制御方法、装置、機器、及びプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-08
(54)【発明の名称】仮想オブジェクトの制御方法、装置、機器、及びプログラム
(51)【国際特許分類】
   A63F 13/56 20140101AFI20241031BHJP
   A63F 13/58 20140101ALI20241031BHJP
   A63F 13/53 20140101ALI20241031BHJP
【FI】
A63F13/56
A63F13/58
A63F13/53
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024523895
(86)(22)【出願日】2022-11-07
(85)【翻訳文提出日】2024-05-23
(86)【国際出願番号】 CN2022130217
(87)【国際公開番号】W WO2023142587
(87)【国際公開日】2023-08-03
(31)【優先権主張番号】202210101350.1
(32)【優先日】2022-01-27
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
【氏名又は名称原語表記】TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED
【住所又は居所原語表記】35/F,Tencent Building,Kejizhongyi Road,Midwest District of Hi-tech Park,Nanshan District, Shenzhen,Guangdong 518057,CHINA
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【弁理士】
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】王▲亜▼昌
(72)【発明者】
【氏名】▲楊▼洋
(72)【発明者】
【氏名】王玉▲竜▼
(57)【要約】
仮想オブジェクトの制御方法、装置、機器、媒体及びプログラム製品は、コンピュータの技術分野に属する。前記方法は、第1ビヘイビアツリーにより第1仮想オブジェクトを制御するステップであって、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであるステップ(220)と、仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得するステップであって、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップ(240)と、第1距離が第2距離より小さい場合、第1距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定するステップであって、第1距離と、第2ビヘイビアツリーの実行時に消費されるリソースとは、負の相関関係であるステップ(260)と、を含む。上記技術的手段は、コンピュータ機器のリソースが限られている場合、NPCが豊かなパフォーマンスを実現できることを保証する。
【特許請求の範囲】
【請求項1】
コンピュータ機器が実行する仮想オブジェクトの制御方法であって、
第1ビヘイビアツリーにより第1仮想オブジェクトを制御するステップであって、前記第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであるステップと、
仮想環境における前記第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び前記仮想環境における前記第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得するステップであって、前記第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、前記第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップと、
前記第1距離が前記第2距離より小さい場合、前記第1距離に基づいて、第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定するステップであって、前記第1距離と、前記第2ビヘイビアツリーの実行時に消費されるリソースとは、負の相関関係であるステップと、を含む、仮想オブジェクトの制御方法。
【請求項2】
前記第1距離に基づいて、第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定する前記ステップは、
前記第1距離が前記第2仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲に入ることに基づいて、前記目標距離範囲に対応する第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定するステップを含み、
各前記距離範囲は、1つの前記第2ビヘイビアツリーに対応する、請求項1に記載の方法。
【請求項3】
前記方法は、
前記第1距離が前記第2距離より大きい場合、前記第2距離が前記第3仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲に入ることに基づいて、前記目標距離範囲に対応する第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定するステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記第1距離に基づいて、第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定する前記ステップは、
前記第1距離に基づいて、前記第1ビヘイビアツリーを前記第2ビヘイビアツリーに切り替えるステップと、
前記第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定するステップであって、前記第2ビヘイビアツリーは、前記第1距離に対応するステップと、を含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1距離に基づいて、第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定する前記ステップは、
前記第1距離に基づいて、前記第1ビヘイビアツリーの第1更新周期を第2更新周期に調整するステップであって、前記第1更新周期及び前記第2更新周期は、前記第1ビヘイビアツリーが隣接する2つの決定を出力する時間間隔を示すものであるステップと、
前記第2更新周期を使用する前記第1ビヘイビアツリーを前記第2ビヘイビアツリーとして決定するステップと、
前記第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定するステップと、を含む、請求項1~3のいずれか一項に記載の方法。
【請求項6】
前記方法は、
前記第1ビヘイビアツリーのサービスノードの第3更新周期を第4更新周期に調整するステップであって、
前記第4更新周期は、前記第1距離に対応し、前記サービスノードは、前記第1ビヘイビアツリーを実行するために必要なデータを更新するものであり、前記第3更新周期及び前記第4更新周期は、前記サービスノードが隣接する2回の更新を行う時間間隔を示すものであるステップをさらに含む、請求項5に記載の方法。
【請求項7】
前記第2ビヘイビアツリーの1つのシーケンスノードにm個のデコレータノードがアタッチされ、前記方法は、
前記第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御する過程において、前記第2ビヘイビアツリーのk番目の更新周期内に目標データを最後に更新した後、前記m個のデコレータノードに対して条件判断を1回行うステップであって、
前記目標データは、前記第2ビヘイビアツリーを実行するために必要な入力データであり、前記シーケンスノードは、前記シーケンスノードの全ての子ノードが成功値を返す場合に成功値を返すものであり、前記デコレータノードは、前記シーケンスノードが位置する分岐を実行するか否か、前記シーケンスノードが位置する分岐を中断すること、前記シーケンスノードが位置する分岐のうち優先度の低い分岐を中断すること、のうちの少なくとも1つを決定するものであり、m、kは、正の整数であるステップをさらに含む、請求項1~3のいずれか一項に記載の方法。
【請求項8】
前記目標データは、ブラックボードの値を含み、前記m個のデコレータノードは、同一の前記ブラックボードの値に着目し、前記k番目の更新周期内に前記ブラックボードの値は、n回更新され、nは、正の整数であり、
前記第2ビヘイビアツリーのk番目の更新周期内に目標データを最後に更新した後、前記m個のデコレータノードに対して条件判断を1回行う前記ステップは、
前記ブラックボードの値がi回目に更新される場合、前記シーケンスノードに前記ブラックボードの値の現在の更新回数をマークするステップであって、iは、n以下の正の整数であるステップと、
前記ブラックボードの値がn回目に更新された後、前記ブラックボードの値による前記m個のデコレータノードのm個の計算結果を取得し、前記m個の計算結果に基づいて、条件判断を1回行うステップと、を含む、請求項7に記載の方法。
【請求項9】
前記ブラックボードの値がi回目に更新される場合、通知するように前記m個のデコレータノードをトラバースし、前記シーケンスノードに前記ブラックボードの値の現在の更新回数をマークするステップは、
前記m個のデコレータノードのうちの1つのデコレータノードに通知する毎に、前記シーケンスノードを1回マークすることにより、前記ブラックボードの値をi回目に更新する場合に前記シーケンスノードをm回マークするステップを含み、
前記ブラックボードの値がn回目に更新された後、前記ブラックボードの値による前記m個のデコレータノードのm個の計算結果を取得する前記ステップは、
前記シーケンスノードがm*n回マークされた後、前記ブラックボードの値による前記m個のデコレータノードのm個の計算結果を取得するステップを含む、請求項8に記載の方法。
【請求項10】
前記第1ビヘイビアツリー及び前記第2ビヘイビアツリーのタイプは、いずれもアンリアルエンジンUE4ビヘイビアツリーである、請求項1~3のいずれか一項に記載の方法。
【請求項11】
コンピュータ機器が実行する仮想オブジェクトの表示方法であって、
第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを表示するステップであって、前記第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであり、前記第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、前記第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップと、
仮想環境における前記第1仮想オブジェクトと前記第2仮想オブジェクトとの間の第1距離が、前記仮想環境における前記第1仮想オブジェクトと前記第3仮想オブジェクトとの間の第2距離より小さい場合、前記第1距離がpであるとき、前記第1仮想オブジェクトが第1数の動作を実行することを表示し、
前記第1距離がqであるとき、前記第1仮想オブジェクトが第2数の動作を実行することを表示するステップであって、
pがqより大きいと、第1数は、第2数より小さく、或いは、pがqより小さいと、第1数は、第2数より大きいステップと、を含む、仮想オブジェクトの表示方法。
【請求項12】
コンピュータ機器が実行する仮想オブジェクトの表示方法であって、
第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを表示するステップであって、前記第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであり、前記第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、前記第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップと、
仮想環境における前記第1仮想オブジェクトと前記第2仮想オブジェクトとの間の第1距離が、前記仮想環境における前記第1仮想オブジェクトと前記第3仮想オブジェクトとの間の第2距離より小さい場合、前記第1距離がpであるとき、前記第1仮想オブジェクトが動作を実行する時間間隔が第1時間長であることを表示し、
前記第1距離がqであるとき、前記第1仮想オブジェクトが動作を実行する時間間隔が第2時間長であることを表示するステップであって、
pがqより大きいと、第1時間長は、第2時間長より大きく、或いは、pがqより小さいと、第1時間長は、第2時間長より小さいステップと、を含む、仮想オブジェクトの表示方法。
【請求項13】
第1ビヘイビアツリーにより第1仮想オブジェクトを制御する制御モジュールであって、前記第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCである制御モジュールと、
仮想環境における前記第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び前記仮想環境における前記第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得する取得モジュールであって、前記第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、前記第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトである取得モジュールと、
前記第1距離が前記第2距離より小さい場合、前記第1距離に基づいて、第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御することを決定する決定モジュールであって、前記第1距離と、前記第2ビヘイビアツリーの実行時に消費されるリソースとは、負の相関関係である決定モジュールと、を含む、仮想オブジェクトの制御装置。
【請求項14】
プロセッサとメモリとを含むコンピュータ機器であって、前記メモリには、コンピュータプログラムが記憶され、前記コンピュータプログラムは、前記プロセッサによりロードされて実行されると、請求項1~3のいずれか一項に記載の方法、又は請求項11に記載の仮想オブジェクトの表示方法、又は請求項12に記載の仮想オブジェクトの表示方法を実現する、コンピュータ機器。
【請求項15】
コンピュータプログラムであって、記コンピュータ機器に請求項1~3のいずれか一項に記載の方法、又は請求項11に記載の仮想オブジェクトの表示方法、又は請求項12に記載の仮想オブジェクトの表示方法を実現させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2022年1月27日に提出された、出願番号が「202210101350.1」で、発明の名称が「仮想オブジェクトの制御方法、装置、機器、媒体及びプログラム製品」である中国特許出願の優先権を主張するものであり、その全ての内容は、参照により本願に組み込まれるものとする。
【0002】
本願の実施例は、コンピュータの技術分野に属し、特に、仮想オブジェクトの制御方法、装置、機器、媒体及びプログラム製品に関する。
【背景技術】
【0003】
オープンワールドゲームには、大量のAI(ArtificialIntelligence、人工知能)オブジェクトが存在し、AIオブジェクトは、擬人化行動を有するNPC(Non-playerCharacter、ノンプレイヤーキャラクター)である。
【0004】
関連技術において、大量のAIオブジェクトは、一般的に、同じビヘイビアツリーを使用するが、AIオブジェクトが豊かなパフォーマンスを実現できれば、それに用いられるビヘイビアツリーは、必然的に複雑であり、大量のAIオブジェクトが同じ複雑なビヘイビアツリーを使用すれば、サーバの性能は、必然的に深刻な試練を受ける。
【0005】
どのようにAIオブジェクトが豊かなパフォーマンスを実現できることを保証するとともに、大量のAIオブジェクトによって消費されるサーバリソースが大きすぎることを回避するかは、解決すべき課題となる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本願は、仮想オブジェクトの制御方法、装置、機器、媒体及びプログラム製品を提供し、コンピュータ機器のリソースが限られている場合でも、NPCが豊かなパフォーマンスを実現できることを保証する。前記技術的手段は、以下のとおりである。
【課題を解決するための手段】
【0007】
本願の一態様によれば、コンピュータ機器が実行する仮想オブジェクトの制御方法を提供し、前記方法は、
第1ビヘイビアツリーにより第1仮想オブジェクトを制御するステップであって、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであるステップと、
仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得するステップであって、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップと、
第1距離が第2距離より小さい場合、第1距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定するステップであって、第2ビヘイビアツリーは、第1ビヘイビアツリーを切り替える又は調整することによって取得されるステップと、を含む。
【0008】
本願の別の態様によれば、コンピュータ機器が実行する仮想オブジェクトの表示方法を提供し、前記方法は、
第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを表示するステップであって、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであり、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップと、
仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離が、仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離より小さい場合、第1距離がpであるとき、第1仮想オブジェクトが第1数の動作を実行することを表示し、
第1距離がqであるとき、第1仮想オブジェクトが第2数の動作を実行することを表示するステップであって、
pがqより大きいと、第1数は、第2数より小さく、或いは、pがqより小さいと、第1数は、第2数より大きいステップと、を含む。
【0009】
本願の別の態様によれば、コンピュータ機器が実行する仮想オブジェクトの表示方法を提供し、前記方法は、
第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを表示するステップであって、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであり、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであるステップと、
仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離が、仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離より小さい場合、第1距離がpであるとき、第1仮想オブジェクトが動作を実行する時間間隔が第1時間長であることを表示し、
第1距離がqであるとき、第1仮想オブジェクトが動作を実行する時間間隔が第2時間長であることを表示するステップであって、
pがqより大きいと、第1時間長は、第2時間長より大きく、或いは、pがqより小さいと、第1時間長は、第2時間長より小さいステップと、を含む。
【0010】
本願の別の態様によれば、仮想オブジェクトの制御装置を提供し、前記装置は、
第1ビヘイビアツリーにより第1仮想オブジェクトを制御する制御モジュールであって、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCである制御モジュールと、
仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び前記仮想環境における前記第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得する取得モジュールであって、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、前記第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトである取得モジュールと、
前記第1距離が前記第2距離より小さい場合、第1距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する決定モジュールであって、第2ビヘイビアツリーは、第1ビヘイビアツリーを切り替える又は調整することによって取得される決定モジュールと、を含む。
【0011】
本願の一態様によれば、プロセッサとメモリとを含むコンピュータ機器を提供し、前記メモリには、コンピュータプログラムが記憶され、前記コンピュータプログラムは、前記プロセッサによりロードされて実行されると、上記仮想オブジェクトの制御方法を実現するか、又は上記仮想オブジェクトの表示方法を実現する。
【0012】
本願の別の態様によれば、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体を提供し、前記コンピュータプログラムは、プロセッサによりロードされて実行されると、上記仮想オブジェクトの制御方法を実現するか、又は上記仮想オブジェクトの表示方法を実現する。
【0013】
本願の別の態様によれば、コンピュータプログラムを含むコンピュータプログラム製品を提供し、該コンピュータプログラムは、コンピュータ読み取り可能な記憶媒体に記憶される。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体から該コンピュータプログラムを読み取り、プロセッサは、該コンピュータプログラムを実行して、該コンピュータ機器に上記態様に係る仮想オブジェクトの制御方法を実行させるか、又は上記仮想オブジェクトの表示方法を実現させる。
【発明の効果】
【0014】
本願の実施例に係る技術的手段による有益な効果は、少なくとも以下を含む。
【0015】
第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離に基づいて、第1仮想オブジェクトを制御するビヘイビアツリーを決定することにより、第1仮想オブジェクトを制御するビヘイビアツリーが常に動的調整状態にあり、即ち、第2仮想オブジェクトに近い方と遠い方のNPCが異なるビヘイビアツリーによって制御され、近い方のNPCに用いられるビヘイビアツリーによって消費されるリソースが多く、遠い方のNPCに用いられるビヘイビアツリーによって消費されるリソースが少なく、大量のNPCによって消費されるコンピュータ機器のリソースの合計がバランス状態に維持され、コンピュータ機器のリソースが過度に消費されないため、コンピュータ機器の運転負荷を低減する。同時に、NPCが第2仮想オブジェクトに近い場合、豊かなパフォーマンスを有する。
【0016】
また、複数のプレイヤーオブジェクト(即ち、プレイヤーに制御される仮想オブジェクト)がある場合、NPCとプレイヤーオブジェクトとの間の距離を比較することにより、NPCを制御するビヘイビアツリーを決定するための目標距離を決定して、NPCのビヘイビアツリーがより合理的になり、NPCのパフォーマンスの合理性を向上させる。
【図面の簡単な説明】
【0017】
図1】本願の例示的な一実施例に係るビヘイビアツリーの概略図である。
図2】本願の例示的な一実施例に係る仮想オブジェクトの制御方法のフローチャートである。
図3】本願の例示的な一実施例に係るLOD(LevelofDistance、マルチレベル距離)階層化技術の概略図である。
図4】本願の別の例示的な実施例に係るLOD階層化技術の概略図である。
図5】本願の例示的な一実施例に係る第1仮想オブジェクトのパフォーマンスを示す概略図である。
図6】本願の別の例示的な実施例に係る第1仮想オブジェクトのパフォーマンスを示す概略図である。
図7】本願の例示的な一実施例に係る異なるLODレベルに位置する第1仮想オブジェクトのパフォーマンスを示す概略図である。
図8】本願の例示的な一実施例に係るm個のデコレータノードが1つのシーケンスノードにアタッチされる概略図である。
図9】本願の例示的な一実施例に係る、条件判断を1回行うフローチャートである。
図10】本願の別の例示的な実施例に係る仮想オブジェクトの制御方法のフローチャートである。
図11】本願の例示的な一実施例に係る仮想オブジェクトの制御装置のブロック構成図である。
図12】本願の例示的な一実施例に係るコンピュータ機器のブロック構成図である。
【発明を実施するための形態】
【0018】
ここでは、例示的な実施例を詳しく説明し、その例を図面に示す。以下の説明が図面に関する場合、特に断らない限り、異なる図面における同一の数字は、同一又は類似の要素を示す。以下の例示的な実施例に記載される実施形態は、本願と一致する全ての実施形態を表すものではない。むしろ、それらは、単に特許請求の範囲に詳述されている、本願の一部の側面と一致する装置及び方法の例である。
【0019】
本明細書で言及される「いくつか」は、1つ又は複数を指し、「複数」は、2つ又は2つ以上を指すことを理解されたい。「及び/又は」は、相関オブジェクトの相関関係を説明するためのものであり、3つの関係が存在してもよいことを示し、例えば、「A及び/又はB」は、「Aが独立して存在する」、「AとBが同時に存在する」、「Bが独立して存在する」の3つの状況を示してもよい。文字「/」は、一般的に、前後関連オブジェクトが「又は」の関係であることを示す。
【0020】
まず、本願の関連技術を説明する。
【0021】
本願の関連技術では、AIオブジェクトのパフォーマンスの制御方式は、有限状態機械又はBehaviacビヘイビアツリー(1種類のビヘイビアツリー)によりAIオブジェクトを制御することを含む。
【0022】
有限状態機械は、従来のAI技術の実現手段であり、AIオブジェクトの複数の状態及び状態間の切り替え条件を定義するものである。AIオブジェクトが状態Aにある場合、状態Aから状態Bに切り替える条件Cが満たされると、状態Aから状態Bに切り替えることができる。AIオブジェクトは、異なる状態で異なるタスクを実行し、条件により切り替え状態を判断し、一連の状態及び切り替え条件により完全なAIオブジェクトのパフォーマンスに組み合わせる。有限状態機械は、原理と実現がいずれも比較的簡単であるという利点があるが、欠点も明らかであり、一般的に、状態が限られ、遷移関係が簡単な場合に適用される。オープンワールドゲームにおいて、AIオブジェクトのパフォーマンスが複雑であり、状態区分を行う場合、状態数が多く、異なる状態間の遷移関係が複雑であり、有限状態機械により制御されるAIオブジェクトの抽象度が低すぎ、直感的ではない。
【0023】
Behaviacビヘイビアツリーは、オープンソースのビヘイビアツリー実現手段であり、ビヘイビアツリー実行ノードの切り替えを実現するように、選択ノード、シーケンスノード、パラレルノード及び条件ノードなどの制御ノードを実現する。ビヘイビアツリーの実行中に、異なる実行ノードを切り替えることによってAIオブジェクトのパフォーマンスの変換を実現する。Behaviacビヘイビアツリーは、サービス側が簡単な実行及び条件ノードを実現すればよいという利点があり、このように、サービスロジック及びビヘイビアツリー制御ロジックをデカップリングすることができ、複雑なAIオブジェクトのパフォーマンスに適用できる。しかし、Behaviacビヘイビアツリーは、ブラックボード機能をサポートしておらず、デバッグ時に直感的ではなく、パラレルノードの使用が不便である。
【0024】
本願の関連技術では、AIオブジェクトのパフォーマンスの同期方式は、サーバ演算配信、クライアント演算+サーバ転送、クライアント演算+サーバ同期を含む。
【0025】
複数人のチーム編成時、AIオブジェクトのパフォーマンスの一致性とリアルタイム性を保証するために、関連する解決手段は、AIオブジェクトの制御をサーバ上で実行し、サーバがAIオブジェクトに関連するロジックの演算を担当し、演算結果を各クライアントに配信して表現することである(即ち、サーバ演算配信)。AIオブジェクトが豊富な行動を示すことを望むゲーム作品について、AIオブジェクトを制御するサーバの負荷を軽減するために、関連する解決手段は、AIオブジェクトを制御するビヘイビアツリーの演算ロジックをあるクライアントに転送し、クライアントによりビヘイビアツリーノードのロジック演算を行い、その後、AIオブジェクトの演算結果をサーバに報告し、最後にサーバにより他のクライアントに転送することである(即ち、クライアント演算+サーバ転送)。別の関連する解決手段は、各クライアントが演算を独立して実行し、演算構成の一致性を保証するために特定の技術的手段を使用することである(即ち、クライアント演算+サーバ同期)。
【0026】
サーバ演算配信は、ロジックが正確であり、遅延が少なく、クライアントによるチートの問題がないという利点がある。しかし、欠点も明らかであり、オープンワールドゲームにおいて、大量のサーバAI演算がサーバ上で実行されると、性能に著しく影響を与え、プレイヤーの体験に不利であるため、このような手段では、AIオブジェクトのパフォーマンスが単一であり、例えば、簡単なパトロール、求愛、逃げなどしかない。
【0027】
クライアント演算+サーバ転送は、サーバの演算負荷を大幅に軽減し、サーバ性能を向上させるという利点がある。しかし、クライアントがチートしやすいという問題が避けられず、また、演算を担当するクライアントのネットワークが不良である場合、他のクライアントにおけるAIオブジェクトのパフォーマンスに影響を与えるとともに、このような解決手段は、一定の制限があり、ショート・ワンラウンドのゲーム製品によく適用される。
【0028】
クライアント演算+サーバ同期の解決手段において、複数のクライアント演算の不一致が発生しやすいため、同一のAIオブジェクトの異なるクライアントでのパフォーマンスが異なるなどの明らかな欠点があり、同時にセキュリティリスクもあり、また、このような解決手段は、より豊富なAIオブジェクトのパフォーマンス、例えば、時間システム、天気システムとの組み合わせをサポートしにくい。
【0029】
本願の実施例は、AIオブジェクトと、プレイヤーに制御される仮想オブジェクトとの間の距離に基づいて、AIオブジェクトを制御するビヘイビアツリーを動的に決定し、近い方のAIオブジェクトに用いられるビヘイビアツリーによって消費されるリソースが多く、遠い方のAIオブジェクトに用いられるビヘイビアツリーによって消費されるリソースが少なく、これにより、近い方のAIオブジェクトが豊かなパフォーマンスを有することを確保するとともに、大量のAIオブジェクトを制御するために必要なコンピュータ機器のリソース消費を低減し、さらにコンピュータ機器の運転負荷を低減することを実現する。以下、本願の実施例に係る技術的手段を詳細に説明する。
【0030】
以下、本願の実施例に係る名詞を簡単に説明する。
【0031】
仮想環境とは、クライアントが端末(端末機器とも呼ばれる)上で実行される時に表示(又は提供)される仮想環境である。当該仮想環境は、現実世界のシミュレーション環境であってもよく、半シミュレーション・半架空の環境であってもよく、純粋に架空の環境であってもよい。仮想環境は、2次元仮想環境、2.5次元仮想環境及び3次元仮想環境のうちの任意の1種であってもよく、本願は、これについて限定しない。下記実施例において、仮想環境が3次元仮想環境であることを例示して説明する。
【0032】
好ましくは、該仮想環境は、仮想オブジェクトの対戦環境を提供することができる。例示的には、オープンワールドゲームにおいて、プレイヤーは、仮想オブジェクトが仮想環境において自由に漫遊するように制御し、ゲームタスクを完了する時点及び方式を自由に選択することができ、漫遊中に、プレイヤーに制御される仮想オブジェクトは、仮想環境において継続的にAIオブジェクトとインタラクションする。例示的には、バトルロワイヤルゲームでは、少なくとも1つの仮想オブジェクトが仮想環境でシングルラウンドの対戦を行い、仮想オブジェクトは、仮想環境で生きるために、敵のユニットにより行われる攻撃や仮想環境にある危険(例えば、毒ガス、沼地など)を回避し、仮想環境内の仮想オブジェクトの生命値がゼロになった場合、仮想環境内の仮想オブジェクトの生命が終了し、最終的にステージ内のルートをスムーズに通過する仮想オブジェクトが勝者となる。例示的には、ステージクリアゲームにおいて、少なくとも1つの仮想オブジェクトは、仮想環境においてワンラウンド対戦を行い、仮想オブジェクトは、モンスターを打殺することにより現在のステージのクリア権限を取得して、次のステージに入るか又は現在の対戦を終了する。
【0033】
仮想オブジェクトとは、仮想環境における可動オブジェクトである。当該可動オブジェクトは、仮想人物、仮想動物、アニメ人物などであってもよく、例えば、3次元仮想環境に表示される人物、動物である。好ましくは、仮想オブジェクトは、アニメーション骨格技術に基づいて構築される3次元立体モデルである。各仮想オブジェクトは、3次元仮想環境でその形状及び体積を有し、3次元仮想環境における一部の空間を占める。
【0034】
アンリアルエンジン(UnrealEngine、UE)4とは、アプリケーション開発エンジンであり、該アプリケーションは、ゲームなどを含んでもよく、アンリアルエンジン4は、UE4と略称されてもよい。
【0035】
UE4ビヘイビアツリーとは、UE4において提供されるビヘイビアツリーを指す。UE4ビヘイビアツリーは、ルートノード、コンポジットノード(Compositesノード)、タスクノード及びセカンダリノードなどを含む。
【0036】
ルートノードは、UE4ビヘイビアツリーの始点ノードである。
【0037】
コンポジットノード(Compositesノード)は、シーケンスノード(Sequenceノード)と、選択ノード(Selectorノード)と、パラレルノード(SimpleParallelノード)とを含む。コンポジットノードの下方に少なくとも2つの子ノードがつながっている。
【0038】
シーケンスノードは、下位ノードを順次実行し、全ての下位ノードが成功(Succeeded)を返すと、シーケンスノード自身が成功を返し、いずれかの下位ノードが失敗(Failed)を返すと、後続の下位ノードの実行を停止するように指示する。シーケンスノードの下方にタスクノードがないと、シーケンスノードに失敗を返す。
【0039】
選択ノードは、下位ノードを順次実行し、下位ノードのうちの1つのノードが成功を返すと、選択ノード自身が成功を返し、全てのノードが失敗を返すと、シーケンスノードが失敗を返すように指示する。選択ノードの下方にタスクノードがないと、選択ノードに失敗を返す。
【0040】
パラレルノードは、1つのメインタスクノードと他のパラレルノードとを接続するものであり、他のパラレルノードは、コンポジットノード又はタスクノードを含み、メインタスクノードが成功を返すと、パラレルノードが成功を返し、メインタスクノードが失敗を返す、パラレルノードが失敗を返し、パラレルノードの結果は、他のパラレルノードの返信結果と無関係である。
【0041】
タスクノードは、AIオブジェクトが特定の行動を実行するように制御するものであり、タスクノードは、通常、UE4ビヘイビアツリーの最下部に位置し、AIオブジェクトの行動の終点である。タスクノードは、瞬間的に完成するタスクノード(瞬時タスクノードと略称する)と、一定時間継続するタスクノード(継続タスクノードと略称する)とに簡単に分けることができる。継続タスクノードに必ず中断が存在する場合、UE4ビヘイビアツリーは、デコレータノードにより中断を実行する。
【0042】
セカンダリノードは、デコレータノード(Decoratorノード)と、サービスノード(Serviceノード)とを含む。
【0043】
デコレータノードは、コンポジットノード又はタスクノードにアタッチされ、UE4ビヘイビアツリーのサブツリーを実行するか否か、及びサブツリーが中断されるか否かを決定する。
【0044】
デコレータノードの上位ノードが選択ノードである場合、デコレータノードは、4つのオプション設定項目であるNone、Self、LowerPriority及びBothを有し、デコレータノードの上位ノードがシーケンスノードである場合、デコレータノードは、2つのオプション設定項目であるNone及びSelfを有する。
【0045】
・None:Noneを選択したデコレータノードは、条件判断機能のみを実行し、計算結果がtrue(真)であると、デコレータノードが位置する分岐を実行し、計算結果がfalse(偽)であると、デコレータノードが位置する分岐を実行しない。
【0046】
・Self:Selfを選択したデコレータノードは、条件判断機能を実行するだけでなく、デコレータノードが位置する分岐を中断することができる。デコレータノードが位置する分岐の実行中に、条件判断結果がtrueからfalseに変化すると、該分岐の実行を中断する。
【0047】
・LowerPriority:LowerPriorityを選択したデコレータノードは、条件判断機能を実行するだけでなく、優先度の低い分岐を中断することができる。優先度の低い分岐の実行中に、条件判断結果がfalseからtrueに変化すると、優先度の低い分岐を中断し、デコレータノードが位置する分岐を実行する。
【0048】
・Both:Bothを選択したデコレータノードは、条件判断機能を実行するだけでなく、デコレータノードが位置する分岐又は優先度の低い分岐を中断することができる。
【0049】
サービスノードは、通常、コンポジットノード又はタスクノードにアタッチされ、その分岐が実行される限り、サービスノードは、定義された時間間隔で実行される。サービスノードは、ブラックボードのチェックや更新によく使われる。サービスノードは、他のビヘイビアツリーシステムにおける従来のパラレル(Parallel)ノードに取って代わるものである。サービスノードは、いかなる戻り値もなく、UE4ビヘイビアツリーの実行プロセスに直接影響を与えない。
【0050】
ブラックボードは、UE4ビヘイビアツリーを実行するために必要なデータを記憶し、UE4ビヘイビアツリーを実行するために必要なデータがブラックボードの値と呼ばれる。ブラックボードは、UE4ビヘイビアツリーと協働してAIオブジェクトのパフォーマンスを制御する。
【0051】
次に、本願の実施例の実施環境を説明する。
【0052】
本願の実施例において、第1仮想オブジェクトのパフォーマンスを制御するビヘイビアツリーは、サーバ又は端末上で実行される。図1に示すように、本願の例示的な一実施例に係るビヘイビアツリーの概略図である。コンポジットノードは、選択ノード102と、シーケンスノード105と、シーケンスノード108を含み、ビヘイビアツリーは、ルートノード101をさらに含む。
【0053】
タスクノード106、タスクノード107、タスクノード110及びタスクノード111は、第1仮想オブジェクトのパフォーマンスを制御するタスクノードである。サービスノード103は、選択ノード102にアタッチされ、その下方の分岐が実行される場合、所定の周期ごとに、環境情報を更新し、更新された環境情報をブラックボードに記憶し、環境情報は、現在の環境の光線強度を含んでもよい。サービスノード109は、シーケンスノード108にアタッチされ、所定の周期ごとに、たいまつ時間を更新し、更新されたたいまつ時間をブラックボードに記憶する。たいまつ時間は、第1仮想オブジェクト(例えば、AIオブジェクト、NPCなど)がたいまつを持つタスク分岐を実行し始める時間から現在時間までの時間である。
【0054】
デコレータノード104は、木陰に移動するタスク分岐を実行する(又は木陰に移動するタスク分岐を実行しない)と決定し、或いは、木陰に移動するタスク分岐を中断すると決定する(たいまつを持つタスク分岐を中断すると決定する)。
【0055】
好ましくは、光線強度が200より大きいとき、デコレータノード104は、木陰に移動するタスク分岐を実行すると決定する。光線強度が200以下であるとき、デコレータノード104は、優先度の低い分岐を実行すると決定する。具体的には、デコレータノード104がどのように分岐の実行と中断を制御するかは、デコレータノードの属性設定を組み合わせて判断する必要があり、ここでは説明を省略する。
【0056】
一実施例において、図1に示すビヘイビアツリーは、全てサーバ上で実行される。サーバは、1台のサーバ、複数台のサーバ、クラウドコンピューティングプラットフォーム及び仮想化センターのうちの少なくとも1種を含む。例示的には、サーバは、プロセッサとメモリとを含み、メモリは、受信モジュールと、制御モジュールと、送信モジュールとをさらに含み、受信モジュールは、アプリケーションから送信される要求、例えば、プレイヤーからの第2仮想キャラクターが移動するように制御する要求を受信し、制御モジュールは、仮想環境のレンダリングを制御し、送信モジュールは、アプリケーションに応答を送信し、例えば、第2仮想キャラクターが移動するように制御する命令をアプリケーションに送信する。
【0057】
一実施例において、図1に示すビヘイビアツリーは、全て端末上で実行される。端末には、仮想環境をサポートするアプリケーションがインストールされて実行され、好ましくは、仮想環境をサポートするアプリケーションの端末の機器タイプは、同一であっても異なっていてもよく、該機器タイプは、スマートテレビ、ウェアラブルデバイス、車載端末、スマートフォン、タブレットコンピュータ、電子書リーダー、MP3(MovingPictureExpertsGroupAudioLayer3、動的映像専門家圧縮標準オーディオレイヤ3)プレイヤー、MP4プレイヤー、ラップトップポータブルコンピュータ及びデスクトップコンピュータのうちの少なくとも1種を含む。
【0058】
一実施例において、図1に示すビヘイビアツリーは、一部がサーバに記憶されて実行され、一部が端末に記憶されて実行され、本願の実施例は、これについて限定しない。
【0059】
一実施例において、本願は、第1仮想オブジェクトのパフォーマンスを制御するビヘイビアツリーを実行する前に、さらにLOD階層化技術により第1仮想オブジェクトのレベルを決定し、この階層化プロセスは、一部がサーバに記憶されて実行され、他の一部が端末に記憶されて実行されてもよく、この階層化プロセスは、全部がサーバに記憶されて実行されてもよく、この階層化プロセスは、全部が端末に記憶されて実行されてもよく、本願の実施例は、これについて限定しない。
【0060】
下記実施例において、ビヘイビアツリー及びLOD階層化技術が全てサーバ上で実行される例を挙げて説明する。
【0061】
コンピュータ機器のリソースが限られている場合でも、NPCが豊かなパフォーマンスを実現できることを保証するために、図2は、本願の例示的な一実施例に係る仮想オブジェクトの制御方法のフローチャートを示し、該方法がサーバ上で実行されることを例として説明し、該方法は、ステップ220、ステップ240、及びステップ260を含んでもよい。
【0062】
ステップ220では、第1ビヘイビアツリーにより第1仮想オブジェクトを制御する。
【0063】
第1仮想オブジェクトは、擬人化行動を有するNPCを指し、オープンワールドゲームにおいて、第1仮想オブジェクトはAIオブジェクトとも呼ばれ、AIオブジェクトは、自身の制御ロジックにより仮想環境内で活動する。好ましくは、該活動は、例えば、AIオブジェクトが自分の陣地をパトロールしたり、その陣地に侵入するAIオブジェクトと喧嘩をしたり、休憩寝るなどのセルフインタラクションを含む。好ましくは、該活動は、プレイヤーに制御される仮想オブジェクトとインタラクションすることをさらに含み、例えば、AIオブジェクトは、プレイヤーに制御される仮想オブジェクトに好奇心を持って観察し続け、AIオブジェクトは、プレイヤーに制御される仮想オブジェクトに緊張を感じて急いで逃げる。
【0064】
第1ビヘイビアツリーとは、第1仮想オブジェクトのパフォーマンスを制御するビヘイビアツリーを指す。好ましくは、第1ビヘイビアツリーのタイプは、アンリアルエンジンUE4ビヘイビアツリーである。一実施例において、UE4ビヘイビアツリーは、UE4におけるビヘイビアツリーモジュールを剥離し、エンジンに関連する部分を除去することによって取得される。
【0065】
一実施例において、第1ビヘイビアツリーは、第1仮想オブジェクトの所定範囲内にプレイヤーに制御される仮想オブジェクトがない場合、第1仮想オブジェクトを制御するビヘイビアツリーであってもよく、該第1ビヘイビアツリーは、全てのプレイヤーが第1仮想オブジェクトを観察できない場合、第1仮想オブジェクトを制御するビヘイビアツリーであってもよい。例えば、全てのプレイヤーが第1仮想オブジェクトを観察できない場合、第1ビヘイビアツリーは、第1仮想オブジェクトがその場で静止するように制御する。好ましくは、該第1ビヘイビアツリーは、初期ビヘイビアツリーとも呼ばれてもよく、例えば、該第1ビヘイビアツリーは、クライアントの動作開始直後のデフォルトの初期状態におけるビヘイビアツリーであってもよく、別の例では、該第1ビヘイビアツリーは、第1仮想オブジェクトの現時点より前のビヘイビアツリーであってもよく、第1仮想オブジェクトの現時点におけるビヘイビアツリーは、更新される必要があり、即ち、該現時点は、第1仮想オブジェクトのビヘイビアツリーが更新される必要がある時点であり、本願の実施例は、これについて限定しない。
【0066】
一実施例において、第1ビヘイビアツリーは、第1仮想オブジェクトが既にプレイヤーの観察範囲内にある場合、第1仮想オブジェクトを制御するビヘイビアツリーであってもよく、例えば、図1に示すように、第1仮想オブジェクトが既にプレイヤーの観察範囲内にある場合、第1ビヘイビアツリーに対応するデコレータノード104は、木陰に移動する分岐を実行する(又は木陰に移動する分岐を実行しない)と決定し、木陰に移動する分岐(又は優先度の低い分岐、即ちたいまつを持つ分岐)を中断するか否かを決定する。
【0067】
一実施例において、サーバは、空間八分木により第1仮想オブジェクトを管理する。八分木は、ツリーデータ構造であり、各内部ノードには正確に8つの子ノードがあり、3次元空間を8つの象限に再帰的に細分することによって分割するために最も一般的に使用される。空間八分木により第1仮想オブジェクトを管理する場合、各八分木ノードは、空間サイズ及び含まれる第1仮想オブジェクトの情報を記録する。
【0068】
ステップ240では、仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得する。
【0069】
第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトであり、他のプレイヤーは、該プレイヤー以外のプレイヤーである。仮想環境は、上記実施例における説明と同じであるため、ここでは説明を省略する。
【0070】
一実施例において、サーバは、所定の時間間隔ごとに、仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得し、例えば、サーバは、1sごとに第1距離及び第2距離を取得する。
【0071】
別の実施例において、サーバは、第1仮想オブジェクトとプレイヤーに制御される仮想オブジェクトとの現時点での距離に基づいて、現時点に対応する次の距離取得時点を決定することができる。例示的には、第1距離を例にとると、サーバは、取得される第1距離に基づいて、次に第1距離を取得するまでの時間間隔を決定する。好ましくは、第1距離が大きいと、次に第1距離を取得するまでの時間間隔が大きく、第1距離が小さいと、次に第1距離を取得するまでの時間間隔が小さい。
【0072】
別の実施例において、プレイヤーに制御される仮想オブジェクトの周囲領域は、複数の距離範囲に分割されてもよく、サーバは、第1仮想オブジェクトとプレイヤーに制御される仮想オブジェクトとの現時点での距離、及びその距離範囲に基づいて、現時点に対応する次の距離取得時点を決定することができる。例示的には、第1距離を例にとると、第1距離が第2仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲にある場合、サーバは、目標距離範囲に対応する時間間隔に基づいて、次に第1距離を取得する時間間隔を決定する。一実施例において、サーバは、LOD階層化技術により、プレイヤーに制御される仮想オブジェクトに対して距離範囲分割を行い、さらに、第1距離又は第2距離を取得する時間間隔を決定する。第2仮想オブジェクトを例にとると、図3に示すように、本願の例示的な一実施例に係るLOD階層化技術の概略図を示す。
【0073】
サーバは、LOD階層化技術により、第2仮想オブジェクト305を円心とする領域を3層に分け、LODレベル2(301)は、第2仮想オブジェクト305から最も遠い第3層であり、LODレベル1(302)は、第2仮想オブジェクト305の次に遠い第2層であり、LODレベル0(303)は、第2仮想オブジェクト305に最も近い第1層である。図3は、第1仮想オブジェクト304をさらに示し、該第1仮想オブジェクト304は、LODレベル0(303)に位置する。好ましくは、第3層の円の半径は、8000cmであり、第2層の円の半径は、4000cmであり、第1層の円の半径は、1000cmである。好ましくは、LODレベル2(301)以外の領域に対してLODレベル設定を行わない。
【0074】
図3から分かるように、第2仮想オブジェクト305に対応するLODレベルを決定した後、サーバは、第1仮想オブジェクト304と第2仮想オブジェクト305との間の第1距離に基づいて、第1仮想オブジェクト304が位置する目標レベルを決定し、さらに、目標レベルに対応する、第1距離を取得する時間間隔を決定することができる。例えば、第1仮想オブジェクト304が第3層(LODレベル2)に位置すると、次に第1距離を取得する時間間隔は、2sであり、第1仮想オブジェクト304が第2層(LODレベル1)に位置すると、次に第1距離を取得する時間間隔は、1sであり、第1仮想オブジェクト304が第1層に位置すると、次に第1距離を取得する時間間隔は、0.5sである。
【0075】
好ましくは、本願の実施例は、プレイヤーに制御される仮想オブジェクトの数を限定せず、第1仮想オブジェクトとの間の距離を取得する必要があるプレイヤーオブジェクトの数も限定せず、即ち、第3距離、第4距離などが存在してもよい。
【0076】
ステップ260では、第1距離が第2距離より小さい場合、第1距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0077】
第1距離と、第2ビヘイビアツリーの実行時に消費されるリソースとは、負の相関関係である。第1距離と第2ビヘイビアツリーの実行時に消費されるリソースとが負の相関関係であることは、第1距離が大きいほど、第2ビヘイビアツリーによって消費されるリソースが少なく、第1距離が小さいほど、第2ビヘイビアツリーによって消費されるリソースが多いと理解されたい。ビヘイビアツリーによって消費されるリソースは、ビヘイビアツリーの複雑さ又はビヘイビアツリーの更新頻度に基づいて決定されてもよく、ビヘイビアツリーの複雑さが高いほど、ビヘイビアツリーによって消費されるリソースが多く、ビヘイビアツリーの更新頻度が高いほど、ビヘイビアツリーによって消費されるリソースが多い。
【0078】
好ましくは、第2ビヘイビアツリーは、第1距離に基づいて第1ビヘイビアツリーの複雑さを変更することによって取得されてもよく、第1距離に基づいて第1ビヘイビアツリーの更新頻度を変更することによって取得されてもよく、第1ビヘイビアツリーとは異なる第2ビヘイビアツリーに直接置き換えられてもよく、本願の実施例は、これについて限定しない。
【0079】
第1距離が第2距離より小さい場合、第1仮想オブジェクトは、第2仮想オブジェクトにより近くなり、第2仮想オブジェクトに対応するプレイヤーの第1仮想オブジェクトに対する感覚的体験を優先的に保証することができ、プレイヤーのユーザ体験を向上させ、NPCのパフォーマンスの合理性を向上させる。
【0080】
一実施例において、プレイヤーに制御される仮想オブジェクトの周囲領域が複数の距離範囲に分割された上で、第2ビヘイビアツリーの決定プロセスは、次のようにして行うことができる。サーバは、第1距離が前記第2仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲に入ることに基づいて、目標距離範囲に対応する第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0081】
各距離範囲は、1つの第2ビヘイビアツリーに対応し、即ち、少なくとも2つの距離範囲は、少なくとも2つの第2ビヘイビアツリーと1対1で対応する。第2仮想オブジェクトの距離範囲に近いほど、対応する第2ビヘイビアツリーの実行時に消費されるリソースが高くなり、第2仮想オブジェクトの距離範囲から遠いほど、対応する第2ビヘイビアツリーの実行時に消費されるリソースが少なくなる。
【0082】
例示的には、サーバは、LOD階層化技術により第1仮想オブジェクトが位置する目標レベルを決定し、目標レベルに対応する第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。図3に示すように(第3仮想オブジェクトを図示せず)、第1仮想オブジェクト304と第2仮想オブジェクト305との間の第1距離に基づいて、第1仮想オブジェクト304が第1層LODレベル0(303)に位置すると決定することができ、サーバは、第1層LODレベル0(303)に対応する第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。第1層LODレベル0(303)に対応するビヘイビアツリー、第2層LODレベル1(302)に対応するビヘイビアツリー及び第3層LODレベル2(301)に対応するビヘイビアツリーによって消費されるリソースは、多い順にソートされる。
【0083】
一実施例において、第1距離が第2距離より大きい場合、第2距離が第3仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲に入ることに基づいて、目標距離範囲に対応する第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0084】
図4に示すように、このとき、第1仮想オブジェクト304と第2仮想オブジェクト305との間の第1距離は、第1仮想オブジェクト304と第3仮想オブジェクト306との間の第2距離より大きく、即ち、第1仮想オブジェクト304は、第2仮想オブジェクト305の第3層に位置し、同時に、第1仮想オブジェクト304は、第3仮想オブジェクト306の第2層に位置するため、第2層に対応する第2ビヘイビアツリーにより第1仮想オブジェクト304を制御することを決定する。
【0085】
上記第2ビヘイビアツリーは、第1仮想オブジェクトに対応するビヘイビアツリーセット(第1ビヘイビアツリーを含む)から、第1距離に基づいて決定される任意のビヘイビアツリーであってもよく、第1仮想オブジェクトに対応するビヘイビアツリーセットは、プリロードされてもよく、これにより、ビヘイビアツリーの切り替えを直接実現し、NPCのパフォーマンスの変換効率を向上させることができる。一実施例において、第2ビヘイビアツリーは、第1ビヘイビアツリーを切り替えるか又は調整することによって取得されてもよい。具体的な2つのケースを以下の実施例で説明する。
【0086】
一実施例において、第1ビヘイビアツリー及び第2ビヘイビアツリーのタイプは、いずれもUE4ビヘイビアツリーである。
【0087】
例示的には、図5に示すように、本願の例示的な一実施例に係る第1仮想オブジェクトのパフォーマンスを示す概略図であり、第1仮想オブジェクト304は、第2仮想オブジェクト305に対応するLODレベル1(第2層)に位置し、このとき、第1仮想オブジェクト304は、第2仮想オブジェクト305を観察し続ける。図6に示すように、第2仮想オブジェクト305又は第1仮想オブジェクト304が移動した後、第1仮想オブジェクト304は、第2仮想オブジェクト305に対応するLODレベル0(第1層)に位置し、このとき、第1仮想オブジェクト304は、第2仮想オブジェクト305から遠ざかろうとする。LODレベル0に対応する第2ビヘイビアツリーに制御される第1仮想オブジェクト304のパフォーマンスは、LODレベル1に対応する第2ビヘイビアツリーに制御される第1仮想オブジェクト304のパフォーマンスより豊かである。
【0088】
一実施例において、図7は、本願の例示的な一実施例に係る異なるLODレベルに位置する第1仮想オブジェクトのパフォーマンスを示す概略図であり、図7において、プレイヤーに制御される仮想オブジェクトは、LODレベル0、LODレベル1及びLODレベル2を有する。図7(A)において、このとき、第1仮想オブジェクト304は、LODレベル2に位置し、第1仮想オブジェクト304は、セルフインタラクション(パトロールしたり、他のNPCと喧嘩をしたり、休憩寝るなど)を行っており、図7(B)において、このとき、第1仮想オブジェクト304は、LODレベル1に位置し、第1仮想オブジェクト304は、第2仮想オブジェクトを観察し続けており(警戒状態とも呼ばれる)、図7(C)において、このとき、第1仮想オブジェクト304は、LODレベル0に位置し、第1仮想オブジェクト304は、第2仮想オブジェクトから逃げている。
【0089】
好ましくは、第1距離が第2距離に等しい場合、第1距離又は第2距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定することができる。
【0090】
好ましくは、第1仮想オブジェクトが第2仮想オブジェクトの所定範囲内のみに入る場合、仮想環境における第1仮想オブジェクトと第2オブジェクトとの間の第1距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを直接決定することができる。
【0091】
好ましくは、第1仮想オブジェクトがどの第2仮想オブジェクトの所定範囲内にも入らず、又はプレイヤーに制御される仮想オブジェクトが第1仮想オブジェクトを観察できない場合、ビヘイビアツリーを用いずに第1仮想オブジェクトを制御してもよく、第1仮想オブジェクトが静止して立つように制御するだけであってもよい。
【0092】
以上より、第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離に基づいて、第1仮想オブジェクトを制御するビヘイビアツリーを決定することにより、第1仮想オブジェクトを制御するビヘイビアツリーが常に動的調整状態にあり、即ち、第2仮想オブジェクトに近い方と遠い方のNPCが異なるビヘイビアツリーによって制御され、近い方のNPCに用いられるビヘイビアツリーによって消費されるリソースが多く、遠い方のNPCに用いられるビヘイビアツリーによって消費されるリソースが少なく、大量のNPCによって消費されるコンピュータ機器のリソースの合計がバランス状態に維持され、コンピュータ機器のリソースが過度に消費されないため、コンピュータ機器の運転負荷を低減する。同時に、NPCが第2仮想オブジェクトに近い場合、豊かなパフォーマンスを有する。
【0093】
また、複数のプレイヤーオブジェクト(即ち、プレイヤーに制御される仮想オブジェクト)がある場合、NPCとプレイヤーオブジェクトとの間の距離を比較することにより、NPCを制御するビヘイビアツリーを決定するための目標距離を決定して、NPCのビヘイビアツリーがより合理的になり、NPCのパフォーマンスの合理性を向上させる。
【0094】
また、プレイヤーに制御される仮想オブジェクトに対して距離範囲の階層化を行い、NPCが入る異なる距離範囲に基づいて、NPCを制御するビヘイビアツリーを決定することにより、NPCビヘイビアツリーの階層化管理を実現し、それによりNPCの近距離に豊かな、遠距離に簡単なパフォーマンスを実現し、さらに近い方のNPCが豊かなパフォーマンスを有することを確保するとともに、コンピュータ機器のリソース消費を低減する。また、第1距離が所定の目標距離範囲に入ることを決定することにより、目標距離範囲に対応する第2ビヘイビアツリーによりNPCを制御することを決定し、距離により第2ビヘイビアツリーを決定する方式をさらに提供し、これにより、第2ビヘイビアツリーの決定方式を豊かにする。
【0095】
図2に示す好ましい実施例において、第1距離が第2距離より小さいことを例にとると、ステップ260は、ステップS3(ステップS31及びステップS32を含む)に置き換えられてもよい。
【0096】
ステップS31では、第1距離に基づいて、第1ビヘイビアツリーを第2ビヘイビアツリーに切り替える。
【0097】
ステップS32では、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0098】
このとき、第2ビヘイビアツリーは、第1ビヘイビアツリーを切り替えることによって取得され、第2ビヘイビアツリーは、第1距離に対応する。
【0099】
一実施例において、第1ビヘイビアツリーが第1距離範囲に対応するビヘイビアツリーであり、第2ビヘイビアツリーが第2距離範囲に対応するビヘイビアツリーであり、かつ第1距離範囲が第2距離範囲より大きい場合、サーバが第1ビヘイビアツリーを第2ビヘイビアツリーに切り替えることにより、第1仮想オブジェクトを制御するビヘイビアツリーの複雑さが大きくなり、複雑さは、ビヘイビアツリーを実行するために消費されるサーバの性能として理解することができ、ビヘイビアツリーの分岐が多い場合、又はビヘイビアツリーのデコレータノードが多い場合、又はビヘイビアツリーのサービスノードが多い場合などに、該ビヘイビアツリーによって消費されるサーバの性能が大きい。
【0100】
例示的には、図3に示すLOD階層化の概略図を参照すると、第1ビヘイビアツリーは、LODレベル0(303)、LODレベル1(302)及びLODレベル2(301)のいずれか1つに対応するビヘイビアツリーである。第2ビヘイビアツリーは、第1ビヘイビアツリーに対応するレベル以外の他のレベルに対応するビヘイビアツリーである。例えば、第1ビヘイビアツリーは、LODレベル1(302)に対応し、第2ビヘイビアツリーは、LODレベル0(303)に対応する。好ましくは、第1仮想オブジェクトのLODレベルが変化しない場合、第1仮想オブジェクトのビヘイビアツリーは変化しない。
【0101】
好ましくは、第1ビヘイビアツリーを第2ビヘイビアツリーに切り替える前に、サーバは、第2ビヘイビアツリーをさらにプリロードしてもよく、これにより、ビヘイビアツリーの切り替えプロセスにおいて、第1ビヘイビアツリーを停止し、第2ビヘイビアツリーを起動するだけでよく、ビヘイビアツリーの切り替え効率を向上させる。
【0102】
いくつかの可能な実施例において、サーバは、第1ビヘイビアツリーを第2ビヘイビアツリーに切り替えることにより、第1仮想オブジェクトを制御するビヘイビアツリーの更新周期が大きくなるようにし、更新周期は、ビヘイビアツリーの出力の更新頻度を示すものであり、更新周期が小さいほど、更新頻度が大きい。
【0103】
以上より、第1ビヘイビアツリーを第2ビヘイビアツリーに切り替えることにより、第1仮想オブジェクトを制御するビヘイビアツリーを切り替える方式を提供し、ビヘイビアツリーの切り替え方式を豊かにする。また、ビヘイビアライブラリにおけるビヘイビアツリーをプリロードすることにより、切り替え時にビヘイビアツリーの簡単な停止と起動を行えばよく、ビヘイビアツリーを作成するオーバーヘッドを回避し、ビヘイビアツリーの切り替え効率を向上させる。
【0104】
図2に示す好ましい実施例において、第1距離が第2距離より小さいことを例にとると、ステップ260は、ステップS4(ステップS41、ステップS42及びステップS43を含む)に置き換えられてもよい。
【0105】
ステップS41では、第1距離に基づいて、第1ビヘイビアツリーの第1更新周期を第2更新周期に調整する。
【0106】
第1更新周期及び第2更新周期は、第1ビヘイビアツリーが隣接する2つの決定を出力する時間間隔を示すものである。例示的には、図1に示すように、第1更新周期及び第2更新周期は、タスクノード106を実行すると決定する時点と、タスクノード107を実行すると決定する時点との間の第1ビヘイビアツリーの時間間隔を示し、更新周期は、簡単な数学的変換によって計算される更新頻度、更新回数などの方式で表すこともできる。
【0107】
一実施例において、図3に示すLOD階層化の概略図を参照すると、第1距離が第2更新周期に対応し、第1距離が位置する第1距離範囲が第2更新周期に対応し、即ち、第1仮想オブジェクトが位置する目標レベルが第2更新周期に対応すると理解されたい。例えば、LODレベル0の更新周期は、最も短く、100msであり、LODレベル1の更新周期は、これに次ぐもので、500msであり、LODレベル3の更新周期は、最も長く、1000msである。
【0108】
第1距離に基づいて、サーバは、第1ビヘイビアツリーの第1更新周期を第2更新周期に調整する。好ましくは、第1仮想オブジェクトのLODレベルが変化しない場合、第1ビヘイビアツリーの更新周期を調整しない。第1仮想オブジェクトが第2仮想オブジェクトのLODレベル分布を超える場合、第1ビヘイビアツリーの決定出力を停止することができる。
【0109】
ステップS42では、第2更新周期を使用する第1ビヘイビアツリーを第2ビヘイビアツリーとして決定する。
【0110】
サーバは、第2更新周期を使用する第1ビヘイビアツリーを第2ビヘイビアツリーとして決定する。
【0111】
ステップS43では、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0112】
サーバは、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定し、このとき、第2ビヘイビアツリーの更新周期は、第2更新周期である。
【0113】
一実施例において、ステップS4の後に、ステップS5をさらに含む。
【0114】
ステップS5では、第1ビヘイビアツリーのサービスノードの第3更新周期を第4更新周期に調整する。
【0115】
第4更新周期は、第1距離に対応し、サービスノードは、第1ビヘイビアツリーを実行するために必要なデータを更新するものであり、第3更新周期及び第4更新周期は、サービスノードが隣接する2回の更新を行う時間間隔を示すものである。
【0116】
第1ビヘイビアツリー又は第2ビヘイビアツリーにおいて、サービスノードは、通常、コンポジットノード又はタスクノードに接続され、その分岐が実行される限り、それらは、定義された時間間隔で実行される。サービスノードは、ブラックボードのチェックや更新によく使われる。UE4ビヘイビアツリーにおいて、サービスノードは、他のビヘイビアツリーシステムにおける従来のパラレル(Parallel)ノードに取って代わるものである。サービスノードは、いかなる戻り値もなく、実行プロセスに直接影響を与えない。
【0117】
以上より、第1ビヘイビアツリーの更新周期を調整することにより、第1仮想オブジェクトを制御するビヘイビアツリーが常に動的調整状態にあり、第2仮想オブジェクトに近い方と遠い方のNPCが異なる更新周期のビヘイビアツリーによって制御され、近い方のNPCに用いられるビヘイビアツリーの更新周期が短く、遠い方のNPCに用いられるビヘイビアツリーの更新周期が長く、大量のNPCによって消費されるコンピュータ機器のリソースの合計がバランス状態に維持され、コンピュータ機器のリソースが過度に消費されないため、コンピュータ機器の運転負荷を低減する。同時に、NPCが第2仮想オブジェクトに近い場合、豊かなパフォーマンス、及びNPCのパフォーマンスの更新リアルタイム性を有する。
【0118】
上記技術的手段は、さらに、第1ビヘイビアツリーの更新周期を調整する場合、第1ビヘイビアツリーのサービスノードの更新周期を適応的に調整することにより、調整後のサービスノードの更新周期が第1距離に適応し、かつ第1ビヘイビアツリーの調整後の更新周期に適応するため、コンピュータ機器のリソースが過度に消費されないことをさらに保証し、第1ビヘイビアツリーの正常な運転を確保し、NPCが正常なパフォーマンスを有する。
【0119】
図2に示す好ましい実施例において、ステップ260の後に、ステップS6をさらに含む。
【0120】
ステップS6では、第2ビヘイビアツリーにより第1仮想オブジェクトを制御する過程において、第2ビヘイビアツリーのk番目の更新周期内に目標データを最後に更新した後、m個のデコレータノードに対して条件判断を1回行う。
【0121】
目標データは、第2ビヘイビアツリーを実行するために必要な入力データであり、第2ビヘイビアツリーの1つのシーケンスノードには、m個のデコレータノードがアタッチされ、シーケンスノードは、シーケンスノードの全ての子ノードが成功値を返す場合に成功値を返すものであり、デコレータノードは、シーケンスノードが位置する分岐を実行するか否か、シーケンスノードが位置する分岐を中断すること、シーケンスノードが位置する分岐のうち優先度の低い分岐を中断すること、のうちの少なくとも1つを決定するものであり、m、kは、正の整数である。
【0122】
好ましくは、ステップS6は、ステップS61及びステップS62に置き換えられてもよい。
【0123】
ステップS61では、第2ビヘイビアツリーにより第1仮想オブジェクトを制御する過程において、ブラックボードの値がi回目に更新される場合、シーケンスノードにブラックボードの値の現在の更新回数をマークする。
【0124】
該シーケンスノードにm個のデコレータノードがアタッチされ、かつ該m個のデコレータノードが同一のブラックボードの値に着目し、第2ビヘイビアツリーのk番目の更新周期内にブラックボードの値がn回更新される。ブラックボードの値は、第1ビヘイビアツリーを実行するために必要なデータであり、例えば、図1に示すように、デコレータノード104は、光線強度というブラックボードの値に着目し、このとき、シーケンスノード105には、デコレータノード104が1つのみアタッチされる。
【0125】
該シーケンスノードにm個のデコレータノードがあり、図8に示すように、シーケンスノード801にm個のデコレータノードがアタッチされ、かつm個のデコレータノードが同一のブラックボードの値に着目する。例えば、ブラックボードの値は、光線強度である。例示的には、デコレータノード1が計算した光線強度は、2000より大きく、デコレータノード2が計算した光線強度は、4000より小さく、デコレータノード3が計算した光線強度と空気湿度との比は、5より大きく、デコレータノード4が計算した光線強度と環境温度との比は、10より大きい。
【0126】
第2ビヘイビアツリーの更新周期内にブラックボードの値がn回更新され、即ち、第1ビヘイビアツリーが隣接する2つの決定を出力する時間間隔で、ブラックボードの値がn回更新され、例えば、前回の決定は、第1仮想オブジェクトが木陰の位置を取得するように制御することであり、次回の決定は、第1仮想オブジェクトが木陰の位置に移動するように制御することであり、2つ決定の間に、光線強度がサービスノードによってn回更新される。
【0127】
一実施例において、シーケンスノードは、シーケンスノードの全ての子ノードが成功値を返す場合に成功値を返し、デコレータノードは、第2ビヘイビアツリーの分岐を実行すると決定し、第2ビヘイビアツリーの分岐を中断すると決定し、ブラックボードの値は、第2ビヘイビアツリーと組み合わせて使用されるブラックボードに記憶され、m、k、nは、いずれも正の整数である。
【0128】
ステップS62では、ブラックボードの値がn回目に更新された後、ブラックボードの値によるm個のデコレータノードのm個の計算結果を取得し、m個の計算結果に基づいて、条件判断を1回行う。
【0129】
ブラックボードの値がn回更新された後、サーバは、ブラックボードの値によるm個のデコレータノードのm個の計算結果を取得し、サーバは、m個の計算結果に基づいて、条件判断を1回行い、条件判断は、シーケンスノードが位置する分岐を実行するか否か、シーケンスノードが位置する分岐を中断すること、シーケンスノードが位置する分岐のうち優先度の低い分岐を中断すること、のうちの少なくとも1つを決定する。
【0130】
一実施例において、ブラックボードの値がi回目に更新される場合、通知するようにm個のデコレータノードをトラバースし、上記ステップS61は、「m個のデコレータノードのうちの1つのデコレータノードに通知する毎に、シーケンスノードを1回マークすることにより、ブラックボードの値をi回目に更新する場合にシーケンスノードをm回マークする」ステップに置き換えられ、ステップS62は、「シーケンスノードがm*n回マークされた後、ブラックボードの値によるm個のデコレータノードのm個の計算結果を取得する」ステップに置き換えられてもよい。
【0131】
例示的には、ブラックボードの値を更新する毎に、シーケンスノードをマークする。図9は、本願の例示的な一実施例に係る、条件判断を1回行うフローチャートを示す図である。
【0132】
ステップ901では、開始する。
【0133】
サーバは、1回更新されるブラックボードの値に基づいてシーケンスノードをマークするフローを開始する。
【0134】
ステップ902では、ブラックボードの値を更新する。
【0135】
サーバは、サービスノードにより、m個のデコレータノードが着目する同一のブラックボードの値を更新する。
【0136】
ステップ903では、j番目のデコレータノードに通知し、jの初期値は、1である。
【0137】
サーバは、ブラックボードの値が更新されることをj番目のデコレータノードに通知する。
【0138】
ステップ904では、シーケンスノードをマークする。
【0139】
1つのデコレータノードに通知する毎に、サーバは、シーケンスノードを1回マークする。
【0140】
ステップ905では、jは、mに等しい。
【0141】
サーバは、m個のデコレータノードに対する通知が完了するか否かを判断し、そうであれば、ステップ907を実行し、そうでなければ、ステップ906を実行する。
【0142】
ステップ906では、j=j+1である。
【0143】
サーバは、jの値をj+1に更新し、再びステップ903から実行する。
【0144】
ステップ907では、m個のデコレータノードのm個の計算結果を取得する。
【0145】
サーバは、m個のデコレータノードのm個の計算結果を取得し、各デコレータは、いずれもブラックボードの値を独立して計算し、該計算方式は、ブラックボードの値とプリセット値との大小を判断することである。
【0146】
ステップ908では、条件判断を1回行う。
【0147】
サーバは、m個のデコレータノードに基づいて、条件判断を1回行う。例えば、サーバは、m個のデコレータノードのm個の計算結果を取得し、1番目からm番目までの計算結果がいずれもtrueであると、1回の条件判断は、trueであり、1番目からm番目までの計算結果に1つのfalseがあると、1回の条件判断は、falseである。
【0148】
条件判断は、シーケンスノードが位置する分岐を実行するか否か、シーケンスノードが位置する分岐を中断すること、シーケンスノードが位置する分岐のうち優先度の低い分岐を中断すること、のうちの少なくとも1つを決定する。
【0149】
ステップ909では、終了する。
【0150】
サーバは、1回更新されるブラックボードの値に基づいてシーケンスノードをマークするフローを終了する。
【0151】
以上より、1回の更新周期内のデコレータノードの条件判断プロセスを最適化することにより、1回の更新周期内に条件判断を1回のみ行うため、本願の関連技術における条件判断プロセスに比べて、ビヘイビアツリーの実行中の不要な性能ロスを回避し、コンピュータ機器の運転負荷を低減し、ビヘイビアツリーの実行時間を低減し、コンピュータ機器の性能を最適化する。
【0152】
本願の関連技術では、1つのシーケンスノードに複数のデコレータがあり、これらのデコレータがいずれも1つのブラックボードの値に着目すると、ブラックボードの値が変化する場合、大きな性能オーバーヘッドが発生する。図8に示すように、シーケンスノード801におけるm個のデコレータノードがいずれも光線強度というブラックボードの値に着目する場合、光線強度が変動すると、1つずつ通知するようにm個のデコレータノードをトラバースする。1つのデコレータノードに通知する毎に、サーバは、m個のデコレータの結果を計算してから、条件判断を1回行う。このように、ブラックボードの値が1回修正されると、m回の条件判断が発生する。今回のビヘイビアツリー更新時にブラックボードの値がn回修正されると、m*n回の条件判断が発生する。本願の実施例に係る技術的手段は、1回のみ判断すればよいため、ビヘイビアツリーの実行オーバーヘッド及び実行時間を低減する。
【0153】
コンピュータ機器のリソースが限られている場合でも、NPCが豊かなパフォーマンスを実現できることを保証するために、図10は、本願の別の例示的な実施例に係る仮想オブジェクトの制御方法を示し、該方法がサーバ上で実行されることを例として説明し、該方法は、ステップ1001~ステップ1009を含む。
【0154】
ステップ1001では、開始する。
【0155】
サーバは、本実施例に係る仮想オブジェクトの制御方法を実行し始める。
【0156】
ステップ1002では、第1仮想オブジェクトを制御する全てのビヘイビアツリーをプリロードする。
【0157】
サーバは、第1仮想オブジェクトを制御するビヘイビアツリーを決定する前に、第1仮想オブジェクトを制御する全てのビヘイビアツリーをプリロードする。全てのビヘイビアツリーは、第1ビヘイビアツリー及び第2ビヘイビアツリーを含む。本願の実施例において、第2ビヘイビアツリーは、第1ビヘイビアツリーとは異なるビヘイビアツリーであり、即ち、第2ビヘイビアツリーは、第1ビヘイビアツリーを切り替えることによって取得される。
【0158】
ステップ1003では、第1ビヘイビアツリーを起動する。
【0159】
サーバは、第1ビヘイビアツリーを起動して第1仮想オブジェクトを制御する。第1ビヘイビアツリーは、第1仮想オブジェクトの所定範囲内にプレイヤーに制御される仮想オブジェクトがない場合のビヘイビアツリーであってもよく、初期ビヘイビアツリーと呼ばれてもよい。第1ビヘイビアツリーは、全てのプレイヤーが第1仮想オブジェクトを観察できない場合、第1仮想オブジェクトを制御するビヘイビアツリーであってもよい。第1ビヘイビアツリーは、第1仮想オブジェクトが既にプレイヤーの観察範囲内に入っている場合、第1仮想オブジェクトを制御するビヘイビアツリーであってもよい。
【0160】
ステップ1004では、第1仮想オブジェクトが移動するように制御するか、又は、第2仮想オブジェクトが移動するように制御する。
【0161】
サーバは、第1ビヘイビアツリーにより第1仮想オブジェクトが移動するように制御するか、又は、サーバは、第2仮想オブジェクトが移動するように制御する。第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCである。第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトである。
【0162】
ステップ1005では、第1仮想オブジェクトと第2仮想オブジェクトとの間の距離を取得し、第1仮想オブジェクトのLODレベルを評価する。
【0163】
サーバは、第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離を周期的に取得し、LOD階層化技術により第1仮想オブジェクトが位置するレベルを評価することができる。サーバは、LOD階層化技術により第2仮想オブジェクトを円心とし、距離に応じて第1仮想オブジェクトまでの空間距離を少なくとも2つのレベルに分割することができる。例えば、第1層で示される距離範囲は、0~50であり、第2層で示される距離範囲は、50~100であり、第3層で示される距離範囲は、100~150であり、第1距離が75である場合、第1仮想オブジェクトが第2層に位置すると決定する。
【0164】
ステップ1006では、LODレベルが変化する。
【0165】
サーバは、第1仮想オブジェクトが位置するレベルが変化するか否かを判断し、変化すれば、ステップ1007を実行し、変化しなければ、ステップ1005を実行し、第1ビヘイビアツリーにより第1仮想オブジェクトを制御し続ける。
【0166】
ステップ1007では、第1ビヘイビアツリーを停止する。
【0167】
サーバは、第1ビヘイビアツリーによる第1仮想オブジェクトの制御を停止する。
【0168】
ステップ1008では、第2ビヘイビアツリーを起動する。
【0169】
サーバは、第2ビヘイビアツリーを起動し、第2ビヘイビアツリーにより第1仮想オブジェクトを制御する。
【0170】
ステップ1009では、終了する。
【0171】
サーバは、本実施例に係る仮想オブジェクトの制御方法の実行を終了する。
【0172】
以下、本願の実施例に係る仮想オブジェクトの表示方法を説明し、該方法が端末(又は端末上で動作するクライアント)に適用されることを例として説明し、該方法は、以下の3つのステップを含む。
【0173】
1、第1仮想オブジェクト、第2仮想オブジェクト及び第3仮想オブジェクトを表示する。
【0174】
一実施例において、端末は、第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを仮想環境に表示し、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCである。好ましくは、第1仮想オブジェクトは、擬人化行動を有するNPCを指し、オープンワールドゲームにおいて、第1仮想オブジェクトはAIオブジェクトとも呼ばれ、AIオブジェクトは、自身の制御ロジックにより仮想環境内で活動する。
【0175】
第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトである。第2仮想オブジェクトを例にとると、端末は、プレイヤーの第2仮想オブジェクトに対する操作要求を受信し、該要求に応答する。例えば、端末は、第2仮想オブジェクトを第1仮想オブジェクトへ走らせる要求を受信して、第2仮想オブジェクトが第1仮想オブジェクトへ迅速に移動するように制御する。
【0176】
2、仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離が、前記仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離より小さい場合、第1距離がpであるとき、第1仮想オブジェクトが第1数の動作を実行することを表示する。
【0177】
3、第1距離がqであるとき、第1仮想オブジェクトが第2数の動作を実行することを表示する。
【0178】
pがqより大きいと、第1数は、第2数より小さく、或いは、pがqより小さいと、第1数は、第2数より大きい。
【0179】
一実施例において、pがqより大きいと、第1数は、第2数より小さく、或いは、pがqより小さいと、第1数は、第2数より大きい。第1距離が第2距離より小さい場合、第1仮想オブジェクトと第2仮想オブジェクトとの距離が遠くから近くなると、即ち、第1距離が徐々に小さくなると、第1仮想オブジェクトが実行する動作の数が徐々に多くなり、第1仮想オブジェクトと第2仮想オブジェクトとの距離が近くから遠くなると、即ち、第1距離が徐々に大きくなると、第1仮想オブジェクトが実行する動作の数が徐々に少なくなることを理解されたい。
【0180】
例示的には、第1距離が第2距離より小さい場合、第1距離が大きいと、第1仮想オブジェクトは、例えば、その場で寝る1つの動作を実行し、第1距離が小さいと、第1仮想オブジェクトは、例えば、第1仮想オブジェクトへ移動し、第2仮想オブジェクトを観察し、第2仮想オブジェクトに唾をかけ、第2仮想オブジェクトから急いで逃げるなどの4つの動作を実行する。
【0181】
なお、1つの場合では、第1仮想オブジェクトと第2仮想オブジェクトとが第1距離だけ離れて仮想環境に存在し、かつその後の時間内に第1仮想オブジェクトと第2仮想オブジェクトとがいずれも動かないと仮定すると、第1仮想オブジェクトが実行しようとする動作の数と、第1距離とは、逆の相関関係にあり、即ち、第1距離と、第1仮想オブジェクトを制御するビヘイビアツリーのオーバーヘッドとは、逆の相関関係である。
【0182】
第1距離が第2距離より大きい場合、第2距離がpであるとき、端末は、第1仮想オブジェクトが第1数の動作を実行することを表示する。第2距離がqであるとき、端末は、第1仮想オブジェクトが第2数の動作を実行することを表示する。
【0183】
好ましくは、第1仮想オブジェクトが第2仮想オブジェクトの所定範囲内のみに入る場合、第1距離がpであると、端末は、第1仮想オブジェクトが第1数の動作を実行することを表示する。第1距離がqであるとき、端末は、第1仮想オブジェクトが第2数の動作を実行することを表示する。
【0184】
以上より、仮想環境において、異なる距離に基づいて第1仮想オブジェクトが実行する異なる数の動作を表示することにより、近い方のNPCによって消費されるリソースが多く、遠い方のNPCによって消費されるリソースが少なく、大量のNPCによって消費されるコンピュータ機器のリソースの合計がバランス状態に維持され、コンピュータ機器のリソースが過度に消費されないため、コンピュータ機器の運転負荷を低減する。同時に、NPCが第2仮想オブジェクトに近い場合、より多くの動作を有する。
【0185】
また、複数のプレイヤーオブジェクト(即ち、プレイヤーに制御される仮想オブジェクト)がある場合、NPCとプレイヤーオブジェクトとの間の距離を比較することにより、NPCが表示すべき動作の数を決定し、NPCのパフォーマンスがより合理的になる。
【0186】
以下、本願の実施例に係る別の仮想オブジェクトの表示方法を説明し、該方法が端末(又は端末上で動作するクライアント)に適用されることを例として説明し、該方法は、以下の3つのステップを含む。
【0187】
1、第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを表示し、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCであり、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトである。
【0188】
一実施例において、端末は、第1仮想オブジェクト、第2仮想オブジェクト、及び第3仮想オブジェクトを仮想環境に表示し、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCである。好ましくは、第1仮想オブジェクトは、擬人化行動を有するNPCを指し、オープンワールドゲームにおいて、第1仮想オブジェクトはAIオブジェクトとも呼ばれ、AIオブジェクトは、自身の制御ロジックにより仮想環境内で活動する。
【0189】
第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトである。第2仮想オブジェクトを例にとると、端末は、プレイヤーの第2仮想オブジェクトに対する操作要求を受信し、該要求に応答する。例えば、端末は、第2仮想オブジェクトを第1仮想オブジェクトへ走らせる要求を受信して、第2仮想オブジェクトが第1仮想オブジェクトへ迅速に移動するように制御する。
【0190】
2、仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離が、仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離より小さい場合、第1距離がpであるとき、第1仮想オブジェクトが動作を実行する時間間隔が第1時間長であることを表示する。
【0191】
3、第1距離がqであるとき、第1仮想オブジェクトが動作を実行する時間間隔が第2時間長であることを表示する。
【0192】
pがqより大きいと、第1時間長は、第2時間長より大きく、或いは、pがqより小さいと、第1時間長は、第2時間長より小さい。
【0193】
一実施例において、pがqより大きいと、第1時間長は、第2時間長より大きく、或いは、pがqより小さいと、第1時間長は、第2時間長より小さい。第1距離が第2距離より小さい場合、第1仮想オブジェクトと第2仮想オブジェクトとの距離が遠くから近くなると、即ち、第1距離が徐々に小さくなると、第1仮想オブジェクトが隣接する動作を実行する時間間隔が徐々に短くなり、第1仮想オブジェクトと第2仮想オブジェクトとの距離が近くから遠くなると、即ち、第1距離が徐々に大きくなると、第1仮想オブジェクトが隣接する動作を実行する時間間隔が徐々に長くなることを理解されたい。
【0194】
例示的には、第1距離が第2距離より小さい場合、第1距離が大きいと、第1仮想オブジェクトは、例えば、喧嘩-寝るのような2つの時間間隔は、5sであり、第1距離が小さいと、第1仮想オブジェクトは、例えば、第1仮想オブジェクトへ移動し、第2仮想オブジェクトを観察し、第2仮想オブジェクトに唾をかけ、第2仮想オブジェクトから急いで逃げるような4つの動作の時間間隔は、いずれも3sである。
【0195】
なお、1つの場合では、第1仮想オブジェクトと第2仮想オブジェクトとが第1距離だけ離れて仮想環境に存在し、かつその後の時間内に第1仮想オブジェクトと第2仮想オブジェクトとがいずれも動かないと仮定すると、第1仮想オブジェクトが実行しようとする動作の時間間隔と、第1距離とは、正の相関関係にあり、即ち、第1距離と、第1仮想オブジェクトを制御するビヘイビアツリーのオーバーヘッドとは、逆の相関関係である。
【0196】
第1距離が第2距離より大きい場合、第2距離がpであるとき、端末は、第1仮想オブジェクトが動作を実行する時間間隔が第1時間長であることを表示する。第2距離がqであるとき、端末は、第1仮想オブジェクトが動作を実行する時間間隔が第2時間長であることを表示する。
【0197】
好ましくは、第1仮想オブジェクトが第2仮想オブジェクトの所定範囲内のみに入る場合、第1距離がpであると、端末は、第1仮想オブジェクトが動作を実行する時間間隔が第1時間長であることを表示する。第1距離がqであるとき、端末は、第1仮想オブジェクトが動作を実行する時間間隔が第2時間長であることを表示する。
【0198】
以上より、仮想環境において、異なる距離に基づいて第1仮想オブジェクトが動作を実行する異なる間隔を表示することにより、近い方のNPCによって消費されるリソースが多く、遠い方のNPCによって消費されるリソースが少なく、大量のNPCによって消費されるコンピュータ機器のリソースの合計がバランス状態に維持され、コンピュータ機器のリソースが過度に消費されないため、コンピュータ機器の運転負荷を低減する。同時に、NPCが第2仮想オブジェクトに近い場合、パフォーマンスは、より高い流暢さを有する。
【0199】
また、複数のプレイヤーオブジェクト(即ち、プレイヤーに制御される仮想オブジェクト)がある場合、NPCとプレイヤーオブジェクトとの間の距離を比較することにより、NPCが動作を実行する時間間隔を決定し、NPCのパフォーマンスがより合理的になる。
【0200】
図11は、本願の例示的な一実施例に係る仮想オブジェクトの制御装置の構成ブロック図を示し、該装置は、
第1ビヘイビアツリーにより第1仮想オブジェクトを制御する制御モジュールであって、第1仮想オブジェクトは、ノンプレイヤーキャラクターNPCである制御モジュール1101と、
仮想環境における第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離、及び仮想環境における第1仮想オブジェクトと第3仮想オブジェクトとの間の第2距離を取得する取得モジュールであって、第2仮想オブジェクトは、プレイヤーに制御される仮想オブジェクトであり、第3仮想オブジェクトは、他のプレイヤーに制御される仮想オブジェクトである取得モジュール1102と、
第1距離が第2距離より小さい場合、第1距離に基づいて、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する決定モジュールであって、第1距離と、第2ビヘイビアツリーの実行時に消費されるリソースとは、負の相関関係である決定モジュール1103と、を含む。
【0201】
好ましい一実施例において、決定モジュール1103は、さらに、第1距離が第2仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲に入ることに基づいて、目標距離範囲に対応する第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定し、各前記距離範囲は、1つの前記第2ビヘイビアツリーに対応する。
【0202】
好ましい一実施例において、決定モジュール1103は、さらに、第1距離が第2距離より大きい場合、第2距離が第3仮想オブジェクトに対応する少なくとも2つの距離範囲のうちの目標距離範囲に入ることに基づいて、目標距離範囲に対応する第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0203】
好ましい一実施例において、第2ビヘイビアツリーは、第1ビヘイビアツリーを切り替えることによって取得される。
【0204】
好ましい一実施例において、決定モジュール1103は、さらに、第1距離に基づいて、第1ビヘイビアツリーを第2ビヘイビアツリーに切り替える。
【0205】
好ましい一実施例において、決定モジュール1103は、さらに、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定し、第2ビヘイビアツリーは、第1距離に対応する。
【0206】
好ましい一実施例において、第2ビヘイビアツリーは、第1ビヘイビアツリーを調整することによって取得される。
【0207】
好ましい一実施例において、決定モジュール1103は、さらに、第1距離に基づいて、第1ビヘイビアツリーの第1更新周期を第2更新周期に調整し、第1更新周期及び第2更新周期は、第1ビヘイビアツリーが隣接する2つの決定を出力する時間間隔を示すものである。
【0208】
好ましい一実施例において、決定モジュール1103は、さらに、第2更新周期を使用する第1ビヘイビアツリーを第2ビヘイビアツリーとして決定する。
【0209】
好ましい一実施例において、決定モジュール1103は、さらに、第2ビヘイビアツリーにより第1仮想オブジェクトを制御することを決定する。
【0210】
好ましい一実施例において、決定モジュール1103は、さらに、第1ビヘイビアツリーのサービスノードの第3更新周期を第4更新周期に調整し、第4更新周期は、第1距離に対応し、サービスノードは、第1ビヘイビアツリーを実行するために必要なデータを更新するものであり、第3更新周期及び第4更新周期は、サービスノードが隣接する2回の更新を行う時間間隔を示すものである。
【0211】
好ましい一実施例において、該装置は、処理モジュール1104をさらに含む。
【0212】
好ましい一実施例において、処理モジュール1104は、前記第2ビヘイビアツリーにより前記第1仮想オブジェクトを制御する過程において、前記第2ビヘイビアツリーのk番目の更新周期内に目標データを最後に更新した後、前記m個のデコレータノードに対して条件判断を1回行うものであり、目標データは、前記第2ビヘイビアツリーを実行するために必要な入力データであり、第2ビヘイビアツリーの1つのシーケンスノードには、m個のデコレータノードがアタッチされ、シーケンスノードは、シーケンスノードの全ての子ノードが成功値を返す場合に成功値を返すものであり、デコレータノードは、シーケンスノードが位置する分岐を実行するか否か、シーケンスノードが位置する分岐を中断すること、シーケンスノードが位置する分岐のうち優先度の低い分岐を中断すること、のうちの少なくとも1つを決定するものであり、m、kは、正の整数である。
【0213】
好ましい一実施例において、目標データは、ブラックボードの値を含み、k番目の更新周期内にブラックボードの値がn回更新され、nは、正の整数であり、処理モジュール1104は、さらに、ブラックボードの値がi番目に更新される場合、シーケンスノードにブラックボードの値の現在の更新回数をマークし、iは、n以下の正の整数である。
【0214】
好ましい一実施例において、処理モジュール1104は、さらに、ブラックボードの値がn回目に更新された後、ブラックボードの値によるm個のデコレータノードのm個の計算結果を取得し、m個の計算結果に基づいて、条件判断を1回行う。
【0215】
好ましい一実施例において、ブラックボードの値がi回目に更新される場合、通知するようにm個のデコレータノードをトラバースする。
【0216】
好ましい一実施例において、処理モジュール1104は、さらに、m個のデコレータノードのうちの1つのデコレータノードに通知する毎に、シーケンスノードを1回マークすることにより、ブラックボードの値をi回目に更新する場合にシーケンスノードをm回マークする。
【0217】
好ましい一実施例において、処理モジュール1104は、さらに、シーケンスノードがm*n回マークされた後、ブラックボードの値によるm個のデコレータノードのm個の計算結果を取得する。
【0218】
好ましい一実施例において、第1ビヘイビアツリー及び第2ビヘイビアツリーのタイプは、いずれもアンリアルエンジンUE4ビヘイビアツリーである。
【0219】
以上より、上記装置は、第1仮想オブジェクトと第2仮想オブジェクトとの間の第1距離に基づいて、第1仮想オブジェクトを制御するビヘイビアツリーを決定することにより、第1仮想オブジェクトを制御するビヘイビアツリーが常に動的調整状態にあり、即ち、第2仮想オブジェクトに近い方と遠い方のNPCは、異なるビヘイビアツリーによって制御され、近い方のNPCに用いられるビヘイビアツリーによって消費されるリソースが多く、遠い方のNPCに用いられるビヘイビアツリーによって消費されるリソースが少なく、大量のNPCによって消費されるコンピュータ機器のリソースの合計がバランス状態に維持され、コンピュータ機器のリソースが過度に消費されないため、コンピュータ機器の運転負荷を低減する。同時に、NPCが第2仮想オブジェクトに近い場合、豊かなパフォーマンスを有する。
【0220】
また、複数のプレイヤーオブジェクト(即ち、プレイヤーに制御される仮想オブジェクト)がある場合、NPCとプレイヤーオブジェクトとの間の距離を比較することにより、NPCを制御するビヘイビアツリーを決定するための目標距離を決定して、NPCのビヘイビアツリーがより合理的になり、NPCのパフォーマンスの合理性を向上させる。
【0221】
図12は、本願の例示的な一実施例に係るコンピュータ機器のブロック構成図を示す。前記コンピュータ機器1200は、中央処理ユニット(CentralProcessingUnit、CPU)1201と、ランダムアクセスメモリ(RandomAccessMemory、RAM)1202及びリードオンリーメモリ(Read-OnlyMemory、ROM)1203を含むシステムメモリ1204と、システムメモリ1204を中央処理ユニット1201に接続するシステムバス1205と、を含む。前記コンピュータ機器1200は、コンピュータ機器内の各素子間で情報を転送するのを助ける基本入力/出力システム(Input/Output、I/Oシステム)1206と、オペレーティングシステム1213、アプリケーション1214、及び他のプログラムモジュール1215を記憶するための大容量ストレージ機器1207と、をさらに含む。
【0222】
前記基本入力/出力システム1206は、情報を表示するためのディスプレイ1208と、ユーザが情報を入力するためのマウス、キーボードなどの入力機器1209とを含む。前記ディスプレイ1208及び入力機器1209は、いずれもシステムバス1205に接続される入出力コントローラ1210を介して中央処理ユニット1201に接続される。前記基本入力/出力システム1206は、キーボード、マウス又は電子スタイラスなどの複数の他の機器からの入力を受信して処理するための入出力コントローラ1210をさらに含んでもよい。同様に、入出力コントローラ1210は、ディスプレイ、プリンタ、又は他のタイプの出力機器に出力をさらに提供する。
【0223】
前記大容量ストレージ機器1207は、システムバス1205に接続される大容量ストレージコントローラ(図示せず)を介して中央処理ユニット1201に接続される。前記大容量ストレージ機器1207及びそれに関連するコンピュータ機器読み取り可能な媒体は、コンピュータ機器1200に不揮発性ストレージを提供する。即ち、前記大容量ストレージ機器1207は、ハードディスク又はコンパクトディスク読み取り専用メモリ(CompactDiscRead-OnlyMemory、CD-ROM)ドライブのようなコンピュータ機器読み取り可能な媒体(図示せず)を含んでもよい。
【0224】
一般性を失わず、前記コンピュータ機器読み取り可能な媒体は、コンピュータ機器記憶媒体及び通信媒体を含んでもよい。コンピュータ機器記憶媒体は、コンピュータ機器読み取り可能な命令、データ構造、プログラムモジュール又は他のデータなどの情報を記憶するための任意の方法又は技術で実装される揮発性及び不揮発性媒体、取り外し可能及び取り出し不可能な媒体を含む。コンピュータ機器記憶媒体は、RAM、ROM、消去可能プログラマブルリードオンリーメモリ(ErasableProgrammableReadOnlyMemory、EPROM)、電気的消去可能プログラマブルリードオンリーメモリ(ElectricallyErasableProgrammableReadOnlyMemory、EEPROM)、CD-ROM、デジタルビデオディスク(DigitalVideoDisc、DVD)又は他の光学式記憶装置、テープカセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置を含む。当然のことながら、当業者であれば、前記コンピュータ機器記憶媒体が上述の種類に限定されないことがわかるであろう。上記システムメモリ1204及び大容量ストレージ機器1207を総称してメモリと呼ぶことがある。
【0225】
本開示の様々な実施例によれば、前記コンピュータ機器1200は、さらに、インターネットなどのネットワークを介してネットワーク上のリモートコンピュータ機器に接続されて実行することができる。即ち、コンピュータ機器1200は、システムバス1205に接続されるネットワークインターフェースユニット1212を介してネットワーク1211に接続されてもよく、又は、ネットワークインターフェースユニット1212を用いて他のタイプのネットワーク又はリモートコンピュータ機器システム(図示せず)に接続されてもよい。
【0226】
前記メモリは、1つ又は1つ以上のプログラムをさらに含み、前記1つ又は1つ以上のプログラムは、メモリに記憶され、中央処理ユニット1201は、該1つ又は1つ以上のプログラムを実行することにより、上記仮想オブジェクトの制御方法又は仮想オブジェクトの表示方法の全部又は一部のステップを実現する。
【0227】
本願の実施例は、プロセッサとメモリとを含むコンピュータ機器をさらに提供し、該メモリには、コンピュータプログラムが記憶され、該コンピュータプログラムは、該プロセッサによりロードされて実行されると、上記各方法の実施例に係る仮想オブジェクトの制御方法又は仮想オブジェクトの表示方法を実現する。
【0228】
本願は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、前記コンピュータプログラムは、プロセッサによりロードされて実行されると、上記方法の実施例に係る仮想オブジェクトの制御方法又は仮想オブジェクトの表示方法を実現する。
【0229】
本願は、コンピュータプログラムを含むコンピュータプログラム製品を提供し、当該コンピュータプログラムは、コンピュータ読み取り可能な記憶媒体に記憶される。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体から該コンピュータプログラムを読み取り、プロセッサは、該コンピュータプログラムを実行して、該コンピュータ機器に上記方法の実施例に係る仮想オブジェクトの制御方法又は仮想オブジェクトの表示方法を実行させる。
【0230】
なお、本願に係る情報(ユーザ機器情報、ユーザ個人情報などを含むが、これらに限定されない)、データ(分析に用いられるデータ、記憶されるデータ、表示されるデータなどを含むが、これらに限定されない)及び信号は、いずれもユーザにより許可されるか又は各当事者により完全に許可され、かつ関連データの収集、使用及び処理は、関連国及び地域の関連法律、法規及び標準を遵守する必要がある。例えば、本願に係る仮想オブジェクト、仮想環境などは、いずれも完全に許可される場合に取得される。
【0231】
本願の実施例の上記番号は、説明のためのものに過ぎず、実施例の優劣を示すものではない。
【0232】
上記実施例を実現するためのステップの全部又は一部がハードウェアによって完了されてもよいし、プログラムで関連するハードウェアを命令することにより完了されてもよく、当該プログラムがコンピュータ読み取り可能な記憶媒体に記憶されてもよく、上に言及された記憶媒体が読み取り専用メモリ、磁気ディスク又は光ディスクなどであってもよいことは、当業者に理解されるところである。
【0233】
以上は、本願の好ましい実施例に過ぎず、本願を限定することを意図するものではなく、本願の精神及び原則内で行われるいかなる修正、同等置換及び改善などは、いずれも本願の保護範囲内に含まれるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
【国際調査報告】