« 2006年11月 | メイン | 2007年1月 »

ボイス付きADVゲームは作れますか?

「メッセージの表示」コマンドと「効果音を再生する」コマンドは独立しているため、連動させるには

「効果音を再生する」(台詞)
「メッセージの表示」(台詞)
(必要なら)「マウスの入力を待つ」(「しばらく待つ」コマンドを使用。「メッセージの表示」コマンドをエフェクト有りにして<KEY>を利用してもOK)

というように一つ一つの台詞を2つ(3つ)のコマンドでくみ上げる必要があります。
(「効果音の再生」と「メッセージの表示」については逆でもOK。逆にしたら「マウスの入力を待つ」は必ず入れてください)
また、「効果音の再生」の設定においては「再生中に次の効果音を再生できる」にチェックを入れておくべきです。

こうしておくことにより、ボイスが全て再生される前に次の台詞へと進もうとした場合、
再生されるボイスと表示される台詞が自動的に次の台詞に切り替わります。
(その時点で再生されているボイスについては再生が取りやめとなります)

ボイスに対して「再生が終わるまで次のコマンドを実行しない」にはチェックを入れないでください
(台詞が表示されませんので)
「再生が終わるまで次の効果音を再生しない」にしても良いですが、ユーザーから嫌われる可能性が高いので
多用は禁物です。

なお、BGMとして「音楽を再生する」コマンドで再生するファイルはMIDIでも他のサウンドファイルでも支障ありません。


2006年12月23日 | 0302オーディオ関連コマンド | 0801システム全般 | コメントする | トラックバックする

サウンドファイルの多重再生は可能ですか?

コミックメーカー3には「音楽を演奏する」コマンドと「効果音を鳴らす」コマンドの2系統のサウンドファイルの再生コマンドが存在します。

前者は、基本的にはMIDIを演奏するためのコマンドでしたが、他のメディアファイルを再生することも可能です。
サウンドファイル(MP3やwav)を「音楽を演奏する」コマンドに対して指定することも可能であり、
「音楽を演奏する」コマンドでサウンドファイルを再生中に
「効果音を鳴らす」コマンドでサウンドファイルを再生することも可能です。

この二つのコマンドは互いに干渉しませんが、
「効果音を鳴らす」コマンドは常に単一のサウンドファイルの再生しか行うことができませんので注意してください。
(「効果音を鳴らす」コマンドによる多重再生は行うことができません)

2006年12月23日 | 0302オーディオ関連コマンド | コメントする | トラックバックする

「効果音を鳴らす」コマンドを連続して配置するとどのように再生されますか?

「効果音を鳴らす」コマンドはDirectShow利用によるメディアファイルの再生となっています。
なお、この再生においては多重再生はできず、単一のファイルのみを再生するようになっています。
(ただし、「音楽を演奏する」コマンドでのファイルの再生には干渉しません)

注)ここで言う、”連続して配置”とは、
 効果音再生中に次の「効果音を鳴らす」コマンドが実行される可能性全てを指します。

  1. 「再生中に次の効果音を再生できる」にチェックを入れている状態
     「効果音を鳴らす」コマンドを連続して配置していると、
     後者の「効果音を鳴らす」コマンドが優先され、それよりも前にある「効果音を鳴らす」コマンドによる
     メディアファイルの再生は次の「効果音を鳴らす」コマンドに来たところで取りやめとなります。

  2. 「再生が終わるまで次の効果音を再生しない」にチェックを入れている状態
    「効果音を鳴らす」コマンドを連続して配置していると再生中の「効果音を鳴らす」コマンドの
    次にある「効果音を鳴らす」コマンドの直前のコマンドでコマンドの実行が停止します。
    再生が完了したら次の「効果音を鳴らす」コマンドが実行され、以後のコマンドもこの時に実行されます

2006年12月23日 | 0302オーディオ関連コマンド | コメントする | トラックバックする

複数の数値変数の値を比較する

コミックメーカーでは、変数の値の比較は1:1。すなわち二つの変数の比較しか行うことができません。
したがって、複数の変数の値を比較する場合には
「もし・・・ならば」コマンドを多用して
ws-fku0081.JPG
(まだまだ続きます)このように、全ての変数の値を比較する必要があります
(この場合だと5つの変数のうち、値が最大の変数を導き出すコマンドで、61コマンド必要でした)

数値変数の数が多ければ多いほどこのコマンドに必要な行は増えていきます
この方法は数値変数が4つぐらいであれば有効ですが、5つともなると61コマンドもかかってしまい、
別の方法を利用したほうがいいです。
その方法の一例が下の画像になります
ws-fku0082.JPG

サンプルファイルを下のURLにおいていますので活用してください。
(通常の3~5つの数値変数の値の比較コマンドについてもサンプルとして載せてあります)
http://www.comicmaker.info/archive/hikaku.lzh
(説明ついていません。単体起動できません)


比較用に変数を二つ用意し、片方は数値の比較用にどんどんと数値を1ずつ増やしていく変数
(比較用)
もう片方は比較対象の変数が比較用の変数よりも大きいことをカウントしていく変数(比較算出)
このとき、「比較算出」が1ならば、「比較用」よりも大きい変数はひとつだけとなり、
情報記憶のための文字列変数「比較」に保存している情報から最大値を持つ変数を判別することができます
この方法だと、5つの変数の比較であっても40コマンドで事足ります。
また、このルーチンは何度も使用することができるので、最大値を得た後は、
最大値が存在していた変数の値を0にすることによって(一時的にマイナスをかけておく、というのもアリです)
2番目に大きい変数の値を出力することもできます。
(これはずっと繰り返すことができるので全ての値の大小関係を得ることも可能です)
(ただし、下の注意を参照してください)

注意
比較対象の変数が4桁、5桁となると比較計算に時間がかかることがあるので、注意してください。
このシステムは”最大値の同値が存在しないもの”として組まれています。
もしも比較対象の変数間で最大値の同値が存在する場合、(例:最大値がA=B=100)
最大値なしと扱われます


2006年12月21日 | 0402変数処理(システムサンプル) | コメントする | トラックバックする

cmdpalet.datとは?

ws-fku0080.JPG
コマンドパレットの情報を記憶したファイルです。コマンドパレットはコミックファイル1つ1つに対して
個別の物が用意されるため、その情報を記憶するファイルがコミックファイルと同じフォルダに
cmdpalet.datとしてコマンドパレットの情報を記憶したファイルを置いています。
コミックファイル編集の際には必要ですが(必要となることがありますが)、作品を配布するときは
必要のないファイルです。


2006年12月20日 | コメントする | トラックバックする

保存したときに[**.bak]というファイルが作成される

コミックファイルを保存すると、コミックファイルと同名の[**.bak]というファイルが
作成されます。
ws-fku0079.JPG
このファイルはコミックファイルを前回保存した時の状態でバックアップとして残している物です。
保存する度に、新しいバックアップファイルが作成されます。

もしも、貴重なコマンドを削除してしまったり、「保存する前の状態に戻したい」
という場合は、コミックファイルと同じフォルダに[**.bak]というファイルがあるのを確認してから
コミックファイルのファイル名を変更し(念のため)、[**.bak]の拡張子を[**.cf3]に変更して
コミックメーカーで開いてください。
そうすれば、保存前の状態のコミックファイルを復元することができます。

なお、このファイルは作品配布時には必要ありません。


2006年12月20日 | 0801システム全般 | コメントする | トラックバックする

1000以上の乱数の値を得る

コミックメーカーのシステム変数「@乱数」では、999までの乱数を得ることができます
1~1500など、乱数として得たい値の幅が1000よりも大きい場合は、
「@乱数」をそのまま使用しても不具合が出る恐れがあります

(ちなみに、値域が1000以下の場合は(「@乱数」 mod 「値の幅」)+「値域の最小値」とすることにより、目的の値域で乱数を得ることができます)

値の幅が1000以上の場合、つまりは乱数として1000以上の値が必要の場合は
乱数の値域を増やすために、以下の処理を行います

1.乱数用の変数「乱数2」を作成
2.乱数計算補助用の変数「乱数計算」を作成
3.以下のコマンドを組む

「乱数計算」←「@乱数」×1000
「乱数2」←「@乱数」+「乱数計算」

この結果として、「乱数2」という変数に1~999,999の乱数を出力することができます。
この「乱数2」という変数を使用する場合は、必ず上の2つのコマンドを挿入する必要があります
(サブルーチンとして組んでおくと楽かと思います・・・特に下で紹介する出力方法の場合は)

ちなみに、1~999,999,999の乱数を出力したい場合は
「乱数計算」←「@乱数」×1000
「乱数2」←「@乱数」+「乱数計算」
「乱数計算」←「@乱数」×1000000
「乱数2」←「乱数2」+「乱数計算」
とコマンドを組みます

なお、変数の値の制限上、変数に2,147,483,647よりも大きな値を得ることはできませんのでご注意下さい。
上の方法を応用した最大の乱数の値は2,000,000,000であり、1~2,000,000,000の乱数を出力したい場合は

「乱数計算」←「@乱数」×1000
「乱数2」←「@乱数」+「乱数計算」
「乱数計算」←「@乱数」×1000000
「乱数2」←「乱数2」+「乱数計算」
「乱数計算」←「@乱数」mod 2
「乱数計算」←「乱数計算」+1
「乱数計算」←「乱数計算」× 1000000000
「乱数2」←「乱数2」+「乱数計算」

とコマンドを組みます


2006年12月14日 | 0401変数のシステム | コメントする | トラックバックする

キャラクターの名前をユーザーに入力させる

キャラクターの名前をユーザーに入力させるには、キャラクター1人に対して文字列変数が1つ必要となります。

キャラクター「A」に対しては文字列変数「A」をという具合に対応させるわけです。
キャラクターの名前が必要になった場面で「文字列の入力」コマンドにより、
キャラクターの名前を入力してもらいます。

このときに注意しなければならないのは、デフォルトの名前の指定です。もしも、
ユーザーが「文字列の入力」コマンドをうっかりそのまま空白のまま通過してしまうと、
キャラクターの名前は「」、つまり名無しになります。これを防ぐために

上のように、あらかじめ代入先の変数にデフォルトの名前を入力しておきます。
こうすると、もしもうっかりEnterで通過してしまった場合にもキャラクターに名前をつけることができます。

・・・それでもタチの悪いユーザーさんは名無しにしようとしてくるときがあります。
そのような場合には

このように、代入先変数が空っぽの状態なら、デフォルトの名前を入力させる。というように組めばOKです。

名前の入力でミスをしてしまうことがあるので、入力が終わった後に「この名前でいいですか?」のように
ユーザーに問い合わせる。というのもいいかもしれませんね。

(名前を入力する場所だけを独立した1ページとして、間違えた場合は今いるページへとジャンプするように設定する。)


こうして入力してもらったキャラクター名は
文字列変数の代入記号$(文字列変数名)$を利用して、メッセージの表示などで使用することができます。


 


2006年12月11日 | 0402変数処理(システムサンプル) | コメントする | トラックバックする

テキストエディタで変数の名前を変更する

この記事は上級者向けです。テキストエディタでコミックファイルを編集することに対して
抵抗がない人に向けて書かれています。
この操作を行うことにより、誤ってコミックファイルが破損する場合があります。注意してください


【続きを読む】

2006年12月11日 | 0803【中・上級者向け】内部フォーマット操作による機能 | コメントする | トラックバックする