したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

おちゃめくらぶ掲示板

2438御茶目菜子:2015/07/12(日) 01:33:10
プチコン3号でWIDTH 16の1画面プログラム(QSP)がブームに!
先日プチコン3号がver.3.2.0にアップグレードされたにょ。
ver.3.2.0になって、命令や機能が増えただけではなく新たにゴールド会員サービスも開始
されたにょ。
これは従来ならば無償(最初に購入したプチコン3号の代金に含まれるため厳密な意味での
無償ではない)で行われてきたサーバ対応の機能だけどアップロード(公開)可能な数量が
10個まで(1個あたり4MBまで)という制限から有償サービスによって100個まで(1個あたり
20MBまで)と大幅に拡大されるにょ。
30日で100円、90日で300円、180日で500円という金額が妥当かどうかはおいといて私を含め
有償でいいから増やして欲しいと思っていた人が相当数いたと思われるため歓迎したいにょ。
ちなみに日数が経過してゴールド会員を継続しない場合もファイルそのものが消えることが
ないため少しでも安く抑えたいというのならば「100円でできるだけたくさん公開しておいて
もうしばらくして公開できるファイルがたまったらまた100円を追加する」というやり方も
あるにょ。
これならば半年に1回公開ファイルを追加するならば年に200円で済むにょ。
私はこまめに公開したいので普通に180日で500円のプランを選択したけどね。

私のプチコン3号入門講座もver.3.2.0に対応したにょ。
http://ochameclub.web.fc2.com/petitcom3/lecture/
メニュー周りの変更や定数リテラルの対応などにょ。
ver.3.2.0対応のみではなく分かりにくいと思っていた部分や説明不足と思っていた部分を
さらに修正したり、追記したりしたにょ。
そのため初出とは大幅な変更が加えられているにょ。
ボタン入力や条件判断などに関してはこれ以上詳しく書くことはできないというレベルまで
詳しく書いているにょ。
未見の方はぜひ見て欲しいにょ。
これでも分からない部分があればさらにそれについての解説を書き加えていくにょ。
それ以前に新しい項目を加えないといけないけど既存のページの完成度がどんどん高くなって
いっているため追加項目もそれに合わせるとなればハードルが高くなってしまう(相当に
詳しい解説を書く必要がある)ため困っているにょ。
あと、スプライトに関してはまだ私自身がプチコン3号では完全に使いこなしてないため
どのように解説していくのかという方向性を探っている段階なのでもうしばらく時間が
かかりそうにょ。

さて、ver.3.2.0では多くの命令が追加されたけどその中で私が最も活用しているのが
WIDTH命令にょ。
この命令は昔からPCを使っている人にとっては一部の人にはおなじみの命令で画面の広さを
変える命令にょ。
端的に言えば文字サイズを変える命令にょ。
プチコン3号では、WIDTH 8とWIDTH 16の2種類が選択できるにょ。
これは、横8文字と16文字・・・ではなくフォントの大きさが8ドットと16ドットを選択を
可能にするものにょ。
プチコン3号では上画面はコンソールでは50文字x30行という文字数を表示可能だけどこれが
WIDTH 16ならば25文字×15行になるにょ。
これはコンソールでアクションゲームなどを作る場合に負担を減らすことが可能になるにょ。
画面の情報量が増えれば増えるほどそれに似合った表示が必要になるからね。
このWIDTH命令はEDITモード(編集画面)にも働くにょ。(EDITモードでは46文字x29行から
21文字x14行へと変わる)
つまり、編集画面の文字サイズも大きくなるということにょ。
これによって、標準の文字サイズでは小さくて見辛いという方もプチコン3号を気軽に楽しめる
ようになるにょ。

どちらかというと年配向けの補助機能ともいえるWIDTH 16だけどそれ以外にもメリットが
あるにょ。
それは、1画面プログラムを作る際に文字数が減る分だけ制作時の負担が減らせるという
ことにょ。
プチコン3号の1画面プログラムはプチコン関係のコミュニティ内では「OSP」と呼ばれることも
あるけどこのWIDTH 16の1画面プログラムは「QSP」と呼ばれているにょ。
これは、標準の4分の1くらいの画面サイズに収まっているためにょ。

詳しくはおちゃめくらぶの用語事典「おちゃめくらぶ用語の基礎知識」のQSPの項目を参照
http://ochameclub.web.fc2.com/ochamewords.htm#qsp

要はWIDTH 16の1画面プログラムにすぎないのだけどこのお手軽さがウケたためか私を含めて
多くの人がQSPを発表しているにょ。(プチコン関係のコミュニティ内では「QSP」という
呼び方が一般的だけどあくまで「1画面プログラム」であるため「1画面プログラム QUARTER」
が当サイト内における正式な名称となっていてファイル名もその略号である1GQ_で始まって
いる)
Miiverseでは本体のスクリーンショットを1枚添付可能なのだけどこの機能を使えば公開キーを
取得してなくても公開可能というのが1画面プログラムの良い部分にょ。
「1画面プログラム」と一言で言っても人によって「自分内ルール」が異なるため発表されて
いるすべての作品が同じレギュレーションで作られているとは限らないにょ。

私の1画面プログラム(QSPを含む)のレギュレーションはこんな感じにょ。
http://ochameclub.web.fc2.com/ochamewords.htm#1gamen_reg


というわけで、私が作ったQSPをここで公開してみるにょ。(まだサイト上で1画面プログラム
コーナーが出来てないためMiiverseへのリンク)

◎PETIT 100M QSP
https://miiverse.nintendo.net/posts/AYIHAAAEAABEVRTpSMkO8w

これはごくありふれた100m走ゲームにょ。(AボタンとBボタンを交互に押す判定は私が作る
100m走ゲームではおなじみのもの)
私は新しい機種や新しい環境でプログラムを作る時は必ず100m走ゲームを作っているのだけど
プチコン3号では発売から半年以上経つのに100m走ゲームを1作品も公開してないためこれを
機会に作ってみたにょ。
内容は私が発表済みの他の100m走ゲームと同じように連射が速い人で10秒をやっと切れる
くらいで遅い人でも10秒台前半のタイムが出せるようにバランス調整を行っているにょ。
このバランス調整に関しては私が作った同人誌「プチコン1画面プログラムのススメ」にも
書いているので参考にしてみて欲しいにょ。

 プチコン 1画面プログラムのススメ
 http://ochameclub.web.fc2.com/CLUB/1gamen_no_susume/

ゲーム内容自体は他の100m走ゲームと同等なのだけど1画面プログラムながら2重スクロールを
実現した「プチコン100m走mkII」などと比べたら見た目が劣ってしまうにょ。
これは私のレギュレーションならば最大293文字のQSPでは最大696文字書けるプチコン(mkII)
用の1画面プログラムの半分以下のサイズで作らないといけないためやむを得ないにょ。
(QSPは文字数的にはプチコンmkIIの3行プログラムと同程度になっている)


◎PETIT KEYBOARD QSP
https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTphi3jzQ

これはすでにプチコンの1画面プログラムで作っている「PETIT KEYBOARD mkII」のQSP版に
相当するものにょ。
PETIT KEYBOARD mkIIではキーボードのサイズや場所を自由に調整が可能で押したら赤く
光るという機能もあるけどこのQSP版は固定サイズのキーボードのみで光る機能も搭載は
されてないにょ。
これもQSPだから妥協した部分とはいえ、リスト短縮を全く行わずに作ればキーボード
(鍵盤)を表示するだけでQSPのサイズで厳しいレベルとなるため画面にキーボードを
表示してちゃんと演奏が可能なレベルのものを作るにはそれなりにリスト短縮テクニックが
必要になってくるにょ。

キーボードの作り方に関してはプチコン講座第8回の「楽器演奏プログラムを作ろう」が
参考になると思うにょ。

 プチコン講座 楽器演奏プログラムを作ろう
 http://ochameclub.web.fc2.com/petitcom/p008.htm


◎PETIT BAN QSP
◎PETIT DRUM QSP
https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTpjTFLGA

楽器演奏は鍵盤の方がやりやすいという人もいればボタン操作がやりやすいという人もいる
と思うにょ。
ボタン操作での演奏となるとやはりポピュラーとなるのがバンブラ方式のボタン操作にょ。
これは十字キーとABXYボタンでドレミファソラシドを演奏しLボタンで半音上げ、Rボタンで
1オクターブ上げを行うというものにょ。
これによって、ボタン操作で半音を含む2オクターブの音階を自由に演奏が可能になるにょ。
バンブラにおいてはDS用のバンブラDXでは楽器演奏専用のフリー演奏モードが付いていたけど
3DS用のバンブラPではそれはなく練習モードで音を出すしか無くなったにょ。

とはいえ、バンブラ方式で演奏するだけのプログラムならば簡単に作ることができるにょ。
実際にプチコンmkIIでは1行プログラム(プチコンmkIIの1行は改行を含めて100文字)で作る
ことができたのでその3倍近くあるQSPでは普通に作っても簡単すぎるにょ。
というわけで、和音に対応してみたにょ。
本家のバンブラでは和音には対応してないため私のオリジナル要素にょ。(といっても、
mkIIで同等の和音演奏に対応しているプログラムを発表している人が居たのだけどその
数10分の1のサイズで基本的な部分で同様のプログラムというメリットはある(

もう1つのドラム演奏の方はプチコン用の1画面プログラム「PETIT DRUM & BASS」で採用
されているものにょ。
この1画面プログラムにおいてドラム部分は3分の1画面程度に収まっていたためQSPに容易に
移植が可能だったにょ。
それでリストが余りまくったので画面に楽器名の表示を加えたくらいにょ。(この画面
表示部分がQSP版のプログラムリストの半分近くを占めている)


◎簡易方位磁針QSP
https://miiverse.nintendo.net/posts/AYIHAAAEAACHVRTpfpiALA

これは3年前にmkIIの1画面プログラムで作った「簡易方位磁針」のQSP版にょ。
といっても、「簡易方位磁針」では方位が確定後は本体を一切動かすことができなかった
のに対してこのQSP版はジャイロセンサーに対応することによって方位が確定後も自由に
本体が動かせるようになったにょ。(ジャイロセンサーの蓄積誤差があるのであまり
回転しまくると誤差がどんどん大きくなるけど普通に少し動かす程度ならば数度程度の
誤差であるため全く問題はない)
ちなみにmkIIでは三角関数を使用して表示したのだけどこのQSP版はSPROTを使い普通に
スプライトを回転させて表示しているだけの簡単設計にょ。(表示の針はトゲのスプライト
に赤色を付けて縦に拡大しているだけであり縦横任意倍率設定が可能になったプチコン3号
ならではのものとなっている)


◎簡易分度器QSP
https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTplVgn7Q

これは、プチコン3号のオリジナルだけど元ネタはMiiverseで見かけたネタにょ。
本体を開いた角度はジャイロで簡単に分かるためそれを画面に表示するだけで簡易的な
分度器として機能するにょ。
ただし、簡易方位磁針QSPでも書いたようにジャイロセンサーの蓄積誤差も馬鹿にはならない
ため数度程度の誤差は簡単に出てしまう上にスリープさせたり、開いたり閉じたりを繰り
返していたらどんでもなく大きな誤差になってしまうので分度器としては機能しなくなって
しまうにょ。
きっちり計測しても1〜2度程度の誤差が出るため分度器として使えるかどうかは微妙な
ところでネタソフトとして考えた方が良さそうにょ。


◎簡易ものさしQSP
https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTpmfEhIA

分度器とは異なりこの簡易ものさしQSPは実用的に使えるにょ。
タッチで大ざっぱにラインを動かしスライドパッドでサブピクセル単位でラインを動かせる
ので使い勝手は良いはずにょ。
サブピクセル単位で計測しているため小物の計測ならば普通のものさしを使うよりも高精度
で計測が可能になるにょ。(普通のもの差しで1mm未満を読み取るのは非常に大変)
もちろん、自分の使用している機種に合わせる必要があるけどNewか否かはシステム変数である
HARDWAREで取得可能なのに対してLLか否かは取得は不能なので手動になっているにょ。
しかし、定数リテラルを活用することで書き換えも分かりやすくなっているのではないかと
思うにょ。


◎ラーメンタイマーQSP
https://miiverse.nintendo.net/posts/AYIHAAAEAACHVRTpi1RHCg

よくあるラーメンタイマー(カップラーメンを作る時に便利なタイマー)なのだけど実用性
重視として時間が簡単にセットできるものになっているにょ。
ABXYボタンを押すだけで1〜15分の任意の時間が瞬時に設定できるけどこれも私が作っている
1画面プログラムではよく用いられているUIにょ。
あと、QSPの割りには画面の表示や演出にも拘ってみたにょ。
残り時間の文字色がどんどん変わっていくのが見た目で楽しいし残り時間がわずかになると
文字の点滅も始まるにょ。
カウントが終わった後もBGMPLAYで音楽を流すという方法も考えたけどそれだとつまらないため
ちょっとした工夫をしてみたにょ。(というかFADE命令を使いたかっただけ?)


◎ストップウォッチQSP
https://miiverse.nintendo.net/posts/AYIHAAAEAAASVZKbGFRP0A

これもMiiverseで見かけたネタを元に作ったものだけどボタンを押す音を拾うことで1/1000秒
単位の計測を可能にするプログラムにょ。
プチコン3号(というか、初代やmkIIでも同じだけど)ボタンやタッチの情報更新は1フレーム
単位となっているにょ。(プチコン3号のジャイロセンサーやモーションセンサーも同じ)
これはどういうことかというと、私がすでに作っている1/1000秒単位で計測可能なTIMER関数
であってもボタンやタッチで計測開始や停止を行う限りは1フレーム単位でしか計測ができない
ということにょ。
したがって、計測開始や停止もマイク命令を使用することで1/1000秒単位の計測を行って
いるにょ。
そのため、ボタンを押す音でなくても音ならば何でも良くて自分が出しやすい音で全く問題が
ないにょ。(むしろ、ボタンの場合は1回押すと押す時に出る音と離す時に出る音の2回を感知
することがあるため本体を直に叩いた方が誤動作防止に繋がる)


◎PETIT PAINT QSP
◎PETIT PAINT QSP type B
https://miiverse.nintendo.net/posts/AYIHAAAEAABEVRTpctBKZg

これはQSPでありながら線の太さを自由に変えられるお絵かきプログラムにょ。
線の太さが1ドット固定ならば作るのは超簡単でプチコン3号入門講座でも作り方について
書いているにょ。

超簡易お絵かきプログラム(入門講座「グラフィック表示をしよう」より)
http://ochameclub.web.fc2.com/petitcom3/lecture/grp.htm#6

太さが1ドット以外の線を描くには最も簡単な方法としては塗りつぶした円を並べるという
ものがあるにょ。
塗りつぶし円は自前でプログラムを用意してもいいけど速度を重視した場合には塗りつぶし
円ルーチンだけでQSPに収まらないくらいのサイズになってしまうにょ。
それでは辛いので最も簡単な塗りつぶし円アルゴリズムを使用しているにょ。
これは使用しない色で円を描画しておいてそれを境界線にして塗りつぶして本来の描画色で
円を描くというものにょ。
このプログラムで使っている32bit論理色コードが「8」という色は半透明色であり、通常の
プログラムで使われることがないにょ。(それに最も短い)

塗りつぶし円を描くだけでは線にはならないにょ。
それは点を描いたら線にならないのと同じ理由で1フレームに1ドット以下の移動でタッチ
する場所を変える必要があるためにょ。
したがって、タッチで動かしたドット数分だけ少しずつずらしながら円を描画する必要が
あるにょ。
しかし、QSPでそれをやるのは無理があるため64ドット固定としているにょ。
1フレームに64ドットならば相当速く動かさないと無理だしプチコン3号の処理速度ならば
それでも大抵の場合は1フレーム以内に収まるにょ。(New3DSならば200fps近く出ているため
問題なくAボタン使用時の超極太でも処理落ちをせず、Bボタンまで使用して初めて処理落ちが
少し起きる)
32ドットでも大抵の場合は大丈夫だけで太さを「細」に設定している時に素早くペンを
動かすと時々途切れるため十分ではないにょ。(これが64ドットならば意図的に超速くペンを
動かさない限りは線が途切れる心配が無くなる)
線の太さ調整も十字キーで直感入力が可能なので非常に楽にょ。(ABXYボタンと併用すれば
最大で直径500ドットという画面よりも太い線が描ける)

このプログラムにはカーソル表示機能を搭載しているけどこれはペンの位置だけではなく
太さも視覚的に分かるようにしたものにょ。(Photoshopなどにも同じものは搭載されている)
カーソル位置だけではなく太さにも対応しているカーソルを実装しているお絵かきソフトと
いうのは意外に少ないにょ。(太い消しゴムを使用時にもどこまで消えるか視覚的に分かる
ため超便利)
この仕組みは非常に簡単で上記の使われてない塗りつぶし円で使用されている「8」という
色は透明色であり、見た目的には黒となっているためにょ。(正しくは「黒(不透明色)」
ではなく「0」の透明色と同じ色)
このプログラムにおいて処理の大半は円を塗りつぶしているGPAINT命令なのでほとんどの
場合はそこでVSYNCの更新タイミングを迎えるにょ。
つまり、この塗りつぶし円ルーチンを使用して他に重い処理を行っていなければVSYNCや
WAITを入れないだけでカーソル表示機能が実現できるという一石二鳥の塗りつぶし円
ルーチンとなっているということにょ。(VSYNCを入れたらそこで更新待ちとなるため
意図的に処理落ちさせない限りはカーソル表示機能は無くなる)

あと形だけとはいえ簡易セーブ機能を搭載しているにょ。
一時保存をするだけの簡易的なものとはいえこれがあることで使い勝手が大幅に良くなって
いるにょ。
復元ポイントとして機能させることもできるため時々セーブしておけばすぐにその位置から
やり直すことが可能になるにょ。
これは上書きをするというのが分かっているからこそできることにょ。
あと2行のラストはC=-!!C+!C*#REDとするより、C=!C*RED-!!Cとした方が1文字短縮できる
けどそうしなかったのは#REDを行末に持ってくることで定数リテラルの変更を容易にする
ためにょ。(DIRECTモードからLIST 3左でカーソルが2行の末尾に来るためバックスペースで
簡単に削除できる)

さて、今回は別バージョンとして筆圧対応のものも用意したにょ。
3DSのタッチパネルは筆圧には対応していないためあくまで簡易的に筆圧っぽいことをやって
いるだけにょ。
単にタッチしたフレーム数で太さを変えているだけにょ。(延々と太くなるわけではなく
太さの上限はあらかじめ決めたペンの太さまでに止まる)
こんな簡易的なものでもあることによって表現の幅が広がるにょ。
とはいえ、その代償として簡易セーブ機能とカーソル表示機能は無くなったにょ。(カーソル
表示を入れたのはVSYNCを入れる必要があったためだけど実はメインループ用とは別に
GPAINTの後にVSYNC I==64を入れておけば筆圧を入れたり処理落ちしてない場合にもカーソル
表示を行うことができるけどQSPでは無理だった)
あと上記で拘りを持って定数リテラル#REDを行末に持ってきたけどそれもあきらめたにょ。


というわけで毎日1〜2個のペースでQSPを発表しているけどさすがにネタ的だけではなく時間的
にも厳しくなりつつあるにょ。(ネタはMiiverseやtitterを探したり自前のmkII用の1画面
プログラムで作ったものを機能削減したり、1行プログラムで作ったものを機能アップすると
いう方法もある)
QSPはWIDTH 16の1〜1.5画面分くらいの原型プログラムは10〜15分でできるため非常に簡単なの
だけどそこからリスト短縮に数時間かかってしまうにょ。
そのため毎日発表するためには並列制作によって出来たものから順に発表という選択をする
のがベターとなるにょ。(リスト短縮が難しいケースだとその日のうちに完成しないという
可能性も十分あり得るため)

最初から1画面に収まるような内容にしておけば簡単にQSPはできる(実際PETIT DRUM QSPは
そうだった)けれど私のプログラムに求められているもの・・・というか、私が作りたい
ものというのは「限られた条件下でここまで詰め込める」というのを作りたいため簡単に
1画面に収まるものであっても、限界までリスト短縮をしているにょ。
そのため妥協部分はあるもののどの作品も満足できる仕上がりになっているにょ。
「リスト短縮すれば入るかもしれない要素を時間がないから削る」というのは一番やりたく
ないので「1日1作品(以上)発表する」という縛りは無理だと思ったらさっさと諦める
つもりにょ。

あと、QSPでありシンプルな内容ばかりとはいえ私が直感的に操作が可能と考えたUIであるため
人によっては「操作が分からなくて使えない」というケースも十分あると思われるにょ。
それは私はmkIIからはリスト入力ではなくQRコード経由でのダウンロードが可能になったため
リストの末尾に簡易マニュアルの記載を始めることで克服できているにょ。
mkIIではマニュアルが長くなるとQRコードが増えてしまうという問題点もあるためそれが
起きない程度に簡潔に記述しているにょ。
プチコン3号では簡易マニュアルが数KBあっても全く問題がないし、ver.3.2.0からコンソール
画面での漢字表示が可能になったため簡易マニュアルもmkII時代よりもかなり詳しくなって
いるにょ。(漢字入力にはりゅうまごさん作のRMG IMEを使用)
これによって、「適当に拾ったけどあとから初めて使った」「他人から経由してもらった
(公開コードのみ教えてもらった)」などの理由で制作者の説明書きが無くても分かる
ようになっているにょ。

もちろん、これは1つのフォルダにまとめてREADME.TXTなどにマニュアルを記載するという
方法もあるけどこれはプロジェクトフォルダ単位で公開するプログラムならばいいけどそうで
ない場合は結局分からないため私がやっている方法がベターだと思われるにょ。(リストの
末ではなく頭だとプログラムそのものの行数がずれてしまいマニュアルとの不一致が発生する
原因になるため末の方が都合が良い)




掲示板管理者へ連絡 無料レンタル掲示板