In Verbis Virtus

In Verbis Virtus

25 ratings
オリジナル呪文のつくりかた
By Greener
IVVで使う呪文は独自言語であるMaha'kiかEnglishかを選べますが、自分で設定することもできます。
以下、その弄り方の覚書。ネタバレ注意。
   
Award
Favorite
Favorited
Unfavorite
title
まず最初に
In Verbis Virtsの音声認識用の定義ファイルは以下の場所にあります。
中身はただのシンプルテキストなので、メモ帳ひとつあれば簡単に編集出来ます。

Steam\steamapps\common\In Verbis Virtus\Binaries\Win32\UserCode\grammars\

VReco.jsgf が各呪文の名前の定義ファイル。ジャーナルに表示されるのもこの名前です。
VReco.dic がその発音の定義ファイル。

この両方を編集して適当な名前のフォルダに入れ、englishやmahakiフォルダと
並ぶように配置しておけば、ゲーム内で英語/Maha'kiを切り替えるのと同様に
オリジナル言語の呪文を選択し使用することが出来ます。

叩き台としてどちらかのフォルダをコピーしてフォルダ名だけリネームし、
ひとつずつ改変しては動作確認をしていくのがいいと思います。
余談ですが、Maha'kiの方にはボツになった呪文の名残なんかもあります。

My_Magicというフォルダにしてみた例


その言語に対する説明もありませんし、一覧でなんだか余計な文字が表示されますが
取り敢えず機能はするのでよしとします。
実際にいじってみよう
では早速明かりを灯す呪文、Maha'kiでLumeh Tialを編集してみましょう。
ちなみに英語呪文はLet there be light。旧約聖書にて神が最初に言う「光あれ」です。

まずVReco.jsgfを適当なテキストエディタで開きます。

<VRS_Light> = lumeh tial;

これが明かりの呪文の定義文。ここではライティングという呪文にしてみましょう。

public <VRS_Light> = lighting;

こう。見たままです。Maha'kiにはありませんが、英語の方では文頭に
publicと書かれているので念のため再現しておきます。
続いて、lightingとはどういう発音なのかを教えてやるため、
VReco.dicを同様にテキストエディタで開きます。

tial T Y AH L tial(2) T IY AH L lumeh L UH M EH

ここが該当部分です。
呪文名で半角スペースを挟んで複数の語を使用した場合は個別に設定する必要があり、
また(2)(3)と続けることで別パターンの発音も登録できるのが見て取れます。

書式は呪文として設定した単語、Tab一回、母音や子音を半角スペースで区切って表記、です。
Tabは呪文と発音の区切りなので、二度三度と使って発音の書き出しを整形してはいけません。
なのでここではこのようにします。

lighting L AY T IH N G

ここまでできたら一旦保存し、実際にゲームで読み込んで見ましょう。
書式を間違えている場合、呪文言語を選んだ瞬間、
あるいは一言しゃべろうとした瞬間にクラッシュします。

無事に動作が確認できたら、あとは同じ方法でどんどんオリジナル呪文に
書き換えて行くだけです。夢が膨らみます。似たような呪文があると
暴発の確率も上がりますので、なるべくかけ離れた単語を選ぶのが認識率を上げるコツです。
参考資料
必要な呪文数
最終的にVReco.jsgfで定義しなければならない呪文は16種。

#JSGF V1.0; grammar VReco; Public <VRS_Light> = 周囲を照らす; public <VRS_LightBeam> = 灯りのビーム; public <VRS_Command_1> = ボタンを押したりするの; public <VRS_Telekinesis> = 念力でものを持つ; public <VRS_TelekinesisPull> = 念力で引っ張る; public <VRS_TelekinesisPush> = 念力で押す; public <VRS_TelekinesisStasis> = 念力でその場でとめる; public <VRS_Heal> = 水場で回復; public <VRS_MarkOfFireCreate> = 炎の刻印; public <VRS_MarkOfFireActivate> = その起爆; public <VRS_TeleportDirect> = テレポート; public <VRS_TeleportDirectCursor> = マーカーを出してテレポート; public <VRS_Shield> = バリヤ; public <VRS_ShieldThrow> = バリヤで受け止めたものの撃ち返し; public <VRS_Freeze> = 冷気ビーム; public <VRS_WallOfFire> = 火の壁;

これだけ書いてあればVReco.jsgfは機能します。

VReco.dicで使える表記
jsgfでぐぐったら出ました。
音素
サンプル
表記例
音素
サンプル
表記例
AA
odd
AA D
L
lee
L IY
AE
at
AE T
M
me
M IY
AH
hut
HH AH T
N
knee
N IY
AO
ought
AO T
NG
ping
P IH NG
AW
cow
K AW
OW
oat
OW T
AY
hide
HH AY D
OY
toy
T OY
B
be
B IY
P
pee
P IY
CH
cheese
CH IY Z
R
read
R IY D
D
dee
D IY
S
sea
S IY
DH
thee
DH IY
SH
she
SH IY
EH
Ed
EH D
T
tea
T IY
ER
hurt
HH ER T
TH
theta
TH EY T AH
EY
ate
EY T
UH
hood
HH UH D
F
fee
F IY
UW
two
T UW
G
green
G R IY N
V
vee
V IY
HH
he
HH IY
W
we
W IY
IH
it
IH T
Y
yield
Y IY L D
IY
eat
IY T
Z
zee
Z IY
JH
gee
JH IY
ZH
seizure
S IY ZH ER
K
key
K IY

母音にAH IH UH EHはありますが、OHは存在しないので使うとクラッシュします。
日本語の母音だけ書き出して見るとこんな感じです。
あ、あぁ、あぃ、あぅ、あー AA AH AY AW ER
い、いぃ IH IY
う、うぅ UH UW
え、えぃ EH EY
お、おぃ、おぅ AO OY OW
あとえの中間? AE

子音では、Hは単体で使わずHHと重ねること、JもJHとすることに注意しましょう。
QとXはありません。


具体的には
というわけで、例えばAtul AghniFlame Arrowにしたければ、
VReco.jsgfを
public <VRS_MarkOfFireCreate> = flame arrow;
として
VReco.dicに
flame F L EY M arrow AH L OW
と書いてやればいいわけです。あとはひたすらトライアンドエラー。

黄昏よりも昏かろうが血の流れより紅かろうが一向に構いませんので、
各自童心に帰って子供ゴコロにキュンキュンきちゃう素敵な呪文をひねり出して下さい。

それでは、楽しい呪文ライフを。
1 Comments
Kashomaru 11 Oct, 2022 @ 9:24am 
I didnt know this was possible. Very interesting. Thank you.