レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
おちゃめくらぶ掲示板
-
プチコン3号 ver.3.1.0がついに公開!
プチコン3号のver.3.1.0にアップデートファイルが公開されたにょ。
バグ修正目的としてすでに公開されていたver.3.0.2と異なるのは新機能(新命令)が使用
可能になったということにょ。
http://smileboom.com/special/ptcm3/debug/update
加わったのは下記の命令、関数、システム変数にょ。
(1)CLASSIFY()関数
(2)GTRI命令
(3)GPUTCHR命令
(4)BGCOLOR命令
(5)システム変数HARDWARE
(1)CLASSIFY関数はinf、-infならば1、nan、-nanならば2、それ以外の数値は0を返す
関数にょ。
プチコン3号では実数型はPOW(2,1024)以上でinfになり整数型でPOW(2,31)以上になった時の
ようにOverflowにはならないにょ。
ただし、infはエラーでない反面一旦infになると正しい演算ができなくなるという問題が
発生するにょ。
あとinf-infはnanになるけどnanになってしまうとこれも正しい演算ができないにょ。
したがって普通はinfやnanになったらそれを判断はできないのでCLASSIFY関数でそれが
できるようになったというわけにょ。
ただし、これは現行でも似たような関数を作ることは可能にょ。
infは2倍してもinfのままなので0以外の数字で2倍して結果が変わらないならばinf(もしくは
-inf)と判断ができるにょ。
また、nanは符号を買えても大小関係が変わらないため0以外でそうなればnanもしくは-nanで
判断が可能にょ。
自作関数で対応できるといってもやはりデフォルトで用意されるメリットは十分にあるにょ。
(2)GTRIとは何かというと塗りつぶし三角形を描画する命令にょ。
要するにGFILLの三角形バージョンにょ。(プチコン3号発売当初は命令一覧表に記載されて
いたため楽しみにしていたけど発売時には削られた命令であり今回それが追加命令として
実装された)
これが最も有効活用できるのは3Dポリゴン表示をする場合だと思われるにょ。
といっても、塗りつぶし三角形は現状でもGLINEで実現が可能にょ。
私はmkIIで塗りつぶし三角形描画ルーチンを作りそれを元にプチコンmkIIとしては最速の
ポリゴン表示プログラムを作ったにょ。
◎塗りつぶし三角形描画ルーチン
http://ochameclub.web.fc2.com/petitcom/tips/routine.htm#triangle
◎プチコン用 ポリゴン表示プログラム
http://ochameclub.web.fc2.com/petitcom/polygon.htm
上記のmkII用の塗りつぶし三角形描画ルーチンをプチコン3号にベタ移植したものは
プチコン3号まとめwikiで公開しているにょ。(移植者:yuy@さん)
◎三角形描画プログラム
http://wiki.hosiken.jp/petc3gou/?Toukou%2F%BB%B0%B3%D1%B7%C1%C9%C1%B2%E8%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0
ベタ移植とはいえプチコン3号は3DSアプリということでDSiからだとハードウェアの進化の分
だけ高速になっているしNew 3DSは旧3DSと比べて3〜4倍高速化されているためmkIIと比べると
New 3DSで実行時には20倍以上高速化されているにょ。
プチコン3号ならば自作関数定義によってGTRIと全く同じ記述が可能になるけれどポリゴン
ゲームなどで活用するならば速度が非常に重要であるためデフォルトで命令として備わって
いるというのは非常に大きいにょ。
では、どの程度の速度なのかを実際に調べてみたにょ。
◎三角形描画速度(1秒間の描画回数)
表示サイズ GTRI使用 3号 mkII 3号との速度比 mkIIとの速度比
64x64 27076 5118 253 5.3倍 107倍
128x96 20560 3601 163 5.7倍 126倍
200x120 15615 2892 126 5.4倍 124倍
256x192 11088 2000 84 5.5倍 132倍
400x240 6947 1505 N/A 4.6倍 N/A
※プチコン3号での速度はNew3DS使用時のもの
画面上の指定範囲にランダムな3点を指定して描画したのだけど表示サイズというのは
その範囲の大きさのことにょ。
プチコン3号ver.3.1.0で加わったGTRI、上記のプチコン3号移植版の三角形描画プログラム、
私がmkIIで作った塗りつぶし三角形描画ルーチンの3つにおいて表示サイズを変えながら
1秒間の描画回数(1秒間の表示ポリゴン数)はGTRI命令を使用時にはプチコン3号移植版の
プログラムと比べて5.5倍前後高速となっているにょ。
これはmkIIで作ったものと比べると120倍前後高速にょ。
面積当たりの速度がGFILLと同程度ならば10倍速以上になるため5.5倍速というのはやや
物足りない感じだけどそれでもポリゴン表示プログラムにおいて描画がボトルネックに
なっているため高速化が期待できるにょ。
ポリゴン表示プログラムはプチコン3号では作ってないのだけどmkIIからの速度向上率を
考えればGTRI命令を使用時の速度は概ね推測できるにょ。
◎ポリゴン表示プログラムの速度
モデル 演算表示fps 演算fps 表示の割合 予想速度向上率 GTRI使用時fps
立方体 18.9fps 45.2fps 58.2% 1.91倍速 794fps
トライフォース 12.4fps 30.9fps 59.9% 1.96倍速 535fps
24面体 13.5fps 25.6fps 47.2% 1.63倍速 484fps
アンドアジェネシス 1.6fps 3.9fps 58.9% 1.93倍速 68fps
上記はmkII版のポリゴン表示プログラムにおけるfpsにょ。
演算表示速度というのはそのポリゴン表示プログラムにおける処理速度にょ。
演算fpsというのはそれから描画部分を省略した場合の速度(ジオメトリ演算、フラット
シェーディング処理、Zソートにかかる速度)で表示の割合というのは全体の処理速度に
おける三角形描画処理の割合を示しているにょ。
モデルによって異なるけど描画だけで概ね6割近くの時間がかかっているためこれが
5.5倍になれば全体の速度も2倍近く高速化されるにょ。
それを元に各モデルを私がmkIIで作ったポリゴン表示プログラムをベタ移植して、表示
部分のみをGTRIにした場合の予想速度が「GTRI使用時fps」にょ。
カクカクだったアンドアジェネシスも68fps程度まで高速化が可能になると予想されるにょ。
(mkII→New3DSの速度向上率は22倍で計算した場合)
24面体で見てみると私がmkIIで作ったプログラムでも13.5fpsなので実効で324ポリゴン/秒と
なっているにょ。
モデルによって異なるけど実効速度で最大300ポリゴン/秒程度は出ているにょ。
これは1秒間に表示できるポリゴン数よりも多いけど陰影消去を行い裏面となっている
ポリゴンは描画しないことで高速化をしているためにょ。
GTRI使用時のプチコン3号だと484fpsということは実効で11616ポリゴン/秒となるにょ。
セガのハードであるSuper 32xが最大20000ポリゴン/秒なのでそれには劣るものの簡単な
ポリゴンゲームは十分に作れるくらいの速度出ているにょ。
30fpsで描画して1フレームあたり387ポリゴンで当たり判定その他に処理時間の半分が
取られたとして最大1フレームあたり150ポリゴンくらいは使用可能にょ。
ちなみに私がモデリングしたアンドアジェネシスが152ポリゴンなので単体ならば
これくらいのモデルが登場するゲームも30fpsで作れるというわけにょ。(15fpsが
許容できれば1フレームあたりのポリゴン数は2倍以上に増やせる)
さて、GTRIでZ座標が指定できないのは残念に思っている人もいると思うにょ。
これはプチコン3号ではGRP面は面単位でしかZ値を指定できないのでどうにもならないにょ。
というのも3DSにネイティブにGRP面というものが存在するわけではなく512x512の平面
ポリゴンに描画したものをGRP面として使用しているだけにょ。
1つのポリゴンなのでZ値は付けられないにょ。(回転ならばできそうだけど現時点では
サポートされてないので自前で作ったのが私の2軸回転プログラム)
もしも、3点のX,Y,Zを指定できる命令にするならばプチコン3号の仕様そのものを大きく
変える必要があるにょ。
PS2用ソフトの「BASIC STUDIO」では塗りつぶし三角形描画にX,Y,Z座標が指定可能だった
けれどその代わり最大で1000個までという制限があったにょ。
実際に使ってみれば分かるけどGグラフィック命令の使い勝手は制限がないプチコンの方が
BASIC STUDIOより圧倒的に良いにょ。
現状のプチコン3号でZ値を指定したいというのであればスプライトで三角形を描画するという
方法があるにょ。
プチコン3号ではスプライトの縦横自由拡大ができるので2つの直角三角形を組み合わせる
ことで自由な三角形の描画が可能になるにょ。
この方法だと最大でも250個の三角形しか描画できないけど1秒間に9000個の表示が可能に
なるにょ。(MAXの250個を使用した場合で表示だけならば30fps以上の速度が出せる)
さすがにGTRIと比べると遅いけどそれでも大きくなってもほとんど速度が落ちないため
GLINEを使った塗りつぶし三角形プログラムと比べると3〜5倍の高速化が可能にょ。
これでZ値と半透明処理ができるのならば使い方によっては悪くない選択にょ。(ただし、
バラバラのZ座標を指定できないためポリゴンの立体視はできずあくまでZソート代わりと
して使用できる程度)
(3)GPUTCHRは初代プチコンおよびmkIIでは地味に支持されてきた命令にょ。
GRP面に文字を表示するというものだけどドット単位の座標で表示できたりとか拡大表示が
できたりとかでコンソールにおける文字表示との差別化が出来ていたからね。
しかし、プチコン3号では命令として搭載されなかったにょ。
もちろん、文字の拡大表示ならばスプライトやBGにはアルファベットと数字や記号が用意
されているためそれを使って自作関数で実現するという方法もあるにょ。
実際私もBG面に任意の文字列を表示する拡大縮小対応のBGPUTCHR関数を作ったにょ。
プチコン3号で使えるすべての文字を使用したいというのならばプチコン3号のフォントが
記録されているGRPFリソースを使うという方法があるにょ。
これは一旦ロードした後にファイル名を付けて保存したら単なるGRPファイルになるため
そこからGCOPY、GSAVE、GLOADなどの命令を使って文字単位でGRP面に描画は可能になるにょ。
ただし、英数字以外は並びがバラバラであり任意の文字列を描画使用とするならば対応する
テーブルを作らなくてはならないという問題があるにょ。
またGRP面に描画する場合には任意の拡大縮小は命令としては存在しないため自前でドット
単位で拡大や縮小を行う必要があるにょ。
その煩わしさを一気に解消できるのがGPUTCHR命令にょ。
これを使えば任意の文字列を簡単に表示できるにょ。
mkII版のGPUTCHRは文字コードを指定して1文字ずつ描画する命令だったので任意の文字列を
表示するためにはFOR〜NEXTを使ったサブルーチンを作る必要があったにょ。
また、GPUTCHRでは拡大表示ができるけどmkII版は縦横同じ倍率のみで1倍、2倍、4倍、8倍
のみしか選択できなかったのがスプライトと同様に縦横自由な倍率で指定できるように
なったのはうれしいにょ。
あと文字色もGRP命令なので当然ながらRGBの32bit論理色に対応しているにょ。
コンソールのCOLOR命令は16色固定でそれ以外の色に変える手段が用意されてないため任意の
文字色で表示できるというのは大きなメリットだと思われるにょ。
というわけで問題は速度がどのように変わったのかを調べてみたにょ。
◎GPUTCHR速度(10000回の実行時間)
プチコン3号 プチコンmkII mkIIと比べて
1x1倍 1文字表示 3.7フレーム 85フレーム 23倍速
5文字表示 13.4フレーム 787フレーム 55倍速
4x4倍 1文字表示 10.3フレーム 271フレーム 26倍速
5文字表示 45.7フレーム 1809フレーム 40倍速
※プチコン3号はNew3DSで実行時のもの
デフォルトの1x1倍(8ドット角)で文字「A」を表示した場合の10000回あたりの実効時間を
見てみると同じGPUTCHR命令でもプチコン3号の方が圧倒的に速い(23倍速)し、4x4倍に拡大
すれば速度差はさらに大きく(26倍速)なっているにょ。
これが5文字表示(「ABCDE」という文字列)を行った場合には速度差がさらに広がっている
けれどなぜかというと上記のようにはmkIIのGPUTCHRでは任意の文字列を表示する機能がなく
FOR〜NEXTでループさせる必要があり、その分だけ遅くなっているためにょ。
GPUTCHRはmkIIでは重い命令の1つだったけどここまで高速ならば気軽に使えそうにょ。
(4)BGCOLOR命令はSPCOLORがあるならばBGCOLORが欲しいということで実装された命令にょ。
かなり期待が大きかった命令だけど実装されている機能はBG面全体にエフェクトをかけると
いう命令でスプライトのように表示キャラ単位で色を変える命令ではないにょ。
全体の色を変えるならば現時点でもスプライトの半透明機能を使えばいくらでも可能にょ。
スプライトのSPCOLOR命令を強力で乗算でしか色を変えられないもののその透過率は自由に
変えることができるにょ。
そのためエフェクトだけではなくスプライトそのものを半透明にするということが可能に
なるにょ。
そういったものをBGCOLORで想像していたから残念に思うけどこれはこれでエフェクト用に
スプライトを1つ使わずに済むということを考えれば歓迎すべき命令にょ。
(5)システム変数HARDWAREはプチコン3号をNew 3DSで実行している場合は1、旧3Dで実行して
いる場合は0の値を取るにょ。
New3DSは旧3DSと比べて3〜4倍速いためゲームを旧3DSでも動くように作った場合はNew3DSは
速度をもてあそぶことになるにょ。
旧3DSでまともに遊べるゲームならばNew3DSで実行時にはフレームレートを上げるとか画面の
クオリティを上げるということを行えるにょ。
逆にNew3DSでないとまともにプレイできないゲームの場合は旧3DSで実行時には警告を出したり
とかが可能になるにょ。
非常に便利なものとはいえ、これはプチコン3号発売当初ver.3.0.0の段階で搭載されている
のが妥当なものだと思われるにょ。
New3DSと旧3DSの速度は大きく異なるというのは発売前から分かっていたことだし、プチコン
3号はNew3DS対応を公式に謳っているわけだからね。
といっても、その機種判別は自作関数で実現可能にょ。
単純に速度を比較して一定以上の速度であればNew3DS、そうでないならば旧3DSという判断を
行えば良いにょ。
これは簡単に実現ができるためプチコン3号が発売された日に機種判別を行うNew3DS関数を
作ったにょ。
http://ochameclub.web.fc2.com/petitcom3/about.htm#new3ds
ver.3.1.0でHARDWAREが実装されたのでNEW3DS関数は不要になったにょ(笑)
さて、ver.3.1.0にバージョンアップしたことでver.3.0.2からどの程度速度が変わったのかを
見てみるにょ。
比較に使用するのは公式ベンチ(SYSフォルダのEX8TECDEMOを実行してOTHERから選択)である
「SPEED TEST」にょ。
◎SPEED TEST
ver.3.1.0 ver.3.0.2
たしざん 512804 ← 469342 9.2%アップ
PRINTぶん 143829 ← 135141 6.4%アップ
スプライトいどう 257266 ← 246157 4.5%アップ
ラインびょうが 60896 ← 66232 8.1%ダウン
SPEED TESTのmkIIやプチコン3号の初期版(ver.3.0.0)での実行結果はこちらを参照
http://ochameclub.web.fc2.com/petitcom3/about.htm#1
数%の測定誤差があるとはいえたしざんは今回のバージョンアップで若干高速化されていて
GLINEは若干ダウンしているといえそうにょ。
誤差程度とはいえ全体的には高速化傾向があるにょ。
ver.3.0.0からver.3.0.2は若干低速化傾向にあったPRINTとスプライトは今回のバージョン
アップで初期バージョン並に高速化されたという感じにょ。
今回のバージョンアップではさらにいろいろな改善点があるにょ。
命令に新たに加わった機能は省略するとして「TOP MENU」が変わったのが大きいにょ。
従来から項目数が増えて「Webプチコン入門」ボタンと「サンプルを見る」ボタンが追加
されたにょ。
プチコン3号では従来と比べて初心者が増えたイメージがあり、Miiverseでも頻繁に
「買ったけど何をしたらいいのか分からない」という質問が出ているにょ。
それは親切な人がその都度教えてあげているけれど公式の対応にも原因があったにょ。
というのも、プチコン3号のバグ修正などに手を取られて公式サイトのプチコン3号の初心者
講座がずっと工事中だったからね。
また、そういう初心者講座があるという存在さえ気づいてない初心者の人もいるにょ。
そういう人にとってはTOP MENUに専用ボタン(公式初心者講座のWebサイトへのリンク)が
用意されたというのは非常に大きいにょ。
(スマイルブーム公式)プチコン3号初心者講座
http://smileboom.com/special/ptcm3/beginner/
今回更新されたのはその講座でプログラミングに入る前の段階でプチコン3号を買ったけど
何をしたらいいのか分からないという人に宛てたものにょ。
http://smileboom.com/special/ptcm3/beginner/intro/
これが発売された当初にあれば買ったけど何をしたらいいのか分からないという質問をする
人は激減したのではないかと思われるにょ。
私が書いたプチコン3号入門講座でも同じように最初に何をしたら良いのかということを
書いているにょ。
プチコン3号入門講座「まず最初に何から始めたらいいの?」
http://ochameclub.web.fc2.com/petitcom3/lecture/first.htm
これはver.3.1.0ではメニュー画面が変わったので近いうちに対応させる予定にょ。
3月6日発売予定だったプチコン3号の公式ガイドブックが3月20日に発売延期になったのも
ver.3.1.0に対応させるためみたいにょ。
ニンテンドー3DSでプログラミング! プチコン3号 -SMILE BASIC- 公式ガイドブック
http://www.amazon.co.jp//dp/4198639272
細かい部分で仕様変更があるためver.3.0.2ベースで書いていたらその違いで初心者は
悩んでしまうからね。
私のプチコン3号入門講座はそれほど影響はないと思うけど内容を精査してver.3.1.0で
問題がないかサンプルプログラムなどをもう一度チェックする予定にょ。
週1回更新予定の入門講座も時間の都合でなかなか更新ができてないので私の入門講座が
完成する前に公式の初心者講座が完成しそうな感じにょ。
とはいえ、公式の初心者講座とは差別化するため私の入門講座はとりあえず多くの情報を
掲載しているにょ。
いろいろな使い方を提示しておいてその中から必要なものは何度も繰り返して強調して
書くことで初心者でも印象に残るようにしているにょ。(「条件判断では比較演算は
省略しないようにしよう」など)
プチコン3号 入門講座
http://ochameclub.web.fc2.com/petitcom3/lecture/
さて、今回の更新は喜ばしいことばかりかというとそうではなく一部のユーザーからはあまり
喜ばれてない部分もあるにょ。
それはスプライトの仕様が厳格化されてSPSETされてないスプライトを使用した場合にエラーを
返すようになったためにょ。
mkIIまではそれが普通だったためmkIIから継続のユーザーならば普通にSPSETを最初に使用
していたと思うけどプチコン3号では新規ユーザーが多いためかスプライト使用プログラムで
ver.3.1.0では動かないというものが多発しているにょ。(mkIIでも仕様変更で今まで作った
プログラムが動かなくなったということもあったので別に驚きはしないけど)
これはver.3.1.0のリリースが案内された時点で分かっていたのでそれ以降に作ったもの
ならば問題ないけど案内されたのが2月27日だからね。
こればかりはどうしようもないので制作者が個別で修正するのを待つしかないにょ。
もちろん、それが待てない場合は自らの手で修正するという方法もあるにょ。
制作者が対応を諦めた場合はプチコン3号ではサーバで公開した時点で改造などの二次使用は
認めたことになり自由に改造を行えるため元作品の著作者、改造作品であることを十分に
アピールした上で改造した作品を発表することはできるにょ。
二次使用がOKといっても著作権を放棄したわけではないので「これは自分で作ったゲームだ」
と発表してはならないにょ。
ということで、ver.3.1.0がリリースされてようやくここからがプチコン3号の真の出発になる
といえそうにょ。
数ヶ月以内に発売されるであろう海外版もこのver3.1.0がベースになると思われるにょ。
機能の追加等は随時行うみたいなので今後の展開も楽しみにょ。
mkIIから大幅に機能が低下したTALK命令も最低でもピッチなどには対応させていくらしいにょ。
|
|
|
掲示板管理者へ連絡
無料レンタル掲示板