2008/11/30

・ゲームを作る過程の映像化(ymd氏発言)。

・『あぺぽぺぺいんと』は気がついたのでXML出力に対応してみた。 これでActionscriptがそこそこ高速に動作すれば、 『アペポペペイント』で作ったデータをFlashでも使用できる。 思ったより重大な機能かもしれない。 celeの新しいサイトにも使えそうだ。 同時にやるのはなかなか大変だが、 ここにきて個人制作とceleに意外な橋が架かった。

・『あぺぽぺぺいんと』は『あぺぽぺえでぃた』に昇格する。 何度も入力するのが億劫になって、 ひらがなのまま入力を完了してしまう。

・『あぺぽぺえでぃた』では文字入力が機能としてほしい。 さてその入力部分をどう作るか。 何を利用するかという問題があった。 これはプログラム技術の問題です(以下、 プログラマでない人には読みづらいかも…)。 候補としては、 1.自作の入力クラス。 2.WindouwAPIのエディットボックス。 3.DirectXのサンプルに付属のDXUTGuiクラス。 4.普段使っているテキストエディタ。 5.新しいプログラムサンプルをネットで探す。 などが思いついた。 まず、 1だが改良は一番簡単なものの入力に必要な機能があまりにも不足している。 たとえば、 複数行入力に対応するだけでもなかなか重労働だ。 仕事でもやったので分かる。 3も直接改良できるが同じ理由がつきまとう。 2は複数行の問題はないものの、 DirectXとの相性が悪いのでいくつか調べなければならない。 それにVC++はGUIをたくさん作るのに向いていない。 MFCもあまり学ぼうとは思わないです。 仕事で習熟する機会もないですし…。 5はけっこう探してみたけど、 なさそうなので諦めている。 で、 残るは4だ。 ここまでゲームっぽく動作させてきたけど、 個人用ツールだからゲームっぽさにこだわらなくても良い。 それに、 テキスト入力は慣れたエディタで行いたいもの(VCのエディタが次点だが、 ま、 使わないよね普通)。

・ということで4を採用してやってみます。 まずは、 『あぺぽぺ』本体との連携だ。 本体がエディタを呼び出して、 エディタから本体に入力の完了を通知せねばならない。 これは2時間ぐらい調査して、 ShellExecuteEX()APIとEnumWindows()APIの組み合わせでいけることが分かった。 さらにGetProcessId()APIでプロセスIDを取得してGetWindowThreadProcessId()APIで取得したIDと比べれば起動したエディタのウィンドウハンドルが取得できると思ったしそういうサンプルもあったのだけど、 なぜか同じIDを取得してこないので、 早々にあきらめ、 ウィンドウタイトルから強引にエディタのウィンドウハンドルを割り出す方法をにした(個人ツールだし)。 ファイルのタイムスタンプをチェックすることでエディタから本体への入力完了通知とみなすことにした。 IDEによってはこういう動作をしているのかなあと思った。 ひとつタイムスタンプをチェックしようとファイルハンドルを保持しているというお粗末な問題があったので、 ファイルのオープン属性を変えて対応。 道筋が見えてきた。 だいたいイメージどおり動作にできそう。 やはり不恰好だった。

・前の文で、「比較したIDと比べれば…」と入力するミス。入力している段階で次の言葉に頭が移ってしまっているからだろう。こういうミスが多い。