レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
おちゃめくらぶ掲示板
-
何がダメなのかを把握しないと良いものはできない
昨日作った1行プログラム「SOUND PAD」はボツになった1画面プログラムを元にして作られた
ものと書いたのだけど元になったプログラムがないと比較ができないような気がしたため
そちらも仮公開(=サイト上で通常公開せずここで公開)することにしたにょ。
1画面版「SOUND PAD」
http://twitpic.com/bsdur7
この1画面版「SOUND PAD」は私が初代プチコンを入手してそれほど経ってない頃に作った
ものであり、時系列的に言えば初代PETIT KEYBOARDを公開して直後に作ったものにょ。
PETIT KEYBOARD
http://ww5.tiki.ne.jp/~ochame/petitcom/1page.htm#kb
このPETIT KEYBOARDはポケコン(PC-E500)用で作った1行プログラム「1LINEオルガン」が
ベース(というかベタ移植)となっているにょ。
ポケコンでは1行には行番号を除き最大252文字入れることができるのだけどプチコンでは
1行には改行を除き99文字しか入らないし1画面プログラムではエディタの折り返し機能が
ない関係上1行には29文字しか入れることはできないにょ。
そのため元が1行プログラムなのに移植では11行まで膨らんでいるにょ。
この「PETIT KEYBOARD」はポケコン用の「1LINEオルガン」を移植しただけであり機能は
ほとんど無く非常にシンプルなものとなっているのだけどポケコン用には1LINEオルガン
ではなくサイト上では「2LINEオルガン」の方を公開しているにょ。
2LINEオルガン
http://ww5.tiki.ne.jp/~ochame/E500/SOFT/SHORTP.HTM#ORGAN
この2LINE版(2行版)には1行版には無かったリプレイ機能を搭載しているにょ。
要するに録音再生機能を備えているということにょ。
1画面にはこちらも十分に収まりそうだけどなぜこちらを移植しなかったのかと単に当時の
技術では実現できなかったというだけにょ。
それはGRPにデータを記録する方法を知らなかったためにょ。
録音機能がないなら鍵盤をグラフィック表示してやればいいのだけどそれも難しいにょ。
したがって、消去法でポケコンの1LINEオルガンのベタ移植となったにょ。
まぁちゃんとした鍵盤表示による1画面プログラムはそれから約1年後(昨年10月)にようやく
PETIT KEYBOARD mkIIで実現したにょ。
「1画面のサイズで鍵盤が表示できないならば鍵盤を表示しなくても済むようなものを作れば
いいじゃない」ということで作られたのが1画面版「SOUND PAD」にょ。
単なるポケコンプログラムのベタ移植のPETIT KEYBOARDとは異なり、プチコンのBEEP命令は
音色や音量も簡単に変えられるためそれを操作に盛り込むことにしたにょ。
それで一応は完成したものの下記のような理由で公開は踏みとどまったにょ。
(1) [A][B][X][Y][R]の同時押しが困難
(2) 右利きだと[A][B][X][Y][R]ボタンを押しながらタッチペン操作しにくい
(3) ドラムなどの打楽器の音がうまく表現できない
(1)タッチパネルが使えるため音量と音程は二次元的に操作は可能だけど問題となったのは
音色の変更にょ。
プチコンでは(初代でも)70種類の豊富な音色をサポートしているもののそれをいちいち選択
するのが面倒だからね。
使いたい音色は有る程度限られるだろうからそれをボタンに設定して使えるようにしたら
使い勝手がかなり良くなりそうと考えたにょ。
それで十字ボタンで音色を選択して[L]ボタンを押しながら[A][B][X][Y][R]を押すことで
各ボタンにその音色を登録できるとい機能を搭載したにょ。
十字ボタンと違って[A][B][X][Y}[R]は独立動作するため同時押しによって2の5乗=32通りの
音色を登録可能になるにょ。
とはいえ、実際に作ってみるとその考えは甘かったにょ。
というのも「同時押し」での登録は1フレーム(1/60秒)でもずれたらアウトだからにょ。
一旦登録したものを読み出す場合はゆっくり1つずつボタンを押せばいいのだけど登録は押した
時点で行われるため[A][B][X][Y]を順番に1つずつ押した場合には[A]ボタン(16)、[A]+[B]
ボタン(48)、[A]+[B]+[X]ボタン(112)、[A]+[B]+[X]+[Y]ボタン(240)に全部同じ
音色が登録されてしまうにょ。
そうなると事実上同時押しは使いものにならないので実質5つしか登録できないにょ。
それだと8通りの登録ができる十字ボタンを使った方がマシとなってしまうにょ。
もっとも32個の音色を設定できても設定ファイルのセーブ機能がないためRUNするごとに設定
しなおす必要があるため実用的とはいえないにょ。
これは棒歌ロイドキーボード(タッチパネルでフリック入力を行うバージョン)を作る際に
[A][B][X][Y][L][R]の同時押しによって音階を表現するという案が出てきたときにも問題と
なったにょ。
しかし、それは遅延時間を設けるという方法によって改善することができたにょ。
1フレームのずれも無く複数ボタンの同時押しをするのは困難だけど最初の1つ目のボタンを
押してから数フレームの猶予があれば複数ボタンの同時押しは飛躍的に簡単になるからね。
もっとっも、その方法は1画面というリストサイズ制約がないからこそ可能な方法であって
このような1画面プログラムの場合は実現が難しいにょ。(元がシンプルなのに1画面で
収まらないならば作る価値がほとんど無くなってしまう)
(2)これは[A][B][X][Y][R]ボタンを右手で操作すると必然的に左手でタッチペンを操作する
ようになってしまうためにょ。
左利きならば何の問題もないけど右利きだとこれでは使いづらいにょ。
ボタン操作ならば左右どちらの手でもできるけどペンの微妙な操作は利き腕でないと難しい
からね。(これは単なる慣れの問題だけど慣れないと使いづらいものは使いやすいとは
言えない)
これは後日作った棒歌ロイドキーボードの1画面版でも問題となったにょ。
タッチペンで文字を入力してその音階の音声を出すことでリアルタイムに歌わせることが
可能なこのプログラムはその性質上音階指定は十字ボタンを使う必要になったにょ。
(3)これは0番のような単純なBEEP音ならば問題ないのだけどタッチしている間ずっと音が
鳴り続けるため叩いた瞬間のみ音が鳴る打楽器は表現できないし、自然減衰するピアノの
ような音も上手く表現できないにょ。
それならば押した瞬間のみ音が出るようにするのがいいかというとそうでもないにょ。
これが鍵盤演奏ならばそういう手段も執れるけどせっかく「鍵盤」というしがらみがない
ものとなっているのに鍵盤演奏みたいなことをすると単に音階演奏しにくいというだけの
プログラムになってしまうからね。
したがって、考えられる方法は音色によって「押した瞬間のみ鳴るもの」「押している間
ずっと鳴り続けるもの」などあらかじめ登録しておく必要があるということにょ。
これが音色を固定でユーザーがプログラムを書き換えて使用するようなものならばそれに
合わせて設定してもらえばいいだけのことだけどプログラム実行中に音色を自由に変更
可能ならばその設定もそれに追従して自動的に変更するようにすべきにょ。
とはいえ、それをすべての音色に対してデータとして用意するのも面倒だし、1画面に
収めるのも難しくなってしまうにょ。
というわけで、(1)〜(3)の問題点が残されており改善するための良い方法が(少なく
とも1画面に収まる範囲内では)見あたらなかったためそのままお蔵入りとなって別の
ゲーム(ピョン子)を作り始めたにょ。
では、昨日作った1行版「SOUND PAD」はどうなのかというと(1)の問題はプリセットの音
のみを使用することで改善できたにょ。
プリセットのみだと最大32種類の音色しか鳴らせないものの数値を変えながら一番良いと
思えるようなものにしたのでそれほど問題はないにょ。
(2)の問題は持ち方そのものを変えることで克服したにょ。
「[A][B][X][Y]ボタンは右手で操作するもの」という固定観念を捨てて「左手で[A][B]
[X][Y]ボタンを操作するにはどのような持ち方にすべきか」ということから新しい本体の
持ち方が生まれたにょ。
これは非常に簡単なことで、まずはDS本体を[A][B][X][Y]ボタンの方が下になるように
縦位置に左手でつかむように持ってそのつかんだ状態で[R]ボタンに左手の親指が来る
ようにポジション調整するだけにょ。
これによって、右手がフリーになるのでタッチペン操作は簡単にできるにょ。
(3)の問題はWAIT 1ではなくWAIT 4にすることで解決したにょ。
といっても、WAIT 4にしたのは元々それが狙いではないにょ。
1画面版ではタッチしたときのみBEEP命令を実行しているのに対して1行版はリスト短縮の
都合上、常にBEEP命令を実行する必要があるためタッチしてない時は無音のBEEP命令を
実行しているにょ。
昨日も書いたようにBEEP命令では同時発音数は最大で8音となっているためこれでは
最大でも8フレームで音が途切れてしまうにょ。
BEEPで鳴る音は音長調整ができないもののほとんどの音は8フレーム以上鳴るため事実上
スタッカートがかかった状態でしか鳴らすことができなくなったにょ。
これが、WAIT 4ならば32フレームとなるため多くの音は問題なく使用できるにょ。
そして、その代償として素早くタッチして離したら反応できないという問題があるものの
鳴った瞬間に離せば1音だけ鳴らすということも可能になるためドラムなどの打楽器も
普通に演奏が可能になったにょ。(私の場合はWAIT 3だとすぐに離しても連続して鳴る
ことが多いためWAIT 4にした)
実際に[B]+[Y]で太鼓の音を鳴らしてみて判断してみるといいにょ。
「問題点が改善されている」というのには微妙な部分も多いけど1画面で作ったものを
1行ですべての面において良いものにするというのが無理な話であり有る程度は妥協が
必要になるにょ。
1行版の唯一の問題は1画面版では明確だったホームポジション(C4)の位置が分かり
にくいということくらいにょ。(これはコンソール文字を一度に表示している関係上
やむを得ないことであり、これを改善するにはループ内でPNLSTR命令をもう1つ追加
する必要がある)
これは実行動画で見ても明らかなようにホームポジションの迷いが見られるにょ(笑)
まぁインチキ臭い方法だけど実行モードで「GPAGE 1GFILL 122,0,124,191,2」と
あらかじめ実行するという方法もあるけどね。(とはいえ、これが許されるならば
あらかじめGLINEで線を32本引いておけばさらにリスト短縮可能になってしまうけど)
あと本日公式サイトから新作キャラ素材が公開されたにょ。
プロ生ちゃんこと暮井慧さんが作ったキャラにょ。
http://smileboom.com/special/ptcm2/co_present/html_present06.php
待望の人型女性キャラにょ。
すでに女性設定のキャラとしてはダミーちゃんがいたけどあくまでAIキャラであり人型でも
ないからね。
というわけで、早速この素材を使ったゲーム「プロ生ちゃん100m走」を作ってみたにょ。
「プロ生ちゃん100m走」
http://www.youtube.com/watch?v=zB1WM-znAu0 (プレイ動画)
http://ww5.tiki.ne.jp/~ochame/petitcom/qr/pronama100m.png (QRコード)
用意されているのが走っている動作ということで、手っ取り早く公開できるものを作るため
「プチコン100m走mkII」のデータ差し替えバージョンにしたにょ。(さすがにこのサイズ
だと2倍拡大しなくても十分使えるのもうれしい)
「プチコン100m走mkII」
http://ww5.tiki.ne.jp/~ochame/petitcom/petit_olympic.htm#100m
単にデータを変えるだけではつまらないので音声も加えてあと用意されているすべての
モーションを使ってみたにょ。
立ちポーズはスタート前で使用できたけどダメージポーズは何にしようかと思っていたら
走っていてこけたという設定にすれば問題ないとすぐに思いついたにょ。
[A][B]ボタンを連射することで走るのだけど「[A][B]ボタンを同時に押したらこける」
という新要素を追加によってゲーム性は変わったにょ。
1回こけたら最低でも0.4秒、平均でも1秒以上タイムロスをしてしまうのでこけないように
走るという操作が求められるからね。
つまり、[A][B]を何かでひたすらこすってはこけまくるためきちんと交互に押すという
必要性が増すことになったということにょ。
新規に作るならば最低でも2〜3時間、ある程度の完成度を高めるためには10〜20時間
欲しいところだけどこの程度の仕様変更であるためコーディングは非常に簡単だったにょ。
コーディングにかかった時間は30分程度だし、あとはテストプレイやデバッグなどを
込みで完成まで約1時間といったところにょ。(作り始めてから動画撮影してtwitterで
公開するまでの時間をすべて合わせてもわずか1時間20分程度)
ちなみにこけたキャラの切り替えはSPCHRは使用せず別のキャラとして用意しているにょ。
ミスフラグを設定しているためそれが立っているときのみそのこけたキャラを画面上に
表示して、フラグが立ってないときは画面外に表示しているにょ。(通常の走っている
キャラはその逆)
こうすることで、キャラを変えて元に戻すという処理が不要になるためコーディング量が
少なくて済むにょ。(ポピュラーなテクニックなので使用している人は多いと思う)
ミスフラグは立った後に一定時間後に自動消滅するのでこけたキャラはフラグが立った
時に自動的に表示されてフラグが消滅したら自動的に元の走っているキャラに戻ることに
なるにょ。
速度面ではわずかに不利になるもののそれでもこのゲームは60fpsで動作しているため
問題ないにょ。(背景のスクロールはプチコン100m走と同様にGCOPYでスクロールさせて
いるけどそれでも速度面で全く問題がない)
|
|
|
掲示板管理者へ連絡
無料レンタル掲示板