横スクロールゲームに右向きが多い理由

横スクロールゲームに右向きが多い理由という記事を読んだ。

思うところがあるのでメモ。

この記事にも技術的理由が書かれているが、このあたりは、技術的理由とそれ以外の理由が複合的にからまっていると思う。

ファミコン以前の話。

昔のパソコン、当時はマイコンと呼ばれていた時代。ラインエデイットからスクリーンエディットに変化した時代。今の時代で言えば、DOS窓や、Linuxのコンソールの世界を想像して欲しい。

このような画面の場合、左上から文字が表示され、順次右へカーソルが進む。で右端に到達したら次の行へ進む。で、どんどん画面が埋めつくされ、最後に右下に到達すると1行上にスクロールする。

画面を表示するために、画面を保存するためのメモリがある。

大抵の場合、メモリの低アドレスが画面の左上の文字を表し、次のアドレスがその右の文字と、文字とメモリが1対1で対応しており、右端まで来たら次の行の左端の文字。で、右下の文字まで配置してある。(色情報などのアトリビュートと呼ばれる情報はここでは無視する)

このメモリの内容を画面に出力する回路が直接つながっていた。 定期的にそのメモリを読み出し、フォント情報と付きあわせて画面に出力する。

カーソルの位置のアドレスを保存している場所があって、文字を表示する場合、その場所に文字を書きこみ、カーソルの位置のアドレスを一つ進める。改行が発生した場合は、アドレスを次の行の左端に進める。

1行スクロールが発生すると、一大イベントの発生である。画面メモリの内容を全体的に1行分移動する必要がある。

Sunday
Monday
Tuesday
Wednesday
Thirsday
Friday

こいつが1行ずれて

Monday
Tuesday
Wednesday
Thirsday
Friday

こうなる。画面が40行25列ならば、40×24=960文字をコピーする必要がある。具体的な処理はこうだ。

カーソルを左上に移動する

カーソルの位置から1行下の文字をカーソルの位置にコピーする
右下一行上(40x24の位置)になるまでカーソルのアドレスをひとつ進め、繰り返す

ひとつひとつステップを追っていくと理解できると思う。スクロールが発生すると、この処理が走る。

ここまでは、下から上へのスクロールの話。次に、右から左へのスクロールを考えてみる。

Sunday
Monday
Tuesday
Wednesday
Thirsday
Friday

こいつが右にずれて

unday
onday
uesday
ednesday
hirsday
riday

こうしたい。具体的な処理は、

カーソルを左上に移動する

カーソルの位置から右隣の文字をカーソルの位置にコピーする
右下(40x25の位置)になるまでカーソルのアドレスをひとつ進め、繰り返す

これもひとつひとつステップを追えばそんなに難しくない。

興味深いのは、下から上へのスクロールの処理と、右から左への処理が、そっくりなことだ。コピー元が”一行下”なのか、”右隣”かの違いと、終了の位置が”右下一行上”なのか、”右下”かの違いであることに注目して欲しい。ただ、考え方は一緒で、左上から順に処理されることが重要。

では、次に左から右へのスクロールを考える。

Sunday
Monday
Tuesday
Wednesday
Thirsday
Friday

こいつが、

Sunday
Monday
Tuesday
Wednesda
Thirsday
Friday

こうなれば良い。先の”下から上へのスクロールの処理”と”右から左へのスクロールの処理”を参考に組み立てる。

カーソルを左上の一つ右に移動する

カーソルの位置から左隣の文字をカーソルの位置にコピーする
右下(40x25の位置)になるまでカーソルのアドレスをひとつ進め、繰り返す

実はこの手続きではうまくいかない。ひとつひとつ追いかけるとわかるのだが、左上の文字が順番にコピーされ続けるので、画面全体が左上の文字になるだけだ。

左から右へのスクロールでは、右下から始め、左へ進み、上へ、左上まで処理をするように考えなければならない。

カーソルを右下に移動する

カーソルの位置から左隣の文字をカーソルの位置にコピーする
左上(1x1の位置)になるまでカーソルのアドレスをひとつ戻し、繰り返す

この”カーソルのアドレスをひとつ戻し”という処理がポイント。普段カーソルはアドレスが増える方向に進むのに、左から右へのスクロールでは逆にアドレスが減る方向に進む。

同様に、上から下へのスクロールも左上からの処理ではうまくいかない。左上から処理をすると一番上の行がすべての行にコピーされる結果となる。ということで、一番下の行から処理をする必要がある。これは、右下から処理をすることが必須ではなく、左下から処理を始めてもかまわないが、一番下の行から処理をすることが必須となる。

ぶっちゃけ、この左から右へのスクロールと、上から下へのスクロールの処理は、プログラムを書く側からすると、きもち悪い。また、この単純なスクロールを高速化するための様々なテクニックがあるのだが(ループ展開など)、これらを考えるときに、通常の処理は簡単に考えられるけど、逆向きのスクロールはちょっと面倒だった。

上から下へのスクロールに関しては当時「逆スクロール」と呼ばれていた。

スクロールのやりかたには、他にも方法があって、画面2枚分のメモリが取れるのなら、どっちからコピーしても処理が同じにできたりする。ただ、昔のパソコンはメモリが貴重。画面2枚分のメモリがとれるような贅沢ができたのは、後の世の話。

で、なんで、右から左へのスクロールと、下から上のスクロールが考えやすくて、逆のスクロールが考えにくいのかというと、コンソールの機能がそうなっていて、それに合せてメモリの配置がなされていたから。で、なんでメモリの配置がそうなっていたかというと、当時のモニター、すなわちCRTや普通のテレビの走査線が左上から右に進んで次の行へ、で右下に向かう方向で進んでいたから。

結局、コンピュータと言えばコンソール。でそのコンソールの機能は英語の文章の配置が理由。それを考えると、マリオが初期位置で右を向くのが自然に感じると思う。

これが、右へ進むゲームが主流のひとつの原因かと思う。

先のファミコンでは右向きスクロールするほうが作りやすかった理由も根っこはここにある。当時のコンピュータのメモリの配置と速度が、右向きスクロールを主流にする原因となったはず。また、スクロールしないゲームでもコンソールの動きがそのような動作をしていたので、右に向うのが自然となった。

この話をもとに、次の話を展開。

当時、ベーマガで「ジョイスティックは右か左か論争」があったのを覚えている人もいるかもしれない。

横スクロールゲームに右向きが多い理由

ゲームセンターのゲームはスティックが左手でボタンが右手の物が主流。スティックもインベーダーやギャラクシアンのように、左右のみの物、パックマンのように十字の物、その後、斜め入力ができるように進化していった。斜め入力と言っても、横と縦の同時入力で反応する斜めなんだけどね。どちらにしても、マリオで言えば、左手が移動、右手がジャンプなどになる。

パソコンは、ゲームセンターよりも後になる。

パソコンゲームは2つの流儀があった。ASDFで上下左右、スペースでボタンがひとつ。これは左手が移動で右手がジャンプ。

ASDFは、まだ矢印キーやテンキーがパソコンに付いていなかったときの物。Apple IIですら、矢印キーは左右のみだった。これは、ゲームセンターのスティックの配置の参考にしていると思う。

その後、パソコンの矢印キーが上下左右となり、テンキーが配置されるようになると、それらを使ってゲームをするようになる。

矢印キーまたはテンキーで上下左右、スペースでボタン。これは右手が移動で左手がジャンプなどになる。

ゲームセンターでやりこんだゲームのパソコン版が登場してくると、この左右の違いが非常にきもち悪かった。

始めて対戦格闘ゲームが登場したときに、2P側を操作したときにも同様のきもち悪さがあったと思う。

このきもち悪さを防ぐために、真ん中にスティックがあって、左右の両方に攻撃ボタンが配置してあるゲームセンターのテーブルもあったくらいだ。ただ、やっぱりゲームセンターの主流は左にスティック、右にボタン。

実はこのきもち悪さって、画面と手が逆向きになることによるきもち悪さなのではないかと思う。

キャラクターが右を向いている場合、移動したのち攻撃する。その攻撃の方向が右になる。なので、攻撃用のボタンは右に配置してあったほうが自然。攻撃用のボタンが右にある場合、対戦格闘ゲームの2P側だと逆になるのできもち悪い。マリオブラザーズでもルイージ側は最初に逆に進みジャンプするので気持ち悪い。

パソコンの矢印キーまたはテンキーでゲームすることに慣れている人にとっては、キャラクターが左を向いていた方が自然になる。攻撃の方向が左であり、攻撃用のスペースキーが左手になるからだ。

ゲームセンターのゲームは中身だけ交換して筐体はそのままのことが多い。と、左にスティック、右にボタンが主流ならば、それにあわせたゲームを作ることになる。と、自然と右向きのゲームが増える。

これが、右へ進むゲームが現在主流のもうひとつの原因かと思う。

ファミコンのコントローラーも移動が左で、攻撃が右。

実はファミコン以前は左ボタン、右スティックのコントローラーも多かった。

Atariのスティックは左ボタンで右スティック。パソコン用のステイックも、PC-6001のオプションのヤツは左ボタンだし、ツクモから出ていたやつも、X1用ゼビウス付属のスティックも左ボタン。

ちなみに、エポックのカセットビジョンでは、1Pが左スティックなのだが、2Pが右スティックという鬼仕様。

この時代のゲームはたぶん右に行ったり左に行ったり混在していたと思う。ただ、ゲームはいろんなコンソールに移植されているため、大体の方向性はあったと思う。

ちなみに、スカイキッドが左に進んだのは、攻撃よりも宙返りを売りにしていたからだと思う。攻撃が主であればやっぱり右に攻撃するのだが、宙返りはちょっと後退する動作なので、右のボタンで操作するなら進行方向は左になる。

もしかしたらマッピーも同様にボタンがドアの開閉だから、左に進むのかもしれない。特にマッピーのボーナステージはスクロールを多用するのにボタン使わないし。ただ、マッピーを始めてやったときは、やっぱり逆に感じできもち悪かった記憶が。

ということで、ハードウェアやソフトウエアの事情がかさなりあって、右向きゲームが主流になったんだと思う。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください