JP7487158B2 - ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法 - Google Patents

ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法 Download PDF

Info

Publication number
JP7487158B2
JP7487158B2 JP2021166400A JP2021166400A JP7487158B2 JP 7487158 B2 JP7487158 B2 JP 7487158B2 JP 2021166400 A JP2021166400 A JP 2021166400A JP 2021166400 A JP2021166400 A JP 2021166400A JP 7487158 B2 JP7487158 B2 JP 7487158B2
Authority
JP
Japan
Prior art keywords
virtual
microphone
sound source
sound
game
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021166400A
Other languages
English (en)
Other versions
JP2023056907A (ja
Inventor
潤也 長田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2021166400A priority Critical patent/JP7487158B2/ja
Priority to US17/957,638 priority patent/US20230112705A1/en
Priority to EP22199473.4A priority patent/EP4162995A1/en
Publication of JP2023056907A publication Critical patent/JP2023056907A/ja
Application granted granted Critical
Publication of JP7487158B2 publication Critical patent/JP7487158B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/54Controlling the output signals based on the game progress involving acoustic signals, e.g. for simulating revolutions per minute [RPM] dependent engine sounds in a driving game or reverberation against a virtual wall
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • A63F13/5252Changing parameters of virtual cameras using two or more virtual cameras concurrently or sequentially, e.g. automatically switching between fixed virtual cameras when a character changes room or displaying a rear-mirror view in a car-driving game
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S7/00Indicating arrangements; Control arrangements, e.g. balance control
    • H04S7/30Control circuits for electronic adaptation of the sound field
    • H04S7/302Electronic adaptation of stereophonic sound system to listener position or orientation
    • H04S7/303Tracking of listener position or orientation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/6063Methods for processing data by generating or executing the game program for sound processing
    • A63F2300/6081Methods for processing data by generating or executing the game program for sound processing generating an output signal, e.g. under timing constraints, for spatialization
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6661Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera
    • A63F2300/6669Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera using a plurality of virtual cameras concurrently or sequentially, e.g. automatically switching between fixed virtual cameras when a character change rooms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S2400/00Details of stereophonic systems covered by H04S but not provided for in its groups
    • H04S2400/11Positioning of individual sound objects, e.g. moving airplane, within a sound field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S2400/00Details of stereophonic systems covered by H04S but not provided for in its groups
    • H04S2400/13Aspects of volume control, not necessarily automatic, in stereophonic sound systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S2400/00Details of stereophonic systems covered by H04S but not provided for in its groups
    • H04S2400/15Aspects of sound capture and related signal processing for recording or reproduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)
  • Stereophonic System (AREA)

Description

本開示は、スピーカへ音声出力する音声制御処理に関する。
従来から、仮想空間内における仮想的な音源と仮想マイクとの距離に基づいて、出力音声の音量等を制御する技術が知られている。
特許第6147486号公報
しかし、上記の技術においては、仮想マイクと仮想音源との相対的な位置関係が急激に変化した場合、音声出力について例えば急激な変化が発生し、ユーザに違和感を与える可能性があった。
それ故に、本開示の目的は、仮想マイクと仮想音源との相対的な位置関係が急激に変化した場合でも、当該仮想音源に係る音声の出力がユーザに違和感を与える可能性を低減することができるゲームプログラム、ゲーム装置、ゲームシステム、ゲーム処理方法を提供することである。
上記目的を達成するために、例えば以下のような構成例が挙げられる。
構成例の一例は、スピーカへ音声データを出力可能な情報処理装置のコンピュータに以下の処理を行わせるゲームプログラムである。コンピュータに、音声データが関連付けられた仮想音源を仮想空間内に配置させ、ゲーム処理に基づいて音声データを再生させ、ゲーム処理に基づいて前記仮想空間内において仮想マイクを移動させ、仮想マイクと仮想音源との間の距離に基づいて、当該仮想マイクが当該仮想音源から仮想的に取得する仮想マイク取得音声データの音量を設定させ、スピーカに出力される仮想マイク取得音声データの音量の出力度合いを示す出力レベルを第1出力レベルに設定させ、仮想空間内における仮想マイクの位置の変化に関する第1条件が満たされた場合に、位置の変化前の仮想マイクの位置に残存仮想マイクを配置させ、残存仮想マイクと仮想音源との間の距離に基づいて音量が設定される残存仮想マイク取得音声データと、位置の変化後の仮想マイクと当該仮想音源との間の距離に基づいて音量が設定される現在仮想マイク取得音声データとを、残存マイク取得音声データの出力レベルは徐々に小さくなるように、かつ、現在マイク取得音声データの出力レベルは第1出力レベルに向けて徐々に大きくなるようにして、スピーカへ出力させる。
上記構成例によれば、仮想マイクの移動前の位置に残存仮想マイクを配置し、現在の位置における仮想マイクとの間で、出力レベルがクロスフェードするように変化させながら、双方の仮想マイクからスピーカへ音声出力を行っている。これにより、ユーザに聞こえる音声を、移動前の位置の残存仮想マイクで取得した音声から現在の位置の仮想マイクで取得した音声へと徐々に切り替えることができ、仮想マイクと仮想音源との相対的な位置関係が急激に変化した場合の音声出力がユーザに違和感を与える可能性を低減することができる。
他の構成例として、第1条件は、仮想空間内において、仮想マイクの移動速度に関するパラメータが所定以上となるときに満たされる条件であってもよい。
上記構成例によれば、仮想マイクの移動速度が所定以上となり、仮想マイクと仮想音源との位置関係が急激に変化した状況が発生したような場合でも、音声出力についての急激な変化を緩和できる。
他の構成例として、仮想マイクは、仮想カメラの位置および/または姿勢に関連づけて配置され、第1条件は、仮想カメラの移動速度に関するパラメータが所定以上となるとき、または、当該仮想カメラの姿勢の変化速度に関するパラメータが所定以上となるときに満たされる条件であってもよい。
上記構成例によれば、例えば仮想カメラの向きが瞬間的に180度変化し、これに伴って仮想マイクの姿勢も変化した結果、仮想マイクと音源の左右の位置関係が入れ替わったような場合等でも、音声出力についての急激な変化を緩和できる。
他の構成例として、仮想マイクは、仮想カメラの位置および/または姿勢に関連づけて配置され、ゲーム処理においては、仮想カメラの移動が自動的に制御される所定のシーンの再生のために用いる第1の仮想カメラと、当該所定のシーン以外において通常用いられ、ユーザの操作またはプレイヤキャラクタオブジェクトの移動に基づいて移動制御される第2の仮想カメラの2つが用いられており、表示されるゲーム画像の生成に用いる仮想カメラを、第2の仮想カメラから第1の仮想カメラに切り替えるときに、第1条件は満たされてもよい。
上記構成例によれば、例えば通常のゲーム画面から、イベントシーンが開始することによる仮想カメラの位置の急激な変化が発生したような場合でも、音声出力についての急激な変化を緩和できる。
他の構成例として、仮想マイクは仮想カメラの位置および/または姿勢に関連づけて配置され、第1条件は、仮想カメラが自動的に移動する所定のシーンの再生中であって、当該仮想カメラが仮想空間内の所定の距離を所定速度以上で移動する予め設定されたタイミングとなったときに満たされる条件であってもよい。
上記構成例によれば、例えば仮想カメラの位置が自動的に制御されるイベントシーンにおいて、仮想カメラの位置が急激に変化するようなカメラワークが用いられているような場合でも、音声出力についての急激な変化を緩和できる。
他の構成例として、残存マイク取得音声データについての出力レベルは、第1出力レベルから徐々に小さくされてもよい。
上記構成例によれば、第1出力レベルによる音量から徐々に音量を小さくする。これにより、音声出力の急激な変化を抑制できる。
他の構成例として、第1条件が満たされた場合に、当該第1条件が満たされる以前から再生されていた音源である過去音源の音声については、残存マイク取得音声データについての出力レベルが徐々に小さくなるように、かつ、現在マイク取得音声データの出力レベルが第1出力レベルに向けて徐々に大きくなるようにしてスピーカへ出力させ、当該第1条件が満たされた後に再生が開始された音源である現在音源の音声については、現在マイク取得音声データの出力レベルを第1出力レベルから変化させずにスピーカへ出力させてもよい。
上記構成例によれば、第1条件が満たされる前から再生されている音源の音声については、音声出力の急激な変化を抑制しつつ、第1条件が満たされた後に再生開始された音源の音声については、画面に写るゲーム画像の見た目と音声の聞こえ方を一致させることができ、ユーザに違和感を与えることを防ぐことができる。
他の構成例として、残存マイクが現在音源から取得した音声については、スピーカに出力させない、または、残存仮想マイクに現在音源からの音声を取得させないようにしてもよい。
上記構成例によれば、現在音源に対する残存マイクに係る処理を実質的に実行させないようにすることができ、処理負荷を軽減できる。
他の構成例として、残存マイク取得音声データの出力レベルが徐々に小さくなるように、かつ、現在マイク取得音声データの出力レベルが前記第1出力レベルに向けて徐々に大きくなるように変化させながら残存仮想マイク取得音声データおよび現在仮想マイク取得音声データを前記スピーカへ出力させる処理が開始してから、当該現在マイク取得音声データの出力レベルが第1出力レベルとなることで当該処理が完了するまでの時間は、0.1秒~0.8秒の範囲内の時間であってもよい。
上記構成例によれば、処理負荷を必要以上に高めることなく、音声出力の急激な変化を緩和できる。
他の構成例として、残存仮想マイク取得音声データの出力については、第1条件が満たされたときにおける仮想マイクと仮想音源との距離に基づき設定された音声の音量から徐々に小さくなるように、残存マイク取得音声データの出力レベルを徐々に小さくしてもよい。
上記構成例によれば、第1条件が満たされた後の仮想マイクと仮想音源との位置関係の変化の有無にかかわらず、第1条件が満たされたときにおける仮想マイクと仮想音源との位置関係に基づく音量をベースに音声出力の制御を行っている。これにより、位置関係の変化を反映させる処理を省略でき、処理負荷を軽減することができる。
他の構成例として、残存マイク取得音声データの出力レベルが徐々に小さく、かつ、現在マイク取得音声データの出力レベルが第1出力レベルに向けて徐々に大きくなるよう変化させる際に、当該残存マイク取得音声データの出力レベルを小さくした分だけ、当該現在マイク取得音声データの出力レベルを大きくさせるように変化させてもよい。
上記構成例によれば、ユーザの聴感上において、一定の音量に聞こえるようにすることができ、ユーザに違和感を与えることを抑制することができる
他の構成例として、残存マイク取得音声データの出力レベルが徐々に小さくなるよう変化した結果、当該出力レベルが最小値または0に到達した後は、残存仮想マイクを消去または無効化させてもよい。
上記構成例によれば、残存仮想マイクを削除または無効化することで、処理対象となる仮想マイクの数を減らすことができ、処理負荷を軽減することができる。
本開示によれば、仮想マイクと仮想音源との相対的な位置関係が急激に変化した場合に、音声出力についての急激な変化を緩和できる。
ゲーム装置2の内部構成の一例を示すブロック図 本実施形態に係るゲーム画面の一例 仮想ゲーム空間を俯瞰した模式図 本実施形態に係るゲーム画面の一例 仮想ゲーム空間を俯瞰した模式図 仮想ゲーム空間を俯瞰した模式図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 出力音声の変化を波形で示した模式図 出力音声の変化を波形で示した模式図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 本実施形態の処理の原理を説明するための図 記憶部84に記憶される各種データの一例を示すメモリマップ 音源データ304のデータ構成の一例 仮想マイクデータ305のデータ構成の一例 本実施形態に係るゲーム処理の詳細を示すフローチャート 仮想マイク関連処理の詳細を示すフローチャート 音源再生処理の詳細を示すフローチャート マイクスイッチ準備処理の詳細を示すフローチャート マイクスイッチング処理の詳細を示すフローチャート 世代マージ処理の概要を説明するための図 スイッチング完了時処理の詳細を示すフローチャート 出力レベルマスタデータのデータ構成の一例
以下、一実施形態について説明する。
[情報処理装置のハードウェア構成]
まず、本実施形態にかかる情報処理を実行するための情報処理装置について説明する。当該情報処理装置は、例えばスマートフォン、据置型または携帯型のゲーム装置、タブレット端末、携帯電話、パーソナルコンピュータ、ウェアラブル端末等である。また、本実施形態にかかる情報処理は、上記のようなゲーム装置等と、所定のサーバとから構成されるゲームシステムにも適用可能である。本実施形態では、据置型ゲーム装置(以下、単にゲーム装置と呼ぶ)を情報処理装置の一例として説明する。
図1は、本実施形態に係るゲーム装置2の内部構成の一例を示すブロック図である。ゲーム装置2は、プロセッサ81を備える。プロセッサ81は、ゲーム装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部84に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。なお、記憶部84は、例えば、フラッシュメモリやDRAM(Dynamic Random Access Memory)等の内部記憶媒体であってもよいし、図示しないスロットに装着される外部記憶媒体等を利用する構成でもよい。
また、ゲーム装置2は、ゲーム装置2がコントローラ4と有線または無線通信を行うためのコントローラ通信部86を備える。なお、図示は省略するが、コントローラ4には、十字キーやABXYボタン等の各種のボタン、および、アナログスティック等が設けられている。
また、ゲーム装置2には、画像音声出力部87を介して表示部5(例えば液晶モニタ等)およびスピーカ6が接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像を、画像音声出力部87を介して表示部5に出力する。また、プロセッサ81は、生成した音声(信号)を、画像音声出力部87を介してスピーカ6に出力する。
[本実施形態におけるゲーム処理の概要]
次に、本実施形態にかかるゲーム装置2で実行されるゲーム処理(情報処理の一例)の動作概要を説明する。まず、本実施形態で想定するゲームは、仮想3次元ゲーム空間(以下、仮想ゲーム空間と呼ぶ)内で、プレイヤキャラクタオブジェクト(以下、プレイヤキャラクタと呼ぶ)を操作するゲームである。図2に、当該ゲームに係るゲーム画面の一例を示す。また、図3に、当該仮想ゲーム空間を俯瞰し、仮想カメラとプレイヤキャラクタ201との位置関係を示す模式図を示す。図2では、プレイヤキャラクタ201と、音源オブジェクト(以下、単に音源と呼ぶ)202とが表示されている。また、その他、いくつかの樹木オブジェクトも表示されている。本ゲームでは、基本的には、3人称視点の画面でゲームが進行する。そのため、図2のようにプレイヤキャラクタ201の全身が写るように仮想カメラの位置や画角が設定されている。また、仮想カメラは、基本的には、ユーザの操作に基づき移動するプレイヤキャラクタ201の位置に追従するように制御される。なお、本実施形態では、仮想カメラの数は1台だけであるとする。
また、仮想カメラと同じ位置に、仮想マイク(リスナーと呼ばれることもある)も配置される。当該仮想マイクは、仮想ゲーム空間内に配置されている音源202から発せられた音声を取得し、(所定の音声関連処理を行ってから)音声信号としてスピーカに出力するために用いられる。なお、図3では、両者の存在をわかりやすくするため横並びで示しているが、実際は、仮想カメラと仮想マイクの位置は重複するような位置であるとする。
ここで、本ゲームは、基本的には3人称視点の画面でゲームが進行するが、所定の条件が満たされることで、仮想カメラの位置が瞬時に大きく(所定距離以上)変化することがあり得る。換言すれば、仮想カメラの移動速度に関するパラメータが所定値以上となる場合があり得る。例えば、本ゲームでは、所定のゲーム内条件を満たすことで、ユーザがプレイヤキャラクタ201を操作している状態から、「イベントデモシーン」に遷移することがある。なお、当該イベントデモシーンとは、「イベント」としてユーザに提示するシーンであって、プレイヤキャラクタ201、ノンプレイヤキャラクタ(以下、NPC)、仮想カメラがそれぞれ、予め定義された動作内容に従って自動的に動作制御されるシーンのことをいう。ここで、広義では、イベントデモシーンとして、例えば予め生成された2Dや3Dのムービーを再生するようなものも含まれ得るが、以下の説明におけるイベントデモシーンは、このようなムービーの再生ではなく、上記のように各キャラクタや仮想カメラの自動制御等を伴うようなシーンを指すものとする。換言すれば、このような自動制御によるシーンのユーザへの提示は、(自動制御の内容が定義されたイベントデータに基づいた)イベントデモシーンの再生といえる。また、当該イベントデモシーンの再生中においては音源202も自動制御され得るため、当該イベントデモシーン中における音源202の音声再生制御は、ゲーム処理に基づく音声の再生に該当する。
上記イベントデモシーンの再生中は、上記のように各キャラクタは自動的に動作制御されるため、プレイヤキャラクタ201の移動操作を受け付けない状態となる。また、仮想カメラの位置や画角(つまり、イベントデモシーンにおけるカメラワークやカット割り)についても、そのイベントデモシーンに合わせて予め指定された位置や画角に基づいて制御されることになる。例えば、図2の状態から、(例えば音源202に関する)イベントデモシーンが開始される所定の条件(以下、イベント開始条件)が満たされたとき、図4に示すように、音源202がアップで写っている画面に瞬時に切り替わることがある。これは、図5に示すように、イベントデモシーンの開始時の仮想カメラの位置として、音源202のすぐそばの位置が予め指定されている場合の例である(そのため、仮想カメラが所定距離以上を瞬間的に移動したような結果となる)。この後、イベントデモシーンの間は、仮想カメラの制御は、予め定められた制御内容に基づくものとなる。そのため、当該イベントデモシーンにおけるカメラワークの一環として、仮想カメラの位置が上記同様に瞬時に大きく変化することもあり得る。また、イベントデモシーンが終われば、もとの視点のゲーム画面に戻る。
また、仮想カメラの位置が瞬時に大きく変化する他の例として、上記のようなイベントデモシーンに関するものの他に、プレイヤキャラクタ201が何らかの形で、通常の移動時の移動速度よりも高速で移動する場合が考えられる。例えば、プレイヤキャラクタ201が、特定のアイテムを使用した場合や、特定のスキルやコマンドを使用した場合等が考えられる。その他、プレイヤキャラクタ201が高速移動するためのゲーム内における所定の条件が満たされた場合等も考えられる。このようなプレイヤキャラクタ201の高速移動に仮想カメラが追従した結果、仮想カメラの位置が瞬時に大きく変化することもあり得る。また、その他、例えば、仮想ゲーム空間内に設けられた「ワープ」のギミックにより、仮想カメラの位置が瞬時に大きく変化する場合も考えられる。このようなワープギミックは、プレイヤキャラクタ201の位置を所定距離以上離れた位置に瞬時に移動させるギミックである。例えばプレイヤキャラクタ201が、第1の地点に配置されているワープギミックに接触すると、ここから所定距離以上離れた第2の地点に瞬間的に移動することができる。この場合も、仮想カメラもプレイヤキャラクタ201の位置に追従して移動させた結果、仮想カメラも第1の地点から第2の地点に移動することになり、その位置が瞬時に大きく変化することがあり得る。
上記のように、ゲーム中に、仮想カメラの位置が瞬時に大きく変化することがあり得る。以下では、このような仮想カメラの位置が瞬間的に所定の距離以上に変化することを「カメラ位置の瞬時変化」と呼ぶ。ここで、本実施形態では、仮想マイクについては、上記のように仮想カメラと同じ位置に設定される。そのため、仮想カメラおよび仮想マイクと、上記音源202との位置関係に着目すると、上記のようにカメラ位置の瞬時変化に伴い、仮想マイクと音源202との位置関係が瞬間的に大きく変化することもあり得る。換言すれば、仮想マイクの移動速度に関するパラメータが所定値以上の状態となることもあり得る。例えば、上記図4で示したようなイベントデモシーンの開始に伴うカメラ位置の瞬時変化が発生した場合、上記図5で示したように、仮想カメラの位置は音源202のすぐそばの位置に瞬間的に変化する。これに伴い、仮想マイクの位置も、仮想カメラの位置に追従させた結果、図6に示すように、音源202のすぐそばの位置に瞬間的に変化することになる。すなわち、仮想マイクの移動速度に関するパラメータが、(一時的に)所定値以上に変化する場合がある。このような場合、例えば上記図3および図6における仮想マイクと音源202との位置関係を比較すると、その位置関係(例えば直線距離)が瞬時に大きく変化していることになる。以下、このような仮想マイクの位置が瞬間的に所定の距離以上に変化することを「マイク位置の瞬時変化」と呼ぶ。
ここで、音源202から所定の音声が再生されている最中に、上記のようなカメラ位置の瞬時変化が発生した場合を想定する。この場合に、仮想マイクも仮想カメラに追従させて音源202との位置関係を瞬間的に変化させると、当該音源202からの音の聞こえ方に関して、次のような問題が発生する可能性がある。まず、音源202から再生される音声の音量が急激に変化することによって、ノイズのように聞こえる可能性がある。また、音声エフェクトの処理として、いわゆるドップラー効果をかける処理を行っているような場合、当該ドップラー効果がかかりすぎて、当該音源202に係るピッチが崩れてしまうことも考えられる。
上記のような問題への対処の一つとして、仮想カメラの位置が瞬間的に大きく変化しても、仮想マイクは仮想カメラにすぐには追従させず、少し遅らせながら追従移動させる手法が考えられる。具体的には、当該変化前と変化後の間における仮想カメラの位置を補間しながら、瞬間的にではなく、少し時間をかけて(遅らせるようにして)仮想マイクを追従させるという手法が考えられる。しかし、この場合、仮想マイクはゆっくりと仮想カメラに追従する制御となるため、ゲーム画像の見た目と、聞こえてくる音声(の音量)の聞こえ方とが一致せず、ユーザに違和感を与える可能性がある。例えば、カメラ位置の瞬時変化によって、それまで見えていなかった音源202が画面内に出現した場合、見えているにも関わらずその音源202の音が聞こえないという状況が起こりえる。また、例えば、遠くに見えていた音源202が近くに見えるように変化した場合に、すぐそばに見えているにもかかわらず不自然に音量が小さい(遠くで鳴っているように聞こえる)、という状況が起こりえる。また、これらとは逆に、カメラ位置の瞬時変化によって、画面に映らなくなった音源202の音が聞こえたり、遠くに見えている音源202の音量が、すぐ近くで鳴っているような音量で聞こえたりする状況も起こりえる。
上記のような音の聞こえ方に関する問題に対処するため、本実施形態では、次のような制御を行っている。まず、本実施形態では、仮想マイクは仮想カメラの位置と同じ位置に設定されるため、カメラ位置の瞬時変化とマイク位置の瞬時変化の発生タイミングは実質的に同じタイミングとなる。そして、上記のようなカメラ位置の瞬時変化に伴うマイク位置の瞬時変化が発生した場合、一時的に、仮想マイクを複数(本例では2つ)にする。具体的には、マイク位置の瞬時変化後における仮想マイクを「カレントマイク」とする(換言すれば、カレントマイクの位置が瞬時変化しているといえる)。次に、マイク位置の瞬時変化の発生直前の仮想マイクの位置に新たに仮想マイクを生成し、これを「残存マイク」とする。その結果、図7に示すように、仮想マイクとして、一時的に「カレントマイク」と「残存マイク」の2つが存在する状態となる。そして、当該2つの仮想マイクが存在する状態である間は、スピーカ6への音声出力信号については、当該カレントマイクからスピーカへの出力、および、残存マイクからスピーカ6への出力を合成した音声信号を、ゲーム音声としてスピーカ6に出力する。
更に、本実施形態では、各仮想マイクについて、「出力レベル」というパラメータを設定する。本実施形態では、当該パラメータは、その仮想マイクが音源202から取得した音声をスピーカ6に出力するときの出力度合いを示すパラメータである。換言すれば、その仮想マイクに対する(所定の音源からの)入力と、スピーカ6への出力の比を指定するパラメータである。本実施形態では、出力レベルは“0.0”~“1.0”の範囲内で指定されるとする。出力レベルが“1.0”の場合は、仮想マイクに入力された音(仮想マイクが取得した音声の音量)が100%の出力でスピーカ6に出力され、出力レベルが“0.0”の場合は、仮想マイクに入力された音はスピーカ6に出力されない(0%の出力)ことになる。
そして、本実施形態では、(音声処理の主な対象を)残存マイクからカレントマイクに、所定期間かけて切り替えていくような処理を行う。以下、このような仮想マイクの切り替えをマイクスイッチングと呼ぶ(なお、後述するように、本実施形態では0.3秒でマイクスイッチングを完了させるものとする)。具体的には、残存マイク、カレントマイクそれぞれの出力レベルを、時間経過でクロスフェードするように変化させる。本実施形態では、残存マイクについては、出力レベルが“1.0”→“0.0”へとフェードアウトするように、また、カレントマイクについては、“0.0”→“1.0”へとフェードインするように変化させる。そして、マイクスイッチングが完了すれば、残存マイクは消去される。
図面で制御の一例を説明すると、まず、上記図7は、マイク位置の瞬時変化の発生直後の状態を示す。この状態では、残存マイクの出力レベルは“1.0”であり、カレントマイクの出力レベルは“0.0”に設定されている。この状態では、残存マイクで取得された音源202の音声のみがスピーカ6に出力され得る状態である。
その後、時間経過と共に、各仮想マイクの出力レベルが変化する。例えば、図8に、マイク位置の瞬時変化の発生から0.1秒後の状態を示す。図8では、残存マイクの出力レベルが“0.7”までフェードアウトし、カレントマイクの出力レベルが“0.3”までフェードインしている状態を示している。この状態では、残存マイクで取得された音源202の音声は、その取得したときの音量の70%の大きさ(強さ)で出力され、カレントマイクで取得された音源202の音声は、その取得したときの音量の30%の大きさで出力される。そして、実際にスピーカ6から出力される音声は、当該カレントマイクおよび残存マイクそれぞれの出力が合成された音声となる。
更に、マイク位置の瞬時変化の発生から0.3秒後には、出力レベルは図9に示すような状態となる。図9では、残存マイクの出力レベルは更にフェードアウトした結果、“0.0”となっている。また、カレントマイクの出力レベルは、更にフェードインした結果、“1.0”となっている。この状態では、カレントマイクで取得された音源202の音声のみがスピーカ6に出力されるような状態となっている。このような状態となれば、出力レベルが“0.0”となった残存マイクは消去される。これにより、図10に示すように、カレントマイクのみが存在するような状態となり、仮想マイクのスイッチング(以下、マイクスイッチングと呼ぶ)が完了する。そして、これ以降は、(次にマイク位置の瞬時変化が発生するまでは)当該カレントマイクのみを用いる音声出力制御が行われることになる。
ここで、本実施形態では、上記のようにマイクスイッチングを0.3秒で完了させるようにしている。これは、実際にユーザに聞こえる音声と、処理負荷とのバランスを考慮した時間である。上記のように、マイクスイッチングに際しては、一時的に仮想マイクの数が増え、複数の仮想マイクについて処理が必要となるため、その分、処理負荷も一時的に増大する。そのため、マイクスイッチングに係る時間は基本的には短い方が望ましい。その一方で、この時間が短すぎると、出力される音声について途切れがあるように聞こえたり、ノイズが混じったように聞こえたりする可能性がある。両者のバランスを考慮し、聞こえ方に違和感がない程度の時間を検討すると、概ね0.1秒~0.8秒の範囲内でマイクスイッチングを完了させることが考えられる。そこで、本実施形態では、一例として、0.3秒でマイクスイッチングを完了させる場合を例に挙げている。
また、上記出力レベルの時間経過に伴う変化に関して、本実施形態では、一方の出力レベルが下がった分だけ他方の出力レベルを上げ、出力レベルの総量は一定となるようにして変化させている。例えば、上記図8の例でいうと、残存マイクの出力レベルが“1.0”から“0.7”に下がった分(0.3)だけ、カレントマイクの出力レベルを上げている。これにより、ユーザの聴覚上の音量を一定にすることができ、ユーザに違和感を与えることを抑制することができる。
このように、本実施形態では、マイク位置の瞬時変化が発生した際、仮想マイクを一時的に複数設け、上記のようなマイクスイッチングの処理を行うことで、出力される音声の急激な変化を抑制することができる。例えば、図11は、本実施形態のようなマイクスイッチングの処理を行わず、カメラ位置の瞬時変化に伴って、単純に仮想マイクも瞬間的に移動させただけの場合の、出力音声の変化を波形で示した模式図である。なお、これは、移動前は遠くにあった音源202が、移動後はすぐ近くに位置する状態に変化した場合の例である。また、図12は、本実施形態のようなマイクスイッチングの処理を行った場合の出力音声の変化を波形で示した模式図である。瞬間的に仮想マイクを移動させた場合は、図11(特に、楕円内の変化)のように、傾斜の度合いが急激に変化するような波形となるが、本実施形態のような処理を行った場合、図12(特に、楕円内の変化)に示すように、なだらかに変化するような波形になる。これにより、ノイズのように聞こえる可能性を低減でき、また、ユーザにとってのゲーム画面の見た目と、聞こえてくる音声との不一致感を抑制することができる。
ところで、上記では、説明をわかりやすくするため、音源202が1つだけの例で説明した。実際のゲーム処理では、複数の音源202が存在し、それぞれの音源202から音声が再生開始されるタイミングもそれぞれ異なることが考えられる。例えば、マイク位置の瞬時変化が発生する前から再生が継続している音声Aと、マイク位置の瞬時変化後に再生が開始された音声Bとが混在するような状況も考えられる。このような場合も想定し、本実施形態では、上記のようなマイクスイッチングの処理において、更に、仮想マイクや各音源202に対して「世代」を割り当てて管理するような処理も行っている。以下、この「世代」を用いた処理の概要について説明する。
まず、このような「世代」を用いる処理の必要性(必要となるシチュエーション)について説明する。図13は、マイク位置の瞬時変化が発生する前の状態のゲーム空間の一例(俯瞰したもの)を示す模式図である。図13では、第1音源211と、第2音源212とが存在しており、それぞれの音源から所定の音声が再生されている状態を示している。なお、両音源の再生音量は同じ音量であるとする。また、仮想マイクは、第1音源211Aのすぐ近くに配置されている状態である。なお、図示は省略するが、仮想カメラは仮想マイクと同じ位置に配置されているとする。この状態における仮想マイクと各音源との位置関係からすれば、仮想マイクの位置では、第1音源211の音の方がより大きく聞こえ、第2音源212の音は、相対的に小さく聞こえている状態が想定される。なお、図13の各音源近くの稲妻のようなマークは、その大きさで、仮想マイクにとって聞こえるであろう音の大きさを示している。
次に、図14に、マイク位置の瞬時変化が発生した直後の状態のゲーム空間の一例を示す。また、ここでは、説明をわかりやすくするため、上記のようなマイクスイッチングの処理を行わず、仮想カメラの位置に仮想マイクを単純に移動させた場合を想定して説明する。図14の状態では、仮想マイクの位置が第2音源212のずぐそばの位置に配置されている。このような位置関係で、仮想マイクの位置における各音源からの音声の聞こえ方としては、第1音源211Aの音の方が小さく、第2音源212の音が大きな音で聞こえている状態が想定される。つまり、図13から図14のような位置関係の変化が発生した場合、マイク位置の瞬時変化の前後に係る各音源の音量変化としては次のような変化が期待される。すなわち、第1音源211Aについては、大きい音量から小さい音量に変化し、第2音源212については、小さい音量から大きい音量に変化することが期待される。そして、このような音量変化の際に、ノイズにならないように音量を変化させるべく、本実施形態では、上記のように、2つの仮想マイクの出力レベルをクロスフェードさせるようなマイクスイッチングの処理を行う。
上記は、マイク位置の瞬時変化の発生前から再生されている音源に関する説明であったが、次に、マイク位置の瞬時変化の発生後に再生が開始された音源について考える。図15は、マイク位置の瞬時変化が発生する前の状態のゲーム空間の一例であり、図16は、マイク位置の瞬時変化が発生した直後の状態のゲーム空間の一例を示す。図15、および図16の双方とも、第3音源213、第4音源214が示されている。仮想マイク、および、図示しないがこれと同じ位置にある仮想カメラは、図15では、第4音源214の近くにあり、図16では、第3音源213のすぐそばに移動している状態である。また、各音源は、マイク位置の瞬時変化が発生した直後に、同じタイミング・同じ音量で、音声の再生を開始したとする。このような場合、図16における仮想マイクの位置での聞こえ方としては、第3音源213については大きな音(近くから聞こえる音)で、第4音源214については小さな音(遠くから聞こえる音)で聞こえるという状態が期待される。特に、仮想カメラの移動が完了している状態であることからすれば、当該仮想カメラで撮像されたゲーム画面における第3音源はユーザの目の前に見えている状態である。そして、ユーザの目の前で第3音源213が鳴り始めることから、第3音源213にかかる音量に関しては、上記のように出力レベルをフェードインさせることなく、最初から出力レベルが“1.0”の状態で再生されればよい。また、第4音源214(遠くで再生される音声)に関していうと、マイク位置の瞬時変化前における仮想マイクの位置が近いからといって、当該第4音源214にかかる音量に関して出力レベルをフェードアウトさせていくような制御を行うと、逆に不自然な聞こえ方になり得る。このような、マイク位置の瞬時変化の発生後に再生が開始される音源から期待される音の聞こえ方を考慮することが考えられる。そこで、本実施形態では、上記の処理に加えて、以下に説明する「世代」を用いる処理も行うものである。
次に、本実施形態における「世代」を用いる処理の概要を説明する。この処理では、マイク位置の瞬時変化(カメラ位置の瞬時変化)の発生タイミングを基準として、これより前から再生されている音声に係る音源(以下、過去音源)と、マイク位置の瞬時変化の発生後に再生を開始した音源(以下、現在音源)とで世代を分ける。そして、世代毎に上記出力レベルを設定したうえで、上記のようなマイクスイッチングの処理を行う。具体的には、過去音源については、上記のようなマイクスイッチングの処理を行う。すなわち、残存マイクおよびカレントマイクの両方を用いて、各仮想マイクの出力レベルをクロスフェードさせる。一方、現在音源については、カレントマイクだけを用いて音声処理を行うようにする。換言すれば、過去音源についてのみ、上記のようなクロスフェードさせるマイクスイッチングの処理を行い、現在音源については、実質的にマイクスイッチングの処理を行わないような制御を行う。より具体的にいうと、マイクスイッチングが完了するまでの間、残存マイクについては、現在音源に対する出力レベルは“0.0”に固定し、過去音源に対する出力レベルについては時間経過で変化(フェードアウト)させる。つまり、残存マイクは、現在音源についての音声は(取得しても)スピーカ6に出力しないことになる。一方、カレントマイクについては、現在音源に対する出力レベルは“1.0”に固定し、過去音源に対する出力レベルについては時間経過で変化(フェードイン)させる。つまり、カレントマイクは現在音源の音声については音量を変化させることなく、取得した音声の音量のままスピーカ6に出力する。そして、本実施形態では、このような制御を実現するため、「世代」という概念を用いている。例えば、マイク位置の瞬時変化の発生前を「第1世代」、マイク位置の瞬時変化の発生後を「第2世代」として、音源の再生開始タイミングに応じて、各音源をいずれかの世代に属させる。そして、各世代向けに設定された出力レベルを用いて、上記のマイクスイッチングの処理を行う。
上述の「世代」および「出力レベル」の設定の一例について、図17~図20を用いて、説明する。まず、図17は、マイク位置の瞬時変化が発生する前の、仮想マイクと音源との関係を示す模式図である。この状態では、仮想マイクの数はカレントマイク1つだけである。また、(音声が再生されている)音源も音源Aの1つだけであるとする。そして、世代については、この時点では、カレントマイクおよび音源Aの双方に、「第1世代」が設定される。また、カレントマイクには上記のような出力レベルが対応づけられるが、この出力レベルが音源の世代毎に設定される。図17の例では、「第1世代音源」向けの出力レベルとして“1.0”が設定されている状態である。そのため、カレントマイクで取得された音源A(第1世代音源)からの音声は、“1.0”の出力レベルでスピーカ6に出力されることになる。
次に、図18は、マイク位置の瞬時変化が発生した後であり、マイクスイッチング完了前の状態を示している。そのため、残存カメラおよびカレントマイクの2つの仮想マイクが一時的に存在している状態である。また、音源Aからの再生は継続している状態である。図18では、カレントマイクについては、仮想カメラの移動に追従してその位置が変化している。そして、世代について、音源Aは、第1世代のままであり、マイク位置の瞬時変化が発生前後の関係からすれば、上記の「過去音源」に該当することになる。また、カレントマイクについては、世代として「第2世代」が設定される。残存マイクに関しては、世代として「第1世代」が設定される。また、各仮想マイクに設定される出力レベルとして、それぞれ、第1世代音源向けの出力レベルと、第2世代音源向けの出力レベルとが設定される(第2世代の仮想マイクが存在するため)。このうち、第1世代音源向けの出力レベルについては上述のように、時間経過でクロスフェードするように変化させていく。一方、第2世代音源向けの出力レベルについては、残存マイクについては“0.0”が固定値として設定される。つまり、残存マイクについては、今後第2世代音源が出てきても、当該第2世代音源が再生する音声はスピーカ6に出力しない、という制御が行われる。換言すれば、残存マイクについては、第2世代音源の音声を実質的に取得しない制御が行われる、ということになる。これに対して、(第2世代となった)カレントマイクについては、第2世代音源向けの出力レベルは固定値として“1.0”が設定される。そのため、カレントマイクでは、第2世代音源が再生する音声について、特に音量を変化させることなく、取得した音量そのままでスピーカ6に向けて出力する、という制御が行われる。
次に、図19は、上記図18の状態から、新たに再生を開始した音源Bが加わった状態を示す。当該音源Bについては、マイク位置の瞬時変化が発生した後に再生を開始したものであるため、(そのときのカレントマイクと同じ)「第2世代」が設定される。つまり、マイク位置の瞬時変化の発生前後の関係からすれば、当該音源Bは上記「現在音源」に該当することになる。そして、図19の状態では、各仮想マイクにおいて、音源Aの音声については、第1世代音源向けの出力レベルをクロスフェードするよう変化させている途中であり、これに基づいてスピーカ6への出力を行う。一方、音源Bの音声に関して、残存マイクでは、第2世代音源向けの出力レベルが“0.0”であるため、残存マイクからは音源Bの音声はスピーカ6に出力されないことになる。つまり、実質的に残存マイクは音源Bの音声を拾わない状態である。対してカレントマイクは、第2世代音源向けの出力レベルが“1.0”であるため、音源Bからの音声をそのままの音量でスピーカ6に出力することになる。
図20は、図19の状態から更に時間が経過し、マイクスイッチングが終わったときの状態を示す。すなわち、第1世代音源向けの出力レベルについて、残存マイクは“0.0”となり、カレントマイクは“1.0”となった状態である。なお、音源A、Bともに、再生は継続している。この状態では、残存マイクからスピーカ6への音声出力が無く、音源Aおよび音源Bの音声については、カレントマイクのみで処理している状態となっている。
このように、マイク位置の瞬時変化の発生タイミングを基準として世代を分け、上記過去音源については出力レベルをクロスフェードさせ、上記現在音源についてはこのようなクロスフェードは行わず、出力レベルを固定させる。これにより、マイク位置の瞬時変化直後に再生が開始された音源があった場合でも、違和感のない音の聞こえ方を実現することができる。
[本実施形態のゲーム処理の詳細]
次に、図21~図29を参照して、本実施形態におけるゲーム処理についてより詳細に説明する。
[使用データについて]
まず、本ゲーム処理で利用される各種データに関して説明する。図21は、ゲーム装置2の記憶部84に記憶される各種データの一例を示すメモリマップである。記憶部84には、プログラム記憶領域301およびデータ記憶領域303が含まれている。プログラム記憶領域301には、ゲーム処理プログラム302が記憶される。また、データ記憶領域303には、音源データ304、仮想マイクデータ305、仮想カメラデータ306、カレントマイク指定データ307、イベントシーン定義データ308、操作データ309等が記憶される。
ゲーム処理プログラム302は、本実施形態にかかるゲーム処理を実行するためのプログラムであり、上記のような仮想マイクに関する制御を実行するためのプログラムコードも含まれている。
音源データ304は、上記音源202に関するデータである。図22は、音源データ304のデータ構成の一例を示す図である。音源データ304は、音源ID341、再生音声データ342、音源位置姿勢データ343、音源世代ID344、再生中フラグ345を少なくとも含むデータベースである。音源ID341は、各音源を一意に識別するためのIDである。再生音声データ342は、再生される音声の元となる音声データである。音源位置姿勢データ343は、仮想ゲーム空間内における音源202の位置および姿勢を示すデータである。音源世代ID344は、その音源が属する上記「世代」を示すデータであり、所定の世代番号が記憶される。また、音源世代ID344は、その音源で音声の再生が開始されたタイミングで、その内容が更新される。再生中フラグ345は、その音源が再生音声データ342に係る音声を再生中の状態であるか否かを示すためのデータである。
図21に戻り、仮想マイクデータ305は、仮想マイクに関するデータである。図23は、仮想マイクデータ305のデータ構成の一例を示す図である。仮想マイクデータ305は、マイク世代ID351、残存フラグ352、スイッチ中フラグ353、スイッチ完了フラグ354、マイク位置姿勢データ355、出力レベル指定テーブル356の項目を有するデータベースである。
マイク世代ID351は、その仮想マイクの世代を示すIDである。本実施形態では、マイク位置の瞬時変化が発生することに伴い、上記のように一時的に生成される残存カメラは1つだけであるとする。そのため、仮想マイクとマイク世代ID351とは、1対1の関係で対応づけられる。つまり、本実施形態では、マイク世代ID351は、複数の仮想マイクを一意に識別する役割も有する。
残存フラグ352は、その仮想マイクが残存マイクに該当するか否かを示すためのフラグである。残存フラグ352がオンであれば、残存マイクであり、オフであれば、カレントマイクであることを示す。
スイッチ中フラグ353は、その仮想マイクがマイクスイッチング中の状態であるか否かを示すためのフラグであり、オンであれば、マイクスイッチング中の状態であり、オフであれば、マイクスイッチング中の状態ではないことを示す。
スイッチ完了フラグ354は、マイクスイッチングが完了した直後の状態である仮想マイクを示すためのフラグである。スイッチ完了フラグ354は、その仮想マイクに係るマイクのスイッチングが完了したときにオンに設定される。当該スイッチ完了フラグ354は、後述するスイッチング完了時における処理の必要性を判断するために用いられる。
マイク位置姿勢データ355は、仮想ゲーム空間内における仮想マイク(カレントマイク、残存マイクそれぞれ)の現在位置を示すためのデータである。また、マイク位置姿勢データ355には、仮想マイクの姿勢を示す情報も含まれている。
出力レベル指定テーブル356は、その仮想マイクについての上記出力レベルを音源の世代毎に指定するためのデータである。具体的には、出力レベル指定テーブル356は、音源世代357、出力レベルデータ358の項目を備えるテーブル形式のデータである。音源世代357は、各音源の世代を特定するためのデータであり、出力レベルデータ358は、その世代の音源についての出力レベルを指定したデータである。また、当該出力レベルデータ358は、音源の世代によっては、上記のように時間経過に応じてその内容が変更され得るデータでもある。なお、マイク位置(カメラ位置)の瞬時変化が多段で発生する場合を考慮し、出力レベル指定テーブル356は、リングバッファ形式のデータとして扱ってもよい。例えば、バッファ数を4とし、新しい世代のものから4世代前の分までのデータを記憶しておくようにしてもよい。そして、マイク位置の瞬時変化が発生したタイミングで、古いものから順に更新されていくようにしてもよい。
図21に戻り、仮想カメラデータ306は、仮想カメラの現在の位置・姿勢・画角等を指定するデータである。
カレントマイク指定データ307は、どの仮想マイクが現時点でのカレントマイクであるかを指定するデータである。なお、マイクスイッチングの処理中ではない状態では、仮想マイクが一つだけ存在する状態であり、必然的にそれがカレントマイクとなる。
イベントシーン定義データ308は、上述したようなイベントデモシーンの内容について定義したデータである。イベントシーン定義データ308には、複数のイベントデモシーンについて、それぞれ、その内容を定義するデータが含まれ得る。各イベントのデータとしては、上記イベント開始条件、そのイベントデモシーンにおけるプレイヤキャラクタ201やNPCの動作内容を定義した情報、および、当該イベントデモシーン中における仮想カメラのカメラワークについて定義した情報等が含まれている。
操作データ309は、コントローラ4に対して行われた操作の内容を示すデータである。本実施形態では、十字キー等のボタンに対する押下状態や、コントローラ4に設けられているアナログスティックに対する入力状態を示すデータが含まれる。当該操作データ309の内容は、コントローラ4からの信号に基づき、所定の周期で更新される。
その他、記憶部84には、ゲーム処理で用いられる各種のデータが必要に応じて記憶される。例えば、上記のカメラ位置やマイク位置の瞬時変化の発生判定に用いるための、1フレーム前~数フレーム前までの仮想カメラや仮想マイクの位置の履歴データ等も記憶され得る。
[プロセッサ81が実行する処理の詳細]
次に、本実施形態にかかるゲーム処理の詳細について説明する。なお、ここでは主に、上記のような仮想マイクの制御に関する処理について説明し、その他のゲーム処理については簡単な説明に留め、詳細な説明は割愛する。
図24は、本実施形態に係るゲーム処理の詳細を示すフローチャートである。当該図24で示すステップS2~S6の処理ループは、1フレーム毎に繰り返し実行されるものとする。また、当該フローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。本実施形態に係るゲーム処理が開始されると、まず、ステップS1で、プロセッサ81は、準備処理を実行する。具体的には、プロセッサ81は、仮想ゲーム空間を構築し、プレイヤキャラクタ201や各種のNPC、各種音源202等のオブジェクトを当該仮想ゲーム空間内に適宜配置する。更に、プロセッサ81は、仮想カメラおよび仮想マイクも(プレイヤキャラクタ201の位置に基づいた)所定の位置に配置する。これに伴い、仮想カメラデータ306、仮想マイクデータ305も生成される。この時点では、仮想マイクデータ305に含まれるデータは1つだけである。また、カレントマイク指定データ307に、マイク世代ID351の値(初期値の“01”)が設定される。更に、プロセッサ81は、当該仮想ゲーム空間を仮想カメラで撮像してゲーム画像を生成すると共に、仮想マイクで取得した各種音源202の音声に基づいて、ゲーム音声を生成する。そして、プロセッサ81や、当該ゲーム画像を表示部5に出力すると共に、ゲーム音声をスピーカ6に出力する。
次に、ステップS2で、プロセッサ81は、操作データ309を取得する。
次に、ステップS3で、プロセッサ81は、各種ゲーム処理を実行する。ここでは主に、以下のような処理が行われる。まず、プロセッサ81は、現在、イベントデモシーンの最中であるか否かを判定する。イベントデモシーンの最中ではない場合は、操作データ309に基づいて、プレイヤキャラクタ201の動作制御処理を実行する。更に、これに伴い、プロセッサ81は、当たり判定処理等の各種のゲーム処理も実行する。なお、プレイヤキャラクタ201を移動させた結果、上述したようなワープギミックのオブジェクトと接触した場合は、当該ワープギミックに基づき、プレイヤキャラクタ201の現在位置を更に変化させる処理も行われる。また、プロセッサ81は、イベント開始条件が満たされたか否かも判定する。イベント開始条件は、例えば、プレイヤキャラクタ201が所定の位置に到達したことや、所定のNPCに話しかけたこと等である。満たされていた場合は、イベントデモシーンに遷移するための処理を実行する。一方、現在、イベントデモシーンの最中である場合は、プロセッサ81は、イベントシーン定義データ308の内容に基づいて、各種キャラクタを自動的に動作制御する。更に、プロセッサ81は、イベントデモシーンが終了したか否かも判定する。そして、終了した場合は、プロセッサ81は、上記のような操作データ309に基づいてプレイヤキャラクタ201の動作制御処理が実行されるゲームモードに遷移する。
次に、ステップS4で、プロセッサ81は、仮想カメラ関連処理を実行する。この処理では、上記ゲーム処理の処理結果が反映された仮想ゲーム空間を仮想カメラで撮像し、表示部5に出力するための処理が実行される。具体的には、プロセッサ81は、まず、現在、イベントデモシーンの最中であるか否かを判定する。そして、イベントデモシーンの最中であれば、イベントシーン定義データ308の内容に基づいて仮想カメラの動作制御を行う。その結果、イベントデモシーン中に上記のようなカメラ位置の瞬時変化が発生し得る。なお、イベントデモシーンの開始直後の場合は、“イベントデモシーンの最中“に該当し、そのイベントデモシーンの開始時の位置として定義されている位置に仮想カメラが移動されることになる。その結果、イベントデモシーンの開始に伴うようにして上記のようなカメラ位置の瞬時変化が発生し得る。一方、イベントデモシーンの最中でない場合は、プロセッサ81は、プレイヤキャラクタ201の位置に基づき、仮想カメラがプレイヤキャラクタ201に追従するように動作制御を行う。また、上記のような仮想カメラの動作制御に伴い、仮想カメラデータ306の内容(現在位置等)も適宜更新される。そして、プロセッサ81は、当該仮想カメラで仮想ゲーム空間を撮像してゲーム画像を生成し、表示部5に出力する。
次に、ステップS5で、プロセッサ81は、仮想マイク関連処理を実行する。この処理では、上記のようなマイクスイッチングの処理を適宜行いながら、仮想マイクで取得した各音源202の音声をスピーカ6に出力するための処理が実行される。
[音源の再生処理]
図25は、上記仮想マイク関連処理の詳細を示すフローチャートである。図25において、まず、ステップS11で、プロセッサ81は、音源再生処理を実行する。この処理は、仮想ゲーム空間内に存在する各音源から所定の音声を再生するための処理である。図26は、当該音源再生処理の詳細を示すフローチャートである。図26において、まず、ステップS21で、プロセッサ81は、仮想ゲーム空間内の音源202から、以下に説明するような処理の対象とする音源202を1つ選択する。以下、当該選択された音源202のことを処理対象音源と呼ぶ。なお、当該選択する手法はどのような手法でもよい。例えば、仮想マイクを中心に所定範囲内に存在する音源202を抽出し、音源ID341の小さいものから順に選択する等してもよい。
次に、ステップS22で、プロセッサ81は、処理対象音源が、現在所定の音声を再生中の状態であるか否かを、再生中フラグ345に基づいて判定する。再生中の状態ではない場合は(ステップS22でNO)、ステップS23で、プロセッサ81は、当該処理対象音源について、音声の再生を開始するための所定の条件(以下、再生開始条件)が満たされたか否かを判定する。当該判定の結果、再生開始条件が満たされている場合は(ステップS23でYES)、ステップS24で、プロセッサ81は、この時点におけるカレントマイクのマイク世代ID351と同じ値(世代番号)を、当該処理対象音源の音源世代ID344に設定する。
次に、ステップS25で、プロセッサ81は、当該処理対象音源に再生中フラグ345にオンを設定する。
次に、ステップS26で、プロセッサ81は、当該処理対象音源の再生音声データ342に基づいて、当該処置対象音源に対応する所定の音声の再生を開始する。その後、プロセッサ81は、後述のステップS30に処理を進める。
一方、上記ステップS23の判定の結果、再生開始条件が満たされていない場合は(ステップS13でNO)、プロセッサ81は、後述のステップS30に処理を進める。
次に、上記ステップS22の判定の結果、処理対象音源が所定の音声を再生中の状態であると判定された場合(ステップS22でYES)の処理について説明する。この場合は、ステップS27で、プロセッサ81は、処理対象音源について、再生を停止するための所定の条件(以下、再生停止条件)が満たされたか否かを判定する。当該判定の結果、再生停止条件が満たされていない場合は、上記ステップS26に処理が進められ、所定の音声の再生処理が継続される。
一方、再生停止条件が満たされた場合は(ステップS27でYES)、ステップS28で、プロセッサ81は、処理対象音源に係る音声再生処理を停止する。続くステップS29で、プロセッサ81は、処理対象音源の音源世代ID344をクリアし(Null値を設定)、再生中フラグ345にオフを設定する。
次に、ステップS30で、プロセッサ81は、全ての音源202について、上述したような処理を行ったか否かを判定する。まだ未処理の音源202が残っている場合は(ステップS30でNO)、プロセッサ81は、上記ステップS21に戻り、次の処理対象音源を選択して処理を繰り返す。一方、全ての音源202について処理した場合は(ステップS30でYES)、プロセッサ81は、当該音源再生処理を終了する。
[マイク位置の瞬時変化が発生した時の処理]
図25に戻り、次に、ステップS12で、プロセッサ81は、仮想マイク(カレントマイク)の移動処理を行う。上記仮想カメラ関連処理において、仮想カメラデータ306の内容は、(プレイヤキャラクタ201に位置に追従するように)適宜更新され得る。プロセッサ81は、仮想カメラデータ306を参照し、カレントマイクのマイク位置姿勢データ355の内容を、現在の仮想カメラの位置と同じ位置に設定することで、カレントマイクを移動させる処理を行う。
次に、ステップS13で、プロセッサ81は、マイク位置の瞬時変化が発生したか否かを判定する。本実施形態では、実質的に、上記カメラ位置の瞬時変化が発生すれば、マイク位置の瞬時変化も発生したことになる。そのため、例えば、仮想カメラまたは仮想マイクの1フレーム前の位置と現在位置との距離の差が所定値以上か否か等で判定することができる。当該判定の結果、マイク位置の瞬時変化が発生していない場合は(ステップS13でNO)、プロセッサ81は、後述のステップS14に処理を進める。発生した場合は(ステップS13でYES)、ステップS14で、プロセッサ81は、マイクスイッチ準備処理を実行する。この処理では主に、上述した残存マイクの生成や出力レベル指定テーブル356の設定が行われる。
図27は、上記マイクスイッチ準備処理の詳細を示すフローチャートである。図27において、まず、ステップS41で、プロセッサ81は、カレントマイクについての設定処理を行う。具体的には、プロセッサ81は、当該仮想マイクのマイク世代ID351として、1つ上の世代を設定する。例えば、プロセッサ81は、マイク世代ID351が“01”だった場合は“02”を設定する。次に、プロセッサ81は、カレントマイク指定データ307に、当該新たに設定したマイク世代ID351を設定する。次に、プロセッサ81は、(カレントマイク用の)出力レベル指定テーブル356の内容を設定する。当該仮想マイクはカレントマイクであるため、プロセッサ81は、当該カレントマイク自身のマイク世代ID351のと同じ値(およびそれ以上)の世代音源202については、出力レベルデータ358に、固定値として“1.0”を設定する。この場合は、新たに設定したマイク世代ID351に対応する世代のデータが出力レベル指定テーブル356に追加されることになる。また、出力レベル指定テーブル356が既に4世代分のデータで埋まっている場合は、古いものから順に入れ替えていく。一方、当該カレントマイク自身のマイク世代ID351の値未満となる世代音源202については、出力レベルデータ358として“0.0”を設定する。ここで設定した出力レベルデータ358の値は、時間経過と共に“1.0”に向けて変化することになる。また、プロセッサ81は、当該カレントマイクのスイッチ中フラグ353にオンを設定し、また、スイッチ完了フラグ354にはオフを設定する。
次に、ステップS42で、プロセッサ81は、カレントマイクの移動前の位置に残存マイクを生成する処理を実行する。具体的には、プロセッサ81は、以下の内容を有するデータを生成して仮想マイクデータ305に追加する。まず、マイク世代ID351として、移動前のカレントマイクのマイク世代ID351が設定される(現在のカレントマイクの世代の1つ前の世代が設定される)。また、残存フラグ352、スイッチ中フラグ353はオンに設定され、スイッチ完了フラグ354はオフに設定される。マイク位置姿勢データ355には、移動前のカレントマイクの位置が設定される。出力レベル指定テーブル356については、当該残存マイク自身の世代より新しい世代の音源世代については、一律に“0.0”が固定値として設定される。残存マイク自身と同じ世代、自身より古い世代の音源世代については、初期値として“1.0“が設定される。この値は、時間経過と共に変化する値である。
次に、ステップS43で、プロセッサ81は、当該残存マイクの位置と、当該残存マイクと同じ世代の音源202(音声再生中のもの)の位置関係(距離等)に基づいて、この時点における、当該残存マイクで取得される各音源202からの音声の音量を算出する。以下、この音量のことを残存基本音量と呼ぶ。また、当該残存基本音量は、残存マイクに係る出力レベルが“1.0”のときの音量として扱われる。ここで、後述の処理では、時間経過と共に、この残存基本音量から徐々に音量を下げていくような処理が行われる。ここで、音源202が例えば自律的に移動可能なオブジェクトである場合等は、マイクスイッチングが完了するまでの間に残存マイクに対する音源202の位置が変化することもあり得る。この点につき、本実施形態では、このような位置関係の変化は考慮せずに、上記残存基本音量を基準として、上記出力レベルに応じた音量を算出する。つまり、マイクスイッチングが完了するまでの間は、残存マイクに対する音源202の位置の変化の有無にかかわらず、ここで算出した残存基本音量をベースとして徐々に音量を下げていくという処理が行われる。これは、処理負荷軽減の観点によるものである。すなわち、マイクスイッチングの間も、残存マイクに対する音源の位置の変化を反映して処理すると、処理負荷が高くなる虞があるため、このような残存基本音量を基準として用いるものである。また、上記のようにマイクスイッチングは0.3秒というわずかな時間で完了させるため、このような残存基本音量を用いて処理しても、ユーザに違和感を与えずにすむと考えられるためである。
上記ステップS43の処理が終われば、プロセッサ81は、マイクスイッチ準備処理を終了する。
[マイクスイッチング中の処理]
図25に戻り、次に、ステップS15で、プロセッサ81は、仮想マイクデータ305のスイッチ中フラグ353を参照し、マイクスイッチングに係る処理の途中の状態である仮想マイクがあるか否かを判定する。当該判定の結果、マイクスイッチング処理中の仮想マイクがない場合は(ステップS15でNO)、プロセッサ81は、後述のステップS17に処理を進める。一方、ある場合は(ステップS15でYES)、ステップS16で、プロセッサ81は、マイクスイッチング処理を実行する。
図28は、上記マイクスイッチング処理の詳細を示すフローチャートである。まず、ステップS51で、プロセッサ81は、マイクのスイッチングを完了させる条件が満たされたか否かを判定する。具体的には、プロセッサ81は、残存マイクにおける、各世代の音源に対する出力レベルデータ358が全て“0.0”になっており、カレントマイクの出力レベルデータ358が全て“1.0”となっているか否かを判定する。つまり、スピーカ6への音声出力がカレントマイクからのみとなる状態となったか否かを判定する。当該判定の結果、マイクスイッチングの完了条件がまだ満たされていない場合は(ステップS51でNO)、次に、ステップS52で、プロセッサ81は、マイク位置の瞬時変化が発生してからの時間経過に応じて、カレントマイクと残存マイクとの間で出力レベルがクロスフェードするように、出力レベルデータ358の内容を更新する。すなわち、プロセッサ81は、カレントマイクについては、そのマイク世代ID351未満の音源世代357(つまり、上記過去音源)の出力レベルデータ358について、“0.0”から“1.0”に向けて徐々に(本例の場合、0.3秒かけて)フェードインするように更新していく。また、それ以外(現在音源)の音源世代357の出力レベルデータ358については、“1.0”のまま固定しておく。また、残存マイクについては、プロセッサ81は、そのマイク世代ID351と同じ音源世代357(過去音源)の出力レベルデータ358を“1.0”から“0.0”に向けて徐々に(0.3秒かけて)フェードアウトするよう更新していく。また、残存マイク自身の世代より新しい世代の音源世代357(現在音源)に係る出力レベルデータ358については、“0.0”のまま固定しておく。その後、プロセッサ81は、マイクスイッチング処理を終了する。
一方、上記ステップS51の判定の結果、マイクスイッチングの完了条件が満たされた場合は(ステップS51でYES)、ステップS53で、プロセッサ81は、当該完了条件を満たした残存マイクおよびカレントマイクのスイッチ中フラグ353にオフを設定する。
次に、ステップS54で、プロセッサ81は、マイクスイッチングの完了条件を満たした残存マイクおよびカレントマイクのスイッチ完了フラグ354にオンを設定する。その後、プロセッサ81は、マイクスイッチング処理を終了する。
[マイクスイッチングの完了直後に行われる処理]
図25に戻り、次に、ステップS17で、プロセッサ81は、スイッチ完了フラグ354がオンである仮想マイクがあるか否かを判定する。当該判定の結果、ない場合は(ステップS17でNO)、プロセッサ81は、後述するステップS19に処理を進める。ある場合は(ステップS17でYES)、ステップS18で、プロセッサ81は、スイッチング完了時処理を実行する。当該スイッチング完了時処理では、主に、世代のマージ処理、および、残存マイクを消去する処理が行われる。
ここで、当該スイッチング完了時処理で行う世代のマージ処理の概要を説明する。この処理では、マイクスイッチングの完了後、古い世代の音源202に係る音源世代ID344を新しい世代のものに更新するという処理が行われる。つまり、音源202の世代を最新のものにマージするという処理が行われる。図29に、当該スイッチング完了処理の概念を示す。図29は、上述した図20の後の、「世代」および「出力レベル」の設定の一例でもある。図29では、音源Aの音源世代を“1”から“2”に更新している。これにより、音源AおよびB共に、音源世代は第2世代に統一される。その結果、カレントマイクの第2世代音源向けの出力レベルのみが利用されるような状態となる。そこで、本実施形態では、カレントマイクの(利用されなくなった)「第1世代音源」に係る音源世代357および出力レベルデータ358の内容をクリア(Nullを設定)するという処理も行っている。更に、仮想マイクデータ305から、残存マイクに係るデータを消去する処理も行われる。
図30は、上記スイッチング完了時処理の詳細を示すフローチャートである。まず、ステップS61で、プロセッサ81は、仮想マイクデータ305を参照し、スイッチ完了フラグ354がオンの仮想マイクを抽出する。
次に、ステップS62で、プロセッサ81は、残存マイクのマイク世代ID351と同じ世代の音源202を、音源データ304から抽出する。そして、プロセッサ81は、当該抽出した音源の音源世代ID344を、カレントマイクのマイク世代ID351と同じ世代に更新する。
次に、ステップS63で、プロセッサ81は、カレントマイクの出力レベル指定テーブル356から、今回スイッチングが完了した残存マイクのマイク世代ID351に対応する音源世代についてのデータ(音源世代357および出力レベルデータ358)をクリアする(Nullを設定する)。
次に、ステップS64で、プロセッサ81は、仮想マイクデータ305から、今回マイクスイッチングが完了した残存マイクに係るデータを消去する。
次に、ステップS65で、プロセッサ81は、カレントマイクのスイッチ完了フラグ354にオフを設定する。以上で、スイッチング完了時処理は終了する。
[スピーカ6への音声出力処理]
図25に戻り、次に、ステップS19で、プロセッサ81は、音声出力処理を実行する。具体的には、プロセッサ81は、残存マイクがあれば、つまり、マイクスイッチング中の状態であれば、当該残存マイクの出力レベル指定テーブル356の内容と、上記残存基本音量とに基づいて、残存マイクからスピーカ6に出力する各音源の音量を算出する。また、カレントマイクについては、次のような処理が行われる。まず、プロセッサ81は、この時点でのカレントマイクの位置において取得される各音源からの音声の音量(以下、カレント基本音量)を算出する。次に、上記カレントマイクの出力レベル指定テーブル356の内容と、当該カレント基本音量とに基づいて、カレントマイクからスピーカ6に出力する各音源の音量を算出する。そして、プロセッサ81は、マイクスイッチング中の状態である場合は、残存マイクおよびカレントマイクの双方の出力を合成して、スピーカ6へ出力する音声信号を生成し、当該スピーカへの出力を行う。一方、マイクスイッチング中の状態でない場合は、カレントマイクのみを用いてスピーカ6へ出力する音声信号を生成し、当該スピーカへの出力を行う。つまり、上記カレント基本音量のままの大きさでスピーカ6へ出力する。そして、プロセッサ81は、仮想マイク関連処理を終了する。
なお、上記カレント基本音量に関して、他の実施形態では、上述の残存基本音量と同様の処理を行ってもよい。すなわち、マイクスイッチングが完了するまでの間は、カレントマイクに対する音源の位置が変化したとしても、その位置変化は考慮せず処理するようにしてもよい。
図24に戻り、次に、ステップS6で、プロセッサ81は、ゲーム処理終了のための条件が満たされたか否かを判定する。例えば、ユーザによるゲーム終了指示操作があったか否か等である。当該条件が満たされていない場合は(ステップS6でNO)、プロセッサ81は、上記ステップS2に戻り、処理を繰り返す。一方、当該条件が満たされた場合は(ステップS6でYES)、プロセッサ81は、当該ゲーム処理を終了する。
以上で、本実施形態に係るゲーム処理の詳細説明を終了する、
このように、本実施形態では、本実施形態では、仮想マイク(仮想カメラ)の位置が瞬間的に大きく移動した場合、移動前後に係る位置にそれぞれ仮想マイクを設けて、一時的に仮想マイクが複数存在する状態とする。そして、各仮想マイクからスピーカ6への出力レベルがクロスフェードするように変化させている。これにより、スピーカ6から出力される音声の急激な変化を抑制し、出力される音声にノイズが乗ったようにユーザに聞こえることを防ぐことができる。
[変形例]
なお、上記実施形態では、仮想カメラの数が一つだけである場合を例として説明した。他の実施形態では、予め仮想カメラおよび仮想マイクを複数用意しておき、使用する仮想カメラおよび仮想マイク(カレントカメラ/カレントマイク)を、イベントデモシーンか否かに応じて切り替える、という制御を行ってもよい。例えば、通常使用する仮想カメラであり、プレイヤキャラクタ201に追従して移動するゲーム用カメラと、イベントデモシーン専用で用いられるイベント用カメラの2つの仮想カメラを仮想空間内に配置しておく。また、各仮想カメラと同じ位置にそれぞれ仮想マイク(ゲーム用マイク、イベント用マイク)を配置しておく。そして、このうち一方だけをカレントカメラ/カレントマイクとして有効化するような制御を行う。すなわち、初期状態としてゲーム用カメラ(ゲーム用マイク)を有効にしておき、イベントデモシーンが開始される条件が満たされたときは、ゲーム用カメラ(ゲーム用マイク)を無効化し、イベント用カメラ(イベント用マイク)を有効化する、という制御を行ってもよい。そして、このように複数存在する仮想カメラ/仮想マイクのうち、カレントカメラ/カレントマイクを切り替える場合でも、上記のような仮想マイクのスイッチング処理は適用可能である。このような場合、カレントカメラ/カレントマイクの位置の変化が所定距離以上であれば、上記のカメラ位置の瞬時変化/マイク位置の瞬時変化の条件を満たすことになる。また、このような制御を行う場合は、上記残存マイクについては、「生成/消去」する代わりに、例えば「有効化/無効化」する制御を行えばよい。換言すれば、上記ゲーム用マイクとイベント用マイクとの間で、カレントマイクと残存マイクとの役割を切り替えるような制御を行えばよい。
また、上述の実施形態では、マイクスイッチング処理を開始するための条件の一例として、マイク位置の瞬時変化の発生、すなわち、1フレーム前後における仮想マイクの位置が所定距離以上変化していることを例として説明していた。この他、マイクスイッチング処理を開始するための条件として、以下のような条件を用いてもよい。例えば、上記のようなワープに係る処理が実行されたときに、(実際の移動距離の大小にかかわらず)マイクスイッチング処理を開始するための条件が満たされたと判定してもよい。また、プレイヤキャラクタ201が高速移動するための条件を満たし、高速移動させる制御が行われたときに、(実際の移動距離の大小にかかわらず)マイクスイッチング処理を開始するための条件が満たされたと判定してもよい。具体的には、プレイヤキャラクタ201が、通常の移動時における移動速度よりも高速な移動を伴うコマンドが入力された場合である。また、更には、このようなコマンド入力がなくとも、高速移動する条件が満たされた場合(例えば、「矢印方向に高速で滑る床」の上に乗った場合等)で、実際にプレイヤキャラクタ201の高速移動制御が行われた場合である。また、その他、上記のように仮想カメラを複数用意する場合において、上記ゲーム用カメラ(マイク)からイベント用カメラ(マイク)へ切り替えた場合に、両カメラの間の距離の大小にかかわらず、一律に上記のようなマイクスイッチング処理を実行してもよい。
また、マイクスイッチング処理を開始するための条件の他の例として、上述したワープのギミックを用いる場合に、例えば現在位置から所定距離以上離れた位置をワープ先として指定したときに、マイクスイッチング処理を開始してもよい。つまり、ワープ後における実際の移動距離を算出することなく、当該ワープ先の指定があったと判定された時点で、マイクスイッチング処理の開始条件が満たされたと判定するようにしても良い。
また、上記イベントデモシーンの再生中においては、仮想カメラの移動内容・移動経路は事前に設定されているため、仮想カメラが瞬時に所定距離以上移動する場面も事前に判別し得る。そのため、当該イベントデモシーン中であって仮想カメラが瞬時に移動するように予め設定された場画においては、仮想カメラの移動速度等の算出をすることなく、この場面への遷移に併せてマイクスイッチングを開始するよう設定してもよい。また、上記のように仮想カメラを複数用いる実施形態において、上記ゲーム用カメラからイベントカメラに切り替える場合に、複数存在するイベントの中から、使用するカメラの位置が瞬時に大きく変化するような切り替えが生じるイベントについては、事前に判別することが可能である。そのため、このようなカメラ位置の瞬時変化を伴うようなイベントについては、そのイベントの開始に併せてマイクスイッチング処理を実行することが予め設定されていてもよい。つまり、カメラ/マイク位置の瞬時変化が発生することが予めわかっているイベントの開始条件が満たされた場合は、仮想カメラや仮想マイクの実際の位置の変化や移動速度を算出することなく、上記マイク位置の瞬時変化の条件が満たされたと判定するようにしてもよい。
また、各仮想マイクの出力レベル指定テーブル356の設定に関して、上記のような処理の他、例えば、出力レベル指定テーブル356の内容を仮想マイクの世代毎に予め定義したデータを用いるようにしてもよい。例えば、図31に示すようなデータ構成の出力レベルマスタデータを用意しておいてもよい。図31に示す出力レベルマスタデータは、仮想マイクの世代毎に、音源世代、および初期出力レベルとの対応を予め定義したデータである。上記のようなマイクスイッチ準備処理(ステップS14)における、残存マイクの生成およびカレントマイクの設定の際に、このような出力レベルマスタデータを参照し、各マイクの世代に応じて、出力レベルデータ358を設定するようにしてもよい。このような出力レベルマスタデータを用いることで、仮想マイクの世代、および音源の世代毎にそれぞれ異なる出力レベルを指定でき、より細やかな調整を行うことも可能となる。
また、上記実施形態では、残存マイクの出力レベルの初期値として“1.0”から下がっていく例を挙げたが、これに限らず、他の実施形態では、例えば“0.8”を初期値として、ここから下げるように処理してもよい。
また、上記実施形態では、マイクスイッチングの完了条件として、残存マイクの出力レベルが“0.0”、カレントマイクの出力レベルが“1.0”となった場合を例に挙げた。つまり、“0.0”および“1.0”を目標値として、それぞれの仮想マイクの出力レベルを徐々に変化させる制御を例に挙げた。他の実施形態では、例えば、残存マイクの出力レベルが“0.1”、カレントマイクの出力レベルが“0.9”となったときに、マイクスイッチングを完了させるようにしてもよい。更にその後は、出力レベルが“1.0”に設定されたカレントマイクのみを用いるような制御としてもよい。つまり、スピーカ6への音声出力が、実質的にカレントマイクからのみ、という状態となったときにマイクスイッチングを完了させるようにしてもよい。
また、上記実施形態では、仮想カメラと仮想マイクの位置が同じ位置である場合を例示したが、他の実施形態では、仮想カメラと仮想マイクの位置が異なっていてもよい。例えば、仮想マイクの位置が仮想カメラの位置から所定距離だけ前方の位置であってもよい。あるいは、仮想マイクの位置を、仮想カメラとプレイヤキャラクタ201の中間地点に設けるようにしてもよい。この場合、仮想カメラの姿勢が変化することに応じて、仮想マイクの位置も変化し得る。そのため、仮想カメラの姿勢の変化速度に基づいて、上記マイク位置の瞬時変化が発生したと判定してもよい。
また、上記実施形態では、マイク位置の瞬時変化の判定について、1フレーム前後での位置変化に基づく例を挙げたが、これに限らない。他の実施形態では、1フレームではなく、数フレーム~数十フレーム内での位置の変化が所定条件を満たした場合も、上記のようなマイク位置の瞬時変化発生と判定してもよい。またこのような仮想マイクの位置の変化だけではなく、仮想マイクの移動に関する加速度等の変化に基づいて、マイク位置の瞬時変化の発生を判定するようにしてもよい。
また、上記出力レベルの値について、上記では“0.0“~“1.0“の範囲を一例として示したが、これ以外の数値を用いても良い。また、その他、上記の出力レベルに相当するようなパラメータであれば、他のパラメータを適宜用いても良い。
また、上記マイクスイッチングを完了させる時間に関して、上記の例では0.1秒~0.8秒の範囲内で完了させる例を挙げた。他の実施形態では、この範囲外の時間でマイクスイッチングを完了させてもよい。例えば、映像演出として2つの画像がクロスフェードするような表現を行い、これに合わせて上記のようなマイクスイッチングの処理を行う場合を想定する。このような場合に、画像のクロスフェードが完了する時間と、マイクスイッチング(つまり、音声のクロスフェード)が完了する時間を揃えることもあり得る。そのため、このような場合に、マイクスイッチングを完了させる時間として0.8秒以上の時間を設定するようにしてもよい。
また、上記実施形態における出力レベルに関して、当該出力レベルに更に他のパラメータを掛け合わせる等したうえで、最終的にスピーカ6に出力される音声の出力量が調整されてもよい。例えば、ゲーム装置2の基本的な制御を司る「基本システム(オペレーティングシステム等)」側で、「第1の出力レベル」というパラメータを保持しておき、上記実施形態で示したゲーム処理(ゲームアプリケーション)で決定される出力レベルを「第2の出力レベル」として算出してもよい。そして、スピーカ6への最終的な出力音量は、例えば「第1の出力レベル」に「第2の出力レべル」を掛け合わせた値に基づくものとしてもよい。
また、上記実施形態では、出力レベルをクロスフェードさせる際に、出力レベルの総量が一定になる(合計が“1.0“になる)ように、相補的に変化させる例を挙げた。他の実施形態では、必ずしも相補的に変化させなくてもよい。例えば、聴感上の音量を揃えるために、倍率ではなくパワーを一定にすることも考えられる。この場合、2乗して足し合わせた結果が”1.0”となるように出力レベルを算出することができる。一例として、ある瞬間において、残存マイクの出力レベルを0.836(2乗すると約0.7)、カレントマイクの出力レベルを0.547(2乗すると約0.3)としてもよい。また、例えばあるイベントデモシーンにおいて、各マイクの出力レベルの変化を相補性に関係なくそれぞれ事前に設定しておいてもよい。
また、上記実施形態においては、ゲーム処理にかかる一連の処理を単一のゲーム装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、ゲーム装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声としてゲーム装置2にストリーミング配信されるような構成としてもよい。
2 ゲーム装置
4 コントローラ
5 表示部
6 スピーカ
81 プロセッサ
84 記憶部
87 画像音声出力部

Claims (15)

  1. スピーカへ音声データを出力可能な情報処理装置のコンピュータに、
    前記音声データが関連付けられた1または複数の仮想音源を仮想空間内に配置させ、
    ゲーム処理に基づいて前記音声データを再生させ、
    前記ゲーム処理に基づいて前記仮想空間内において仮想マイクを移動させ、
    前記仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該仮想マイクが当該仮想音源から仮想的に取得する仮想マイク取得音声データの前記スピーカからの出力音量である第1出力音量を設定させ、
    前記仮想空間内における前記仮想マイクの位置の変化に関する第1条件が満たされた場合に、
    前記位置の変化前の前記仮想マイクの位置に残存仮想マイクを配置させ、
    前記残存仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該残存仮想マイクが当該仮想音源から仮想的に取得する残存仮想マイク取得音声データの前記スピーカからの出力音量である第2出力音量を設定させ、
    時間経過に応じて、前記第2出力音量を徐々に小さくさせるとともに、前記第1出力音量を徐々に大きくさせる、
    ームプログラム。
  2. 前記第1条件は、前記仮想空間内において、前記仮想マイクの移動速度に関するパラメータが所定以上となるときに満たされる、請求項1に記載のゲームプログラム。
  3. 前記仮想マイクは、仮想カメラの位置および/または姿勢に関連づけて配置され、
    前記第1条件は、前記仮想カメラの移動速度に関するパラメータが所定以上となるとき、または、当該仮想カメラの姿勢の変化速度に関するパラメータが所定以上となるときに満たされる、請求項2に記載のゲームプログラム。
  4. 前記仮想マイクは、仮想カメラの位置および/または姿勢に関連づけて配置され、
    前記ゲーム処理においては、前記仮想カメラの移動が自動的に制御される所定のシーンの再生のために用いる第1の仮想カメラと、当該所定のシーン以外において通常用いられ、ユーザの操作またはプレイヤキャラクタオブジェクトの移動に基づいて移動制御される第2の仮想カメラの2つが用いられており、
    表示されるゲーム画像の生成に用いる前記仮想カメラを、前記第2の仮想カメラから前記第1の仮想カメラに切り替えるときに、前記第1条件は満たされる請求項1に記載のゲームプログラム。
  5. 前記仮想マイクは仮想カメラの位置および/または姿勢に関連づけて配置され、
    前記第1条件は、前記仮想カメラが自動的に移動する所定のシーンの再生中であって、当該仮想カメラが前記仮想空間内の所定の距離を所定速度以上で移動する予め設定されたタイミングとなったときに満たされる、請求項1に記載のゲームプログラム。
  6. 前記第1出力音量は、前記仮想マイクといずれかの前記仮想音源との間の距離に基づく第1設定音量と前記スピーカへの音量の出力の度合いを示す第1出力レベルとに基づいて決定され、
    前記第2出力音量は、前記残存仮想マイクといずれかの前記仮想音源との間の距離に基づく第2設定音量と前記スピーカへの音量の出力の度合いを示す第2出力レベルとに基づいて決定され、
    前記第1条件が満たされた場合に、前記第2出力レベルを徐々に小さくさせ、前記第1出力レベルを所定値に達するまで徐々に大きくさせる、請求項1に記載のゲームプログラム。
  7. 前記第1条件が満たされた場合に、前記第2出力レベルを前記所定値から徐々に小さくさせる、請求項に記載のゲームプログラム。
  8. 前記第1条件が満たされた場合に、
    前記第1条件が満たされる以前から再生されていた音源である過去音源の音声については、前記第2出力音量を徐々に小さくさせ、かつ、前記第1出力音量を徐々に大きくさせ
    前記第1条件が満たされた後に再生が開始された音源である現在音源の音声については、前記第1出力音量を時間経過に応じては変化させない、請求項1から請求項のいずれかに記載のゲームプログラム。
  9. 前記残存仮想マイクが前記現在音源から取得した音声については、前記スピーカに出力させない、または、前記残存仮想マイクに前記現在音源からの音声を取得させない、請求項に記載のゲームプログラム。
  10. 時間経過に応じて前記第2出力音量を徐々に小さくさせるとともに前記第1出力レベルが所定値に達するまで前記第1出力音量を徐々に大きくさせる処理が開始してから、前記第1出力レベルが前記所定値へ到達するまでの時間は、0.1秒~0.8秒の範囲内の時間である、請求項に記載のゲームプログラム。
  11. 前記第1条件が満たされた場合に、前記第2出力レベルを前記所定値から徐々に小さくし、前記第1出力レベルを前記所定値に達するまで徐々に大きくする際に、前記第2出力レベルを小さくした分だけ、前記第1出力レベルを大きくさせる、請求項に記載のゲームプログラム。
  12. 第2出力音量を徐々に小さくさせた結果、当該第2出力音量が最小値または0に到達した後は、前記残存仮想マイクを消去または無効化させる、請求項1から請求項11のいずれかに記載のゲームプログラム。
  13. スピーカへ音声データを出力可能な、プロセッサを備えるゲーム装置であって、
    前記プロセッサは、
    前記音声データが関連付けられた1または複数の仮想音源を仮想空間内に配置し、
    ゲーム処理に基づいて前記音声データを再生し、
    前記ゲーム処理に基づいて前記仮想空間内において仮想マイクを移動し、
    前記仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該仮想マイクが当該仮想音源から仮想的に取得する仮想マイク取得音声データの前記スピーカからの出力音量である第1出力音量を設定し、
    前記仮想空間内における前記仮想マイクの位置の変化に関する第1条件が満たされた場合に、
    前記位置の変化前の前記仮想マイクの位置に残存仮想マイクを配置し、
    前記残存仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該残存仮想マイクが当該仮想音源から仮想的に取得する残存仮想マイク取得音声データの前記スピーカからの出力音量である第2出力音量を設定し、
    時間経過に応じて、当該第2出力音量を徐々に小さくするとともに、前記第1出力音量を徐々に大きくする、
    、ゲーム装置。
  14. スピーカへ音声データを出力可能な、プロセッサを有するゲーム装置を備えるゲームシステムであって、
    前記プロセッサは、
    前記音声データが関連付けられた1または複数の仮想音源を仮想空間内に配置し、
    ゲーム処理に基づいて前記音声データを再生し、
    前記ゲーム処理に基づいて前記仮想空間内において仮想マイクを移動し、
    前記仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該仮想マイクが当該仮想音源から仮想的に取得する仮想マイク取得音声データの前記スピーカからの出力音量である第1出力音量を設定し、
    前記仮想空間内における前記仮想マイクの位置の変化に関する第1条件が満たされた場合に、
    前記位置の変化前の前記仮想マイクの位置に残存仮想マイクを配置し、
    前記残存仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該残存仮想マイクが当該仮想音源から仮想的に取得する残存仮想マイク取得音声データの前記スピーカからの出力音量である第2出力音量を設定し、
    時間経過に応じて、当該第2出力音量を徐々に小さくするとともに、前記第1出力音量を徐々に大きくする、
    、ゲームシステム。
  15. スピーカへ音声データを出力可能な情報処理装置のコンピュータに実行させるゲーム処理方法であって、前記コンピュータに、
    前記音声データが関連付けられた1または複数の仮想音源を仮想空間内に配置させ、
    ゲーム処理に基づいて前記音声データを再生させ、
    前記ゲーム処理に基づいて前記仮想空間内において仮想マイクを移動させ、
    前記仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該仮想マイクが当該仮想音源から仮想的に取得する仮想マイク取得音声データの前記スピーカからの出力音量である第1出力音量を設定させ、
    前記仮想空間内における前記仮想マイクの位置の変化に関する第1条件が満たされた場合に、
    前記位置の変化前の前記仮想マイクの位置に残存仮想マイクを配置させ、
    前記残存仮想マイクといずれかの前記仮想音源との間の距離に基づいて、当該残存仮想マイクが当該仮想音源から仮想的に取得する残存仮想マイク取得音声データの前記スピーカからの出力音量である第2出力音量を設定させ、
    時間経過に応じて、当該第2出力音量を徐々に小さくさせるとともに、前記第1出力音量を徐々に大きくさせる、ゲーム処理方法。
JP2021166400A 2021-10-08 2021-10-08 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法 Active JP7487158B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021166400A JP7487158B2 (ja) 2021-10-08 2021-10-08 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
US17/957,638 US20230112705A1 (en) 2021-10-08 2022-09-30 Computer-readable non-transitory storage medium having game program stored therein, game apparatus, game system, and game processing method
EP22199473.4A EP4162995A1 (en) 2021-10-08 2022-10-04 Game program, game apparatus, game system, and game processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021166400A JP7487158B2 (ja) 2021-10-08 2021-10-08 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法

Publications (2)

Publication Number Publication Date
JP2023056907A JP2023056907A (ja) 2023-04-20
JP7487158B2 true JP7487158B2 (ja) 2024-05-20

Family

ID=83594093

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021166400A Active JP7487158B2 (ja) 2021-10-08 2021-10-08 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法

Country Status (3)

Country Link
US (1) US20230112705A1 (ja)
EP (1) EP4162995A1 (ja)
JP (1) JP7487158B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112485A (ja) 1998-10-08 2000-04-21 Konami Co Ltd 背景音制御装置、背景音制御方法、背景音制御プログラムが記録された可読記録媒体及びビデオゲーム装置
JP2007330578A (ja) 2006-06-16 2007-12-27 Konami Digital Entertainment:Kk ゲーム音出力装置、ゲーム音制御方法、および、プログラム
JP2008244865A (ja) 2007-03-27 2008-10-09 National Univ Corp Shizuoka Univ 音場切替システム
JP2018007227A (ja) 2016-12-06 2018-01-11 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム
JP2018020126A (ja) 2017-08-14 2018-02-08 株式会社 ディー・エヌ・エー ゲームを提供するためのプログラム、システム、及び方法
JP2020028419A (ja) 2018-08-22 2020-02-27 株式会社カプコン ゲームプログラム、およびゲーム装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013102842A (ja) * 2011-11-11 2013-05-30 Nintendo Co Ltd 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP7199930B2 (ja) * 2018-11-21 2023-01-06 任天堂株式会社 音声処理プログラム、情報処理装置、音声処理方法、および情報処理システム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112485A (ja) 1998-10-08 2000-04-21 Konami Co Ltd 背景音制御装置、背景音制御方法、背景音制御プログラムが記録された可読記録媒体及びビデオゲーム装置
JP2007330578A (ja) 2006-06-16 2007-12-27 Konami Digital Entertainment:Kk ゲーム音出力装置、ゲーム音制御方法、および、プログラム
JP2008244865A (ja) 2007-03-27 2008-10-09 National Univ Corp Shizuoka Univ 音場切替システム
JP2018007227A (ja) 2016-12-06 2018-01-11 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム
JP2018020126A (ja) 2017-08-14 2018-02-08 株式会社 ディー・エヌ・エー ゲームを提供するためのプログラム、システム、及び方法
JP2020028419A (ja) 2018-08-22 2020-02-27 株式会社カプコン ゲームプログラム、およびゲーム装置

Also Published As

Publication number Publication date
US20230112705A1 (en) 2023-04-13
EP4162995A1 (en) 2023-04-12
JP2023056907A (ja) 2023-04-20

Similar Documents

Publication Publication Date Title
JP4095227B2 (ja) ビデオゲーム装置、ビデオゲームにおける背景音出力設定方法及び背景音出力設定プログラムが記録されたコンピュータ読み取り可能な記録媒体
US10478724B2 (en) Game device, processing method, and information storage medium
KR101576294B1 (ko) 가상 현실 시스템에서 사운드 처리를 수행하기 위한 장치 및 방법
JP4177381B2 (ja) 画像生成方法、画像生成装置、および画像生成プログラム
JP3569661B2 (ja) ゲームのプログラムを記録したコンピュータ読み取り可能な記録媒体、ゲーム処理方法およびゲーム処理装置
US9744459B2 (en) Computer-readable storage medium storing information processing program, information processing device, information processing system, and information processing method
US7753785B2 (en) Game apparatus, storing medium that stores control program of virtual camera, and control method of virtual camera
US9724608B2 (en) Computer-readable storage medium storing information processing program, information processing device, information processing system, and information processing method
JP2017119031A (ja) ゲーム装置及びプログラム
JPH1142370A (ja) ゲーム装置、ゲーム画像処理方法および可読記録媒体
JP2001149643A (ja) 3次元ゲームにおけるオブジェクト表示方法、情報記録媒体およびエンタテインメント装置
JP2012108790A (ja) 画像処理プログラム、画像処理装置、画像処理方法、画像処理システム
JP2004141261A (ja) ゲームプログラム及びゲーム装置
JP2017221553A (ja) ゲームプログラムおよびゲームシステム
JP2019020530A (ja) 信号処理装置、制御方法、及びプログラム
CN112044053B (zh) 虚拟场景中的信息处理方法、装置、设备及存储介质
JP7487158B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
JP3219697B2 (ja) 画像生成装置、画像生成方法
JP2001351123A (ja) 画像処理装置および画像処理方法
JP2001148035A (ja) 画像処理
JP7492104B2 (ja) 音声再生プログラム、音声再生装置、および音声生成方法
US20230090134A1 (en) Computer-readable non-transitory storage medium having game program stored therein, game system, game apparatus, and game processing method
JP4880298B2 (ja) プログラム、情報記憶媒体、及びデータ再生システム
JP7462017B2 (ja) 音声処理プログラム、情報処理システム、情報処理装置、および音声処理方法
JP2024041378A (ja) ゲームプログラムおよびゲーム装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240508

R150 Certificate of patent or registration of utility model

Ref document number: 7487158

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150