(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2026015710
(43)【公開日】2026-01-30
(54)【発明の名称】情報処理システム、プログラム、およびコンピュータに実装された方法
(51)【国際特許分類】
A63F 13/285 20140101AFI20260123BHJP
A63F 13/30 20140101ALI20260123BHJP
A63F 13/50 20140101ALI20260123BHJP
【FI】
A63F13/285
A63F13/30
A63F13/50
【審査請求】未請求
【請求項の数】13
【出願形態】OL
【公開請求】
(21)【出願番号】P 2025088908
(22)【出願日】2025-05-28
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】青木 孝文
(72)【発明者】
【氏名】八田 直樹
(57)【要約】
【課題】振動効果を与える情報処理システムについて改善の余地があった。
【解決手段】第1コントローラを使用する第1ユーザのアプリケーション画像を、振動デバイスを有する第2コントローラを使用する第2ユーザが見ることが可能な情報処理システムである。情報処理システムは、第1コントローラの操作データを取得する手段と、操作データに基づいて情報処理を実行し、アプリケーション画像を生成する手段と、アプリケーション画像を第1ユーザのディスプレイに表示(以下、第1表示)する手段と、アプリケーション画像を第2ユーザのディスプレイに表示(以下、第2表示)する手段と、操作データに応じた第1振動データを生成(以下、第1生成)する手段と、第1振動データに基づいて振動デバイスを制御(以下、第1制御)する手段と、を備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
第1コントローラを使用する第1ユーザのアプリケーション画像を、振動デバイスを有する第2コントローラを使用する第2ユーザが見ることが可能な情報処理システムであって、
前記第1コントローラの操作データを取得する手段と、
前記操作データに基づいて情報処理を実行し、アプリケーション画像を生成する手段と、
前記アプリケーション画像を前記第1ユーザのディスプレイに表示(以下、第1表示)する手段と、
前記アプリケーション画像を前記第2ユーザのディスプレイに表示(以下、第2表示)する手段と、
前記操作データに応じた第1振動データを生成(以下、第1生成)する手段と、
前記第1振動データに基づいて前記振動デバイスを制御(以下、第1制御)する手段と、を備える、情報処理システム。
【請求項2】
前記第1コントローラは振動デバイスを備え、
前記情報処理の結果に基づいて第2振動データを生成(以下、第2生成)する手段と、
前記第2振動データに基づいて前記第1コントローラの振動デバイスを制御(以下、第2制御)する手段をさらに備え、
前記第1制御は、前記第1振動データおよび前記第2振動データに基づいて行われるように構成される、請求項1に記載の情報処理システム。
【請求項3】
前記第1制御は、前記第2振動データによる制御が、前記第1振動データによる制御に優先して行われるように構成される、請求項2に記載の情報処理システム。
【請求項4】
前記第1生成および前記第2生成は、ゲームプログラムを実行するプロセッサによる処理である、請求項2に記載の情報処理システム。
【請求項5】
前記第1ユーザが使用する第1情報処理装置と、前記第2ユーザが使用する第2情報処理装置を備え、
前記第1情報処理装置は、
前記取得、前記アプリケーション画像の生成、前記第1表示、前記第1生成、前記第2生成、および、前記第2制御を行う手段を備え、さらに、
前記第1振動データおよび前記第2振動データを前記第2情報処理装置に送信する手段と、を備え、
前記第2情報処理装置は、
前記第1振動データおよび前記第2振動データを受信する手段をさらに備え、
前記第2表示、および、前記第1制御を行う手段を備える、請求項2に記載の情報処理システム。
【請求項6】
前記第1振動データと前記第2振動データは共通のフォーマットを有し、区別なく扱われるように構成される、請求項2記載の情報処理システム。
【請求項7】
前記第1コントローラの振動デバイス(以下、第1振動デバイス)と前記第2コントローラの振動デバイス(以下、第2振動デバイス)は異なり、
前記第1制御は、前記第2振動デバイスの周波数特性に応じた制御がされるように構成される、請求項2に記載の情報処理システム。
【請求項8】
前記第1振動データの生成は、前記操作データの内容に応じて異なる振動データが生成されるように構成される、請求項1~7のいずれかに記載の情報処理システム。
【請求項9】
コンピュータを、
コントローラの操作データを取得する手段と、
前記操作データに基づいてゲーム処理を実行し、ゲーム画像を生成する手段と、
前記ゲーム画像を他の情報処理装置のディスプレイに表示するために、前記他の情報処理装置に送信するための処理を行う手段と、
前記操作データの内容に応じた第1振動データを生成する手段と、
前記他の情報処理装置の振動デバイスを振動させるために、前記第1振動データを前記他の情報処理装置に送信するための処理を行う手段として機能させるための、プログラム。
【請求項10】
前記コンピュータを、さらに、
前記ゲーム処理の結果に基づいて第2振動データを生成する手段と、
前記他の情報処理装置の振動デバイスを振動させるために、前記第2振動データを前記他の情報処理装置に送信するための処理を行う手段として機能させるための、請求項9に記載のプログラム。
【請求項11】
前記第1振動データと前記第2振動データは区別なく送信されるように構成される、請求項10に記載のプログラム。
【請求項12】
前記第1振動データの生成において、前記操作データの内容に応じて異なる振動データになる生成が行われるように構成される、請求項9に記載のプログラム。
【請求項13】
第1コントローラを使用する第1ユーザのゲーム画像を、振動デバイスを有する第2コントローラを使用する第2ユーザが観戦可能なゲームシステムのコンピュータに実装された方法であって、
前記第1コントローラの操作データを取得し、
前記操作データに基づいてゲーム処理を実行し、ゲーム画像を生成し、
前記ゲーム画像を前記第1ユーザのディスプレイに表示し、
前記ゲーム画像を前記第2ユーザのディスプレイに表示し、
前記操作データに応じた第1振動データを生成し、
前記第1振動データに基づいて前記振動デバイスを制御する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、プログラム、およびコンピュータに実装された方法に関する。
【背景技術】
【0002】
従来、振動効果を与える情報処理システムが存在する。例えば、特開2016-202486号公報(特許文献1)には、ゲームに用いられる振動信号生成システムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
振動効果を与える情報処理システムについて改善の余地があった。
【課題を解決するための手段】
【0005】
(構成1)
ある実施の形態における情報処理システムは、第1コントローラ(ゲーム機と一体でもよいし別体でもよい)を使用する第1ユーザのアプリケーション画像を、振動デバイスを有する第2コントローラを使用する第2ユーザが見ることが可能な情報処理システムであり、以下の手段を備える。
【0006】
・前記第1コントローラの操作データを取得する手段
・前記操作データに基づいて情報処理を実行し、アプリケーション画像を生成する手段
・前記アプリケーション画像を前記第1ユーザのディスプレイに表示(以下、第1表示)する手段
・前記アプリケーション画像を前記第2ユーザのディスプレイに表示(以下、第2表示)する手段
・前記操作データに応じた第1振動データを生成(以下、第1生成)する手段と、
・前記第1振動データに基づいて前記振動デバイスを制御(以下、第1制御)する手段
この構成によれば、第2ユーザが、第1ユーザのプレイにおける操作感をそのアプリケーション画像とともに感じることができる。
【0007】
(構成2)
上記構成1の情報処理システムにおいて、次の構成が採用されても良い。前記第1コントローラは振動デバイス(第2コントローラの振動デバイスと同じ種類のデバイスでもよいし、異なる種類のデバイスでもよい)を備える。前記情報処理の結果に基づいて第2振動データを生成(以下、第2生成)する手段と、前記第2振動データに基づいて前記第1コントローラの振動デバイスを制御(以下、第2制御)する(実施例では「ゲーム振動」)手段をさらに備える。前記第1制御は、前記第1振動データおよび前記第2振動データに基づいて行われるように構成される。この構成によれば、第2ユーザが、第1ユーザのゲーム内容に応じた振動とともに第1ユーザのプレイにおける操作感を感じることができる。
【0008】
(構成3)
上記構成1または構成2の情報処理システムにおいて、前記第1制御は、前記第2振動データによる制御が、前記第1振動データによる制御に優先して行われるように構成されても良い。この構成によれば、ゲーム振動を優先することができる。
【0009】
(構成4)
上記構成1から構成3のいずれかの情報処理システムにおいて、前記第1生成および前記第2生成は、ゲームプログラムを実行するプロセッサによる処理であってもよい。この構成によれば、ゲーム振動および操作振動の内容をゲームプログラムごとに変更することができる。
【0010】
(構成5)
上記構成1から構成4のいずれかの情報処理システムにおいて、次の構成を採用しても良い。前記第1ユーザが使用する第1情報処理装置と、前記第2ユーザが使用する第2情報処理装置を備える。前記第1情報処理装置は、前記取得、前記アプリケーション画像の生成、前記第1表示、前記第1生成、前記第2生成、および、前記第2制御を行う手段を備え、さらに、前記第1振動データおよび前記第2振動データを前記第2情報処理装置に送信する手段と、を備える。前記第2情報処理装置は、前記第1振動データおよび前記第2振動データを受信する手段をさらに備え、前記第2表示、および、前記第1制御を行う手段を備える。
【0011】
(構成6)
上記構成1から構成5のいずれかの情報処理システムにおいて、前記第1振動データと前記第2振動データは共通のフォーマットを有し、区別なく扱われるように構成されても良い。
【0012】
(構成7)
上記構成1から構成6のいずれかの情報処理システムにおいて、次の構成が採用されても良い。前記第1コントローラの振動デバイス(以下、第1振動デバイス)と前記第2コントローラの振動デバイス(以下、第2振動デバイス)は異なる。前記第1制御は、前記第2振動デバイスの周波数特性に応じた制御がされるように構成される。
【0013】
(構成8)
上記構成1から構成7のいずれかの情報処理システムにおいて、前記第1振動データの生成は、前記操作データの内容に応じて異なる振動データが生成されるように構成されてもよい。
【0014】
(構成9)
コンピュータを、以下の手段として機能させるためのプログラムである。
【0015】
・コントローラの操作データを取得する手段
・前記操作データに基づいてゲーム処理を実行し、ゲーム画像を生成する手段
・前記ゲーム画像を他の情報処理装置のディスプレイに表示するために、前記他の情報処理装置に送信するための処理を行う手段
・前記操作データの内容に応じた第1振動データを生成する手段
・前記他の情報処理装置の振動デバイスを振動させるために、前記第1振動データを前記他の情報処理装置に送信するための処理を行う手段
(構成10)
上記構成9のプログラムにおいて、次の構成が採用されても良い。前記コンピュータを、さらに以下の手段として機能させる。
【0016】
・前記ゲーム処理の結果に基づいて第2振動データを生成する手段
・前記他の情報処理装置の振動デバイスを振動させるために、前記第2振動データを前記他の情報処理装置に送信するための処理を行う手段
(構成11)
上記構成10のプログラムにおいて、前記第1振動データと前記第2振動データは区別なく送信されるように構成されてもよい。
【0017】
(構成12)
上記構成9~構成11のプログラムにおいて、前記第1振動データの生成において、前記操作データの内容に応じて異なる振動データになる生成が行われるように構成されてもよい。
【0018】
(構成13)
第1コントローラを使用する第1ユーザのゲーム画像を、振動デバイスを有する第2コントローラを使用する第2ユーザが観戦可能なゲームシステムのコンピュータに実装された方法であり、前記第1コントローラの操作データを取得し、前記操作データに基づいてゲーム処理を実行し、ゲーム画像を生成し、前記ゲーム画像を前記第1ユーザのディスプレイに表示し、前記ゲーム画像を前記第2ユーザのディスプレイに表示し、前記操作データに応じた第1振動データを生成し、前記第1振動データに基づいて前記振動デバイスを制御する、方法。
【図面の簡単な説明】
【0019】
【
図1A】システム構成および本実施形態の第1側面の概要(第1種のゲームプログラムを実行する場合)を示す図である。
【
図1B】本実施形態の第1側面の概要その2(第2種のゲームプログラムを実行する場合)を示す図である。
【
図2】本実施形態の第2側面の概要を示す図である。
【
図3】本実施形態の第3側面の概要を示す図である。
【
図5】ゲーム装置2のハードウェアブロック図である。
【
図6】ゲーム装置3のハードウェアブロック図である。
【
図7】ゲームコントローラ4のハードウェアブロック図である。
【
図8】ゲームコントローラ5のハードウェアブロック図である。
【
図9】ゲーム装置2の不揮発メモリ21に記憶されるプログラムおよびデータを示す図である。
【
図10】ゲーム処理用コードC1-1による処理フローを示す図である。
【
図11】ゲーム画像生成用コードC1-2による処理フローを示す図である。
【
図12】ゲーム振動データ生成用コードC1-3による処理フローを示す図である。
【
図13】操作振動データ生成用コードC1-4による処理フローを示す図である。
【
図14】振動モード設定指示用コードC1-5による処理フローを示す図である。
【
図15】自装置操作データ取得用コードC2-1による処理フローを示す図である。
【
図16】操作データ送信用コードC2-2による処理フローを示す図である。
【
図17】ゲスト装置操作データ取得用コードC2-3による処理フローを示す図である。
【
図18】ゲーム画像送信用コードC2-4による処理フローを示す図である。
【
図19】蓄積数決定用コードC2-5による処理フローを示す図である。
【
図20】ゲーム画像データ蓄積用コードC2-6による処理フローを示す図である。
【
図21】振動データ変換用コードC2-7による処理フローを示す図である。
【
図22】振動データ送信用コードC2-8による処理フローを示す図である。
【
図23】振動データ取得用コードC2-9による処理フローを示す図である。
【
図24】振動データ転送用コード(ホスト装置用)C2-10による処理フローを示す図である。
【
図25】振動データ転送用コード(ゲスト装置用)C2-11による処理フローを示す図である。
【
図26】表示用コードC2-12による処理フローを示す図である。
【
図27】振動モード設定用コード(ホスト装置用)C2-13による処理フローを示す図である。
【
図28】振動モード設定用コード(ゲスト装置用)C2-14による処理フローを示す図である。
【
図30】プログラム実行中のゲーム装置2aの揮発メモリ22aに記憶されるデータを示す図である。
【
図31】プログラム実行中のゲーム装置2bの揮発メモリ22bに記憶されるデータを示す図である。
【
図32】ゲーム装置3の不揮発メモリ31に記憶されるプログラムおよびデータを示す図である。
【
図33】プログラム実行中のゲーム装置3の揮発メモリ32に記憶されるデータを示す図である。
【
図34】ゲームコントローラ4の不揮発メモリ41に記憶されるプログラムおよびデータを示す図である。
【
図35】制御データ生成コードC4-1による処理フローを示す図である。
【
図36】ゲームコントローラ5の不揮発メモリ51に記憶されるプログラムおよびデータを示す図である。
【
図37】制御データ生成コードC5-1による処理フローを示す図である。
【発明を実施するための形態】
【0020】
以下、一実施形態について説明する。なお、以下の説明における「ゲームシステム」「ゲーム装置」「プロセッサ」「不揮発メモリ」「揮発メモリ」「振動デバイス」「プログラム」「コード」「データ」等の各要素の説明は、原則として、一実施形態としての本実施形態における各要素の説明である。
【0021】
図1Aに、本実施形態のゲームシステム1の全体構成および本実施形態のゲームシステム1における第1の側面の概要を示す。第1の側面は、ゲームシステム1に異なる振動デバイスが含まれることに対応する側面である。ゲームシステム1は、第1種のゲーム装置2と第2種のゲーム装置3とを含む。例えば、第1種のゲーム装置2は、新ゲーム装置であり、第2種のゲーム装置3は、既存のゲーム装置である。第1種のゲーム装置2は、第1種のゲーム装置2用の第1種のゲームコントローラ4(例えば、新ゲームコントローラ)と、第2種のゲーム装置用の第2種のゲームコントローラ5(例えば、既存のゲームコントローラ)が接続可能に構成される。第2種のゲーム装置3は、第2種のゲームコントローラ5が接続可能に構成される。なお、ゲームコントローラはゲーム装置本体と一体でもよい。各コントローラは各ユーザによって把持される。
【0022】
ゲーム装置2およびゲーム装置3は、据置型ゲーム装置であってもよいし、携帯型ゲーム装置であってもよく、据置型と携帯型とのハイブリッド型(統合型)のゲーム機であってもよい。ゲーム装置の代わりに、スマートフォン、タブレット端末、パーソナルコンピュータ等の情報処理装置であってもよい。
【0023】
図1Aに示す例においては、第1種のゲーム装置2が2つ含まれ(ゲーム装置2aおよびゲーム装置2b)、第2種のゲーム装置3が1つ含まれる。ゲーム装置の数は単なる例である。この例では、第1種のゲームコントローラであるゲームコントローラ4a、4bがそれぞれ、ゲーム装置2a、ゲーム装置2bに接続される。第2種のゲームコントローラであるゲームコントローラ5a、5b、5cがそれぞれ、ゲーム装置2a、ゲーム装置2b、ゲーム装置3に接続される。
【0024】
ゲーム装置2間の通信は、直接通信(いわゆる、ピアトゥピア通信)であってもよいし、サーバを介した通信であってもよい。無線通信であってもよいし、有線通信であってもよい。インターネット通信であってもよいし、ローカル無線通信であってもよい。
【0025】
ゲーム装置2aにおいて、ゲーム装置2a、ゲーム装置2bおよびゲーム装置3の操作データに基づいてゲームプログラムが実行される。
図1Aの例において、ゲーム装置2aが実行する第1種のゲームプログラムは、第1種のゲーム装置2用のプログラムであり、第1種のゲーム装置2用のゲームコントローラである第1種のゲームコントローラ4が意図する振動をするような振動データを生成するプログラムである。後述の通り、ゲーム画像データおよび振動データはゲーム装置2aで生成されるため、ゲーム装置2bおよびゲーム装置3においてはゲームプログラムは実行される必要は無い。ゲーム装置2aは、ゲームプログラムを実行するという観点においてホスト装置である。ゲーム装置2b、3は、ゲームプログラムを実行しないという観点においてゲスト装置である。ゲーム装置2aはゲーム以外のアプリケーションプログラムを実行しても良い。
【0026】
ホスト装置であるゲーム装置2aにおいてゲームプログラムの実行によりゲーム画像データが生成され、ゲスト装置であるゲーム装置2bおよびゲーム装置3に送信される。当該ゲーム画像データにより、ゲーム装置2a、ゲーム装置2bおよびゲーム装置3のそれぞれのディスプレイに画像が表示される。ゲーム画像データはゲーム装置2a、ゲーム装置2b、ゲーム装置3で共通であっても良いし、別々であってもよい。
【0027】
ホスト装置であるゲーム装置2aにおいてゲームプログラムの実行により各コントローラ向けの振動データが生成され、ゲスト装置のコントローラ向けのデータはゲスト装置であるゲーム装置2bおよびゲーム装置3に送信される。これらの振動データにより、ゲーム装置2a、ゲーム装置2bおよびゲーム装置3に接続されたそれぞれのコントローラの振動デバイスにおいて振動が出力される。振動データは、基本的に、ゲーム装置2a、ゲーム装置2b、ゲーム装置3で別々に生成されるが、共通の振動データがあっても良い。
【0028】
ゲームシステム1の第1の側面は、情報処理システムにおいて、振動データを変換することにより、情報処理システム内に存在する異なる振動デバイスを適切に振動させる側面である。一実施形態のゲームシステム1は、第1の側面に関して、以下の構成を有するとともに、動作を行う。
【0029】
ホスト装置であるゲーム装置2aは、自装置に接続された第2種のゲームコントローラ5a、および、ゲスト装置のうち第2種のゲーム装置に接続された第2種のゲームコントローラ5c向けに生成された振動データを、第2種のゲームコントローラ5が上記の意図する振動と同じまたは近くなるように振動するデータに変換する(以降、「変換後振動データ」と呼ぶことがある)。なお、本実施形態においては、ゲスト装置のうち第1種のゲーム装置に接続された第2種のゲームコントローラ5b向けに生成された振動データの変換は、当該ゲスト装置である第1種のゲーム装置で変換を行うため、ホスト装置では行わないが、ホスト装置で当該変換を行っても良い。
【0030】
第1種のゲーム装置であるゲスト装置2bは、ホスト装置から送信された振動データのうち、自装置に接続された第2種のゲームコントローラ5b向けの振動データを第2種のゲームコントローラが上記の意図する振動と同じまたは近くなるように振動するデータに変換する。
【0031】
第2種のゲーム装置であるゲスト装置3においては、上述したような振動データの変換は行われない。
【0032】
図1Bは、ゲームシステム1の上記第1の側面の別の状況を示す。具体的には、ゲーム装置2aが実行するゲームプログラムが、第2種のゲームプログラムを実行する状況を示す。第2種のゲームプログラムは、第1種のゲーム装置用のゲームプログラムであるが、第2種のゲームコントローラ5が意図する振動をするような振動データを生成するプログラムである。例えば、第2種のゲームプログラムは、第2種のゲーム装置用のゲームプログラム(例えば、既存のゲーム装置用のゲームプログラム)を第1種のゲーム装置用のプログラムに移植(リメイクまたはリマスター等)したプログラムであってもよい。このようなプログラムはもともと第2種のゲーム装置用のプログラムであるので、第2種のゲームコントローラ5が意図する振動をするような振動データを生成するようになっている。
【0033】
ゲーム装置2aが実行するゲームプログラムが第2種のゲームプログラムを実行する場合、ゲーム装置2aが実行するゲームプログラムの処理は、以下の点が、第1種のゲームプログラムを実行する場合の処理(
図1を用いて上述した処理)と異なる。
【0034】
・ゲームプログラムの開始時に、「第2種のゲームコントローラ用の振動モード」(以降の説明で第2振動モードと言うことがある)に設定する。
【0035】
・ゲスト装置のうち第1種のゲーム装置2bに、第2振動モードで動作するよう指示する。
【0036】
・第2種のゲームプログラムにおいて生成される振動データは、第2種のゲームコントローラ5が意図する振動をするような振動データであるから、第2振動モードの場合、自装置2aに接続された第1種のゲームコントローラ4aに生成された振動データを、第1種のゲームコントローラ4が上記の意図する振動と同じまたは近くなるように振動するデータに変換する。なお、第2振動モードの場合、自装置2aに接続された第2種のゲームコントローラ5a向けに生成された振動データやゲスト装置のうち第2種のゲーム装置3に接続されたゲームコントローラ5c向けに生成された振動データについてそのような変換は行われない。
【0037】
ゲーム装置2aが実行するゲームプログラムが第2種のゲームプログラムを実行する場合、ゲーム装置2bが実行するプログラムは、ゲーム装置2aが第1種のゲームプログラムを実行する場合の処理(
図1を用いて上述した処理)と以下が異なる。
【0038】
・ホスト装置の指示に応じて第2振動モードに設定する。
・第2振動モードの場合、自装置2bに接続された第1種のゲームコントローラ4b向けの振動データを、第1種のゲームコントローラ4が上記の意図する振動と同じまたは近くなるように振動するデータに変換する。なお、第2振動モードの場合、自装置2bに接続された第2種のゲームコントローラ5b向けに生成された振動データについてそのような変換は行われない。
【0039】
ゲーム装置2aが実行するゲームプログラムが第2種のゲームプログラムを実行する場合、ゲーム装置3が実行するプログラムは、ゲーム装置2aが第1種のゲームプログラムを実行する場合の処理(
図1を用いて上述した処理)と同じである。
【0040】
図2に、本実施形態のゲームシステム1における第2の側面の概要を示す。ゲームシステム1の第2の側面は、或る情報処理装置から他の情報処理装置に、当該或る情報処理装置のディスプレイに表示されるアプリケーション画像のデータを送信し、当該他の情報処理装置で当該或る情報処理装置におけるアプリケーションの実行状況を観戦する際に当該或る情報処理装置の操作内容に応じた振動を当該他の情報処理装置に伝えて臨場感を上げる側面である。
【0041】
第2の側面において、ゲーム装置2aは被観戦ゲーム装置であり、ゲーム装置2bは観戦ゲーム装置である。ゲーム装置2aにおいて同じまたは別のゲームプログラムが実行されていても良い。第2の側面においては、観戦ゲーム装置の操作データを使用することは必須ではない。第2の側面において、一実施態様のゲームシステム1は、以下の構成を有するとともに、動作を行う。
【0042】
被観戦ゲーム装置であるゲーム装置2aは、以下の処理を実行する。
・少なくとも自装置2aの操作データに基づいてゲーム処理を行い、ゲーム画像データを生成する。なお、マルチプレイヤゲームの場合、他の装置の操作データに基づいてゲーム処理を行っても良い。
【0043】
・生成されたゲーム画像データに基づいて自装置2aのディスプレイにゲーム画像を表示する。
【0044】
・ゲーム画像データを観戦ゲーム装置2bに送信する。
・ゲーム処理の結果に基づいて、振動データを生成する。ゲーム処理の結果に基づいて生成される振動データをゲーム振動データと言う。
【0045】
・少なくとも自装置2aの操作内容に基づいて振動データを生成する。操作内容に基づいて生成される振動データを操作振動データと言う。
【0046】
・ゲーム振動データに基づいて自装置2aに接続されたゲームコントローラ4aを振動させる。
【0047】
・ゲーム振動データおよび操作振動データを観戦ゲーム装置2bに送信する。ゲーム振動データと操作振動データとは区別して送信してもよいし、区別せずに送信しても良い。
【0048】
観戦ゲーム装置であるゲーム装置2bは、以下の処理を実行する。
・被観戦ゲーム装置2aから送信されるゲーム画像データおよび振動データを受信する。
【0049】
・受信したゲーム画像データに基づいて自装置2bのディスプレイにゲーム画像を表示する。
【0050】
・受信した振動データに基づいて自装置2bのゲームコントローラ4bを振動させる。被観戦ゲーム装置2aから観戦ゲーム装置2bに操作振動データを送信する代わりに、被観戦ゲーム装置2aの操作データを観戦ゲーム装置2bに送信し、観戦ゲーム装置2bのCPU200により、当該操作データに基づいて操作振動データを生成しても良い。
【0051】
第2の側面においては、第2種のゲーム装置、第2種のゲームコントローラは必須ではないため、それらについては説明を省略する。
【0052】
図3に、本実施形態のゲームシステム1における第3の側面の概要を示す。第3の側面は、或る情報処理装置から他の情報処理装置に振動データを送信する際に、通信遅延やパケットロスが起こることを考慮して、その対策を行う側面である。第3の側面において、一実施態様のゲームシステム1は、以下の構成を有するとともに、動作を行う。
【0053】
送信側装置であるゲーム装置2aは、以下の処理を実行する。
・ゲーム処理の結果に基づいて、受信側装置であるゲーム装置2bで再生されるべき振動データを生成する。
【0054】
・生成された振動データを受信側装置に送信する。受信側装置で再生されるべき振動データが無い場合、振幅がゼロの振動データを受信側装置に送信する。
【0055】
受信側装置であるゲーム装置2bは、以下の処理を実行する。
・送信側装置2aから送信される振動データを受信し、バッファに蓄積する。
【0056】
・蓄積した振動データに基づいて自装置(または自装置に接続されたゲームコントローラ)を振動させる。
【0057】
・蓄積した振動データが無くなった場合、直前に使用した振動データに基づいて、振幅を減衰させつつ自装置(または自装置に接続されたゲームコントローラ)振動させる。
【0058】
第3の側面においては、第2種のゲーム装置、第2種のゲームコントローラは必須ではないため、それらについては説明を省略する。
【0059】
図4に、本実施形態のゲームシステム1における第4の側面の概要を示す。第4の側面は、或る情報処理装置から他の情報処理装置に所定データ(例えば、一連のゲーム画像データやゲームオブジェクトの位置データ等。一部のデータが欠けてもシリアスな問題が生じないデータ)を送信する際に起こる通信遅延に対応する側面である。第4の側面において、一実施態様のゲームシステム1は、以下の構成を有するとともに、動作を行う。
【0060】
送信側装置であるゲーム装置2aは、以下の処理を実行する。
・ゲーム処理を行い、ゲーム画像データを生成する。
【0061】
・ゲーム画像データをエンコードして受信側装置に送信する。
受信側装置であるゲーム装置2bは、以下の処理を実行する。
【0062】
・送信側装置から送信されるゲーム画像データを受信しデコードする。
・ゲーム画像データの通信の遅延状況を計算する。
【0063】
・遅延状況に応じて、ゲーム画像データの蓄積数を決定する。
・蓄積されたゲーム画像データのうち最も古いデータを使用して自装置2bのディスプレイにゲーム画像を表示する。
【0064】
第4の側面においては、第2種のゲーム装置、第2種のゲームコントローラは必須ではないため、それらについては説明を省略する。
【0065】
図5にゲーム装置2のハードウェア構成を示す。本実施形態においては、ゲーム装置2aとゲーム装置2bは同じハードウェア構成であるが、異なる部分があっても良い。ゲーム装置2aとゲーム装置2bの各要素について区別しない場合、プロセッサ20、不揮発メモリ21、揮発メモリ22等と言い、区別する場合、プロセッサ20a、20b、不揮発メモリ21a、21b、揮発メモリ22a、22b等とa,bの符号を付けて説明する。
【0066】
ゲーム装置2は、プロセッサ20、不揮発メモリ21、揮発メモリ22、ディスプレイコントローラ23、オーディオコントローラ24、通信モジュール25等を含む。プロセッサ20はCPU200およびGPU201を含むSoC(System on a Chip)である。CPU200とGPU01とを別々に備えても良い。プロセッサ20は汎用プロセッサでもよいし、専用プロセッサでもよい。不揮発メモリ21は、例えば、ROM、NAND、SSD等であってもよい。揮発メモリ22は、例えば、DRAM等であってもよい。ディスプレイコントローラ23はディスプレイに表示用データを出力するコントローラであり、例えば、ディスプレイコントローラICを用いることができる。ディスプレイ26は、携帯ゲーム装置におけるディスプレイ、または、据置ゲーム装置における外部モニタ(TVやPCモニタ等)等である。オーディオコントローラ24はスピーカにオーディオデータを出力するコントローラであり、例えば、オーディオコントローラICを用いることができる。スピーカ27は、例えば、携帯ゲーム装置におけるスピーカ、または、据置ゲーム装置における外部スピーカ(TVのスピーカ等)等である。通信モジュール25は、コントローラ、他のゲーム装置、サーバ等との間で送受信を行うものであり、例えば、Bluetooth(登録商標)チップ、Wifiチップやネットワークコントローラ等の無線ICを用いることができる。他のゲーム装置との間の通信は、Wifi通信またはネットワーク通信等により行っても良い。ゲームコントローラとの通信はBluetooth通信等によって行っても良い。
【0067】
図6にゲーム装置3のハードウェア構成を示す。ゲーム装置3のハードウェア構成は、性能や機能等は異なってよいが、基本的にゲーム装置2のハードウェア構成と同じ構成であり、説明を省略する。ゲーム装置3のハードウェア構成はゲーム装置2のハードウェア構成と異なってもよい。
【0068】
図7にゲームコントローラ4のハードウェア構成を示す。ゲームコントローラ4は、振動制御プロセッサ40と、不揮発メモリ41と、揮発メモリ42と、操作部43と、通信モジュール44と、アンプ45と、振動デバイス46とを含む。
【0069】
振動制御プロセッサ40は、振動データに基づいて振動デバイス46を制御するためのデータを生成するためのプロセッサであり、例えば、MPUとしてよいが、CPU等であってもよい。振動制御プロセッサ40により生成された制御データがアンプ45に入力され、アンプ45の出力により振動デバイス46が制御される。振動デバイス46は、例えば、ボイスコイルモータ、リニア共振アクチュエータ、偏心モータ、ピアゾアクチュエータ、高分子アクチュエータ等を用いることができる。操作部43は、操作ボタン、ジョイスティック、各種センサ(モーションセンサ等)、マウス等を含んでも良い。
【0070】
ゲームコントローラ4a、4bは同じハードウェア構成であるが、異なる部分があっても良い。ゲームコントローラ4a、4bの各要素について区別しない場合、振動制御プロセッサ40、不揮発メモリ41、揮発メモリ42等と言い、区別する場合、振動制御プロセッサ40a、40b、不揮発メモリ41a、41b、揮発メモリ42a、42b等と、a、bの符号を付けて説明する。
【0071】
振動制御プロセッサ40、操作部43、アンプ45、振動デバイス46は、ゲーム装置本体に設けても良い。また、振動制御プロセッサ40を設けずにCPU200がその処理を実行しても良い。
【0072】
図8にゲームコントローラ5のハードウェア構成を示す。ゲームコントローラ5のハードウェア構成は、性能や機能等は異なってよいが、基本的にゲームコントローラ4のハードウェア構成と同じ構成であり、説明を省略する。ゲームコントローラ5のハードウェア構成はゲームコントローラ4のハードウェア構成と異なってもよい。
【0073】
ゲームコントローラ4の振動デバイス46とゲームコントローラ5の振動デバイス56は異なる特性を持つ振動デバイスであってよい。例えば、振動デバイス46はボイスコイルモータで、振動デバイス56はリニア共振アクチュエータであってよい。
【0074】
ゲームコントローラ5a、5b、5cは基本的に同じハードウェア構成であるが、異なる部分があっても良い。ゲームコントローラ5a、5b、5cの各要素について区別しない場合、振動制御プロセッサ50、不揮発メモリ51、揮発メモリ52等と言い、区別する場合、振動制御プロセッサ50a、50b、50c、不揮発メモリ51a、51b、51c、揮発メモリ52a、52b、52c等と、a、b、cの符号を付けて説明する。
【0075】
上述したプロセッサやICの一部をハードウェアロジック回路としてもよい。
図9に、ゲーム装置2の不揮発メモリ21に記憶されるプログラムおよびデータを示す。各プログラムはCPU200が実行可能な形式のプログラムコードを含み、プログラムコードには命令が含まれる。ゲーム装置2の不揮発メモリ21には、ゲームプログラムP1と、システムプログラムP2と、OS等とが記憶される。ゲームプログラムP1、システムプログラムP2、およびOSは、CPU200により実行される。ゲームプログラムP1は、ゲーム装置2用のプログラムであり、第1の種類のゲームプログラムまたは第2種のゲームプログラムである。ゲームプログラムP1はゲーム装置2aに記憶されればよく、ゲーム装置2bに記憶されている必要は無い。
【0076】
ゲームプログラムP1は、ゲーム処理用コードC1-1、ゲーム画像生成用コードC1-2、ゲーム振動データ生成用コードC1-3、操作振動データ生成用コードC1-4、振動モード設定指示用コードC1-5、ゲーム振動データD1-1、操作振動データD1-2を含む。これらの各コードによる処理は、ホスト装置であるゲーム装置2aにおいて実行される。ゲーム処理用コードC1-1、ゲーム画像生成用コードC1-2、ゲーム振動データ生成用コードC1-3、操作振動データ生成用コードC1-4は例えばゲームフレーム毎に実行される。振動モード設定指示用コードC1-5は、ゲームプログラムの冒頭で1回実行されてよいが、ゲームプログラムの途中で実行されても良い。
【0077】
ゲーム処理用コードC1-1は、操作データに基づいてキャラクタの移動や動作制御、衝突判定、シナリオ進行等を行う命令を含む。具体的には、このコードがCPU200に実行されることにより、以下の処理が行われる(
図10)。
【0078】
・自装置操作データd1、ゲスト装置操作データd2、および、シナリオ進行に基づいてゲーム処理を行い、キャラクタの位置等のゲームパラメータ(d3)を生成して揮発メモリ22aに記憶する(S1-1)。
【0079】
ゲーム画像生成用コードC1-2は、ゲーム処理の結果に基づいてゲーム画像データの生成をGPU201に指示する命令を含む。具体的には、このコードがCPU200に実行されることにより、以下の処理が行われる(
図11)。
【0080】
・ゲームパラメータd3やシナリオ進行等に基づいて、GPU201にゲーム画像生成を指示する(S1-2)。
【0081】
なお、この指示に基づいてGPU201がゲーム画像データ(d4)を生成してフレームバッファに記憶する。そして、ディスプレイコントローラ23がフレームバッファのゲーム画像をディスプレイに表示する。
【0082】
ゲーム振動データ生成用コードC1-3は、ゲーム内の各イベント(オブジェクトの衝突イベントやシナリオ進行等)に応じて振動データを生成する命令を含む。操作振動データ生成用コードC1-4は、操作部43の操作内容に応じて振動データを生成する命令を含む。これらは振動データは、予め記憶されるデータを読み出す方法で生成されても良いし、動的に計算する方法で生成されても良い。本明細書において、「生成」とは予め生成されたデータをメモリから読み出して処理対象のデータとすることを含む。
【0083】
ゲーム振動データD1-1は、ゲーム内の各イベントに対応して予め記憶される振動データである。操作振動データD1-2は、操作部の操作内容に対応して予め記憶される振動データである。
図29に操作振動データD1-2の一例を示す。
図29に示すように、操作内容に応じて振動パターンを変更することにより、ホスト装置において違う操作がされていること、および/または、操作ストロークの違い等をゲスト装置で感じることができる。ゲーム振動データD1-1および操作振動データD1-2は、例えば、順次使用される一連の複数の振動データを含むデータセットである。これらの個々の振動データは振幅および周波数を指示するデータを含むが、電圧データ等の制御データであってもよい。
【0084】
具体的には、ゲーム振動データ生成用コードC1-3がCPU200に実行されることにより、以下の処理が行われる(
図12)。
【0085】
・ゲームパラメータd3やシナリオ進行等に基づいて、ゲームコントローラごと(プレイヤごと)に振動イベントの発生判定を行い、発生したイベントに対応するゲーム振動データD1-1(上述したデータセット)を読み出して、ゲームコントローラ4a向けのデータ(d5-1)、ゲームコントローラ5a向けのデータ(d5-2)、ゲームコントローラ4b向けのデータ(d5-3)、ゲームコントローラ5b向けのデータ(d5-4)、ゲームコントローラ5c向けのデータ(d5-5)として揮発メモリ22aの振動データ領域に記憶する(S1-3)。
【0086】
具体的には、操作振動データ生成用コードC1-4がCPU200に実行されることにより、以下の処理が行われる(
図13)。
【0087】
・4b向けのゲーム振動データがない場合、ゲームコントローラ4aの操作データに基づいて、操作内容に対応する操作振動データD1-2(上述したデータセット)を読み出して、振動データd5-3として揮発メモリ22aの振動データ領域に記憶する(S1-4)。なお、本実施態様においては、ゲーム振動データと操作振動データとは同じフォーマットのデータであり、両者は区別なく振動データ領域に記憶されるが、区別して記憶しても良い。ゲームコントローラ5aの操作データについても同様に操作振動データを生成してもよい。ゲスト装置に接続された他のゲームコントローラ向けに同様の操作振動データを生成しても良い。ゲームコントローラ4b向けのゲーム振動データがある場合も、操作振動データを生成し、ゲーム振動データと合成等してもよい。
【0088】
振動モード設定指示用コードC1-5は、システムプログラムに第2振動モードの設定を指示する命令を含む。このコードは第2種のゲームプログラムに含まれ、第1種のゲームプログラムには含まれない。具体的には、このコードがCPU200に実行されることにより、以下の処理が行われる(
図14)。
【0089】
・APIを通じて、システムプログラムに第2振動モードに設定するよう指示する(S1-5)。
【0090】
次にシステムプログラムP2について説明する。
システムプログラムP2は、自装置操作データ取得用コードC2-1、操作データ送信用コードC2-2、ゲスト装置操作データ取得用コードC2-3、ゲーム画像送信用コードC2-4、蓄積数決定用コードC2-5、ゲーム画像データ蓄積用コードC2-6、振動データ変換用コードC2-7、振動データ送信用コードC2-8、振動データ取得用コードC2-9、振動データ転送用コード(ホスト装置用)C2-10、振動データ転送用コード(ゲスト装置用)C2-11、表示用コードC2-12、振動モード設定用コード(ホスト装置用)C2-13、および、振動モード設定用コード(ゲスト装置用)C2-14を含む。なお、
図9において「(H)」が付されるコードはホスト装置で実行されるコードであり、「(G)」が付されるコードはゲスト装置で実行されるコードである。本実施形態においては、ゲーム装置2はホスト装置で実行されるコードと、ゲスト装置で実行されるコードの両方を記憶しているので、ホスト装置とゲスト装置のいずれにもなることができる。しかしながら、ホスト装置はゲスト装置として動作する際に実行されるコードを記憶しなくても良いし、ゲスト装置はホスト装置として動作する際に実行されるコードを記憶しなくても良い。システムプログラムP2に含まれる各コードは、ゲームプログラムP1やファームウェア等に含まれるようにしても良い。
【0091】
自装置操作データ取得用コードC2-1は、ホスト装置およびゲスト装置で実行されるコードであり、自装置に接続されたゲームコントローラの操作データを取得する命令を含む。具体的には、このコードがCPU200に実行されることにより、例えばゲームフレーム毎に、以下の処理が順次行われる(
図15)。
【0092】
・自装置に接続されたゲームコントローラ(ゲーム装置2aにおいては4aおよび5a、ゲーム装置2bにおいては4bおよび5b)から操作データを取得する(S2-1-1)。
【0093】
・取得した操作データを自装置操作データd1として揮発メモリ22に記憶する(S2-1-2)。
【0094】
操作データ送信用コードC2-2は、ゲスト装置で実行されるコードであり、ゲスト装置の操作データをホスト装置に送信する命令を含む。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が行われる(
図16)。
【0095】
・自装置操作データd1を、揮発メモリ22bの送信バッファ領域(他装置へ送信されるデータの領域)にゲーム装置2a宛てで記憶する(S2-2)。
【0096】
ゲスト装置操作データ取得用コードC2-3は、ホスト装置で実行されるコードであり、ゲスト装置から送信された操作データを取得する命令を含む。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が行われる(
図17)。
【0097】
・通信モジュール25により受信されて揮発メモリ22aの受信バッファ(他装置から受信されたデータの領域)に記憶されたゲスト装置のゲームコントローラ4b、5b、5cの操作データをゲスト操作データd2として揮発メモリ22aに記憶する(S2-3)。
【0098】
ゲーム画像送信用コードC2-4は、ホスト装置で実行されるコードであり、ゲーム画像データをゲスト装置に送信するコードである。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が行われる(
図18)。
【0099】
・フレームバッファ上のゲーム画像データd4を読み出してエンコードし、揮発メモリ22aの送信バッファ領域(他装置へ)にゲーム装置2b、3宛てに格納する(S2-4)。
【0100】
なお、ホスト装置とゲスト装置とで異なるゲーム画像データを生成する場合は、ゲスト装置のゲーム画像データが記憶される領域から読み出される。
【0101】
蓄積数決定用コードC2-5は、ゲスト装置で実行されるコードであり、ホスト装置から送信されるゲーム画像データのうち、ゲスト装置において表示対象とするゲーム画像データを蓄積する数を決定する命令を含む。具体的には、このコードがCPU200に実行されることにより、一定期間ごとに以下の処理が順次行われる(
図19)。
【0102】
・今回の一定期間における各受信間隔(各受信における前回の受信タイミングと今回の受信タイミングの差)の平均値を計算する処理を行う(S2-5-1)。計算された平均値データは、次回の一定期間における分散の計算(S2-5-2における計算)に用いられる。この処理で計算される平均の代わりに、ゲーム装置2aから送信される送信間隔(例えば、ゲームフレームレート)を期待される受信間隔の平均値として分散の計算に用いても良い。または、セッション開始からの平均値を計算しても良い。
【0103】
・前回の一定期間における受信間隔の平均値と今回の一定期間における各受信間隔を用いて分散を計算し、今回の一定期間における標準偏差を計算する処理を行う(S2-5-2)。
【0104】
・計算された標準偏差に基づいて、表示対象とするゲーム画像データの蓄積数を決定し、蓄積数指定データd6として揮発メモリ22bに記憶する。なお、標準偏差に基づいて決定された蓄積数が閾値以上の場合は閾値に設定する(S2-5-3)。蓄積数は、例えば、標準偏差の整数倍(例えば、3倍)としてもよい。なお、標準偏差に小数がある場合に、切り上げ、切り捨て、四捨五入のいずれかを行っても良い。標準偏差を使わずに、他の方法で通信遅延の状況を計算しても良い。例えば、最新の受信間隔、受信間隔の平均、遅延スパイク時間等を用いても良い。標準偏差や受信間隔等から直接蓄積数を計算する代わりに、現在の蓄積数を徐々に減少または増加させても良い。
【0105】
ゲーム画像データ蓄積用コードC2-6は、ゲスト装置で実行されるコードであり、ホスト装置から送信されたゲーム画像データを蓄積する命令を含む。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が順次行われる(
図20)。
【0106】
・通信モジュール25が受信して受信バッファに記憶されているゲーム画像データd4を取得して、「デコード済の最新のゲーム画像データd7」(前回のデコード済ゲーム画像データ)を用いて差分によるデコードを行い、「デコード済の最新のゲーム画像データd7」を更新する(S2-6-1)。
【0107】
・デコードされたゲーム画像を、ゲーム画像データ領域に蓄積(追加記憶)する。ゲーム画像データ領域に既に蓄積数指定データd6が示す数のデータが記憶されている時は、最も古いデータを削除して記憶する(S2-6-2)。
【0108】
振動データ変換用コード(ホスト装置用)C2-7は、ホスト装置で実行されるコードであり、ゲームプログラムが生成した振動データを振動デバイスの違いに応じて変換する命令を含む。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が行われる(
図21)。
【0109】
・自装置が第2振動モードに設定されているか否かが判定される(S2-7-1)。具体的には、不揮発メモリ22aに記憶された振動モード指定データd10が第2振動モードを指定する値かどうかが判定される。
【0110】
・判定結果が否定の場合、自装置に接続された第2の種類のゲームコントローラ5a向け、および、ゲスト装置のうち第2の種類のゲーム装置に接続された第2種のゲームコントローラ5c向けの振動データd5-2、および、d5-5を、振動デバイス56の特性に合わせて変換し(具体的には、周波数変換および/または振幅変換を行う)、変換後の振動データをd5-2’、d5-5’として振動データ領域に記憶する(S2-7-2)。
【0111】
・判定結果が肯定の場合、自装置に接続された第1種のゲームコントローラ4a向けの振動データd5-1を、振動デバイス46の特性に合わせて変換し(具体的には、周波数変換および/または振幅変換を行う)、変換後の振動データをd5-1’として振動データ領域に記憶する(S2-7-3)。なお、本実施形態においては、ゲスト装置のうちの第1の種類のゲーム装置2bに接続された第2の種類のゲームコントローラ5b向けのゲーム振動データは、当該ゲーム装置において変換されるため、ホスト装置においては変換されないが、ホスト装置において変換されるようにしても良い。
【0112】
振動データ送信用コードC2-8は、ホスト装置で実行されるコードであり、各ゲスト装置向けの振動データを、対応するゲスト装置に送信する命令を含む。ゲスト装置に送信すべき振動データが無いときは、振幅=0のデータが送信されることにより、ゲスト装置に常に振動データが送信される。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が行われる(
図22)。
【0113】
・振動データ領域のゲーム装置2bのゲームコントローラ4b、5b向けの振動データd5-3、d5-4を揮発メモリ22aの送信バッファ領域(他装置へ)にゲーム装置2b宛てに格納する。ゲームコントローラ4b向けの振動データが無い場合は、ゲームコントローラ4b向けの振動データとして、振幅=0、周波数=所定周波数(予め定める周波数)の振動データを格納する。ゲームコントローラ5b向けの振動データが無い場合も同様である。(S2-8-1)。
【0114】
・振動データ領域のゲームコントローラ5c向けの振動データd5-5またはd5-5’を揮発メモリ22aの送信バッファ領域(他装置へ)にゲーム装置3宛てに格納する。ゲームコントローラ5c向けの振動データが無い場合は、ゲームコントローラ5c向けの振動データとして、振幅=0、周波数=所定周波数(予め定める周波数)の振動データを格納する(S2-8-2)。上述の通り、振動データd5-1~d5-5のぞれぞれは、順次使用される一連の複数の振動データのセットであるが、振動データ送信用コードC2-8による処理においては、このうちの一定数(1つまたは複数)の振動データ順次が送信バッファに格納される。すなわち、1回の振動データd5-1~d5-5に含まれる振動データの数によっては、全ての振動データが一度に送信されず、順次送信される。
【0115】
振動データ取得用コードC2-9は、ゲスト装置において実行されるコードであり、ホスト装置から送信される振動データを取得する命令を含む。また、このコードには振動デバイスの違いに対応するために振動データを変換する命令も含まれる。具体的には、このコードがCPU200により実行されることにより、例えばゲームフレーム毎に、以下の処理が行われる(
図23)。
【0116】
・自装置が第2振動モードに設定されているか否かが判定される(S2-9-1)。具体的には、不揮発メモリ22bに記憶された振動モード指定データd10が第2振動モードを指定する値かどうかが判定される。
【0117】
・判定結果が否定の場合、通信モジュール25bにより受信されて揮発メモリ22bの受信バッファ(他装置から)に記憶されたゲームコントローラ4b、5b向けの振動データd5-3、d5-4を取得して振動データ領域に記憶する。この際、第2種のゲームコントローラ5b向けの振動データd5-4を、振動デバイス56の特性に合わせて変換し(具体的には、周波数変換および/または振幅変換を行う)、変換後振動データd5-4’として揮発メモリ22bに記憶する(S2-9-2)。
【0118】
・判定結果が肯定の場合、通信モジュール25bにより受信されて揮発メモリ22bの受信バッファ(他装置から)に記憶されたゲームコントローラ4b、5b向けの振動データd5-3、d5-4を取得して振動データ領域に記憶する。この際、第1種のゲームコントローラ4b向けの振動データd5-3を、振動デバイス46の特性に合わせて変換し(具体的には、周波数変換および/または振幅変換を行う)、変換後振動データd5-3’として揮発メモリ22bに記憶する(S2-9-3)。
【0119】
振動データ転送用コード(ホスト装置用)C2-10は、ホスト装置において実行されるコードであり、ホスト装置に接続されたゲームコントローラ宛てに、各ゲームコントローラ向けの振動データを送信するコードである。このコードがCPU200により実行されることにより、例えば、ゲームフレーム毎に、以下の処理が行われる(
図24)。
【0120】
・振動データ領域の自装置の各ゲームコントローラ4a、5a向けの振動データを揮発メモリ22aの送信バッファ領域(ゲームコントローラへ)に各ゲームコントローラ4a、5a宛てに格納する(S2-10)。
【0121】
振動データ転送用コード(ゲスト装置用)C2-11は、ゲスト装置において実行されるコードであり、自装置に接続されたゲームコントローラ宛てに、各ゲームコントローラ向けの振動データを送信するコードである。このコードには、ホスト装置から受信した振動データが無くなったときに、直前の振動を維持する命令が含まれる。この直前の振動の維持は直前の振動の振幅を減衰しつつ行われるが、減衰を行わなくても良い。このコードが実行されることにより、例えば、ゲームフレーム毎に、以下の処理が行われる(
図25)。なお、自装置に接続された各ゲームコントローラごとに以下の処理が行われるが、以下の説明においては、ゲームコントローラ4bについての処理を説明する。
【0122】
・ゲームコントローラ4b向けの振動データが振動データ領域に無いかどうかが判定される(S2-11-1)。上述の通り、振動データはホスト装置からゲスト装置に常に送信されているため、この判定を通信ロスト、通信遅延の判定として用いることができる。
【0123】
・判定結果が肯定の場合、ゲームコントローラ4bの直前のゲーム振動データd8の指示振幅を0.9倍して指示振幅とし、直前のゲーム振動データd8の指示周波数と同じ指示周波数とした振動データを、ゲームコントローラ4b向けの振動データとして振動データ領域に記憶する(S2-11-2)。指示振幅の倍数(0.9倍)は一例であり、0より大きく1より小さい値であればよい。
【0124】
・その後、振動データ領域の振動データを順次読み出して、揮発メモリ22bの送信バッファ領域(ゲームコントローラへ)にゲームコントローラ4b宛てに格納する。格納したデータは振動データ領域から削除し、直前の振動データd8として記憶する(S2-11-3)。
【0125】
表示用コードC2-12は、ゲスト装置において、表示するゲーム画像データを決定し、GPU201にフレームバッファに描画させるための命令を含む。このコードが実行されることにより、例えば、平均受信間隔に基づく周期で、以下の処理が行われる(
図26)。平均受信間隔は、平均受信間隔として期待できるゲームフレームレート(固定値またはホスト装置から通知されるフレームレート)としてもよいし、上述した計算された平均受信間隔等を用いても良い。
【0126】
・ゲーム画像データ領域に記憶されたゲーム画像データd4のうち最も古いデータを描画するようGPU22に指示し、当該ゲーム画像データd4をゲーム画像データ記憶領域から削除する(S2-12)。なお、当該指示に応じて、GPU201がフレームバッファにゲーム画像データd4を記憶する。そして、ディスプレイコントローラ23がフレームバッファのゲーム画像をディスプレイに表示する。
【0127】
振動モード設定用コード(ホスト装置用)C2-13は、自装置の振動モードを第1振動モードに初期設定するとともに(振動モード指定データd10に第1振動モードを指定する値を設定)、振動モード設定指示用コードC1-5が実行されることによる第2振動モードの設定の指示を受けて、第2振動モードに設定(振動モード指定データd10に第2振動モードを指定する値を設定)する命令を含む。また、ゲスト装置のうち第1種のゲーム装置2bに対して第2振動モードの設定を指示する命令を含む。具体的には、ゲームプログラムの実行中に以下の処理が実行される(
図27)。
【0128】
・自装置の振動モード指定データd10を第1振動モードを指定する値に初期設定する(S2-13-1)。
【0129】
・ゲームプログラムから第2振動モードの設定指示があったかが判定される(S2-13-2)。
【0130】
・当該判定結果が肯定の場合、自装置の振動モード指定データd10を第2振動モードを指定する値に設定するとともに、ゲスト装置のうち第1種のゲーム装置2b宛てに第2振動モードに設定する指示データを送信バッファ(他装置へ)に格納する(S2-13-3)。S2-13-2とS2-13-3との処理がゲームの実行中、繰り返し実行される。
【0131】
振動モード設定用コード(ゲスト装置用)C2-13は、自装置の振動モードを第1振動モードに初期設定するとともに、ホスト装置からの第2振動モードに設定する指示を取得して、自装置を第2振動モードに設定する命令を含む。具体的には、ゲームプログラムの実行中に以下の処理が実行される(
図28)。
【0132】
・自装置の振動モード指定データd10を第1振動モードを指定する値に初期設定する(S2-14-1)。
【0133】
・通信モジュール25を介してホスト装置から第2振動モードに設定する指示データを受信したかを判定する(S2-14-2)。
【0134】
・当該判定の結果が肯定の場合、自装置の振動モード指定データd10を第2振動モードを指定する値に設定する(S2-14-3)。
【0135】
S2-14-2とS2-14-3との処理がゲームの実行中、繰り返し実行される。
図30は、上述した各コードを実行する際に、ホスト装置であるゲーム装置2aの揮発メモリ22aに一時的に記憶されるデータを示す。
図31は、上述した各コードを実行する際に、ゲスト装置であるゲーム装置2bの揮発メモリ22aに一時的に記憶されるデータを示す。各データは上述した通りであるため説明を省略する。なお、フレームバッファはGPU201内のメモリ等の別の場所に設けられても良い。送信バッファ領域および受信バッファ領域は通信モジュール25内のメモリ等の別の場所に設けられても良い。なお、各送信バッファ領域に格納されたデータは、通信モジュール25により各宛先に送信される。
【0136】
図32は、ゲーム装置3の不揮発メモリ31に記憶されるプログラムである。不揮発メモリ31には、CPU300により実行されるシステムプログラムP3が記憶される。システムプログラムP3は、自装置操作データ取得用コードC3-1と、操作データ送信用コードC3-2と、蓄積数決定用コードC3-5と、ゲーム画像データ蓄積用コードC3-6と、振動データ取得用コードC3-9と、振動データ転送用コードC3-11と、表示用コードC3-12と、振動モード設定用コードC3-14を含む。
【0137】
自装置操作データ取得用コードC3-1は、自装置操作データ取得用コードC2-1と同様の処理を行う。操作データ送信用コードC3-2は、操作データ送信用コードC2-2と同様の処理を行う。蓄積数決定用コードC3-5は、蓄積数決定用コードC2-5と同様の処理を行う。ゲーム画像データ蓄積用コードC3-6は、ゲーム画像データ蓄積用コードC2-6と同様の処理を行う。振動データ取得用コードC3-9は、振動データ取得用コードC2-8に相当する処理を行うが、振動データの変換は行わない。振動データ転送用コードC3-11は、振動データ転送用コードC2-11と同様の処理を行う。表示用コードC3-12は、表示用コードC2-12と同様の処理を行う。振動モード設定用コードC3-14は、振動モード設定用コードC2-14と同様の処理を行う。
【0138】
図33は、上述した各コードを実行する際に、ゲーム装置3の揮発メモリ32に一時的に記憶されるデータを示す。
【0139】
図34は、ゲームコントローラ4の不揮発メモリ41に記憶されるプログラムおよびデータを示す。不揮発メモリ41には、制御データ生成プログラムP4と振動デバイス46の周波数特性データD4-1が記憶される。制御データ生成プログラムP4は、振動制御プロセッサ40によって実行されるプログラムであり、制御データ生成用コードC4-1を含む。制御データ生成用コードC4-1は、振動デバイス46を制御するアンプ45に入力する制御データを生成する命令を含む。このコードが実行されることにより、例えば、所定周期で以下の処理が行われる(
図35)。
【0140】
・通信モジュール44により受信されて揮発メモリ42の受信バッファに記憶された、ゲーム装置から送信される振動データを揮発メモリ42の制御データ領域42に記憶する(S4-1-1)。
【0141】
・揮発メモリ42の振動データ領域に記憶された振動データに含まれる指示振幅データおよび指示周波数データと、振動デバイス46の周波数特性データD4-1とに基づいて、制御データを生成して揮発メモリ42の制御データ領域に記憶する(S4-1-2)。周波数特性データD4-1は、振動デバイス46の各周波数における出力特性を示すデータであり、例えば、各周波数において振動のしやすさを表すデータである。S4-1-2においては、周波数特性データD4-1を参照して、例えば、振動データに含まれる指示周波数データが指示する周波数における振動のしやすさと振動データに含まれる指示振幅データ等を用いて制御データを生成する。アンプ45が揮発メモリ42の制御データ領域に記憶された制御データに基づいて振動デバイス46を制御する。
【0142】
図36は、ゲームコントローラ5の不揮発メモリ51に記憶されるプログラムおよびデータを示す。不揮発メモリ51には、制御データ生成プログラムP5と振動デバイス56の周波数特性データD5-1が記憶される。制御データ生成プログラムP5は、振動制御プロセッサ50により実行されるコードであり、制御データ生成用コードC5-1を含む。制御データ生成用コードC5-1は、振動デバイス56を制御するアンプ55に入力する制御データを生成する命令を含む。このコードが実行されることにより、例えば、
図37に示した処理が実行される(
図35の処理と同様であり説明を省略する)。アンプ55が揮発メモリ52の制御データ領域に記憶された制御データに基づいて振動デバイス56を制御する。
【0143】
CPU等により実行される上述した各処理は、複数のプロセッサにより分担して処理されても良い。また、一部の処理はハードロジック回路(ASIC等)で行われても良い。上述した各プログラムによる処理は、複数のプログラム群により分担して行われても良い。
【符号の説明】
【0144】
1 ゲームシステム、2 第1種のゲーム装置、3 第2種のゲーム装置、4 第1種のゲームコントローラ、5 第2種のゲームコントローラ、C1-1 ゲーム処理用コード、C1-2 ゲーム画像生成用コード、C1-3 ゲーム振動データ生成用コード、C1-4 操作振動データ生成用コード、C1-5 振動モード設定指示用コード、D1-2 ゲーム振動データ、D1-2 操作振動データ、C2-1 自装置操作データ取得用コード、C2-2 操作データ送信用コード、C2-3 ゲスト装置操作データ取得用コード、C2-4 ゲーム画像送信用コード、C2-5 蓄積数決定用コード、C2-6 ゲーム画像データ蓄積用コード、C2-7 振動データ変換用コード、C2-8 振動データ送信用コード、C2-9 振動データ取得用コード、C2-10 振動データ転送用コード(ホスト装置用)、C2-11 振動データ転送用コード(ゲスト装置用)、C2-12 表示用コード、C2-13 振動モード設定用コード(ホスト装置用)、C2-14 振動モード設定用コード(ゲスト装置用)、C3-1 自装置操作データ取得用コード(第2種のゲーム装置用)、C3-2 操作データ送信用コード(第2種のゲーム装置用)、C3-5 蓄積数決定用コード(第2種のゲーム装置用)、C3-6 ゲーム画像データ蓄積用コード(第2種のゲーム装置用)、C3-9 振動データ取得用コード(第2種のゲーム装置用)、C3-11 振動データ転送用コード(第2種のゲーム装置用)、C3-12 表示用コード(第2種のゲーム装置用)、C3-14 振動モード設定用コード(第2種のゲーム装置用)、C4-1 制御データ生成コード、D4-1 振動デバイス46の周波数特性データ、C5-1 制御データ生成コード、 D5-1 振動デバイス56の周波数特性データ。