プレイ日記
しんいち stgf1080
おちゃめさん作の簡易地球儀を、ズルして高速にしてみました(名付けてずる地球儀^^;)。 公開キー:SN3F3L4 注意点:  ・最初少し待たなければなりません。  ・メモリをたくさん使います(実行後CLEARした方が良いかも) 操作方法は、Lボタンで縮小、Rボタンで拡大。B+Yボタンで終了です。地球儀の大きさはR(半径)=64~256までとなっています(512は無理だった。もしかしたら大きいSDカード差してたら可能になるなんてことある!?)。 スピードは大きくしても大差ないみたいなので、最初少しお待ちいただければ、後は思う存分グリグリできます。 ゲーム作れちゃうような方々には既にピンと来てると思いますが、仕組みは・・・おっと残り行数が^^; まぁとにかく気になった方はいじってみて下さいませ。
10そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
最初に計算をすべて済ませておくというのは高速化テクニックの1つなのでずるくはないと思いますよ。 メモリがやたら多いプチコンBIGだと十分に「あり」な方法でしょう。 私が作った簡易地球儀は「リアルタイムで1ドットずつ計算して高速化」というだけにすぎないです。
2そうだね
プレイ済み
返信[2]
親投稿
しんいち stgf1080
ゲーム作る際には一般的な手法ですよね(でも何か今回はズルしたなぁって感じがして^^;)。 今回やったこと一応説明しておきます。 まず表示前の計算結果のデータ(今回は絵そのものですが、場合によっては座標のみとかも)を保持しとこうと考え、地球儀1回転分の絵を先に描画して、まるっと全部配列に入れちゃいました。 この時、元の絵のサイズが512×512だったので、一周させるのに赤道1ピクセルずつ動かすなら絵×512枚必要と考えたのですが、試したらメモリ不足でした^^;。それで何となくサイズ落としてR=128にしました(これなら一周させるのに 256枚)。 ただ、これだとサイズは1種類のみ。他小さいサイズも配列で、と一瞬考えましたが、もう大分メモリ使ってるし最初の待ち時間更に長くなるのも嫌なので、SPRITEにして縮小/拡大させることにしましたとさ。
0そうだね
プレイ済み
返信[3]
親投稿
しんいち stgf1080
更なる高速化としては、地球儀一周分の絵をファイルに落としてしまって、次からは毎回それを読み込むようにするとか(ファイルサイズが恐ろしい^^;)、あと、他トピで挙がってたブレゼンハムさん?の方法を描画の際に応用するとか(円4分の1だけ真面目に計算して、後は+-、-+、--符号の反転だけで何とかする?←ちゃんと理解してないので適当)。 今回おちゃめさんの簡易地球儀を参考にさせて頂いたのは、実は転がる玉を表現したいと思ったからだったのですが、360度自在に転がすには単純にはいかないな、ということに気付きました(試しに地球儀縦に回してみよ~っと軽い気持ちで変更しようとしたら、北極南極上から見たらどうなるんじゃ~?って)。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
この世界地図のGRPは左右は繋がっていますが、上下が繋がってないため上下回転をさせるようにするには「繋がるような計算処理」をする必要があります。 現状ではプチコンBIGでは1秒間に42万ピクセル分くらいのテクスチャ演算処理を行っていますが上下が繋がるようにするとかなり落ちると思います。 しかし、うまくARYOPが使えれば速度低下分がカバーできるかもしれません。 ARYOPを使用するならばGPSETの処理をGLOADで行えばリアルタイム処理としては最速レベルになると思います。 予めすべての方向の回転データを用意しておくならば横256通り、縦256通りならば合わせて65536通りになるためメモリ面ではかなり厳しいでしょうね。SDカードからのロードだとロード速度が追いつかないと思います。
1そうだね
プレイ済み
返信[5]
親投稿
しんいち stgf1080
丸い球に四角いグラフィックを貼り付けるのは結構大変ですね。 今回の場合、貼り付けるのはメルカトル図法の世界地図なので、縦(だけ)に回せるようにするにも添付の絵のように一旦変換する必要がありますね(ちょっとやってみようかなと今思った)。 いずれにしても、全通りのグラフィックを保持しとくのは現実的じゃなさそう(^^ゞ #サイズ小さければできなくもないか。 #う~ん、どうしようかな。例えばビリヤードの #ゲームなんかはどうしてるんだろう? #後で調べてみるか。 因みに、GPSETのところを円4分の1作戦^^;にしてみたところ、30秒→20秒位になりました(もっと速くなるかと予想してたんだけど。やっぱり配列遅いのか)。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
簡易地球儀は画面に表示される地球儀において各ピクセルが世界地図においての緯度や経度を求めるという処理を行っています。 計算アルゴリズムはともかくとしてテクスチャをを貼り付ける場合は変形を行うというよりも画面表示のピクセルがテクスチャ画像のどの部分を示すかを求めるというのがポピュラーなやり方ではないかと思います。 テクスチャは矩形でならなければならないということはなく計算がしやすいようにテクスチャそのものを変形しておくというのも1つのやり方ではとしてはありだと思いますよ。
0そうだね
プレイ済み