カテゴリー: プログラム

愚直な状態遷移機械は作るのが大変

この手のプログラムの仕組みを真剣に考えたことがある人は、恐らくこの部分ハードルの高さに開発を躊躇する、あるいは「どの様に回避するかを真剣に考える」事でしょう。
かく言う当方もその一人です。

この手のプログラムとは当方の場合コッペリウスであり、プレーヤーの操作(外部からの刺激)に応じて反応を返し、そして状態が変化してゆく機械の事を指します。
この様な機械は何か正式な名称が有るのかもしれませんが当方は知らないのでここでは、これを仮に状態遷移機械と呼ぶことにします。

人の場合外部からの刺激に対してなにがしかの反応を返しますが、その反応は(生成方法はともかく)自動的に生成されます。
しかし、状態遷移機械の場合は自動的には生成されません。故に製作者あるいは開発者が、全ての刺激に対する反応をあらかじめ用意しておく必要があります。
そしてクリックアドベンチャの場合、反応とは「絵や動画」であり「テキストや音声」に他なりません。

●初期状態
お尻をつつく 体をよじって嫌がる
胸をもむ 激しく拒否する
クリトリスをつまむ 泣きだす

上記の例ですと3つの刺激に対して3つの反応を返します。
つまり、製作者は「3つの状態を表現するために3つの反応を用意しなければならない」事になります。
では、これが初期状態だとして何度か刺激を加える事により状態が変化したとします。
ここでは仮に「刺激に慣れ受け入れた」としましょう。

●初期状態 ●刺激に慣れ受け入れた
お尻をつつく 体をよじって嫌がる お尻をつつく 息が荒くなる
胸をもむ 激しく拒否する 胸をもむ 拒否する
クリトリスをつまむ 泣きだす クリトリスをつまむ 感じるのを怖がる

この場合で注目すべきは「状態が1増えただけで用意しなければならない反応は3増える」と言う事です。
つまり「状態が増えると用意しなければならない反応は2次関数的に増えてゆく」そして、反応の数は作業量に直結すると言う事でです。
さらに、「いつも同じ反応だとつまらないので、さらにランダム性を持たせたい」とかなってくるとどうなるか・・・、言わずもがなだと思います。

これをどのように回避するか、あるいは真正直に正面突破?
プログラムと言うか制作側の問題かもしれません


ゲームはなぜ終わるのだろう?

ネバーエンディングストーリ―って映画と洋楽があってだな、何で流行ったかワシはいまだに理解できんのだよ。

さて、当方今までエロゲに限らずコンソール、アーケードと色々なゲームに手を出してきましたが、大抵のゲームには「終わり」が設定されています。
これには下記のような理由が考えられます。

  1. 商業的な理由
  2. ゲームに具体性を持たせるためにストーリーが導入されており、またゲームクリア後の爽快感、達成感をプレイヤーに与えるため
  3. ゲームそのものがストーリーの存在が前提となっていて、ストーリーがある以上は終わりも有る

会議は踊る(マウスジェスチャーとは違うようです)

前回の記事では判別すべきは「円なのか往復運動なのか」では無く「プレーヤーは直線を入力しようとして いるのか、曲線を入力しようとしているのかを判別すべき」と言うことを提示して終わりました。
この事はつまり「マウス操作の全てからどの様な図形を入力されたかを判別」しても無意味で逆に「ごく短い時間(1秒とか0.5秒とか)のプレーヤーの入力を判別すれば良い」と言うことになります。


adobe CS5 Mercury Playback Engineのハードウェア支援をサポート外のGeForceで使うHack

adobe CS5のMercury Playback Engineは素晴らしいパフォーマンスらしいのだが残念ながら当方の環境ではサポートされていないので見たことが無い、故に「らしい」としか書けない。
ところがGeForceGTX285、Quadro以外のカードでも使えるようにする方法があるらしい。
http://blog.krama.tv/hacking-adobe-premiere-cs5-to-enable-more-nvidia-cuda-cards/

記事を要約すると


青い鳥はあなたの近くにいるのです。(あるいは入力判定の方法を考えてみる)

FlashPlayerでのマウス入力の判別は当方も研究中で「これが最適」と言うのが見つかっていないのが現状です。(もっと便利な方法があるのだよと言う方が居れば教えて頂きたいです。)
研究中とは言え一応「この方法を採用する」と言うのが見つかっては居るのですが、それを説明する前に「そこに至る逡巡」を説明してみたいと思います。