したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

おちゃめくらぶ掲示板

2026御茶目菜子:2014/04/24(木) 23:46:37
プチコン3号で3Dアウトランは作れるのか・・・?
昨日3DSアプリの「3Dアウトラン」を買って全コースクリアしたにょ。
3Dアウトランはセガの3D復刻プロジェクトが始まった時から期待はしていたけど権利問題で
アーケード移植は難しいためあきらめていたのがこのたび発売されたので大喜びしたにょ。
3Dアウトランについては下記に開発者インタビューが記載されているのでこれを読めばかなり
大変(バーチャルコンソールとは違ってほとんど作り直し)だったことが分かるにょ。
http://game.watch.impress.co.jp/docs/interview/20140423_645628.html
http://game.watch.impress.co.jp/docs/interview/20140424_645652.html

私はそこまでアーケードをやり込んだわけではないけどプレイしてみて特に問題に感じた
部分はなかったにょ。(権利問題で車のグラフィックが変わってしまったのは仕方ないこと
なので)
むしろ、アーケードの30fpsから60fpsに向上している(全コースクリアしたらアーケード
版のバグまで忠実に再現した完全移植版もプレイできる)ということでより爽快感を
感じたにょ。
やっぱり、レースゲームは30fpsと60fpsでははっきり違いが分かるにょ。
音楽が追加されていたり、チューンナップの要素が追加されていたりしてアーケードを
やりこんだ人も新鮮さが味わえるのではないかと思われるにょ。
難易度変更や残り時間変更をすればレースゲームが苦手な人でも簡単にクリアは可能にょ。

3Dアウトランで唯一気になったのは価格にょ。
税別762円ということで税込だと823円になってしまうという点にょ。
プリペイドカードでチャージしている関係上端数が出るのは嫌な感じにょ。
これは消費税5%時代にぴったり800円になる金額設定であり、金額はメーカー側(ソフト
ベンダー側)が自由に変更ができないため現在のeショップのダウンロードソフトの価格は
消費税5%ではキリがいいけど消費税8%ではすべて端数が出る価格設定になっているため
仕方がない面ではあるにょ。


3Dアウトランをプレイしてみてやはり思ったのは疑似3Dと立体視の相性の良さにょ。
これは3Dスペースハリアーをプレイしたときにも感じたにょ。

 ◎疑似3D表示と立体視の相性は抜群!
 http://6407.teacup.com/ochame/bbs/3660

立体視といえばやはり発売日が7月に決定したプチコン3号において自作プログラムで
簡単に行えるようになるため興味を持っている人も大勢居るのではないかと思うにょ。
3Dスペハリが発売された頃はまだプチコン3号の主な仕様どころかその存在さえ明らかに
してなかった(3DS版のプチコンを開発中というウワサだけ存在していた)けど最近出た
情報によると立体視に必要なZ座標の設定はBGやGRPでは面単位(ただし、BGはプチコンmkIIの
2面から4面へと増加している)だけどスプライトやコンソールではオブジェクト単位で
Z座標の設定が可能になっているにょ。(GRPが面ごとに単一のZ設定なのは以前も書いた
ようにプチコンのGRPは内部ではスプライトを使って処理しているため1ドット単位でZ設定を
行えるようにするためには上画面だけでも400x240=96000個のスプライトが必要になり
立体視を行うならばさらにその2倍必要になるため現実的では無くなる)
したがって、3Dアウトランのような立体視を使った疑似3Dレースゲームをプチコン3号で作る
ためには場合には道路を含めたすべてのオブジェクトをスプライトで表現する必要があるにょ。

立体視ではない旧世代(マリオカートやF-ZEROのような回転を使ったものではなくラスター
スクロールっぽいもの)の疑似3Dレースゲームを作る場合には道路はGRPで描画するのが
最も簡単にょ。
詳しくは私のプチコン講座で書いているのでそれを参考にして欲しいにょ。
この講座で書いているのは私がポケコン用のレースゲームで使っていた方法だけどカーブ
表示のアルゴリズムとしては最も簡単なものにょ。
道路上にオブジェクトを設置する場合もこのアルゴリズムだと非常に簡単で道路に白線を
表示する場合も遠くの線は細く表示して近くの線は太くするというのもこのアルゴリズム
だと特に意識せずに普通に作るだけで自然にそのようにできてしまうにょ。

 ◎プチコン講座 第6回 疑似3Dゲームを作ろう(レースゲーム編)
 http://ochameclub.web.fc2.com/petitcom/p006.htm

では、現状のプチコンmkIIでGRPではなくスプライトを使って道路を表示することはできない
のかというと簡単に言えばできなくもないけど実用にはならないにょ。
それは上記のようにプチコンではGRPを内部ではスプライトを使って表現しているため大きな
スプライトを大量に表示すると表示が欠けてしまうためにょ。
仮に欠けなかったとしても道路を表示するためには横長の細長いスプライトが大量に必要に
なってくるにょ。
プチコンmkIIはスプライトの定義上限数が100枚であるため道路にそんな大量にスプライトを
使うことはできないにょ。
というのもプチコンのスプライトは上限が64x64であるため細切れで大量に用意する必要が
あるためにょ。(道路を縦に25分割した場合はそれだけでスプライトは最低100個必要に
なってくる)
したがって、現状のプチコンmkIIで疑似3Dレースゲームを作ろうと思ったら事実上道路の
表示はGRPしか選択肢は無いにょ。(GFILLのような単調な塗りつぶしではなく質感を持たせる
ためピクセル単位での描画をするならば道路以外の障害物が無しの状態でさえ30fpsになる
のを覚悟してGCOPYを使うという手もある)

プチコン3号のスプライトはmkIIと比べてかなり強化されていて、縦横1〜512pixelの範囲で
任意のサイズが設定できるとのことにょ。
そのため疑似3Dレースゲームの道路(横に細長いスプライト)も簡単に表示が可能になるにょ。
それだけではなくそこまで巨大なスプライトが回転可能であるため「キャメルトライ」や
「アサルト」といった画面全体が回転するようなアーケードの移植(もしくはそういう
タイプのゲーム)も簡単に作れるようになるにょ。
プチコン3号はBGも回転機能があるため(BGANGLE、BGSCALEといった命令を実装するらしい)
レースゲームのコースのように固定されたものを回転させるならばBGを使って作ることも
可能にょ。
これが現状のプチコンmkIIで回転をさせようと思ったらかなり大変にょ。
上限サイズの64x64のスプライトを画面に敷き詰めてそれを回転させようとしてもそんな
大きなスプライトをたくさん同時に動かしたらどうしても欠けてしまうにょ。
「表示が欠ける」と言っても実際にどんな感じになるのかは試してみないと分かりにくい
けどえぬおうさんのこの動画を見れば一目瞭然にょ。(見ての通りプチコンmkIIではかなり
厳しい)

 (プチコンmk?)ASSAULT続き
 https://www.youtube.com/watch?v=AIlSO0nKPFw

表示が欠けるのが嫌ならば表示は8x8pixel単位で良いならばBGを使うという手もあるにょ。
プチコンだとhonoPさんが作った1画面プログラム「PETIT RACING」でBGを使った回転を
取り入れているにょ。

 プチコンゆっくりプログラム【1画面プログラム編 NO.2】
 http://www.nicovideo.jp/watch/sm14243154 ※初代プチコンで作ったもの

しかし、初代から高速化されたプチコンmkIIでさえも画面(32x24キャラ)の半分強(21x21
キャラ)を回転させるだけで13fpsしかでないにょ。
回転のアルゴリズムは私が作った2軸回転プログラムを参照にょ。(X軸、Z軸の2軸が回転
可能であるためX軸を90度傾けて、つまり、真上から見た状態にしてZ軸回転をすれば普通の
回転になる)
私が作ったものの方が(1画面という制約がない分だけ)honoPさんのものよりも高速だけど
それでも限界まで最適化した状態で8000キャラ/秒弱の描画速度なので表示エリアが画面
半分のサイズであっても最大で20fpsの速度しか出ないにょ。(PETIT RACINGと同じ21x21
キャラの表示エリアだと17fps)

 ◎プチコン用 GRP 2軸回転プログラム
 http://ochameclub.web.fc2.com/petitcom/2rotate.htm


さて、少しプチコンから離れるけど2001年にPS2用ソフトとして発売された「BASIC STUDIO」
ではグラフィックでZ設定ができたにょ。
これは立体視のためではなく単純に前後関係を認識するためにょ。(BASIC STUDIOでは
ポリゴンがメインであるためZバッファを搭載している)
実は私はこのBASIC STUDIOは発売されてすぐに購入したものの言語仕様があまりに合わない
感じだったため少し使ってそのまま放置状態だったにょ。
そこで、久々にリファレンスマニュアルを読みながらプチコン用に作った「PETIT RUN」を
このBASIC STUDIOに移植してみたにょ。
http://twitpic.com/e1vmwg
ちなみにこちらが初代プチコンで作ったPETIT RUNをmkII用にリメイクしたPETIT RUN mkIIにょ。
http://ochameclub.web.fc2.com/petitcom/1page.htm#prun2
第1回のプチコン大喜利で技術賞を戴いたということでかなり思い出深いプログラムにょ。

BASIC STUDIOではグラフィック面は640x224ドット(1ドットの大きさはPC-88の200ラインと
同じく縦長表示)となっていて解像度の違いを完全に考慮しているわけではないので
完全移植とは言えないけどプチコン版と大体同じような表示ができていると思うにょ。
(PS2のアナログボタンとアナログコントローラに対応させたので操作感においては完全に
別物になっている)
BASIC STUDIOで何が嫌だったかというとまずはマルチステートメントで記述ができない
ということにょ。
そして、引数などもほとんど省略もできず(ダブルクォーテーションの閉じる方も省略
できず例えば「SAVE "TEST」でエラーになる)プログラムがどうしても冗長になってしまう
という点にょ。(CLEARが一般的なBASICのCLS相当だったりとか気になる方言も多い)
それだけではなく行番号付きのBASICというのが悪い意味で問題だったにょ。
行番号を整理するRENUMBERという命令はあるけどこれはGOTOのジャンプ先は修正して
くれないので実質行番号でジャンプは使えないと言っても過言ではないにょ。(ラベル
ジャンプしかできないのならば行番号は足かせでしかない)
それに自作ゲームをネットで発表する手段が無かったのが辛いにょ。(リストを手入力する
というのが大変というだけではなくポリゴンのモデルデータなどは初代プチコンの
リソースデータと同じく公開する方法がなかったけどプチコンと違ってプログラムリストに
書き出すことさえできないためテキストオンリーもしくはデフォで備わっているデータを
使用しているゲーム以外はネットで公開はできなかったからね。
もちろん、公開する手段が無かったわけではなくPS2のメモリーカードをPCで読み書きできる
メモリージャグラーを使うという方法もあるけど非純正品だしこれは発表する側も読み込む
側も必要になってくるのが厄介にょ。(純正品だとPS3とメモリーカードアダプタを使う
という方法があるけどメモリーカードアダプタはすでに生産を終了している)

それだけではなくBASICなのにGOSUBも無いし、MID$などの文字列関数がないためテキスト
オンリーのゲームも作りにくいし、グラフィック関係のゲームも後述のように作りにくいし、
スプライトは512x256のテクスチャから任意のサイズを切り出して表示するという
Windows用の開発環境では一般的なもので特に問題はないとはいえ、回転もできず、
アニメーションも自動で行うことができないにょ。(スプライトメインのゲームを作り
にくい)
プチコンでいうBG画面はなく適当に切り出したテクスチャを画面一杯に並べるルーチンを
作る必要があるにょ。
というわけで、必要に感じる命令を削除してポリゴンに特化したBASICというようなイメージを
持ってしまったけど私はポリゴンゲームは作る気はなかったためお蔵入りしてしまっていた
ということにょ。(スプライトの回転はできないけどポリゴンのテクスチャとして設定して
やれば回転もできるし、自動的な当たり判定は可能になる)

確かに良い面も無くはないにょ。
GOSUBが無い代わりに副プログラム(要するにC言語の関数に近いもの)が定義可能に
なっているにょ。
再帰も可能で副プログラム内ではローカル変数となっているにょ。
また、構造化命令も豊富でDO〜LOOP、WHILE、UNTILなどがあるし、IFではEND IFを
使った複数行記述が可能で、NEXTを抜けるためのEXIT NEXT(C言語で言うとbreak)も
あり、SELECT〜CASEという分岐命令(C言語のswitch〜caseに近いもの)もあるにょ。

グラフィック関係の命令といえば普通のBASICだとLINE命令で線が引けてBオプションで
四角、BFオプションで塗りつぶした四角が描けるものが多いにょ。
プチコンではグラフィック命令の先頭にはGが付き四角はGBOX、塗りつぶした四角は
GFILLとLINEのB、BFオプションではなく専用命令が与えられているにょ。
BASIC STUDIOはどうなのかというと線はLINEPOSという命令でどこに引くかを設定する
ことができるにょ。
普通はこれで線が引けると思うけど座標の設定をするだけで表示をするにはLINEDISPが
必要になるにょ。(LINEOFFで表示した線のみを画面から消すことも可能)
塗りつぶし四角形はTILEPOSで座標を設定して、TILEDISPで表示にょ。
実は座標はすべて内部で管理されていてプリミティブ(端的に言えば各図形)は
1000個までしか表示ができないにょ。

プチコンではスプライトが100個までしか設定ができないのと同じくBASIC STUDIOでは
線が1000個、四角形が1000個、三角形が1000個しか設定ができないということにょ。
もちろん、たくさん設定して画面上に存在すればその分だけ遅くなるため大きな四角形を
1000個も表示させたらすごく遅くなってしまうにょ。(処理速度はプチコンより少し速い
程度で恐らくプチコン3号よりは遅い)
BASIC STUDIOで点は表示できないのかというと長さ1ドットの線を表示すれば可能にょ。
ただし、仕様上1000ドット分しか表示できないのでドット単位で描くお絵かきソフトは
作ることができないにょ。
こんな特殊な仕様になっているのは線や四角形を平面ポリゴンで描画しているから
だと思われるにょ。
そのためにLINEPOSなどではZ設定が必須になっているにょ。
これによって表示を行ったあとで前後関係を自由に変えられるにょ。(例えばすでに
描画されている塗りつぶし四角形より奥に線を引くことも可能)


ここでようやくプチコンに話は戻るけどプチコン3号のGRPは内部ではmkIIと同様に
スプライトを使っていると推測されるためGRPのZ設定は面ごとに単一の設定となっている
けどもしも内部処理をポリゴン機能を使って行えばGRP面のみで立体視を行うことも可能に
なるにょ。(そうすればポリゴン命令がなくても自前のポリゴン描画プログラムで立体視は
可能になる)
ただし、そうした場合にはBASIC STUDIOと同じくグラフィックの自由度は大幅に下がって
しまうにょ。
プチコン3号はプチコンmkIIとはまるで互換性がないポリゴンに特化したBASICではなく
ある程度の互換性を残しつつ2D+立体視というユーザーにとって使いやすい仕様を選んだ
と言えそうにょ。
そういう意味では2Dの延長線にある疑似3Dゲームはプチコン3号と極めて相性がいいにょ。
どれくらいのパフォーマンスかは分からないけどプチコンmkIIでアフターバーナーIIを
あれだけ再現した人がいるのだからプチコン3号の性能を引き出せば3Dアウトラン
レベルのゲームは十分にできるのではないかと思われるにょ。
さすがにそれだけスプライトのキャラを描くのは大変なので私はせいぜいPETIT RUNの
立体視対応版を作る程度に止まると思うにょ。(ただし1画面に収める予定)




掲示板管理者へ連絡 無料レンタル掲示板