from __future__ import katryo

カリフォルニア州マウンテンビュー在住のソフトウェアエンジニアがいろいろ書きます。

ノベルゲーム開発と研究経過

早起きすると一日が長い

7時に起きた。Nexux7に設定していたアラームのせいだ。6時間くらいしか寝てないけどせっかくなので起きた。 朝ご飯を食べたあと、アナテマ・フィジクスをArtemis Engineに移植する作業をした。

ノベルゲーム開発

ノベルゲーム開発で大きな問題のひとつに日本語がある。

まず文字コード。コンピュータ上でマルチバイト文字言語たる日本語を使う際真っ先にぶつかる問題だ。Artemis EngineはWindows上での開発を前提にしている。そのためShift_JISが推奨だ。しかし僕はMacで書き、Rubyでシナリオを変換する。だから、どうしてもUTF-8にしたい。そういった事情のため、ぼくはサンプルスクリプトをすべてUTF-8に修正して正常に動くことを確認したうえで、それをお手本にアナテマ・フィジクスのシナリオを変換することにした。

もうひとつ、大きな問題として日本語とascii文字の混雑がある。ノベルゲームは文章と演出スクリプトを同じテキストファイルに直列に書く。効果音など演出と文字を読むタイミングが同期しているため、この手法がいちばんやりやすい。しかし気をつけないと演出の命令を表現する文字と画面に表示するための文字が混雑してしまう。

僕のやりかたではシナリオを書く段階では演出命令も日本語で読めるように表記する。書き終わってから、正規表現を使った一括置換で吉里吉里やArtemis Engineで動かせるスクリプトに変換する。

Artemis Engine

ところでArtemis Engineだが、ちょっとタグにクセがある。吉里吉里のタグがそのまま使えるのかと思ったら、同じ結果をもたらすのに独自のタグ名だったりする。たとえば、splayタグは音楽再生を意味する。どういう意味か五秒くらい考えないとわからなかった。sound playだ。しかし英語の語順から考えてふつうplay soundのほうがわかりやすいと思う。

Artemis Engineはスマートフォン向け、クロスプラットフォーム開発ができるノベルゲームエンジンだ。Windows、iOSとAndroid向けに開発できる。2010年からすでに存在しており、スマートフォン向けノベルゲームエンジンとしては最初期から利用されている。

最初は個人のプロダクトだったが、いまは株式会社IDが企業向けに配布している。個人プロダクトの頃からある紹介ページも更新が続いている。むしろこっちのほうが更新頻度が高く、より新しい情報が手に入る。

Artemis Engine本体を入手するには、開発者の御影さんに連絡しなければならない。同人でやる場合は無料。ビジネスとしてやる場合は応相談。らしい。こうしたクローズドな配布なので、個人のユーザー数は少ない。当然、公開されたドキュメントも少なくなる。公式のWiki(自由に編集可能)もあるけど、自分のやり方に強い自信を持っているわけでもないので、あまり堂々と書き込むきにはならない。このあたりのエコシステム、もっと自由に活発になってほしい。

ネイティブアプリとしてApp storeでも配布できるスマートフォン向けノベルゲームエンジンは他にもある。ティラノスクリプトAlmightあたりが有名だ。ブラウザでプレイするノベルスフィアみたいな選択肢もある。Adobe AIRを利用したAIRNovelというものもある。HTML5とJSを組み合わせて、一から個人で開発することも可能だろう。ちなみにブラウザで遊ぶM-trixのゲームマーケットというものも同人または企業向けにあるが、エロゲーを押し出しすぎてちょっと自分のソフトを並べる気にはならない。

それらに対するArtemis Engineの強みとして、採用実績が多いことがあげられる。メンテナンスも継続しているし、信頼度が高い。吉里吉里みたいに、オープンソースで、かつ自由に使えるもののほうが好きなんだけど、開発者の意向には逆らえない。

研究に関するやることリストを作成した。

7月に発表した研究論文の一部を英語に翻訳した。この調子でいくと、間違いだらけの英語でよければ七日で翻訳は完了する。しかしモデルを作り直したり評価の手法を変えたり実験をやり直したりするので、その翻訳で直接役には立たないとも思われる。

夕方

ガッチャマンクラウズ3話が無料配信してるので見た。最初は1920x1080の大きなディスプレイで見られるほど高画質だったが、露骨に画質・音質が低下する瞬間が何度かあった。いきなり喋る声が雑になるのでかなり違和感が大きい。画質のみの劣化に比べて明らかに強く不快に感じた。画質を落としてでも音質を優先させるべきだと思う。

集合知プログラミングを3章まで読んだ。サンプルコードを対話環境で実行させるだけで、自分ではほぼコードを書かない。写経をして自分でシステムを組み上げたほうが理解が深まるとわかってはいるが、それでは時間が足りない。実のところ、レコメンドやクラスタリングをコードで実現するのは初めてではない。大学院の授業で、同様のアルゴリズムを構築する宿題をRでこなしたことがある。だから、コードをすべて書き写さなくともだいたいの処理は理解できている、と思う。

どうせ二週、三週と読み直し、たまに振り返って読むものだから、最初の一回目では早く読み終わることを目標にしよう。一日一章を読み終える今のペースなら、コミケが始まる頃に読了できる。サークル参加の準備のために時間を割くとしても、8月18日には終わらせられるだろう。