【解決手段】負荷情報取得部206は、ゲームアプリケーションから、ユーザにより選択されたオブジェクトに対応する負荷情報を取得する。駆動制御部208は、取得した負荷情報にしたがって、第1アクチュエータ94aおよび第2アクチュエータ94bを駆動し、操作軸157を含むアナログスティックに負荷を付与する。この負荷は、アナログスティックの傾動方向に沿った方向に付与され、傾動方向と逆向きであってもよく、また同じ向きであってもよい。
前記制御部は、ユーザが前記操作部を操作して少なくとも1つのオブジェクトを動かす際に、前記アクチュエータにより前記操作部の操作に対して負荷を付与させることを特徴とする請求項4に記載のゲームシステム。
前記制御部は、ゲームの状況に対応する負荷情報にしたがって、前記操作部の操作に関係なく前記アクチュエータを制御して、前記操作部に負荷を付与させることを特徴とする請求項7に記載のゲームシステム。
前記制御部は、前記アクチュエータを、基準負荷情報にしたがって制御しており、前記取得部が負荷情報を取得すると、基準負荷情報と、取得した負荷情報をもとに、前記アクチュエータを制御することを特徴とする請求項1から8のいずれかに記載のゲームシステム。
前記制御部は、前記アクチュエータに、ユーザによる操作部の操作をアシストする負荷を生成させることを特徴とする請求項1から9のいずれかに記載のゲームシステム。
前記制御部は、ゲームにおいてユーザが前記操作部を操作してオブジェクトを動かす際に、前記アクチュエータにより前記操作部の操作に対して負荷を付与させることを特徴とする請求項11または12に記載のゲームシステム。
制御機能は、ゲームにおいてユーザが操作部を操作して、少なくとも1つのオブジェクトを動かす際に、アクチュエータにより操作部の操作に対して負荷を付与させることを特徴とする請求項15または16に記載のプログラム。
【発明を実施するための形態】
【0011】
本実施例のゲームシステムは、ユーザが操作する操作部と、入力されたユーザ操作をゲーム進行に反映して出力する処理部を有する。ゲームシステムは、操作部と処理部とが一体として構成されてもよく、また操作部と処理部とが別体として構成されてもよい。以下の実施例においては、操作部と処理部とが一体として構成されるゲームシステムについて説明するが、ゲームシステムは、操作部がゲームコントローラ、ジョイスティックなどのユーザインタフェースであり、処理部が据置型のゲーム機であって、操作部と処理部とが無線または有線で接続されたものであってもよい。以下、ゲームシステムが、携帯型のゲーム機として構成される場合について説明する。
【0012】
[前面部の構成]
図1(a)は、ゲーム装置10の前面を示す。ゲーム装置10は、ユーザが操作する操作部と、ゲームアプリケーションを処理する処理部とを一体にしたゲームシステムであり、本実施例において「ゲームシステム」および「ゲーム装置」は同義である。
【0013】
ゲーム装置10は、横長の筐体により形成され、ユーザが把持する左右の領域は、円弧状の外郭を有している。ゲーム装置10の前面には、矩形のタッチパネル50が設けられる。タッチパネル50は、表示装置20と、表示装置20の表面を覆う透明な前面タッチパッド21から構成される。表示装置20は有機EL(Electro-Liminescence)パネルであり、画像を表示する。なお表示装置20は液晶パネルなどの表示手段であってもよい。前面タッチパッド21は、同時にタッチされた複数ポイントの検出機能をもつマルチタッチパッドであって、タッチパネル50はマルチタッチスクリーンとして構成される。
【0014】
タッチパネル50の右側には、菱形の頂点にそれぞれ位置する△ボタン22a、○ボタン22b、×ボタン22c、□ボタン22d(以下、総称する場合には「操作ボタン22」とよぶ)が設けられ、タッチパネル50の左側には、上キー23a、左キー23b、下キー23c、右キー23d(以下、総称する場合には「方向キー23」とよぶ)が設けられる。ユーザは方向キー23を操作して、上下左右および斜方の8方向を入力できる。方向キー23の下側には左スティック24aが設けられ、また操作ボタン22の下側には右スティック24bが設けられる。ユーザは左スティック24aまたは右スティック24b(以下、総称する場合には「アナログスティック24」とよぶ)を傾動して、方向および傾動量を入力する。なおアナログスティック24は、中心の基準位置からの方向を入力できるスライド式のパッドとして構成されてもよい。筐体の左右頂部には、Lボタン26a、Rボタン26bが設けられる。操作ボタン22、方向キー23、アナログスティック24、Lボタン26a、Rボタン26bは、ユーザが操作する操作部を構成する。
【0015】
操作ボタン22の近傍に、前面カメラ30が設けられる。左スティック24aの左側および右スティック24bの右側には、それぞれ音声を出力する左スピーカ25aおよび右スピーカ25b(以下、総称する場合には「スピーカ25」とよぶ)が設けられる。また左スティック24aの下側にHOMEボタン27が設けられ、右スティック24bの下側にSTARTボタン28およびSELECTボタン29が設けられる。
【0016】
[背面部の構成]
図1(b)は、ゲーム装置10の背面を示す。ゲーム装置10の背面には、背面カメラ31および背面タッチパッド32が設けられる。背面タッチパッド32は、前面タッチパッド21と同様に、マルチタッチパッドとして構成される。ゲーム装置10は、前面および背面において、2つのカメラおよびタッチパッドを搭載している。
【0017】
[上面部の構成]
図2(a)は、ゲーム装置10の上面を示す。既述したように、ゲーム装置10の上面の左右端側に、Lボタン26a、Rボタン26bがそれぞれ設けられる。Lボタン26aの右側には電源ボタン33が設けられ、ユーザは、電源ボタン33を所定時間(たとえば2秒)以上押下することで、電源をオンまたはオフする。
【0018】
ゲームカードスロット34は、ゲームプログラムが記録されたゲームカードを差し込むための差込口であり、この図では、ゲームカードスロット34がスロットカバーにより覆われている状態が示される。なおゲームカードスロット34の近傍に、ゲームカードがアクセスされているときに点滅するLEDランプが設けられてもよい。アクセサリ端子35は、周辺機器(アクセサリ)を接続するための端子であり、この図ではアクセサリ端子35が端子カバーにより覆われている状態が示される。アクセサリ端子35とRボタン26bの間には、ボリュームを調整するための−ボタン36aと+ボタン36bが設けられている。
【0019】
[下面部の構成]
図2(b)は、ゲーム装置10の下面を示す。メモリカードスロット37は、メモリカードを差し込むための差込口であり、この図では、メモリカードスロット37が、スロットカバーにより覆われている状態が示される。ゲーム装置10の下面において、音声入出力端子38、マイク39およびマルチユース端子40が設けられる。マルチユース端子40はUSB(Universal Serial Bus)に対応し、USBケーブルを介して他の機器と接続できる。
【0020】
[左側面部の構成]
図2(c)は、ゲーム装置10の左側面を示す。ゲーム装置10の左側面には、SIMカードの差込口であるSIMカードスロット41が設けられる。
【0021】
[ゲーム装置の内部構成]
図3は、ゲームシステム1の機能ブロックを示す。ゲーム装置10における各構成はバス92によって互いに接続されている。無線通信モジュール71はIEEE802.11b/g等の通信規格に準拠した無線LANモジュールによって構成され、AP2を介して、外部ネットワークに接続する。なお無線通信モジュール71は、ブルートゥース(登録商標)プロトコルの通信機能を有してもよい。携帯電話モジュール72は、ITU(International Telecommunication Union;国際電気通信連合)によって定められたIMT−2000(International Mobile Telecommunication 2000)規格に準拠した第3世代(3rd Generation)デジタル携帯電話方式に対応し、携帯電話網4に接続する。SIMカードスロット41には、携帯電話の電話番号を特定するための固有のID番号が記録されたSIMカード74が挿入される。SIMカード74がSIMカードスロット41に挿入されることで、携帯電話モジュール72は、携帯電話網4との間で通信可能となる。
【0022】
CPU(Central Processing Unit)60は、メインメモリ64にロードされたプログラムなどを実行する。GPU(Graphics Processing Unit)62は、画像処理に必要な計算を実行する。メインメモリ64は、RAM(Random Access Memory)などにより構成され、CPU60が使用するプログラムやデータなどを記憶する。ストレージ66は、NAND型フラッシュメモリ(NAND-type flash memory)などにより構成され、内蔵型の補助記憶装置として利用される。
【0023】
モーションセンサ67は、ゲーム装置10の動きを検出し、地磁気センサ68は、3軸方向の地磁気を検出する。GPS制御部69は、GPS衛星からの信号を受信し、現在位置を算出する。前面カメラ30および背面カメラ31は、画像を撮像し、画像データを入力する。前面カメラ30および背面カメラ31は、CMOSイメージセンサ(Complementary Metal Oxide Semiconductor Image Sensor)によって構成される。
【0024】
表示装置20は、有機EL表示装置であり、陰極および陽極に電圧を印加することで発光する発光素子を有する。省電力モードでは、電極間に印加する電圧を通常よりも低くすることで、表示装置20を減光状態とすることができ、電力消費を抑えられる。なお表示装置20はバックライトを備えた液晶パネル表示装置であってもよい。省電力モードでは、バックライトの光量を下げることで、液晶パネル表示装置を減光状態として、電力消費を抑えることができる。
【0025】
インタフェース90において、操作部70は、ゲーム装置10における各種操作手段を含み、具体的には、操作ボタン22、方向キー23、アナログスティック24、Lボタン26a、Rボタン26b、HOMEボタン27、STARTボタン28、SELECTボタン29、電源ボタン33、−ボタン36a、+ボタン36bを含む。前面タッチパッド21および背面タッチパッド32は、マルチタッチパッドであり、前面タッチパッド21は、表示装置20の表面に重ね合わせて配置される。スピーカ25は、ゲーム装置10の各機能により生成される音声を出力し、マイク39は、ゲーム装置10の周辺の音声を入力する。音声入出力端子38は、外部のマイクからステレオ音声を入力し、外部のヘッドホンなどへステレオ音声を出力する。
【0026】
ゲームカードスロット34には、ゲームプログラムを記録したゲームカード76が差し込まれる。ゲームカード76は、データの書込可能な記録領域を有しており、ゲームカードスロット34に装着されると、メディアドライブにより、データの書込/読出が行われる。メモリカードスロット37には、メモリカード78が差し込まれる。メモリカード78は、メモリカードスロット37に装着されると、外付け型の補助記憶装置として利用される。マルチユース端子40は、USB端子として利用でき、USBケーブル80を接続されて、他のUSB機器とデータの送受信を行う。アクセサリ端子35には、周辺機器が接続される。
【0027】
本実施例のゲームシステム1は、ユーザが操作する操作部70に負荷を付与するアクチュエータ94を備える。アクチュエータ94は、たとえばモータなどの駆動子を有して構成され、CPU60により制御されるドライバIC96から供給される制御信号をもとに、ユーザによる操作部70の操作に対して作用させる負荷(荷重)を生成する。アクチュエータ94は操作部70に機械的に連結されて、操作部70に付与する負荷を生成してもよいが、たとえば電磁石により操作部70に電磁的に結合されて、操作部70に付与する負荷を生成してもよい。なおアクチュエータ94は、たとえばゲーム状況に応じて、ユーザによる操作部70の操作に関係なく、操作部70に対して作用させる負荷を生成してもよい。
【0028】
以下、操作部70の一例として、多方向操作入力装置に連結したアナログスティック24にアクチュエータ94が負荷を付与する場合を説明するが、操作ボタン22や方向キー23などの他の操作手段にアクチュエータ94が負荷を付与してもよい。押しボタン式の操作手段にアクチュエータ94を取り付ける際には、アクチュエータ94が操作手段の押下方向に沿った負荷(外力)を付与可能に設けられることが好ましい。
【0029】
ユーザはゲームプレイ中、ゲームオブジェクトであるプレイヤキャラクタを操作部70を操作することで動かすが、アクチュエータ94は、操作部70に対して外力を付与する。つまり本実施例においてアクチュエータ94は、操作部70に対して外力を生成する手段として機能し、ゲームキャラクタは、操作部70が操作されることにより動かされることから、アクチュエータ94により操作部70に付与される外力は、プレイヤキャラクタの動きにも影響を与えることになる。アクチュエータ94は、操作部70に対して様々な方向に負荷を付与することができるが、少なくともアクチュエータ94は、ユーザが操作部70を操作する方向と逆向きの方向に負荷を付与でき、また操作方向と同一方向に負荷を付与できる。
【0030】
操作部70の操作方向に逆向きの負荷は、ユーザの操作に抗する反発力となる。アクチュエータ94が操作部70の操作方向に逆向きの負荷を生成すると、それが抵抗となり、ユーザは操作部70を動かしにくくなる。たとえばユーザが操作部70を右方向に倒すと、アクチュエータ94は操作部70に対して左方向の負荷を外力として付与し、したがってアクチュエータ94は、ユーザに対して重い操作感を提供できる。
【0031】
一方、操作部70の操作方向に同一向きの負荷は、ユーザの操作を助長するアシスト力となる。アクチュエータ94が操作部70の操作方向と同じ向きの負荷を生成すると、ユーザは操作部70を小さい力で動かせるようになる。
図4および
図5に示すように操作部70に、操作前の状態に戻るための復元力を生成するバネ部材が設けられている場合、操作部70の操作方向と同じ向きの負荷は、バネ部材の復元力に抗する力となる。たとえばユーザが操作部70を右方向に倒したとき、バネ部材は操作部70の傾動量が大きくなるほど、左方向に大きな復元力を生成するが、アクチュエータ94は操作部70に対して、右方向の負荷を外力として付与し、したがってアクチュエータ94は、ユーザに対して軽い操作感を提供できる。
【0032】
アクチュエータ94は、操作部70の操作に応じて、その操作方向に沿って負荷を付与することができるが、上記したように操作部70にバネ部材が設けられている場合には、バネ部材の復元力も加味して操作部70に負荷を付与してよい。なおアクチュエータ94は、操作方向に沿わない方向に負荷を付与してもよい。たとえばゲームシーンにおいて、プレイヤキャラクタに対して横風が吹いており、プレイヤキャラクタが風に煽られるような状況では、アクチュエータ94が、ユーザによる操作部70の操作とは無関係に、操作部70に対して横方向に負荷を付与してもよい。
【0033】
図4は、アナログスティック24の傾動を実現する多方向操作入力装置100を説明するための分解斜視図である。アナログスティック24は、多方向操作入力装置100に連結した操作手段であり、軸中心に360度いずれの方向にも傾動可能とされる。この例では、アナログスティック24は、ゲーム装置10の筐体外部に露出する回転操作子116および筐体内部に収容される操作軸157により形成される。
図4では、アナログスティック24の傾動を実現する多方向操作入力装置100の基本構造を示し、既述したアクチュエータ94の図示は省略している。
【0034】
多方向操作入力装置100は、箱型をなす上部枠体150とアーチ状をなす第1連動部材151を備えている。第1連動部材151は、一端の折曲部152に上部枠体150の側面150aに固定された第1可変抵抗器である第1回転検出部153aの回転軸114が係合し、他端の折曲部152に設けた突部155が上部枠体150の側面150aと相対向する側面150bに設けた孔156に遊嵌して第1連動部材151が上部枠体150に回転自在に架設されている。
【0035】
上部枠体150の中心に位置するようにして操作軸157が配設される。この操作軸157は、下端部に皿上の操作体158が設けられ、中央部分には円板159が設けられている。この円板159には、小孔160が設けられ、操作軸157の上縁には回転操作子116が取り付けられる。操作軸157および回転操作子116は、
図1(a)に示すアナログスティック24を構成する。
【0036】
上部枠体150内には、操作軸157に直交するように、第2連動部材162が配設される。第2連動部材162は、中央に球体163を有し、この球体163から横方向に延びる一対の腕164a、164bを有する。球体163の上面から下面に向かって貫通した長溝165が設けられ、操作軸157および円板159が長溝165に挿入されて、円板159の小孔160と球体163の側部の孔166とを位置あわせした後、ピン167が孔166および小孔160に挿入される。これにより操作軸157がピン167を支軸として長溝165に沿って回転自在に第2連動部材162に取り付けられている。
【0037】
第2連動部材62は、一方の腕164aの端部に上部枠体150の側面150cに固定された第2可変抵抗器である第2回転検出部153bの回転軸154が係合し、他方の腕164bの端部は上部枠体150の側面150dに設けた縦長孔170に嵌合し、上部枠体150の側面150dから外方に突出している。操作軸157は、第1連動部材151の長溝190に挿通した後、上部枠体150の上面の孔172から外方に突出している。
【0038】
操作軸157は復帰部材173上に支持されている。この復帰部材173は、上面側の凹部174に皿状の操作体158が回動可能に収納されている。上部枠体150の下端側には、下部枠体175が取り付けられる。下部枠体175の上面側には復帰部材173の鍔部176を垂直移動可能に収納する支持壁177が形成されており、下部枠体175の底面と復帰部材173の外周縁部178との間には螺旋状に巻回された復帰ばね179が収納されている。この復帰ばね179によって復帰部材173は上方に付勢され、第2連動部材162の腕164bの端部は上部枠体150の側面150dの縦長孔170の上縁に圧接され、第2連動部材162は、第1連動部材151の下方において第1連動部材151と直交する方向で上部枠体150に回転自在に架設されている。
【0039】
そして上部枠体150の側面150dには、バネによって付勢された押圧操作子181をバネの付勢力に抗して押圧操作することによって切り換え操作される押圧操作型のスイッチ素子180が取り付けられている。このスイッチ素子180の押圧操作子181は、第2連動部材162の腕164bの端部と対向する。スイッチ素子180は、端子182を有し、この端子182は、上部枠体150の下縁に設けた取付け脚183、第1回転検出部153aおよび第2回転検出部153bの端子184と同一方向に突出している。
【0040】
次に、多方向操作入力装置100の操作状態を説明する。ユーザが回転操作子116を指で押さえて操作軸157を任意方向に傾けると、操作軸157は、第2連動部材162とピン167の軸心の交点を支点として回動する。そして、操作軸157の回動にともない第1連動部材151と第2連動部材162とが回動し、さらに第1回転検出部153aおよび第2回転検出部153bのそれぞれの回転軸114、154が回動して抵抗値が変化する。この抵抗値の変化は、アナログの電圧値として出力され、たとえばマイコンによってデジタル値に正規化されて、CPU60に提供される。このように第1回転検出部153aおよび第2回転検出部153bは、アナログスティック24の操作を検出する検出部であり、CPU60は、第1回転検出部153aおよび第2回転検出部153bのアナログ出力が正規化されたデジタル値を受け取ることで、アナログスティック24が倒された向きおよび傾動量を取得できる。
【0041】
次に、操作軸157の中立位置への自動復帰動作について説明する。操作軸157が操作されない中立時は、操作軸157は上部枠体150の上面の孔172から直立した状態にあり、
図5(a)に示すように、操作体158の底面と復帰部材173の内底面は復帰ばね179によって圧接されている。この状態から
図5(b)に示すように、操作軸157が時計方向に傾くと、操作体158の外方に向かって曲率半径が次第に大となるような弧状部分を有する鍔部185が復帰部材173を復帰ばね179の弾性に抗して下部枠体175の支持壁177に沿って下方に移動させるように押圧する。そして、操作軸157の操作力を解除すると、復帰ばね179の付勢力によって
図5(a)に示す中立状態、即ち操作軸157が直立状態に復帰する。
【0042】
以上は、多方向操作入力装置100の基本構造の説明であるが、本実施例の多方向操作入力装置100には、上記基本構造に加えて、ユーザによるアナログスティック24の操作に負荷を付与するためのアクチュエータ94が設けられている。
【0043】
図6は、操作部70に負荷を付与するためのゲームシステム1の構成を示す。第1連動部材151には、第1連動部材151の変位量(回転量)を検出するための第1回転検出部153aが連結されるとともに、第1連動部材151の動きに対して反発力またはアシスト力などの負荷を付与する第1アクチュエータ94aが連結される。第1アクチュエータ94aは、たとえば第1連動部材151の折曲部152にギアを介して連結されるモータであってよく、第1連動部材151に回転力を印加する機能をもつ。
【0044】
第2連動部材162には、第2連動部材162の変位量(回転量)を検出するための第2回転検出部153bが連結されるとともに、第2連動部材162の動きに対して反発力またはアシスト力などの負荷を付与する第2アクチュエータ94bが連結される。第2アクチュエータ94bは、たとえば第2連動部材162の腕164bにギアを介して連結されるモータであってよく、第2連動部材162に回転力を印加する機能をもつ。
【0045】
なお、第1アクチュエータ94aおよび第2アクチュエータ94bは、電磁石などによって構成され、それぞれ第1連動部材151および第2連動部材162の回転に対して負荷(荷重)を付与してもよい。以下、第1アクチュエータ94aおよび第2アクチュエータ94bを特に区別しない場合には、まとめて「アクチュエータ94」とよぶ。
【0046】
ゲームシステム1は、アナログスティック24に連結する多方向操作入力装置100およびドライバIC96に加えて、ゲーム実行部202、入力受付部204、負荷情報取得部206、駆動制御部208および保持部210を有する処理部200を備える。
図6において、処理部200として記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0047】
ゲーム実行部202が、ゲームプログラムをゲームカード76またはメモリカード78からメインメモリ64に読み出し、ゲームアプリケーションを実行する。入力受付部204は操作部70の操作を受け付ける。入力受付部204は、ユーザが操作部70から入力した操作入力を受け付け、ゲームアプリケーションが、ユーザの操作入力を用いてゲームを進行させる。アナログスティック24の操作に関して言えば、入力受付部204は、第1回転検出部153aおよび第2回転検出部153bから、アナログスティック24の操作の検出情報を取得する。これにより入力受付部204は、アナログスティック24の操作方向(傾動方向)および操作量を認識し、ゲームアプリケーションが、アナログスティック24の操作入力を用いてゲームを進行させることができる。
【0048】
ゲームシステム1において、処理部200は、ユーザがゲームにおいて選択したオブジェクトや、ゲーム中の状況に応じて、アクチュエータ94が操作部70に付与する負荷を制御する。たとえばユーザが、プレイヤキャラクタとして重量級のキャラクタを選択すると、処理部200は、アクチュエータ94に大きな負荷を生成させて操作部70の動きを重くし、一方、ユーザが軽量級のキャラクタを選択すると、処理部200は、アクチュエータ94に小さな負荷を生成させて操作部70の動きを相対的に軽くする。このように処理部200が、選択されたオブジェクトに応じて、アクチュエータ94が生成する負荷の大きさを制御することで、ユーザは、選択したキャラクタの大小に適合した重量感を指先に感じることができる。
【0049】
また処理部200は、ユーザが、プレイヤキャラクタが持つ武器や道具などの装備品を選択する場合に、選択されたキャラクタおよび選択された装備品に応じて負荷の大きさを定めてもよい。たとえば、重量級キャラクタの装備品として、重い武器が選ばれると、そのキャラクタおよび装備品に応じて負荷の大きさが定められてよい。戦闘中に武器を切り替えた場合には、切り替える度に、負荷の大きさが定められてよい。このとき処理部200は、キャラクタおよび/または装備品に応じて、ユーザによる操作部70の操作方向に沿った負荷を生成してよい。
【0050】
また処理部200は、装備品を持つキャラクタのゲーム状況(ゲームシーン)に応じて、負荷の大きさを定めてもよい。このように、負荷の大きさを定める情報が、選択されたオブジェクトや、キャラクタのゲーム状況などのそれぞれに設定されており、オブジェクトが選択される度、またはゲーム状況が変化する度に、処理部200が、操作部70に与える負荷の大きさを再計算して求める。これによりキャラクタや、ゲーム状況にマッチした負荷を生成することができ、よりリアルな感覚をユーザに与えることが実現される。
【0051】
なお処理部200は、負荷の大きさのみならず、操作部70に対して負荷を付与する方向を定めてもよい。たとえば処理部200は、ゲーム状況に応じて、負荷を付与する方向を定める。プレイヤキャラクタが、操作部70の操作方向に進行するゲームにおいて、プレイヤキャラクタの進行方向に対して横風が吹いているようなゲームシーンを想定すると、処理部200は、この横風を、キャラクタの進行方向に対して横向きに作用する操作部70への外力として処理し、この横風に相当する外力を、操作部70のユーザ操作とは無関係に、操作部70に付与してもよい。このとき処理部200は、ユーザによる操作部70の操作に対する負荷と、ゲーム状況に応じて付与される負荷との合力を、操作部70に付与させるようにアクチュエータ94を制御する。なお操作部70が操作されておらず、キャラクタが操作部70のユーザ操作により動かされていない場合には、処理部200は合力として、ゲーム状況に応じた負荷(横風による負荷)のみを操作部70に付与し、この場合には、ゲーム中において、ユーザが操作部70を操作していないにも関わらず、操作部70が横方向に傾動される。これによりゲームにおいては、プレイヤキャラクタが横風を受けて、横方向に、じりじりと動くようなシーンが形成されることになる。
【0052】
処理部200において負荷情報取得部206は、ゲームアプリケーションから、ユーザにより選択されたオブジェクトに対応する情報(負荷情報)を取得し、保持部210に保持させる。駆動制御部208は、ドライバIC96を介してアクチュエータ94を制御する。駆動制御部208は、ドライバIC96から出力する電圧値を指定し、ドライバIC96は、制御信号として電圧信号をアクチュエータ94に供給して、アクチュエータ94を駆動する。ここでゲームアプリケーションから供給される負荷情報は、駆動制御部208がアクチュエータ94により生成する負荷を特定するための情報であればよい。駆動制御部208は、負荷情報から、アクチュエータ94で生成させる負荷の大きさおよび方向を定めて、アクチュエータ94の駆動を制御する。
【0053】
負荷情報には、操作部70の操作方向に沿った負荷の大きさを特定するための情報と、操作部70の操作方向とは独立した方向に沿った負荷の大きさを特定するための情報とが存在する。いずれの情報も、負荷の大きさを特定する点では共通しているが、前者の情報は、ユーザによる操作部70の操作に対して重いまたは軽い操作感を提供するために利用され、一方で後者の情報は、操作部70の操作方向に対して別の方向に作用しうる負荷の付与方向も定めることから、操作部70の操作に対する外乱成分として利用される。本実施例では、以下に示すように、オブジェクトに関して設定される負荷情報は、操作部70の操作方向に沿った負荷の大きさを特定する前者の情報に相当し、ゲーム状況に応じて設定される負荷情報は、操作方向とは独立した負荷の付与方向を定める後者の情報に相当する。
【0054】
図7は、表示装置20に表示されるキャラクタ選択画面を示す。ユーザは方向キー23などを操作して、プレイヤキャラクタを選択する。ここでキャラクタ220a、220bは重量級キャラクタ、キャラクタ220c、220dは中量級キャラクタ、キャラクタ220e、220fは軽量級キャラクタを示す。
【0055】
図8(a)は、キャラクタと負荷レベルの対応表を示す。この対応表は、ゲームプログラムに組み込まれており、キャラクタ名(ないしはキャラクタID)に、その属性情報、具体的にはキャラクタのカテゴリ、キャラクタに設定された負荷レベルが対応付けられている。たとえばキャラクタ220aは、属性情報として、「重量級」、「負荷レベル15」を設定されており、キャラクタ220cは、属性情報として、「中量級」、「負荷レベル10」を設定されている。
【0056】
以下では、アクチュエータ94が、ユーザのアナログスティック24の操作方向に沿った外力を生成する例について説明する。
駆動制御部208は、ドライバIC96を介してアクチュエータ94からアナログスティック24に供給する負荷を、−19レベル〜20レベルの40段階で制御する。マイナスの負荷レベルは、アクチュエータ94がアシストトルクを生成することを意味し、プラスの負荷レベルは、アクチュエータ94が抵抗トルクを生成することを意味し、0の負荷レベルは、アクチュエータ94がトルクを生成しないことを意味する。したがって負荷レベルがプラスであれば、アナログスティック24には反発力が印加されて、操作が重くなり、また、負荷レベルがマイナスであれば、アナログスティック24にはアシスト力が印加されて、操作が軽くなる。なお、プラスのレベル値が大きいほど、発生する抵抗トルクは大きくなり、マイナスのレベル値が大きいほど、発生するアシストトルクは大きくなる。
【0057】
ゲームアプリケーションは、ユーザがキャラクタを選択すると、
図8(a)に示す対応表をもとに、ユーザにより選択されたキャラクタに対応する負荷レベルを、負荷情報として処理部200に供給する。処理部200において負荷情報取得部206が負荷情報を取得し、駆動制御部208は、負荷情報取得部206が取得した負荷情報にしたがって、アクチュエータ94を制御する。なお保持部210は、負荷情報取得部206が取得したキャラクタに関する負荷情報を保持する。
【0058】
たとえばキャラクタ220aが選択された場合、駆動制御部208は、アナログスティック24の操作に対して、負荷レベル15に対応する抵抗トルクをアクチュエータ94から生成させる。保持部210は、ゲームアプリケーションから提供される負荷レベルと、負荷レベルに応じたトルク値との対応表を保持しており、駆動制御部208は、その対応表にしたがって、負荷レベルに応じたトルクをアクチュエータ94から生成させるようにする。なお、この対応表には、負荷レベルと、負荷レベルに応じたトルクを生成するためにアクチュエータ94に供給する電圧値とが対応付けられていてもよい。また駆動制御部208は、負荷情報にしたがって、第1アクチュエータ94aおよび第2アクチュエータ94bのそれぞれに供給するべき電圧値を演算により算出してもよい。
【0059】
このとき駆動制御部208は、アナログスティック24が傾動された方向の逆向きに、抵抗トルクを発生させる。そのため入力受付部204が、アナログスティック24の傾動方向を検出すると、その傾動方向を駆動制御部208に供給し、駆動制御部208は、その傾動方向の逆向きに、負荷レベル15に対応する抵抗トルクを発生させるように、第1アクチュエータ94aおよび第2アクチュエータ94bの駆動を制御する。このように駆動制御部208は、入力受付部204が受け付けたアナログスティック24の操作に対して負荷を付与させるようにアクチュエータ94を制御する。
【0060】
また、たとえばキャラクタ220eが選択された場合には、駆動制御部208は、アナログスティック24の操作に対して、負荷レベル5に対応する抵抗トルクをアクチュエータ94から生成させる。キャラクタ220aとキャラクタ220eが選択された場合を比較すると、重量級であるキャラクタ220aが選択された場合には、負荷レベル15に対応する抵抗トルクが生成される一方で、キャラクタ220eが選択された場合には、負荷レベル5に対応する抵抗トルクが生成される。したがって、重量級のキャラクタが選択された場合には、アナログスティック24に印加される反発力が大きく、重い操作感をユーザに提供でき、一方で、軽量級のキャラクタが選択された場合には、アナログスティック24に印加される反発力が相対的に小さく、相対的に軽い操作感をユーザに提供できる。
【0061】
ユーザは、キャラクタ220を選択した後、キャラクタが持つ装備品を選択する。この選択のタイミングは、キャラクタ220の選択直後であってもよく、また、ゲームプレイ中の任意のタイミングであってもよい。たとえばユーザは、敵キャラクタとの戦闘中に、武器を交換してもよい。
【0062】
図8(b)は、装備品名と負荷レベルの対応表を示す。この対応表は、ゲームプログラムに組み込まれており、装備品と、その属性情報、具体的には装備品のカテゴリ、装備品に設定された負荷レベルが対応付けられている。たとえば武器Aは、属性情報として、「大」、「負荷レベル5」を設定されており、武器Gは、属性情報として、「小」、「負荷レベル−10」を設定されている。
【0063】
ゲームアプリケーションは、ユーザが装備品(武器)を選択すると、
図8(b)に示す対応表をもとに、ユーザにより選択された装備品に対応する負荷レベルを、負荷情報として処理部200に供給する。処理部200において負荷情報取得部206が負荷情報を取得し、駆動制御部208は、負荷情報取得部206が取得した負荷情報にしたがって、アクチュエータ94を制御する。
【0064】
ここで負荷情報取得部206は、既に、選択されたキャラクタに対応する負荷情報を取得しており、それに加えて、さらに装備品に対応する負荷情報を取得することになる。駆動制御部208は、負荷情報取得部206から、装備品に対応する負荷情報の供給を受けると、既に受け取っているキャラクタに対応する負荷情報と、装備品に対応する負荷情報とにしたがって、アクチュエータ94を制御する。このとき保持部210は、選択されたキャラクタに対応する負荷情報と、選択された装備品に対応する負荷情報とを保持する。
【0065】
たとえば、キャラクタ220aが選択されている場合、保持部210は、キャラクタに対応する負荷情報として、負荷レベル15を示す負荷情報を保持している。ここで武器Aが選択されると、駆動制御部208は、武器Aに対応する負荷レベル5を示す負荷情報を提供される。駆動制御部208は、この2つの負荷情報にもとづいてアクチュエータ94を制御するが、このとき単純に負荷レベル同士を加算して、新たな負荷レベルを導出してもよい。この例では、負荷レベル15と負荷レベル5を加算して、負荷レベル20が導出される。これにより駆動制御部208は、保持部210に保持された負荷レベルとトルク値との対応表を参照して、負荷レベル20に応じた抵抗トルクをアクチュエータ94から生成させるようにする。なお、複数の負荷レベルを合算することで、その計算値が、負荷レベルの許容範囲(−19から+20の範囲)を超えるような場合には、その許容範囲の最大値を負荷レベルとして導出してもよい。
【0066】
たとえば、キャラクタ220fが選択されている場合、保持部210は、キャラクタに対応する負荷情報として、負荷レベル5を示す負荷情報を保持している。ここで武器Gが選択されると、駆動制御部208は、武器Gに対応する負荷レベル−10を示す負荷情報を提供される。駆動制御部208は、この2つの負荷情報にもとづいて新たな負荷レベルを導出するが、この例では、負荷レベル5と負荷レベル−10を加算して、負荷レベル−5が導出される。これにより駆動制御部208は、保持部210に保持された負荷レベルとトルク値との対応表を参照して、負荷レベル−5に応じたアシストトルクをアクチュエータ94から生成させるようにする。このとき、ユーザによるアナログスティック24の傾動操作は、アクチュエータ94によりアシストされるため、アナログスティック24の操作感は、非常に軽くなる。
【0067】
このように、負荷情報取得部206が複数のオブジェクト、ここではキャラクタと装備品に対応する負荷情報を取得すると、保持部210が、それぞれのオブジェクトに対応する負荷情報を保持し、駆動制御部208が、その複数のオブジェクトの組合せに応じた負荷レベルを算出することで、アナログスティック24に印加するトルクを適宜調整できる。たとえば重量級のキャラクタが、小さい武器を使用する場合には、武器を使用しない場合と比べて、操作が若干軽くなり、一方で、大きい武器を使用する場合には、武器を使用しない場合と比べて、操作がさらに重くなる。このように駆動制御部208が、きめ細かにアナログスティック24に印加する負荷(荷重)を調整することで、ユーザは、選択した複数のオブジェクトに適合した操作感で、アナログスティック24を操作できる。
【0068】
なお、ユーザが複数のオブジェクトを選択した場合、ゲームアプリケーションが、各オブジェクトに対応する負荷レベルを加算して、負荷レベルを合計し、その合計した負荷レベルを処理部200に供給してもよい。このようにゲームアプリケーションが、複数のオブジェクトの組合せに対応する負荷レベルの算出機能を有している場合には、駆動制御部208は、算出された負荷レベルをもとに発生トルクを制御すればよい。ゲームアプリケーションは、複数のオブジェクトの組合せと、負荷レベルの対応表を有し、その対応表を参照して、複数のオブジェクトに応じた負荷レベルを処理部200に供給してもよい。
【0069】
保持部210は、それぞれのオブジェクトに対応する負荷レベルを保持しているが、たとえばユーザが装備品を変更し、負荷情報取得部206が、変更された装備品に対応する負荷レベルを取得すると、保持部210は、保持している装備品に対応する負荷レベルを、新たに取得された負荷レベルで上書き更新する。このように保持部210は、同種のオブジェクトの負荷レベルについては、負荷情報取得部206が新たな負荷レベルを取得すると、その都度上書き更新する。これにより駆動制御部208は、更新された現在のオブジェクトの状態に適合した負荷をアナログスティック24に付与することができる。
【0070】
なお、これは装備品が変更された場合であり、キャラクタが複数の装備品を持つことができるのであれば、保持部210は、キャラクタが持っている複数の装備品に対応する負荷レベルを保持する。つまり保持部210は、キャラクタが現在持っている装備品に対応する負荷レベルを全て保持し、駆動制御部208が、その全ての装備品に対応する負荷レベルを用いて、アクチュエータ94の発生トルクを導出する。なお、この場合、駆動制御部208は、全ての装備品に対応する負荷レベルを利用するのではなく、最も大きい負荷レベルのみを用いて、アクチュエータ94の発生トルクを導出してもよい。
【0071】
図9は、キャラクタと負荷レベルの対応表の別の例を示す。この対応表は、ゲームプログラムに組み込まれており、キャラクタ名と、その属性情報、具体的にはキャラクタのカテゴリ、キャラクタに設定された負荷レベルが対応付けられている。ここで設定されている負荷レベルは、中量級の負荷レベルを基準とした差分値である。この例では前提として、中量級のキャラクタの基準負荷レベルが10と設定されており、保持部210は、基準負荷レベルを保持し、駆動制御部208は、この基準負荷レベルにしたがったアクチュエータ94の制御を実行している。つまり、負荷情報取得部206が負荷情報を取得しない状態では、駆動制御部208は、アクチュエータ94が負荷レベル10に対応する抵抗トルクを生成するように、ドライバIC96を制御している。
【0072】
ゲームアプリケーションは、ユーザがキャラクタを選択すると、
図9に示す対応表をもとに、ユーザにより選択されたキャラクタに対応する差分負荷レベルを、負荷情報として処理部200に供給する。処理部200において負荷情報取得部206が負荷情報を取得し、駆動制御部208は、負荷情報取得部206が取得した負荷情報にしたがって、アクチュエータ94を制御する。
【0073】
たとえばキャラクタ220aが選択された場合、駆動制御部208は、基準負荷レベル10と、キャラクタ220aに対応する負荷レベル5を加算して、合算した負荷レベル15を導出し、負荷レベル15に対応する抵抗トルクをアクチュエータ94から生成させる。またキャラクタ220fが選択された場合、駆動制御部208は、基準負荷レベル10と、キャラクタ220fに対応する負荷レベル−5を加算して、合算した負荷レベル5を導出し、負荷レベル5に対応する抵抗トルクをアクチュエータ94から生成させる。このとき、抵抗トルクは、基準負荷レベルに対応する抵抗トルクよりも小さくなり、したがってユーザは、軽量級のキャラクタを選択したことで、操作が軽くなったことを認識できるようになる。
【0074】
以上は、1つ以上の選択したオブジェクトに応じて、アクチュエータ94が生成するトルクが制御される例について説明したが、駆動制御部208は、ゲームの状況に応じて、アクチュエータ94が生成するトルクを調整してもよい。ゲームアプリケーションは、ゲームの状況に対応付けられた負荷レベルを処理部200に供給する。たとえばゲームアプリケーションは、プレイヤキャラクタが悪路を進んでいるときには、抵抗トルクが大きくなる(又は、アシストトルクが小さくなる)ような負荷レベルを処理部200に供給し、またプレイヤキャラクタが氷上を滑っているときには、抵抗トルクが小さくなる(又は、アシストトルクが大きくなる)ような負荷レベルを処理部200に供給する。駆動制御部208は、現在の負荷レベルに、新たに取得した負荷レベルを加算し、加算した負荷レベルをもとに、アクチュエータ94の制御を行う。
【0075】
このように本実施例のゲームシステム1においては、ユーザが選択した1つ以上のオブジェクトに設定された負荷レベルや、ゲームの状況に設定された負荷レベルを用いて、アナログスティック24に付与する負荷の大きさが定められる。このように負荷を、ユーザによる選択時および/または所定のゲーム状況時に適切に調整することで、ゲームの臨場感を大きく高めることが可能となる。なお以上は、負荷の印加方向が、アナログスティック24の操作方向と逆向き、または同じ向きとして説明しているが、駆動制御部208は、アナログスティック24の操作方向と異なる向きに外力を生成することも可能であり、それについては後述する。
【0076】
なおゲームアプリケーションが、負荷情報として、負荷レベルを処理部200に提供することを説明したが、負荷レベル以外の属性情報、たとえばキャラクタの重さに関する情報や、装備品の大きさに関する情報を、負荷情報として処理部200に提供してもよい。このとき保持部210は、提供された属性情報と、負荷レベル(ないしは生成トルクまたはトルクに対応する電圧値)とを対応付けた対応表を保持しており、この対応表にしたがってアクチュエータ94を制御してもよい。このようにゲームアプリケーションが処理部200に提供する負荷情報は、アクチュエータ94が生成する外力の大きさ(レベル)を直接特定する「負荷レベル」であってもよいが、生成する外力の大きさを間接的に特定する情報であってもよく、いずれにしても、アクチュエータ94に付与する電圧値を導き出すための情報であればよい。そのため処理部200において、オブジェクトIDと負荷レベルとを対応付けた対応表が保持されているのであれば、ゲームアプリケーションは、負荷情報として、選択されたオブジェクトのオブジェクトIDを処理部200に提供してもよい。なお、保持部210に保持される対応表は、ゲーム起動時に、ゲームアプリケーションから処理部200に提供されてもよい。
【0077】
負荷レベルを設定するゲーム状況としては、様々なものが考えられ、ゲームシーンに応じて適宜ゲームメーカにより採用されてよい。たとえば呪文の効力により、キャラクタにかかる重力が軽くなるゲームにおいては、呪文が切れかけると、徐々に抵抗トルクが大きくなるようにアクチュエータ94が制御されてもよい。また、キャラクタがスカイダイビングをするゲームシーンにおいては、パラシュートを開くまでは抵抗トルクが小さく(またはアシストトルクを印加し)、パラシュートを開くと、抵抗トルクが大きくなるようにアクチュエータ94が制御されてもよい。このように、ゲームシーンやキャラクタなどのゲーム状況に応じて、適切な負荷情報をゲームプログラムが処理部200に出力するように構成されることで、臨場感を高めたゲームが実現される。
【0078】
以上の例において、負荷情報は、負荷レベルを直接的または間接的に特定するための情報であり、すなわちアクチュエータ94で生成する外力の大きさを定めるための情報である。アナログスティック24に印加する外力の作用方向は、アナログスティック24の操作方向に沿って定められ、アナログスティック24が中立位置から所定方向に傾動されると、駆動制御部208は、アナログスティック24の傾動方向に沿った方向に、アクチュエータ94により外力を生成させ、またアナログスティック24が傾動した状態から回転させられると、駆動制御部208は、アナログスティック24の回転方向に沿った方向に、アクチュエータ94により外力を生成させる。
【0079】
以下、アナログスティック24の傾動方向に沿った方向に、アクチュエータ94が外力を生成したときの負荷について説明する。本実施例の多方向操作入力装置100においては、復帰ばね179が設けられており(
図4参照)、復帰ばね179は、操作軸157すなわちアナログスティック24が傾動されると、中立状態に復帰する方向に復元力を生成する。
【0080】
図10(a)は、アナログスティック24の傾動量と、復帰ばね179に生じる力の関係を模式的に示す。なお、ここではアナログスティック24の傾動量と、復帰ばね179の伸び量とが比例関係にあるものとして、ばね復元力230を示している。
駆動制御部208は、復帰ばね179により生成される復元力を加味して、アナログスティック24に付与する負荷を生成する。以下の例では駆動制御部208が、アプリケーションから提供される負荷情報に対応する反発力がアナログスティック24からユーザの指先に伝わるように、ドライバIC96からアクチュエータ94に供給する制御信号を調整する。
【0081】
図10(b)は、アナログスティック24の操作に対する反発力F1を生成する際に、アクチュエータ94により生成されるアクチュエータ生成力232を示す。駆動制御部208は、復帰ばね179によるばね復元力230と、アクチュエータ94によるアクチュエータ生成力232との合力が、反発力F1である抵抗負荷234となるように、傾動量に応じてドライバIC96を制御する。駆動制御部208は、傾動量の増加に応じて増加するばね復元力230に対して、アクチュエータ生成力232を傾動量の増加に応じて減少させて、いずれの傾動量においても、一定の反発力F1がアナログスティック24に供給されるようにドライバIC96の制御信号を調整する。
【0082】
図10(c)は、アナログスティック24の操作に対する反発力F2を生成する際に、アクチュエータ94により生成されるアクチュエータ生成力236を示す。これは
図10(b)と比較すると、反発力F2が、復帰ばね179が最大傾動時におけるばね復元力230よりも小さい場合であり、駆動制御部208は、復帰ばね179によるばね復元力230と、アクチュエータ94によるアクチュエータ生成力236との合力が、反発力F2である抵抗負荷238となるように、傾動量に応じてドライバIC96を制御する。駆動制御部208は、傾動量の増加に応じて増加するばね復元力230に対して、アクチュエータ生成力236を傾動量の増加に応じて減少させて、いずれの傾動量においても、一定の反発力F2がアナログスティック24に供給されるようにドライバIC96の制御信号を調整する。
図10(c)に示すように、アナログスティック24の傾動量がLを超えると、駆動制御部208は、アクチュエータ94に供給する制御信号を正負反転させる。このようにアクチュエータ94は、復帰ばね179の復元力とあいまって、アナログスティック24の操作に対して反発力F2を付与する。
【0083】
次に、駆動制御部208が、アプリケーションから提供される負荷情報に対応するアシスト力がアナログスティック24に付与されるように、ドライバIC96からアクチュエータ94に供給する制御信号を調整する例を示す。
【0084】
図11は、アナログスティック24の操作に対するアシスト力F3を生成する際に、アクチュエータ94により生成されるアクチュエータ生成力240を示す。駆動制御部208は、復帰ばね179によるばね復元力230と、アクチュエータ94によるアクチュエータ生成力240との合力が、アシスト力F3であるアシスト負荷242となるように、アクチュエータ94を制御する。
【0085】
このようにアナログスティック24が復帰ばね179により支持されており、アナログスティック24の傾動量に応じて、復帰ばね179から傾動方向に対する反発力が自動生成される場合には、駆動制御部208が、復帰ばね179により生成される反発力も加味して、アクチュエータ94による生成負荷を制御することが好ましい。そのため入力受付部204は、アナログスティック24の操作方向および操作量を受け付けると、駆動制御部208に対して、その操作方向および操作量を通知し、駆動制御部208が、操作量に応じたばね復元力を加味して、ドライバIC96からアクチュエータ94に供給する制御信号を調整する。これにより駆動制御部208は、アナログスティック24の傾動量に関わらず、一定の反発力ないしはアシスト力をアナログスティック24に対して付与することができ、ユーザは、ゲームにおいて設定したキャラクタや装備類の重量感、またゲーム状況に応じた重量感を、アナログスティック24を操作する指先で感じることが可能となる。
【0086】
以上は、アナログスティック24が復帰ばね179により支持されている多方向操作入力装置100におけるアクチュエータ94の制御手法であるが、以下に示すように、アナログスティック24を復帰ばね179により支持せず、アナログスティック24の操作軸157の傾動を、4つのアクチュエータにより制御するようにしてもよい。
【0087】
図12は、ゲームシステム1の構成の別の例を示す。
図6に示すゲームシステム1と比較すると、
図12に示すゲームシステム1は、アナログスティック24に負荷を付与するために、4つのアクチュエータ94c〜94fを備え、アナログスティック24を中立位置に復帰させるための復帰ばね179を備えていない点で異なっている。
【0088】
第1連動部材151には、第1連動部材151の変位量(回転量)を検出するための第1回転検出部153aが連結されるとともに、第1連動部材151の動きに対して反発力またはアシスト力を付与する第1アクチュエータ94cおよび第2アクチュエータ94dが連結される。第1アクチュエータ94cおよび第2アクチュエータ94dは、たとえば第1連動部材151の両端部のそれぞれにギアを介して連結されるモータであってよく、第1連動部材151に回転力を印加する機能をもつ。
【0089】
第2連動部材162には、第2連動部材162の変位量(回転量)を検出するための第2回転検出部153bが連結されるとともに、第2連動部材162の動きに対して反発力またはアシスト力を付与する第3アクチュエータ94eおよび第4アクチュエータ94fが連結される。第3アクチュエータ94eおよび第4アクチュエータ94fは、たとえば第2連動部材162の両端部のそれぞれにギアを介して連結されるモータであってよく、第2連動部材162に回転力を印加する機能をもつ。
【0090】
なお
図4に示す多方向操作入力装置100は、中立位置への復帰のために操作軸157が復帰ばね179で支持された復帰部材173上に支持された構成を有しているが、この例では、中立位置への復帰するための構成は、すべてアクチュエータ94c〜94fによって実現される。そのため4アクチュエータ構造を有する多方向操作入力装置においては、
図4および
図5に示す操作体158および、その下方の復帰部材173などの構成が省略され、構造を単純化することができる。
【0091】
図13は、4アクチュエータ構造250の詳細を示す。第1連動部材151の両端部にはギア193c、193dが設けられ、第2連動部材162の両端部にはギア193e、193fが設けられる。第1アクチュエータ94cはモータ191cおよびギア192cを有し、ギア192cはギア193cにかみ合う。第2アクチュエータ94dはモータ191dおよびギア192dを有し、ギア192dはギア193dにかみ合う。第3アクチュエータ94eはモータ191eおよびギア192eを有し、ギア192eはギア193eにかみ合う。第4アクチュエータ94fはモータ191fおよびギア192fを有し、ギア192fはギア193fにかみ合う。
【0092】
操作軸157の姿勢を固定するためには、モータ191cおよびモータ191dは、互いに打ち消し合うトルクを生成し、またモータ191eおよびモータ191fも、互いに打ち消し合うトルクを生成すればよい。そこで駆動制御部208は、操作軸157にユーザからの操作力が加えられていない状態では、操作軸157が中立位置にくるように、モータ191c〜191fの制御信号を調整する。
図4に示した多方向操作入力装置100のような中立位置復帰制御を行うためには、操作軸157が中立位置から傾動されると、中立位置に向かう方向に、復帰ばね179と同じような反発力を生成し、ユーザ操作から解放されれば、復帰ばね179の復元力と同様のトルクをモータ191c〜モータ191fに生成させる。このように4アクチュエータ構造250においては、駆動制御部208が、操作軸157の中立位置からのずれ量および傾動方向をもとに、モータ191c〜モータ191fにより中立位置に向かう方向に反発力を生成させることで、多方向操作入力装置100と同様の操作感をユーザに提供できる。
【0093】
なおアナログスティック24の頂部(回転操作子116)には、タッチセンサが設けられ、ユーザがアナログスティック24を操作しているか否かが検出されてもよい。駆動制御部208は、タッチセンサによりユーザがアナログスティック24をタッチしていないことを検出すると、中立位置復帰制御を実行するようにしてもよい。
【0094】
4アクチュエータ構造250は、復帰ばね179を有しない構造であるため、駆動制御部208は、ばね力を加味する必要なく、ゲームアプリケーションから取得される負荷情報にしたがったアクチュエータ94c〜94fの制御を容易に行うことができる。
図10(b)(c)に示す反発力F1、F2や、
図11に示すアシスト力F3は、傾動量に関わらず一定の値であるため、駆動制御部208は、第1連動部材151の両端部に取り付けられたモータ191c、191dのトルク差、第2連動部材162の両端部に取り付けられたモータ191e、191fのトルク差を一定となるように調整することで、アナログスティック24(操作軸157)の操作に対して、一定の反発力ないしアシスト力を容易に付与することが可能となる。
【0095】
なおアナログスティック24には、左スティック24aと右スティック24bとが存在するが、それぞれの役割は異なるように設定されていることが多く、通常、左スティック24aは、キャラクタの操作に使用され、一方、右スティック24bは、ゲームにおける各種設定の際に使用される。そのため駆動制御部208は、左スティック24aと右スティック24bとで、アクチュエータ94から供給するトルクを異ならせてもよい。たとえば左スティック24aに対しては、アクチュエータ94に、負荷レベルに応じたトルクを生成させ、右スティック24bに対してはトルクを生成させない、ないしは負荷レベルに依存しないトルクを生成させるようにしてもよい。
【0096】
アナログスティック24にアクチュエータ94を連結したことで、これまでにないアナログスティック24の操作感をゲームに取り入れることが可能となる。たとえば迷路ゲームにおいて、キャラクタの進行方向をアナログスティック24の傾き方向により決める場合に、正解ルート以外の道にはキャラクタが進みにくいように、アクチュエータ94が抵抗トルクを発生させる。これによりユーザがアナログスティック24を操作すると、重く傾けにくい方向は行き止まりになることを理解でき、正解ルートを早期に見つけやすくできる。たとえば迷路ゲームを、ビギナーモードで行う場合に、アナログスティック24に抵抗トルクを付与することで、初心者でも迷路ゲームを簡単に楽しめるようになる。また飛行機や電車などの乗り物の操縦シミュレータゲームにおいても、誤った方向には大きな抵抗トルクを印加することで、ユーザのアナログスティック24の操作を正しい方向にガイドすることも可能となる。
【0097】
以上、駆動制御部208が、ゲームアプリケーションから提供される負荷レベルに基づいて、操作部70の操作方向に沿ってアクチュエータ94の発生トルクを制御する例を説明した。以下では、ゲームの状況に応じて、アクチュエータ94の発生トルクの方向を制御する例を説明する。
【0098】
図14(a)は、アナログスティック24の操作方向と、アクチュエータ94が生成する外力Fの方向を示す。これは、上記したように、アクチュエータ94が、アナログスティック24の操作方向に沿って外力Fをアナログスティック24に付与した場合の関係を示している。実施例で示したように、外力Fの大きさは、ユーザが選択したキャラクタや装備類などの属性情報により定められ、アナログスティック24の操作に対する重量感を変化させる。
【0099】
図14(b)は、アナログスティック24の操作方向と、アクチュエータ94が生成する外力Tの方向を示す。ここで外力Fの大きさは、ユーザが選択したキャラクタや装備類に対応する負荷情報により定められ、外力Dの大きさおよび方向は、ゲーム状況に応じて設定される負荷情報により定められる。たとえばユーザがアナログスティック24を操作してゲーム中のプレイヤキャラクタを移動させている場合に、プレイヤキャラクタの進行方向に対して左から右に横風が吹いている場合、負荷情報取得部206は、ゲームアプリケーションから、ゲームの状況に対応する負荷情報を取得する。この負荷情報は、横風の強さに対応する負荷レベルを含み、さらに、プレイヤキャラクタの進行方向に対する角度情報も含む。ゲーム中において、風が一定方向に吹いているとすると、プレイヤキャラクタの進行方向に対する角度は、プレイヤキャラクタの進行方向に応じて変化する。そのためゲームアプリケーションは、プレイヤキャラクタの進行方向に変化があるたびに、またゲーム中での風の強さに変化があるたびに、負荷情報を生成して、負荷情報取得部206に提供する。これにより負荷情報取得部206は、時々刻々と変化するゲーム状況、つまりアナログスティック24に与える負荷に関する情報を適時取得することができる。
【0100】
駆動制御部208は、外力Fの負荷レベルおよび外力Dの負荷レベルをもとに、外力Fと外力Dを合成した合力Tの方向および負荷レベルを求める。外力Tの方向が、アナログスティック24の操作方向に沿っていなければ、合力Tの方向は、操作方向に対して角度をもつことになる。駆動制御部208は、アクチュエータ94を制御して、アナログスティック24に合力Tを付与させる。
【0101】
既述したように、外力Dは、ゲーム状況により、アナログスティック24の操作とは無関係にアナログスティック24に付与される。そのためユーザがアナログスティック24を操作しなければ、アナログスティック24は外力Dにより右方向に傾動され、ゲーム中のプレイヤキャラクタは、右に移動することになる。これによりプレイヤキャラクタは、横風に吹かれて、右方向に動かされる挙動を示すことになる。
【0102】
なお復帰ばね179を有する多方向操作入力装置100においては、アナログスティック24が傾動されると、復帰ばね179が復元力を生成し、復元力が外力Dと釣り合った位置でアナログスティック24の傾動が停止する。一方で、復帰ばね179を有しない4アクチュエータ構造250を有する操作入力装置においては自動で復元力が生成されないため、駆動制御部208は、外力Dの大きさに基づいて、アナログスティック24の傾動量を制御することが好ましい。具体的に駆動制御部208は、アナログスティック24に設けたタッチセンサによりアナログスティック24が操作されていないことが検出されると、中立位置復帰制御を実行して、アナログスティック24の復帰力が外力Dと釣り合った位置でアナログスティック24の傾動が停止するようにされることが好ましい。
【0103】
以下では、駆動制御部208が、設定された負荷レベルに基づいて、アクチュエータ94の発生トルクを制御する例について説明する。
図15は、表示装置20に表示される負荷設定画面を示す。この負荷設定画面は、たとえばゲーム開始前に表示される。なお負荷設定画面で選択した項目は、全てのゲームに対して有効とされてもよく、また、そのゲーム限りにおいて有効とされてもよい。
【0104】
ユーザは方向キー23などを操作して、アナログスティック24にトルクを印加するためのパラメータを選択する。この例では、「キャラクタの重量」、「装備品の大きさ」、「ゲームの状況」のパラメータが用意され、パラメータをONに設定すると、そのパラメータに関する負荷情報にしたがってアクチュエータ94が駆動されるようになる。
【0105】
「基準負荷レベル」の項目は、アナログスティック24に印加するバイアストルクを設定するために用意される。バイアストルクは、パラメータに関する負荷情報とは無関係にアナログスティック24に印加されるトルクであり、パラメータに関する負荷情報がゲームアプリケーションから供給されると、アナログスティック24に印加されるトルクは、バイアストルクから加算または減算することで定められる。
図15に示す例では、基準負荷レベルが10に設定されているが、これは、上記パラメータに関する負荷情報がゲームアプリケーションから供給されない状態では、アクチュエータ94が、アナログスティック24に対して、負荷レベル10に対応するバイアストルクを常時印加する。基準負荷レベルが0に設定されると、バイアストルクは印加されない。
【0106】
ユーザが各パラメータのONまたはOFF、および基準負荷レベル値を設定すると、保持部210が、この設定情報を保持する。駆動制御部208は、この設定情報を参照して、アクチュエータ94を制御する。たとえば「装備品の大きさ」に関して、負荷OFFが設定されていれば、負荷情報取得部206が、ゲームアプリケーションから、選択された装備品に対応する負荷情報を取得しても、駆動制御部208は、その負荷情報によってアクチュエータ94の動作状態を変更しない。一方、「ゲームの状況」に関して、負荷ONが設定されていれば、負荷情報取得部206が、ゲームアプリケーションから、ゲームの状況に対応する負荷情報を取得すると、駆動制御部208は、その負荷情報によってアクチュエータ94の動作状態を変更する。このようにユーザが、アクチュエータ94によるトルク生成の要因となるパラメータを設定することで、アクチュエータ94がユーザの好みに応じた負荷をアナログスティック24に付与することが可能となる。
【0107】
このように保持部210は、ユーザにより予め登録された基準負荷レベルを、基準負荷情報として保持し、また負荷調整に使用するパラメータ情報も保持する。負荷情報取得部206は、保持部210から基準負荷情報を取得し、駆動制御部208は、取得した基準負荷情報にしたがってアクチュエータ94を制御する。
【0108】
通常、抵抗となるバイアストルクが大きければ、アナログスティック24の操作感は重くなるため、キャラクタに俊敏な動きを行わせることが難しくなる。そのためユーザ同士で対戦する場合には、上級ユーザのバイアストルクを大きく設定し、一方で、初級ユーザのバイアストルクを0に設定することで、ハンデ戦を実現することも可能となる。また、上記の例は、ユーザが、自分用にパラメータ情報および基準負荷情報を設定することを示したが、たとえばゲーム大会のレギュレーションとして、各種の設定情報が定められるようにしてもよい。これにより全ユーザの操作条件を統一することができるため、公平な大会を開催することも可能となる。
【0109】
なおユーザは、複数の基準負荷レベルを、保持部210に保持させてもよい。たとえば表示装置20に、複数の基準負荷レベルを設定するための画面が表示され、ユーザが、複数の基準負荷レベルを保持部210に登録できるようにしてもよい。ゲーム中、ユーザは、所定のボタン、たとえばRボタン26bを操作して、バイアストルクを変更できる。たとえば、ゲームにおいて、銃の照準をアナログスティック24で合わせる場合には、抵抗トルクを大きくして、アナログスティック24をゆっくり操作できるようにし、一方、キャラクタをアナログスティック24で移動させる場合には、抵抗トルクを小さくして、アナログスティック24を軽く操作できることが好ましい。
【0110】
入力受付部204は、ユーザからのバイアストルクの切替入力、すなわち所定のボタン操作を受け付ける。入力受付部204が切替入力を受け付けると、負荷情報取得部206が、現在使用している負荷情報とは異なる別の負荷情報を保持部210から取得し、駆動制御部208が、別の負荷情報にしたがってアクチュエータ94を制御する。このように簡単な操作でバイアストルクを切り替え可能とすることで、バイアストルクの切り替え操作そのものを、ゲーム性に組み入れることも可能となり、新たなゲームの楽しみ方をユーザに提供することが可能となる。
【0111】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では、操作部と処理部とが一体型のゲームシステムについて説明したが、操作部と処理部とが別体となっていても構わない。また実施例では、操作部70の操作方向に沿った負荷を生成することを説明したが、アクチュエータ94は、操作方向とは異なる方向に負荷を生成してもよい。
【0112】
実施例においては、駆動制御部208が、アクチュエータ94を制御して、アナログスティック24の操作に対して負荷を付与させることを説明した。駆動制御部208は、ゲームアプリケーションから、アナログスティック24の操作が、選択した少なくとも1つのオブジェクト(たとえばプレイヤキャラクタ)を動かすためのものであるか否かを示す情報を受け取ってもよい。この情報が、アナログスティック24の操作がプレイヤキャラクタを動かすものであることを示す場合に、駆動制御部208は、アクチュエータ94によりアナログスティック24の操作に対して負荷を付与させるようにしてもよい。つまり駆動制御部208は、ユーザがアナログスティック24を操作してプレイヤキャラクタを動かす際に、アクチュエータ94によりアナログスティック24の操作に対して負荷を付与させるようにしてもよい。これにより駆動制御部208は、ゲーム中でのゲームキャラクタの操作時において、アナログスティック24の操作感を調整することが可能となる。