チーム制作

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

チーム制作

投稿記事 by BEAT » 13年前

学校の課題でチーム制作でゲームを作ることになりました。

最初は「ゼルダとシレンを足したようなゲーム」というイメージで始めました。
ゼルダのダンジョンに階があってフロアがランダムで生成されていく感じですね。

ですが平面のゲームを作っても他チームとの差がなくなるということで疑似立体のゲームを作ることに・・・
疑似立体といってもスーファミのゴエモンのような感じでやろうかなと思ってます。

マップデータも3次元配列で作らないといけないし、あたり判定にもZ軸が加わってきて大変そうだな・・・

と色々と考えていてふと不思議に思ったんですが。
ゴエモンやファイナルファイトのようなベルトスクロールのゲームって
オブジェクトの描画する順番ってどうなってるんでしょうか?

ああいうゲームはZ軸が存在するので手前にいるものは必ず奥にいるものよりあとに描画されていますよね。
じゃないと手前にいるのに奥のキャラの後ろに描画されるなんてことになりますからね。

一番最初に思いついたのは全部のオブジェクトを調べて、手前にいるものから順番に描画していくというすごく単純な方法。
もしかしたらベルトラインだからある程度の区切り(手前・真中・奥)でその中で更に順番を決めて描画しているのかもしれない・・・

他にも何か方法があるのでしょうか?

ISLe
記事: 2650
登録日時: 15年前

Re: チーム制作

投稿記事 by ISLe » 13年前

描画優先順のリストがあって、ソートするのはその通りですが、非力なマシンでは描画の都度ソートしていたら重くなるので、描画するときに前後を入れ替えることだけをします。
本物のスプライト機能だとスプライトを動的に割り当てなければならないので、ベルトアクション以外のジャンルのゲームでもたいてい描画優先順位でソートしてます。

むかしはまず優先順位ソートを考えないとゲームが作れなかったので、いまは恵まれてると思いますよ。

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

Re: チーム制作

投稿記事 by BEAT » 13年前

昔のプログラマーってすごいですよね。2進数でプログラミングしてた人たちとか。

>描画の都度ソートしていたら重くなるので
これは描画する前にリストをソートすると重くなるという意味で
>描画するときに前後を入れ替えることだけをします。
というのは「描画する先にすでに何かが描画されていれば入れ替える」ということでしょうか?

ISLe
記事: 2650
登録日時: 15年前

Re: チーム制作

投稿記事 by ISLe » 13年前

2進数でプログラミングというとパンチカードですかね。
そっちの世界は知らないのですが。

8ビット時代はPC本体にオンメモリでアセンブラを動かすメモリが無かったので、ノートにニーモニック書いて、本に載ってる一覧表見ながら16進数に直して、その16進数をパソコンに入力するということをしました。
ハンドアセンブルって言うんですけど、手を動かしているのでわりとすぐにニーモニックと16進数の対応を覚えてしまって直接16進数でプログラムできるようになります。
BEAT さんが書きました:>描画の都度ソートしていたら重くなるので
これは描画する前にリストをソートすると重くなるという意味で
ソートを独立した処理とすると、まったく優先順位に変動のないときでもループを回すことになるので非力なマシンだとけっこう痛いコストになります。
BEAT さんが書きました:>描画するときに前後を入れ替えることだけをします。
というのは「描画する先にすでに何かが描画されていれば入れ替える」ということでしょうか?
描画してしまったものを入れ替えることはできないので、描画ループ内で要素ごとに次の要素が優先順位高かったらお先にどうぞってふうに自分をひとつ後回しにする(入れ替える)ということです。
一発でソートが完了しないパターンがありますけど、ゲームの動いている中では概ね気にならないレベルです。