RPGツクールMVのイベントコマンドのテキストデータをJSONに変換できるか

f:id:aoitaku:20200213222004p:plain
コンテキストメニュー内の「テキストとしてコピー」

イベントコマンドをテキストとしてコピーできる機能がある。「HTMLとしてコピー」の方はエディタ上の見た目を維持したまま、掲示板などに貼り付けるための機能で、フォーラムなどではこれがあると確かに便利だろうと思う。

本当は一番欲しい機能は JSON としてコピー / ペーストできる機能なんだけど、それはない。実は内部的には JSON でやりとりをしている。RPGツクールMV同士なら、JSON でコピーペーストできる。で、Everett のコピーはRPGツクールMVと同じ形式でクリップボードにコピーするので、RPGツクールMVのエディタ上にペーストできる。逆はできない。できるようにしたら便利だろうとは思っているのでそれはいずれやるとして。

Everett は Electron 製なので、クリップボードの操作がある程度自由にできるんだけど、ブラウザではそうもいかない。たとえばフォーマットを指定することができない。 Chrome なら Chrome からコピーしましたよという情報で固定される。Chrome から不正なデータをクリップボードにコピーして意図しないアプリケーションにペーストできないようにとかそういうセキュリティ上の理由だと思う。RPGツクールMVは当然RPGツクールMVからコピーされたデータしか受け付けない。EverettはRPGツクールMVと同じデータですよと言い張ってるのでコピーできる。

フォーラムなどで、テキストとしてコピーでエクスポートされたデータを、逆にツクールのデータに戻したいことがあったりするかもしれない。ウディタはコモンイベントをプラグインっぽく配布してやりとりできる。ツクールではこれはできない。できたほうが便利だと思ってるんだけど、なかなかそうもいかない。

ツクールのイベントデータをテキストとしてコピーしたものは、決まった書式があるので、パーサを書けば JSON に変換できそうに見える。

試しにやってみようと思って、全イベントコマンドのテキストのサンプルを集めようとしてみたんだけど……

変数の操作の時点でで無理ということがわかった。百聞は一見にしかず。

変数の操作:#0001 一時変数 = ポーションの数
変数の操作:#0001 一時変数 = 剣の数
変数の操作:#0001 一時変数 = 盾の数
変数の操作:#0001 一時変数 = ハロルドのレベル

アイテム名からアイテム番号を取得するのはデータベースを見ればいいのでともかくとして、剣という名前のアイテムが複数あったとき、どのアイテムにマッチさせるのがいいのか。剣という名前の防具やふつうのアイテムの可能性だってあるわけだ。 アクターとエネミーにも同じことが言えて、アクターとエネミーで同じ名前のキャラがいるとどっちなのかわからなくなる。アクター内で同じ名前のときも、まず困る。 アクターに関しては名前の変更コマンドが使えるので、データベース上では一意な名前をつけておいて、ゲーム開始時に名前を変えるということをすればなんとかなるかもしれない。でもそれはそのように対策をしているデータでのみ、正確にパースできるという話になる。

これは断念するしかないかなあ。

まあそもそもフォーラムにアップされたテキストデータだけからは絶対に変換できない、最低限データベースも一緒に必要、っていうことになるので、そこでも現実的ではないんだけど。

ローカルで動くアプリだったら、別にテキストでコピーじゃなくて普通に JSON でやりとりすればいいので、今回はボツということで。

RPGツクールMVのプラグインの作り方

を、これまでなんとなくプラグイン書いてきたけどベストプラクティスがあるなら知りたいみたいな人向けに、解説するやつをやりたいなと思っている。

特に RGSS から JavaScriptプラグインに引っ越してきた人向けというか、JavaScript だったらこう書いたほうがいいよ!っていう話をしたい。

もうちょっと欲張ると、ツクールやってるから条件分岐とかループくらいのプログラミング要素はわかるけどコードはうまく書けないみたいな人に、シンプルな単機能のプラグインを作るのはあなたにもできます!っていう感じの話とかもしたい。

あとは実用的で応用が効くコードを実例にする。解説記事の最後のコードサンプルがそのままプラグイン素材になるような。

プラグイン作者は自分のプラグインのコードリーディングをやってくれたりはしなくて、黙々とプラグインを作って配ってて、とはいえ利用者向けにプラグインのコードリーディングってそんな需要ないし、プラグイン書ける人だったら読めばわかるじゃん、みたいな気持ちある、そもそもそんな解説記事書く時間取れないとかもまあある。プラグインってメンテしないといけないしユーザのサポートもしないといけないからね。

MITライセンスとかになってるやつでお手本になるような他作者さんのプラグインのコードリーディングやったらたぶん面白い気がするし、ためになると思うんだよね。わたしが Ruby 覚え始めた頃って Ruby Magazine のコードリーディングの記事読んでたんだけど、そういう感じの体験って JavaScript では実は全然してなくて、それはそういうのは自分にとってあんまり必要ではなくなったからっていうのはもちろんあるんだけど、ツクールMV のプラグインとかだと全然需要あるんちゃうか?っていう思いがある。

あと、2020年になって JavaScript もバージョン上がっていくし、JavaScript のバージョンが上がればツクールMVのコアスクリプトだったりNW.jsのバージョンも上がる。最新の JavaScript の状況をキャッチアップできる内容とかもあるといいなーということを思っています。前にも話が出てるんだけど、もう es2015 使っても大丈夫だよ、とか。

そういうやつをいずれやろうと思っているのでそのときは応援とかしてくれるとうれしい。

こちらからは以上です。

イベント後記

コミティア131おつかれさまでした。来てくださった方ありがとうございます。

イベントに自分で参加するのはとても久しぶりで、コミティアへの参加はコミティア100*1以来、自分の新刊としては2010年以来とかになるんじゃないかと思います。

お金の話に抵抗がある方もいるかとは思うんですけど、詳細でない程度の収支の報告をすると、とてもありがたいことに印刷代分くらいの売上は出ていて、諸経費分でちょっと赤字、くらいの感じになっています。
これから先の売上を参考資料の購入に充てられるくらいの感じになっているので、今後の活動がやりやすくなったなーと思っています。 今回本をつくるに当たって課題として感じたのが、音声学の専門書とかちゃんと読んだことがなくて、正確な情報を出典つきで記載するのが大変っていうところだったので、それがネックになって書けていないこととかがあります。ウェブは後から直せるので多少そのあたりが雑になってもカバーできるんですが、紙の本はそれが全てなので、そのあたりはしっかり責任感を持ってやらないといけないと思っています。今後は売上を参考資料の購入に当てて、より充実したものを作っていければなーという感じです。

で、今後の予定なんですけど、とりあえず次回のコミティアに乗り込むほどの時間的余裕がないのもあり、次のオフライン活動は秋以降になると思います。

Web での連載はいつでもできるので、記事が書き上がり次第、名前の作り方の続きをやっていきます。本のあとがきにはちょっと書いたんですが、次は時代とか地域による言語の違いにフォーカスした名前の作り方をやる予定です。あとは音声学、音韻論の入門的な話と、音象徴と名前づくりの話とかもやりたい。これでたぶん1冊くらいのボリュームになると思います。よく練って夏くらいまでに全部公開できたらいいなと考えています。

ゲーム製作はサークルとしては幻葬再演・急を今年秋に向けて作っているところです。今年の秋……東方の同人誌即売会……あとはわかるな? という感じなので、やっていきます。

まぼろし国の食卓よりという作品を一昨年から書いているのですが、まる二年もあけてしまい、もう書かないんじゃないかという感じもあったしそういうことを何回か書いてきたんですが、なんか書いたら書けたので、書いて書けるうちは書いていこうと思っています。たぶんあと10話くらいで一章が完結するので、年内には一章分くらいは終わると思っています。終わらなかったら……

というわけで今年も1ヶ月すぎましたがまだまだやっていきます。これからもよろしくおねがいします。

*1:8年前です

コミティアに「フィクションのための名前の作り方」本を出します

2月9日(日)東京ビッグサイト西ホールで開催されるコミティア131に出ます。

スペースは Q18a、サークル名は Alias over the Azure です。Lunatlazur 名義ではなくて個人名義ですけど、表紙はいつもどおりゆえっちにお願いしたので、いつもどおりです。

出すのはこれを本にしたやつです。

medium.com

書いたときからちょっと時間が経っているので書き直さないといけない部分があったり、あらためて検証したら間違ったこと書いてあるところあったりしたので直したりしています。直したものは Web 公開分にも反映するので、ほぼ Web に上がっているものをそのまま本にしたやつ、という感じですが、本は Web と違ってリンク先を簡単には見に行けないので、そのあたりのフォローが入っています。そういうわけで本のほうが総合的には読みやすいかもしれません。
あと、Web 版は Medium というサイトの性質上ちょっと読み込みが重いとか、まとめて読むのにはあまり適していないところがあるので、そういう人も紙の本がおすすめです。

表紙はこうなってます。

f:id:aoitaku:20200131004617p:plain
表紙

この表紙がついてくるのは紙の本だけなので、この表紙がほしかったら紙の本を買いましょう。
今回のロゴは自分で作ってみたやつです。作るの大変だったけど、今後ゲーム作るときにタイトルロゴとかに活かせたらいいなと思う。

本文はもう Web 公開されてるのを見ればわかるようにほとんどできてます。楽勝とか思ってたら死ぬほど直しがあったので死にました。直し終わったので生き返ったんですが、図や表を挿入するのが死ぬほど大変なのでまた死んでいます。まだ本文デザインも裏表紙もあとがきも残ってるので、これからもうちょっと死にます。

当日は蘇生してるのでよろしくお願いします。

38

これはこのブログの年間最大記事数なんだけど(わたしの歳の話はしてないです)、最初に38記事書いた年は、12月にひとりアドベントカレンダーをやって集中的に記事書いて38記事だったのが、昨年は毎月ちょっとずつ書いて38記事。もちろん記事の粒度に差はあるものの、本当は集中せずにこれくらいの記事書いていくのがいいんちゃうかということを常々思っていたので、ひとまずはある月に集中的に書いた年と変わらないくらいにはコンスタントに記事を書けた年だったので、よかったねと思っている。

ただ、38記事っていうのはつまり月平均3記事なので、まったくもって足りない。かろうじて月記よりは書いているけれど、週記未満である。

というわけで今年はせめて週記くらいは書けるようになりたいと思ったんだけど、なんと1月はもう2週目が終わろうとしてるんですな。すでに失敗している……みたいな、こういうところで変に完璧主義をさらすとまったく進歩がないので、まあ月平均で4記事書くのを目標にしたらいいんじゃないですかね、くらいの気持ちでやるのが正しい。だんいずべたーざんぱーふぇくと、べいべ。

昨年は一応サークルとしては新作ゲームを発表できたし、個人としても、ファンタジーの名前の作り方の連載をしたりして、それなりに成果はある年だったんだけど、十数年前には300ページを超える文庫本作ったりしてたことを考えると、もうちょっとやっていきたいなという気持ちがある。ひとまずは2月にファンタジーの名前の作り方の紙の本を出すことが決まっているのでそのための組版とかもろもろの作業をやっていく。

その後は一本新作ゲーム作りたいですね。サークルとしては幻葬再演・急を作ってこれでシリーズ完結予定なので、これもまあ秋までにしっかりやりましょう。それとは別に、本当に新作を一本。東方の二次創作ゲームも作りたいし、オリジナルも作りたいんだけど、まあどっちか一本作るのをまずは目標にしましょう。欲張るとたいていどっちも達成できない。地道にやりましょう。

今年もよろしくお願いします。

けんえん

敬遠と倦厭と嫌厭はそれぞれ全く違う語なんですが、敬遠と書くところを倦厭や嫌厭と書いていることがまあまああります。

じゃあ、意図して倦厭や嫌厭を使うのはよいかというと、まあ、あえて使うほどの語ではないような気もしていて、たとえば、倦厭は、うんざりする、あるいは辟易するなどでほぼ置き換えられます。嫌厭も、おおよそ嫌悪でよいでしょう。

厄介なのは、この倦厭や嫌厭が、「嫌悪を表明しながら遠ざける」のようなニュアンスで使われていることです。このケースはうんざりしているわけでもないし、単に嫌悪で置き換えられるものでもない。敬遠のように、表面上は嫌悪感を表明しないような遠ざけ方とも違います。

まあでも、それなら単に遠ざけるでよかったりはするんです。一番フラットに使える。でもなんとなく漢語の硬さがほしいときには物足りない。敬遠とはややニュアンスの違う遠ざける語がほしい。

ありますよね。

たとえば、排斥。疎外。忌避。弾指(たんじ)、なんていうのもあり、これは爪弾きにすることです。シチュエーションによって使い分けができる。少なくとも、毎回倦厭や嫌厭と書くよりは、細やかな心情を表現できると思います。

こうなってくると倦厭、嫌厭を使う意義っていうのは、実際ほとんどなかろうもんでしょう、と思います。わたしは使うことをためらってしまう。

わからないでもないんですよね。日本語では言葉は字ではなくまず音に立ちます。けんえんという音が使いたい。でもそこで安易に音に引きずられることなく、言葉を使い分けてこそ文を書くということだろうと思います。

こちらからは以上です。

Dawn of Man 感想

store.steampowered.com

見た目は Banished の原始時代版という感じのシミュレーションゲーム。野生動物や襲撃者が襲ってくるので、プレイフィールとしては Rim World のほうが近い。特筆すべき点は技術ツリーが先史文明、それも更新世の後期からはじまる点で、旧石器の文明と、ケブカサイ、ホラアナライオン、ギガンテウスオオツノジカ、それからマンモスといった太古の動物が共存する環境を体験できる。マンモスを狩って肉、毛皮を得る狩猟採集生活からはじまるのだ。技術をアンロックして時代が進むと、これらの動物はやがて絶滅する。

難易度ノーマルでは、敵の技術レベルはプレイヤーと同じになっているので、のんびり発展させていくことができる。序盤は技術の発展も遅く、何の驚異もないとちょっと退屈かもしれないが、このゲームではほどほどに野生動物や襲撃者がやってくるし、ほどほどに犠牲者も出る。犠牲者が出てもすぐあたらしい入植者が来るので、それほどの緊張感はないが、張り合いがないというほどでもない。高難易度だとどうなのかはまだプレイしていないのでわからないんだけど、敵がどんどん技術を発展させていくらしいので、そっちのほうがやりごたえがあるかもしれない。

技術は、累積の建築数、資源獲得数、狩猟数などで知識ポイントが貯まって、このポイントを支払って技術を獲得していく。が、知識ポイントの貯まりは序盤は特に遅く、ちょっとテンポが悪いように感じる。逆に時代が進むと一気に知識ポイントが貯まっていくし必要な技術の数も多くないので急激に時代が進んでいく。まあこのゲームの肝は石器時代までにあるような気はするので、銅器を作れるようになってから鉄器まではこれくらいのスピード感でもいいのかもしれない。

時代が進むと前述の通り太古の動物たちは姿を消すし、ゲーム開始時の牧歌的な雰囲気は薄れてしまうので、ちょっと物寂しい感じがするが、それも人類史という感じで、そういう体験ができる貴重なゲームだと思う。

不満はいくつかあり、動物を飼いならそうにもオスとメスの幼体が揃って見つからないことがけっこうあり、とりあえず一方だけ捕まえてきても、次の年にもう片方の幼体を捕まえたところで、繁殖タイミングを逃しがち。成体の期間が短すぎることない?という感じなんだけど、長かったら長いで今度は繁殖しすぎて家畜数が爆発する可能性があるので、しょうがないかもしれない。あと今いる家畜の性別を把握しにくいのもなんとかしてほしい。ある程度増えると関係なくなるんだけど。

また、狩猟や巨石採掘などで遠征するときに保存食も水も持たずに出かけるのは何なの、というのがある。遠出してる間なんも食べないし何も飲まないので飢えや乾きで死ぬ。遠出するなということなのはわからないでもないんだけど、集落の付近に都合よく動物が集まってきてもそれはおかしいし、狩りのために遠征するほうが自然だし、このへん、資源管理とうまく両立できてほしい。

襲撃者はアホなので見張り台があったら途中に建物があっても無視してそっちを壊しに行く。お前らはなんなんだ。人間は死んでも替えがきくけど、貴重な資源を費やして建てた建物が壊されるとリカバリーに苦労する。だからこそ建物を守るために工夫しがいが出てくると思うんだけど、現状だと建物ノーガードで人の壁でもよかったりはする。高難易度だと追加の入植者があんまり来なかったりするのかもしれないから、高難度やってからこのへん見極めたいところ。

マップは広いんだけど、この広さを活かせるゲームではないような……最初に定住地ありかなしか選べるんだけど、定住地なしでスタートした場合でも、どこに入植するか決めるだけで、さっき書いたとおり遠征しないほうがいいゲームという感じになってしまっているので、マップに対してこじんまりした遊びになりがち。もうちょっと広々遊べるといいなあと思う。

公式では日本語化されていなくて、ワークショップの日本語化を導入すると日本語にできる……が、ワークショップの日本語化はやや訳がぎこちなく、また、ゲームプレイの言語依存度はそもそもぜんぜん高くないので、英語のままプレイしたほうがわかりやすいかもしれない。

価格は2600円くらい。プレイボリュームはしっかりあるので、値段分はゆうに遊べる。この手のゲームが好きな人にはオススメ。