【雑記】Mesをアイコントーク対応させるためのあれこれ【遅々開発】
Ci-enでも時々取り上げてきましたが、個人的な趣味で脚本に特化した軽量記述言語Mesを研究開発しています。
簡単に説明するなら「セリフをデコレーション(装飾)するように、キャラ名やト書きといった情報をセリフに付与していくような記述言語で、JSONなどの構造化されたデータフォーマットに変換できる」のがMesの特徴です。
詳しく知りたい人はここをみてください
前の記事からもう1年以上過ぎてしまった事実に驚愕してますが、あれからも裏では報告しても何も面白くない実験やらプログラミングを黙々としていました。
新機能の実装というよりは概念実証とか思考実験とか。
そんなある日、Mesをアイコントークに対応させるための概念実証をしていたら、あることに気づきました。
キャラクターデコレーター”@”が持てる情報はキャラ名だけじゃん……
元々、(舞台や音声ドラマなどを意識した)脚本向けの記述言語として作ってきたので、従来はキャラ名だけで十分だと考えていました。
実際にチャットスタイルの出力はキャラ名だけで良かったので。
ですが、アイコントークでセリフ毎にキャラの喜怒哀楽のアイコンを使い分けたいと思った場合、現状のMesではキャラクター名を「いらにか(泣)」とか「いらにか(怒)」のようにするしかありません。
そうすると「いらにか(泣)」と「いらにか(怒)」は別々のキャラクターとして識別されるので、区別して別々のアイコンに紐づけることができるようになりますが、今度はキャラのセリフを集計しようとするときに「いらにか(泣)」と「いらにか(怒)」を合算するような集計ロジックを別途定義して書き換える必要が出てきます。
(自然言語を柔軟に読み取れる人間なら上記でも、キャラ名=いらにか、表情=泣、のように読み取れますが、機械にはパターンを覚えさせる必要があり少し厄介なのです)
まぁ集計が別々に分かれるくらいなら致命的ではないですが、すっきりとしない気持ち悪さが残ります。
(キャラクター名とアイコンの情報という違うデータを個別に保持できていないのが気持ち悪い)
というわけで、この問題を解消するために新しい言語使用の案をいくつか考えました。
その一つがアトリビュート案です。HTMLのタグの属性っぽいイメージです。
@いらにか ::img=泣きアイコン
生ぎたいっ!!! //これがセリフ
↓データ構造はこんな感じ?`
{
Charactor: {
value: "いらにか",
img: "泣きアイコン"
},
Dialogue: "生ぎたいっ!!!"
}`
上記は安直な初期案で、::img=""
のような形式だと速記性が悪い(imgを日本語入力のままだと”いmg”のように打ってしまう)ので記述方法はもっと練らないといけません。
そして、記述仕様が変わると解析プログラムも変更が必要になります。
この記述仕様に変更が加わるときのプログラムの修正コストが結構デカイので、どうにか軽減できないかという問題も実証実験したりしています。
完全に趣味の研究開発なので、単に実現することよりも「どうスマートに実装するか」を重視しているため進捗は著しく遅いです。
商業(仕事)だったら絶対にこんなやり方はしないですが、知的好奇心を満たしてスキルを磨くためなので、それを言い訳にして遅々として開発をしています。
実現重視のスピード開発はすでにシンプルMesエディタで散々やったので……