プレイ日記
おちゃめ ochame_nako
スライドパッドでぐりぐり回転できる地球儀プログラム「簡易地球儀 for BIG」です。
21そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
回転速度はスライドパットで微調整できます。(左右回転のみに対応) デフォルトでは半径64ドットの地球儀ですが、動作中に押しているボタンによってサイズを任意に変えることができます。 Aボタンならば半径16ドット、Bボタンならば半径32ドット、Xボタンならば半径64ドット、Yボタンならば半径128ドットに変更できます。(同時押しOK) Lボタン+Rボタンの同時押しで終了できます。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
このプログラムはプチコン3号用に作った簡易地球儀QSPのBIG専用版(高解像度対応版)です。公開キーは【 MKA3N3KF 】です。 フォルダにはテクスチャ用のGRPも含んでいます。 また、QSP(WIDTH 16の1画面プログラム)で作ったプチコン3号/BIG両対応版はこちらにて公開しています。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0feIaGUYA 両者はほぼ同一のプログラムなのでBIGであえてこちらを選択する必要はないですが、QSPということで非常にコンパクトなプログラムであることはすぐに分かると思います。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
なお、表示サイズを大きくすればするほど処理は重くなります。 デフォサイズ(R=64)ではプチコン3号ではNew 3DSでも9fps程度の速度でしたが、プチコンBIGでは30fps以上で動作します。 そんな高速なBIGでさえR=192(起動時にXボタン+Yボタン)だと4fps弱の速度しか出ません。 テクスチャは512x512のサイズなので大きく表示しても十分キレイです。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
実はこのプログラムはテクスチャサイズは自由に変えることができます。 デフォルトでは512x512のテクスチャになっていますが、変数U(横方向のサイズ)、V(縦方向のサイズ)の設定値を変えることで様々な大きさのテクスチャに対応できます。 U=320、V=240に設定して読み込むファイル名をフォルダに同梱の"KIRBY"に変更するとピンクの球体をぐりぐり回転が可能になります。 要するに球体に自由なテクスチャを貼り付けて回転できるプログラムなので地球儀だけではなくいろいろなテクスチャ画像を作りスライドパッドで回転させて楽しんでください。
2そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
このプログラムは私が考えたオリジナルの表示アルゴリズムによって可能な限り高速化しているためプログラムリストを見ても分からないかもしれません。オリジナルといっても説明されたら「あっそうか!」と思えるレベルで高校数学を理解している人ならば誰でも思いつきそうな方法ですが。 ちなみに簡単な動作原理等は上記のプチコン3号版のトピックスでざっくりと書いているので参考にしてみてください。
1そうだね
プレイ済み
返信[6]
親投稿
PianoRider pianorider
おちゃめさん、はじめまして^^ さっそく拝見させていただきました。キレイな画像で、スムースにクルクルと地球儀が動かせて感動いたしました♪ 私は始めたばかりの初心者ですが、いつかはこのような素敵なプログラムが組めるようになりたいです。おちゃめさんの次の投稿も期待しております☆
1そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
プレイしていただきありがとうございます。 見た目がキレイなのは大きなテクスチャを縮小表示しているからですが、これだけ小さいプログラムでもそれが高速に行えるというのがプログラムの面白さでもあります。 同じ処理を行うプログラムでも数倍~数10倍に変わることは良くあることです。 そのため私はほとんど小規模作品しか作ってないのですが・・・。 プログラムというのはどのようなやり方でも「思ったように動く」限りは正解です。 ただし、この「思ったように動く」というのが初心者にとっては難しいかもしれません。 やりたい処理を具体的に考えてそれを「プチコンBIGが理解できる言葉(=プログラム)」で記述するだけなのでまずは自分が何をやりたいのかを詳しく具体的に考えられることが重要になると思います。 「思ったように動く」ものが作れるようになるとプログラミングは非常に楽しいですよ。
3そうだね
プレイ済み
返信[8]
親投稿
はる HARUHI-0913
凄いですね! カービィの方もぐりぐり動きました。 旧3DSは大体R=16が丁度いいです。 プチコンBIGは大体R=64が丁度いいです。
1そうだね
未プレイ
返信[9]
親投稿
きゃっきゃ INUNEKO238
いつもいつもいつも・・・・・・ 凄い!!
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
はるさんへ 高速化というとループ回数を減らしたり演算ステップ数を減らすというのが重要となります。 ループ回数においてはこのプログラムではR=64の時に12844回となっていてこれは512x512のテクスチャを元に素直に変換した場合の262144回と比べると20分の1以下のループ回数になっているもののこれは上下をまとめて演算を行うことで半分に減らすことができます。 とはいえ、ループ回数が半分になっても演算ステップ数がそれほど変わらないので速度は思ったほど向上はしません。 演算ステップ数は「このプログラムが最小」と言いたいところですが、実はループの内側にあるU/2/PI()というのはループ内で変化しない値であるため例えばこれをN=U/2/PI()と置き換えてループ外に出してやるといとも簡単に1割程度の高速化が可能なのです。 (下記に続く)
1そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
(続き) というわけでこのプログラムにもまだ高速化の余地が残されているのですが、このプログラムの最大の特徴はループ1回あたり配列の読み出しが1回のみということです。配列はプチコン3号やBIGにおいて非常に大きなボトルネックになっていてこれを減らせることがこのプログラムの最大の特色となっています。 回転だからといって普通に回転行列を使ってしまうと配列を使った演算を多数行う必要がありそれが低速化へと繋がります。 普通に計算すると12844回のループ回数が必要ということは12844頂点の3Dモデルの回転と同じだけの演算量となります。これは立方体を1606個回転させるのと同じだけの演算量になるため実際にプログラムを作らなくても非常に重い処理であることが簡単に分かることでしょう。 (下記に続く)
0そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
(続き) とはいえ、このジオメトリ演算はARYOP命令を使うことで高速化が可能です。 プチコンBIGには高度サウンドユニット相当の命令が標準搭載されているのでARYOP命令を使うというのもありですが、ARYOP命令を使っても最低でも1ループ当たり1回の配列読み出しは必要になるためこのプログラムから大きな高速化(ARYOP命令を使うだけで数倍になるような高速化)は難しいと思います。 興味があればこのプログラムからどれだけ高速化が可能かに挑戦しても良いかもしれませんね。 うまくいけば2倍くらいの高速化も可能かもしれません。 プチコン3号版はQSPに収めるためそこまでの高速化はできませんでしたが、このBIG対応版は基本的にプチコン3号版と同一のアルゴリズムであるため高速化の余地は残されています。
0そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
きゃっきゃさんへ ありがとうございます。 プログラムそのものはシンプルなものですが、テクスチャのお陰でかなり映えるものになったと思います。 プチコンmkIIでは簡易地球儀はデフォ設定(R=64)で0.4fpsしか出ませんでした。 「R=64の地球儀をなめらか(30fps以上)に回転させる」というのがプチコンBIGでようやく実現可能になったわけであり、実際に実行してみれば旧3DS(2DS)のプチコン3号(2fps)、New3DSのプチコン3号(9fps)、プチコンBIG(33fps)の差は一目瞭然で「現時点でプチコンBIGの性能を最も体感できるプログラム」になっていると思います。
0そうだね
プレイ済み
返信[14]
親投稿
きゃっきゃ INUNEKO238
そんなにBIGは速かったのか! まだたいして触って無いんですがネット対戦ってできるんです?
0そうだね
プレイ済み
返信[15]
親投稿
おちゃめ ochame_nako
きゃっきゃさんへ 残念ながらプチコンBIGにはネット対戦のための機能は備わっていません。とはいえ、Miiverseやチャット、twitter等のテキスト投稿が可能なWebサービスを使えばアクション系のリアルタイムな対戦ではなくオセロみたいなテーブルゲームであれば「すごく面倒なネット対戦」は可能です。 要するに現状の盤面の状況や自分の手札(トランプゲーム等の場合)を暗号化してそれを文字列で表現して投稿します。 相手はその文字列を入力して復号化して自分のプチコンBIGで相手の状況を再現というものです。 オセロのような完全情報ゲームであればこの方法で問題はないですが、トランプゲームのようなものはプログラムを一旦停止させて変数の中身を見てしまうと相手の手札がバレバレになるのがネックですね。
1そうだね
プレイ済み
返信[16]
親投稿
きゃっきゃ INUNEKO238
ネットはないんですねぇ。 言われてる変数は停止後にダイレクトモードで呼び出しちゃうって事ですかね。 それじゃソース見れないようにしても意味ないですもんねぇ。 でも、個人製作のものにそこまでやる人はそうそう居ないでしょうw
0そうだね
プレイ済み