曲がった空間上の多対戦型シューティングゲーム

日本バーチャルリアリティ学会第 12 回大会論文集 (2007 年 9 月)
曲がった空間上の多対戦型シューティングゲーム
Multi-versus Shoot-’em-up in Curved Space
渡辺啓蔵
Keizo WATANABE
株式会社 数理設計研究所
(〒 371-0816 群馬県前橋市上佐鳥町 54-2, wakei dol.hi-ho.ne.jp)
Abstract : A new 2D shoot-’em-up computer game in which multiple players against each other
is invented. All objects are located in a non-Euclidean plane with a negative Gaussian curvature,
and mapped onto Poincare disks where each player’s character is centered. On each of the disks,
shown for its corresponding player, objects near the player’s character are drawn larger and distant
ones smaller, so that the player get a sense of speed while being represented a broad gaming area.
Key Words: 2D top-view shoot-’em-up, non-Euclidean space, hyperbolic plane, Poincare disk
1.
はじめに
個別の画面を提示すれば,これらの向きを全て一致させる
シューティングゲームは最も古くから存在するコンピュー
ことができる.
“ バリーファイア ”[5] では携帯型ゲーム機
タゲームの主要なジャンルであり,1980 年代には家庭用コ
の通信対戦機能を生かしこれが実現されている.2 人対戦の
ンピュータゲームのソフト本数の割合にして 18.7 %を占め
場合はゲームの展開が単調になりがちだが,この手法を用
ていた [1].このジャンルのゲームが広く普及した理由とし
いて 3 人以上の多対戦を行うことも可能である.
て,直観的な操作性を備えていることが挙げられる.特に
ただし,対戦型の 2D シューティングゲームは次のよう
上方視点の 2D シューティングゲームにおいては,プレイ
な問題を抱えている.ゲームが進行している間は対戦相手
ヤーが手にする方向入力装置の向き,画面上の自機の向き,
の機が画面からはみ出ないように表示しなければならない
自機から自弾が発射される向き,の 3 つの向きが全て一致
ためスクロールが制限される.結果,機の移動範囲が狭く
するため初めてコンピュータゲームで遊ぶ者でも操作に迷
なり速く移動させることが不可能になる.また,画面が機
わない.しかし 1990 年代以降このジャンルのソフト本数の
や弾で埋め尽くされることを避けるために,各オブジェク
割合は 10 %未満と低迷している [1].プレイヤーを飽きさせ
トを画面の大きさに対して小さくせざるを得ない.これら
ないために,新規に開発されるゲームの難易度を熟練者に
はシューティングゲームが本来持つスピード感を損なう原
合わせ高くした結果,初心者が新たに参入しづらい状況が
因となる.この問題は対戦人数が増えるにつれ顕在化する.
生まれた [2] ことが原因ではないかと考えられる.
2.
プレイヤーがコンピュータを敵に見立てて攻略するので
2D 双曲シューティングゲーム
はなく,同等の技量を持つプレイヤー同士が対戦すれば難
前章で述べた問題を解決するために,本研究では新しい
易度による問題は生じないため,2D シューティングゲーム
多対戦型シューティングゲームを提案する.ゲームは非ユー
を対戦型にする試みはたびたび行われている.それらの対
クリッド空間である双曲平面上で行われる.その様子は各
戦型ゲームは前述の直観的な操作性を犠牲にすることがあ
プレイヤーが操作する機を中心としたポアンカレ円板 [6, 7]
る.世界初のコンピュータゲームと言われる “Spacewar!”
上に写され,各円板の一部分が画面としてそれぞれのプレ
[3] は対戦型の 2D シューティングゲームであるが,方向入
イヤーに提示される.ポアンカレ円板上に写された図形は
力装置と画面上の自機の向きが一致していない.
“ チェンジ
元の双曲平面上の図形と比べたときに以下の特徴を持つ.
エアブレード ”[4] では方向入力装置と自機の向きは一致し
特徴 1 中心から離れるにつれ縮尺が小さくなる
ているが,撃ち合いを可能にするために,対戦する 2 機の
特徴 2 全ての点において角が正しく表される
片方からは弾が機の向きとは逆方向に発射される.機同士が
特徴 3 中心からの方位が正しく表される
向かい合い撃ち合う様子を 1 つの画面に提示する以上,方
特徴 4 双曲平面上の円が円として表される
向入力装置の向き,自機の向き,自弾が発射される向きの 3
これらはゲームの中で次のような利点を生む.特徴 1 によ
つを一致させることは通常不可能である.各プレイヤーに
りゲームが行われる空間のうち広い範囲を画面に提示する
590
Server
Object data
(Location, Direction, Radius)
Object
translation
Collision
detection
Global coordinates
(a)
(b)
Object data
(Location, Direction)
図 1: 画面に表示される範囲の比較 (a) 双曲平面上のゲー
ム,(b) ユークリッド平面上のゲーム
Local
transformation
ことができ,機の高速移動が可能になる.その様子を図 1
Client 1
Object data
(Vertices)
Model
transformation
に示す.(a) は提案する双曲平面上のゲーム,(b) は従来の,
Local coordinates
ユークリッド平面上のゲームである.図 1 (a) では自機およ
び近くのオブジェクトは大きく表示されるためスピード感
Client 2
が損なわれない.自機から離れた位置にある重要でないオ
Object data
(Vertices)
ブジェクトは小さく表示される.特徴 2 により各オブジェ
クトはその形状を大きく歪めることなく画面に表示される.
特徴 3 によりプレイヤーは敵機や敵弾が自機に向かってい
Local
transformation
るか否かを容易に判別できる.ゲームが行われる範囲を双
Model
transformation
曲平面上の円の上に限り,各プレイヤーに提示する画面を
Local coordinates
ユークリッド平面上の円形とすると,特徴 4 により全ての
プレイヤーに双曲平面上の同一の範囲を提示することが可
図 2: システム構成とデータの流れ
能となり,対戦するプレイヤー間に有利不利を生じない.
3.
システム構成
提案するゲームは図 2 に示すサーバクライアント型のシ
ステムの下で行うのが望ましい.オブジェクトに関するデー
タのうち,移動の際に用いる位置と向き,衝突判定の際に
用いる半径はサーバ側が保持し,オブジェクトの形状を定
める頂点データはクライアント側が持つ.サーバ側ではグ
ローバル座標を設定し,オブジェクトの位置と向きをフレー
ムごとに更新する.同時に衝突判定を行い不要になったオ
ブジェクトを削除する.次にサーバから各クライアントへ
全オブジェクトの位置と向きを無線または有線で送信する.
図 3: “Hybo!” のスクリーンショット
クライアント側では自機を中心とするローカル座標を設定
し,送信されたデータと頂点データを組み合わせて画面上
表 1: “Hybo!” の動作環境
に各オブジェクトの形状を描画する.位置と向きは送信前
後でグローバル座標からローカル座標に変換する必要があ
るが,その作業はサーバ,クライアントのどちら側で行って
もよい.サーバが設置できない場合には 1 台のクライアン
トがその機能を兼ねる.
計算機内部で実際に行う演算については後に 5. で詳しく
述べる.
4.
ソフトウェアへの実装
CPU
Intel Pentium III (600 MHz)
Memory
192 MB
Video card
Silicon Motion Lynx3DM (4 MB)
Color depth
8-bit (256 colors)
Resolution
1024 x 768 pixels
OS
Microsoft Windows 2000
提案するゲームの一部の機能を Windows 用ソフトウェ
での対戦を可能にしている.画面の更新頻度は約 29 fps で
ア “Hybo!” に実装した.そのスクリーンショットを図 3 に
あり,表 1 の環境で問題なく動作することを確認した.
示す.通信対戦機能は省き,替わりに画面を分割し 3 人ま
591
表 2: オブジェクト Φ の変数
dvn
θΦ
dΦ
δvn
Data format
Input
Internal
Location
(dΦ , δΦ )
(xΦ , yΦ , zΦ )
Direction
θΦ
(aΦ , bΦ , cΦ )
Radius
rΦ
(pΦ , qΦ )
(dv1 , δv1 )
..
.
(xv1 , yv1 , zv1 )
..
.
(dvn , δvn )
..
.
(xvn , yvn , zvn )
..
.
(dvN , δvN )
(xvN , yvN , zvN )
O
Φ
δΦ
Φ
O
(a)
(b)
図 4: オブジェクト Φ の入力変数
5.
Vertices
座標演算
本章では計算機内部で行う座標演算の方法を具体的に述
べる.m 次元双曲空間上のオブジェクトの位置は最低 m 個
(
の実数変数で表すことができるが,m + 1 個の実数変数を
用いることでオブジェクトの移動などを行列を用いた高速
pΦ = sinh rΦ
な演算で行うことが可能になる [8].
qΦ = cosh rΦ
5.1
(3)
変数設定
本研究で提案するゲームでは,全オブジェクトはガウス
とすることでこれらの値が得られる.Φ の形状を表す各
曲率 K = −1 の,2 次元の双曲平面上に配置される.計算
頂点は 3 変数 (xvn , yvn , zvn ) で表す.図 4 (b) に示すよう
機内部では,あるオブジェクト Φ の位置を (xΦ , yΦ , zΦ ) と
に Φ の形状を表す頂点が極座標 (dvn , δvn ) で入力された場
3 変数を用いて表す.データ入力時に Φ の位置が図 4 (a) に
合は位置の場合と同様に,
示すように極座標 (dΦ , δΦ ) で与えられた場合には
8
>
>
< xΦ = sinh dΦ cos δΦ
yΦ = sinh dΦ sin δΦ
>
>
: z = cosh d
Φ
8
>
>
< xvn = sinh dvn cos δvn
yvn = sinh dvn sin δvn
>
>
: z = cosh d
(1)
vn
(4)
vn
Φ
として内部用の変数を得る.表 2 にオブジェクト Φ の変
とすることでこれらの値を求めることができる.このと
数をまとめる.内部用の変数を用いることにより,これ以
き (xΦ , yΦ , zΦ ) は 3 次元ユークリッド空間上の二葉双曲面
降の,ゲームを進行し画面を描画する上で必要な処理は全
z 2 = x2 + y 2 + 1 上の点である.また,Φ の向きも 3 変数
て四則演算のみで行うことが可能になる.
を用いて (aΦ , bΦ , cΦ ) と表す.図 4 (a) のように Φ の向き
5.2
が双曲平面上の角度 θΦ で入力された場合,(1) 式で得られ
Φ が前方に移動する前の位置を (xΦ0 , yΦ0 , zΦ0 ),移動後
た値を用いて
8
(xΦ 2 + zΦ + 1) cos θΦ + xΦ yΦ sin θΦ
>
>
aΦ = −
>
>
>
zΦ + 1
>
>
<
xΦ yΦ cos θΦ + (yΦ 2 + zΦ + 1) sin θΦ
bΦ = −
>
>
zΦ + 1
>
>
>
>
>
: c = −(x cos θ + y sin θ )
Φ
Φ
Φ
Φ
Φ
オブジェクトの前方への移動
の位置を (xΦ1 , yΦ1 , zΦ1 ) とする.移動後の位置は Φ の向き
(aΦ , bΦ , cΦ ) を用いて移動前の位置を変換することにより
1 0
0
(1−f )aΦ2 +f
B
C B
B yΦ1 C=B(1−f )aΦ bΦ +cΦ e
@
A @
(1−f )aΦ cΦ +bΦ e
zΦ1
xΦ1
(2)
(1−f )aΦ bΦ −cΦ e
(1−f )bΦ2 +f
(1−f )bΦ cΦ −aΦ e
1
10
−(1−f )aΦ cΦ +bΦ e xΦ0
C
CB
B
C
−(1−f )bΦ cΦ −aΦ eC
A@ yΦ0 A
2
zΦ0
−(1−f )cΦ +f
と計算機内部用の変数が算出される.このとき (aΦ , bΦ , cΦ )
(5)
は一葉双曲面 z 2 = x2 +y 2 −1 上の点である.また,位置 (xΦ ,
yΦ , zΦ ) と向き (aΦ , bΦ , cΦ ) の間には cΦ zΦ = aΦ xΦ + bΦ yΦ
が成立し,後述する 5.2, 5.3, 5.5 の各変換を経てもこの関
と求めることができる.ここで e と f は速さを表す変数
係は保たれる.衝突判定の際にオブジェクトの半径が必要
であり,双曲平面上の速さ v から e = sinh v, f = cosh v と
になるが,これは 2 変数 (pΦ , qΦ ) で表す.半径が双曲平面
算出される.速さが一定の場合はこれらの値をあらかじめ
上の距離 rΦ として入力された場合,
求めておくことができる.
592
5.3
オブジェクトの回転
ysn , zsn ) を変換し,ローカル座標上での Φ の形状の頂点
(xsnL , ysnL , zsnL ) を得る.
Φ が回転する前の向きを (aΦ0 , bΦ0 , cΦ0 ),回転後の向きを
(aΦ1 , bΦ1 , cΦ1 ) とする.回転後の向きは Φ の位置 (xΦ , yΦ ,
0
zΦ ) を用いて回転前の向きを変換することにより
1 0
0
−(1−h)xΦ2 +h
B
C B
B bΦ1 C=B−(1−h)xΦ yΦ +zΦ g
@
A @
cΦ1
−(1−h)xΦ zΦ +yΦ g
aΦ1
1 0
xvnL
−aΦL
B
C B
B yvnL C=B −bΦL
@
A @
zvnL
−cΦL
−(1−h)xΦ yΦ −zΦ g
bΦL zΦL − cΦL yΦL
cΦL xΦL − aΦL zΦL
−(aΦL yΦL − bΦL xΦL )
10
xvn
zΦL
zvn
(10)
CB
C
B
C
yΦL C
A@ yvn A
−(1−h)yΦ2 +h
−(1−h)yΦ zΦ −xΦ g
1
10
(1−h)xΦ zΦ +yΦ g aΦ0
C
CB
C
B
(1−h)yΦ zΦ −xΦ g C
A@ bΦ0 A (6)
2
(1−h)zΦ +h
cΦ0
5.7
1
xΦL
画面描画
Ψ を操作するプレイヤーに提示する画面を描画する.ま
ずローカル座標上のある頂点 (xvnL , yvnL , zvnL ) を次式で
Ψ を中心とするポアンカレ円板上の点 (X, Y ) に写す.
8
xvnL
>
< X = zvnL + 1
yvnL
>
:
Y =
zvnL + 1
と求められる.ここで g と h は角速度を表す変数であり,
双曲平面上の角速度 ω と g = sin ω, h = cos ω の関係にあ
る.角速度が一定ならばこれらの値を事前に求めておくこ
(11)
とができる.
5.4
衝突判定
続いてグローバル座標上の Ψ の位置 (xΨ , yΨ , zΨ ) と向き
Φ と位置 (xΨ , yΨ , zΨ ),半径 (pΨ , qΨ ) の別のオブジェク
(aΨ , bΨ , cΨ ) を用いた次式で画面上の点 (Xscr , Yscr ) を得る.
ト Ψ との衝突判定式は次のようになる.
zΦ zΨ − xΦ xΨ − yΦ yΨ ≤ pΦ pΨ + qΦ qΨ
8
(zΨ + qend )X − cΨ
>
>
< Xscr =
pend
(7)
>
>
: Yscr = (zΨ + qend )Y − (aΨ yΨ − bΨ xΨ )
pend
5.5
ローカル座標への変換
(xΦ , yΦ , zΦ ) と (aΦ , bΦ , cΦ ) はグローバル座標上の Φ の
(12) 式によりポアンカレ円板上から半径 1 の円上に,ゲー
位置と向きであるが,これらを Ψ を中心とするローカル座
ムが行われる範囲のみを抜き出すことができる.ここで
標上の位置 (xΦL , yΦL , zΦL ) と向き (aΦL , bΦL , cΦL ) に変換
pend = sinh rend , qend = cosh rend であり,ゲームが行わ
する.いずれも Ψ の位置 (xΨ , yΨ , zΨ ) と向き (aΨ , bΨ , cΨ )
れる範囲はグローバル座標の中心から,双曲平面上で半径
から成る同一の行列を用い (8), (9) 式のように求められる.
rend となる円の上に限るものとしている.
0 1 0
10 1
−bΨ
cΨ
xΦL
−aΨ
xΦ
B C B
CB C
ByΦLC=BbΨ zΨ −cΨ yΨ cΨ xΨ −aΨ zΨ aΨ yΨ −bΨ xΨCByΦC
@ A @
A@ A
zΦL
(12)
−xΨ
−yΨ
zΨ
zΦ
(8)
参考文献
[1] 特許庁総務部技術調査課技術動向班:平成12年度特許
出願技術動向調査分析報告書 電子ゲーム,特許庁,pp.
20-21, 2001.
[2] 松島賢司ほか:電視遊戯時代 テレビゲームの現在,ビ
10 1
0 1 0
−aΨ
aΦ
aΦL
−bΨ
cΨ
CB C
B C B
BbΦLC=BbΨ zΨ −cΨ yΨ cΨ xΨ −aΨ zΨ aΨ yΨ −bΨ xΨCBbΦC
A@ A
@ A @
cΦL
−xΨ
−yΨ
zΨ
cΦ
(9)
レッジセンター出版局,pp. 80-81, 1994.
[3] S. Russell, M. Graetz and W. Wiitanen: Spacewar!,
Software for PDP-1, 1962.
[4] サミー:チェンジエアブレード,アーケードゲーム,1999.
[5] 東映動画:バリーファイア,ゲームボーイ用ソフトウェ
ア,1990.
[6] E. Beltrami, “Saggio di interpetrazione della Geome-
tria non-euclidea,” Giornale di matematiche ad uso
degli studenti delle università italiane, Vol. VI, pp.
また,こうして得られるローカル座標を新たなグローバ
284-312, 1868.
[7] M. C. Escher: Circle Limit I, Woodcut, 1958.
[8] J. Weeks, “Real-Time Rendering in Curved Spaces,”
ル座標とすれば画面全体をスクロールさせることもできる.
5.6
オブジェクト形状の再構成
Φ の形状を Ψ を中心とするローカル座標上で再構成する.
次式のように Φ のローカル座標上の位置 (xΦL , yΦL , zΦL )
IEEE Computer Graphics and Applications, pp. 90-
と向き (aΦL , bΦL , cΦL ) を用いて Φ の形状を表す頂点 (xsn ,
99, 2002.
593