プチコン3号について

 「プチコン3号」(正式名称「プチコン3号 SmileBASIC」)はBASIC言語「SmileBASIC」でゲームだけではなく様々なソフトを作ることができるアプリです。BASIC言語とは80年代の8ビットパソコンの全盛時には標準搭載されていたプログラミング言語であり、その名の通り初心者向けに作られた言語です。
 80年代にBASICを使っていた人だと「BASICだと遅い」というイメージがあるかもしれないですが、ニンテンドー3DSは当時のパソコンよりも桁違いに高性能なのに加えて実行時に仮想マシンコードへと変換することで処理速度の向上を行っているため当時のパソコンとは比較にならないほどの処理速度を実現しています。前作のDSiウェア「プチコンmkII」でさえ80年代初頭の8ビットパソコン並の性能であるポケコンと比べて100倍程度の性能となっているくらいです。(詳しくはこちらを参照)

 プチコン3号では前作のmkIIと同じくスプライトやBGを使い2Dゲームが簡単に作れるようになっています。(ポリゴン表示機能はありませんが、自分でポリゴン表示プログラムを作れば簡単なポリゴンゲームならば作れるくらいの性能はある)
 また3DSの機能をふんだんに使えるようになっています。3DSといえば「裸眼立体視」ですが、プチコン3号ではZ座標の値を設定するだけでそれが可能になっています。コンソール表示(テキスト文字表示)でも立体視は可能であり、ここまで簡単に立体視を使ったゲームが作れる環境は他に例はありません。
 3DSに標準で備わっているモーションセンサーやジャイロセンサーなどを使うことも可能で旧3DSではオプションになっている拡張スライドパッドにも対応しています。

 BASICは初心者でも理解しやすいプログラミング言語なのですが、それも「プログラミング言語の中において」というだけなので「メイドイン俺」や「RPGツクール」などのゲーム作成ソフトと比べるとハードルはかなり高いです。ただし、それも最初に覚えなければならないことがあるというだけなのでそれさえ覚えてしまえば簡単です。
 昔とは異なり、今はインターネットを使い分からないことを調べたり分からないことを人に聞いたり簡単にできます。プチコンならばTwitterで「プチコン」(外部リンク)「#petitcom」(外部リンク)で検索したり、Miiverseのプチコン3号コミュニティ(外部リンク)で尋ねたりすると良いでしょう。また、プチコン3号まとめwiki(外部リンク)でもそのような質問をするスレッドがあるし、当サイト(おちゃめくらぶ)でも私が答えられる範囲内のものであれば答えることも可能です。

 ぜひ、プチコン3号を使って「自分でプログラムを作る楽しみ」を覚えてください

 ※本格的な開発環境と思ってプチコン3号を購入すると制限の多さが気になるかもしれませんが、その制限もある意味楽しむことができるため実際に使ってみれば制限はそれほど問題にならないかもしれません。


プチコン3号はNew 3DSに対応



 プチコン3号はNew 3DSにも対応しています。New 3DSに標準搭載のCスティックやZL・ZRボタンも拡張スライドパッドと同等の機能として使用することが可能です。
 New 3DSでは旧3DSと比べてCPU性能が大幅にアップしていますが、プチコン3号ではそのアップしたCPU性能を引き出すことも可能です。
 では、実際にどの程度アップしているのかをベンチマークテストで見てみましょう。ベンチマークソフトはプチコン3号に標準で内蔵されているプログラム「EX8TECDEMO」です。これは「TOP MENU」から「作品を見る」で「SYS」フォルダを選択して「EX8TECDEMO」を実行すれば良いです。この「EX8TECDEMO」の実行時の項目から「OTHER」を選びそこにある「SPEED TEST」を使って比較してみます。

◎旧3DSとNew3DSとの速度比較
テスト内容
旧3DSでの結果
New3DSでの結果
New3DSでの速度向上率
たしざん
155888
514264
3.30倍
PRINTぶん
22355
85423
3.82倍
スプライトいどう
71837
261916
3.64倍
ラインびょうが
18734
68016
3.63倍
※このスコアはSPEED TESTによる1秒間の実行回数を測定したもので数値が大きい方が高速になっている。
 この値は初期バージョン(ver.3.0.0)の結果です。
 1秒の計測には最大1/60秒(1フレーム)の誤差があるため測定するたびに数値はわずかに上下する。

 この結果を見るとNew 3DSでプチコン3号を実行すると旧3DSより3.3〜3.8倍程度高速に動作すると言えそうです。
 これだと旧3DSで普通に遊べるゲームがNew 3DSでプレイしたら速すぎて遊べないようになると思うかもしれませんが、プチコンにはVSYNC命令がありこれを使っていれば1/60秒ごとの表示のタイミングに合わせて実行してくれるためNew 3DSで実行時でも旧3DSで実行するのと同じ速度が維持できるため問題ありません。難しく考えず「プログラム内にVSYNCというのを書けばいい」と覚えておくだけでいいです。
 逆にNew 3DSで普通に遊べるゲームがVSYNCを入れておけば旧3DSでも普通に遊べるかというとこちらはそうとも限りません。速いマシンで実行するならばタイミングをとって遅いマシンに合わせることは可能であるのに対して遅いマシンで速く動作させることはできないためです。(100km/hで走ることが可能な自動車が30km/hで走っている原付バイクに速度を合わせることが可能だけど30km/hしか出せない原付バイクが100km/hの自動車に速度を合わせることができないのと同じ)
 したがって、旧3DSで十分な速度が出せないようなゲームは旧3DSで実行時にはフレームレートを落としたり(New 3DSだと60fpsで動作させて、旧3DSだと30fpsや15fpsで動作させる)、フレームスキップを行ったり(表示を行うのを数回に1回に減らす)、描画処理そのものを減らすなどの方法を採る必要があります。

 その際にはNew 3DSで実行しているのか旧3DSで実行しているのかをプチコン3号上で判別することはできませんが、上記のように処理速度が異なるというのを利用すれば「New 3DS並の速度で動作しているならばNew 3DSで動作している」と判断することが可能になります。それを行うのが私が作ったNEW3DS()関数です。

◎NEW3DS()関数
DEF NEW3DS()
 M=MAINCNT
 FOR I=1TO 25000:NEXT
 RETURN MAINCNT-M<3
END
※この関数はNew 3DSと旧3DSの速度差を利用したものです。
 本来ならば2万回ループではなく3万回ループでもTrueになるのですが、100%判別できるようにするためマージンをとって2万回ループにしています。(関数処理のオーバーヘッドを考慮している)
 初出版は先頭行で実行した際には問題なかったけどプログラム途中で実行した場合にはマージンが足らず稀に誤動作をしてしまうため上記のリストではそれを修正しています。
 この関数は自由に使っていただいてOKです。

 このNEW3DS()がTrue(値が1)ならばNew 3DSで動作、False(値が0)ならば旧3DSで動作となります。New 3DSで動作させると快適だけど旧3DSでは処理落ちしてしまうようなゲームの場合はこの処理によって機種判別を行い上記のような改善方法によって旧3DSでも普通にプレイできるようにしておくのがオススメです。

◎NEW3DS()関数使用例
IF NEW3DS() THEN GOSUB @OLD3DS
※サブルーチン@OLD3DSにおいて旧3DSで動作させるときの設定を用意している場合。

 《 訂正 》
 ver.3.1.0でこのNEW3DS関数と同等の値を返すシステム変数HARDWAREが搭載されました。これによって、わざわざNEW3DS関数を使う必要は全く無くなりました。

 「こんなの難しそう」「旧3DS(New 3DS)しか持ってない」という人は自分がそのプログラムを作るのに使用した機種(「New 3DS」もしくは「旧3DS」)を明記しておけば良いでしょう。上記のように旧3DSで作ったゲームはちゃんとVSYNCを入れておけばNew 3DSでも普通にプレイできるためその場合に限り特に明示する必要はないかもしれません。(つまり、New 3DSでしか動作確認をしてない場合に限り「New 3DSのみで動作確認済み」という旨を記しておく必要がある)


プチコン3号はプチコンmkIIより大幅に性能向上



 前作のプチコンmkIIがDSiウェアであり、今作のプチコン3号が3DSアプリということで動作するハードウェアが異なるため大幅な性能向上が行われています。では、実際にどの程度の速度の違いがあるのかをまずは確かめてみましょう。
 比較に使ったのはNew 3DSと旧3DSの速度比較に使ったのと同じく「SPEED TEST」です。ただし、SPEED TESTはプチコン3号用のプログラムであり、そのままmkIIでリストを入力しても動作しません(プチコン3号は新規命令がたくさん追加されているし、既存の命令も使い方が変わっているものが多いため基本的に互換性はない)。そこで私がプチコンmkII用に移植してみました。(ファイル名「OCHASPDT」、QRコードはこちら

◎プチコンmkIIとプチコン3号との速度比較
テスト内容
mkIIでの結果
プチコン3号
旧3DSでの速度向上率
プチコン3号
New3DSでの速度向上率
たしざん
12703
12.27倍
40.48倍
PRINTぶん
3663
6.10倍
23.32倍
スプライトいどう
9650
7.44倍
27.14倍
ラインびょうが
5235
3.58倍
12.99倍
※mkIIは3号よりも画面解像度が小さいため「ラインびょうが」のスコアはわずかに有利になっている。

 この結果を見るとプチコン3号の速度は旧3DSで実行時にはmkIIと比べて3.5〜12倍程度(平均約7倍)、New 3DSで実行時にはmkIIと比べて13〜40倍程度(平均約26倍)高速になっていると言えそうです。単純に言えばmkIIでは3fpsしか出ないような激重ゲームがプチコン3号では旧3DSで実行時には20fps前後、New 3DSで実行時には60fps以上出るということです。

 速度面だけではなくmkIIではメモリ1MB、最大9999行だったのがプチコン3号ではメモリ8MB、最大999999行となったり、自作関数が使用できるなどのスペックアップやネットを使って簡単に作品公開が可能になりました。
 ただし、大幅にスペックアップされたのと引き替えにQRコードを使用してファイルのやりとりはできなくなったり、TALK命令においては音声合成エンジンの変更により細かい設定ができなくなるなどの機能削減になっている部分もあります。このように一部の面においてはプチコン3号が発売された今となってもmkIIが優位になっている部分もあるためまだまだmkIIも現役と言えるでしょう。(mkIIのeSHOPでの販売も当面継続される)

 あとプチコン3号は発売されたばかりということで現時点では多くの不具合を抱えています。ほとんどのものは回避方法があるのですが、それはある程度熟練者でないと難しいためプログラミング経験が全くない初心者ならばプチコン3号の前にmkIIから試してみるというのも良いかもしれません。mkIIならばすでにほとんどの不具合は解消されているし、公式サイトの初心者講座があるし、当サイトでも多くの講座やTipsを記載しているため初心者でも安心して使用することができます。→ 当サイトのプチコンコーナー(初代/mkII用)へ行く

※当初は不具合が多かったプチコン3号ですが、ver.3.2.1現在では不具合がほとんど改善されています。というわけで、不具合を理由にプチコン3号ではなくmkIIを選択する理由は無くなりました。


RETURN (プチコン3号のページにもどる) RETURN *MAIN (トップページにもどる)

inserted by FC2 system