今回の記事は約一年間かかりました開発の結果についてです。
簡単いうと、ゲーム等のなかで長い話を書く用の新しいスクリプト言語でございます。目的が物語を書くから「声」の漢字からKoeになってScriptを合わせKoeScriptになりました。GitHubでオープンソースとして登場しました。
よければKoeScript公式サイトそれともKoeScriptリポジトリをご覧ください。
言語を作るの理由
現在は話用のスクリプト言語が多いので、どうして新しい言語を作ろうって思いましたか。その理由が三つであり。
- こよなく、言語がいつもあるエンジンやあるソフトと繋がって、他の環境で使用できません。
- 普通のスクリプト言語の書き方が難しし、論理が強すぎて誰でもはあまり使えません。
- 特にノベルゲーム制作だと、使える言語は使えろエンジンやプラグインによる。
この状況で、誰でも書けると読めるスクリプト言語の開発を決めました。その上、初心者プログラマーが手伝えるようにソードコードが簡単に書きました。
機能の一覧
KoeScriptを利用したファイルでは、3つ類の事を書くことができます。
- まずはもちろん「メッセージ」です。誰かのキャラが言うのセリフが書けます。
- あとは「関数の呼ぶ」です。ゲームで効果ができるように、関数が呼べます。例えばキャラを画面に見せるか、音楽や効果音をするか、壁紙を変更するか。
- そして話に大事なところをマークするために「ラベル」が置いとけます。
そのおかげで、どんなノベルゲーム通りに話が進んで、ゲームに影響ができます。
スクリプト例
下記はKoeScriptの簡単の例でございます。
# これはコメントですね。
# まずは日付を表示しましょう。
@date "31/01"
# これで音量の80パーで音楽を再生しましょう。
@bgm "lonely_moon" volume=0.8
# 壁紙を変更するように関数を呼び。薄りながら下から上まで滑る。
@bg "school_corridor" fade translate="up"
# 下記からのイベントをマークようにラベルを置きましょう。
*firstmeetingwithguide
# "guide"と申すキャラが「Hello!」と言います。
guide : Hello!
# キャラの名前が書いてなくたら、従前のキャラがまた話すっていう意味です。
How are you?
ただのセリフはいつもメッセージとして認めて、@マークから始める行が関数呼びとして認めます。
関数を呼びながら、もちろん引数も書けます。これからは音楽をかけるbgm
関数を例として使いましょう。
[KoeFunction]
public void Bgm(string name, float volume = 1) {
// 関数の内容
}
KoeScriptでは、位置引数も省略可能な引数も伝えます。位置引数name
は望んでいる音楽の名前、そしてvolume
省略可能な引数は音量ですね。
# 位置引数の場合は、正しい位置で値を書いと置いて
@bgm "super_song"
# 省略可能な引数の場合は、引数の名と値を`=`で区切られた書いて置いて。
@bgm "mega_song" volume=0.7
基本的にどう使えるの?
KoeScriptの中心は、KoeScript言語の参考です。今でもプロジェクトの第一です。この参考による、インタープリタ方式で最初のC#実装ができました。構文が簡単なので、他の言語で実装を開始したら速くできると思います。
その上、KoeScriptが色々別のゲームやアプリに実装されたら、どこでも同じ使い方があるように共通の関数とタグが決めました。例えば壁紙を変更ために呼ばれる関数があったら、「共通の関数」の@bgm
による書いたら楽になります。それとも話のセリフにふりがな表示したい、「共通のタグ」がすでにやり方が決めました。
特にいつか新しいKoeScript向けのアプリやプラグインができたら、その共通の関数とタグを理解できたら、KoeScriptを使っているゲームやアプリにすぐ役に立てます。
上記のドキュメントたちがGitHubで見つかれるから、いつか言語が進化したいなら誰でも更新を提案できます。
ただいまKoeScriptに関する実装は:
- koescript-cs : C#言語で原初実装
- koescript-unity : Unityエンジン向けパッケージ
- koescript-vscode : Visual Studio Code向け拡張機能
生きている言語へ
言語の開発って普通に難しい領域のですが、最初から簡単に行こうと決めたから初心者プログラマーなどでも参加できて自分のプロジェクトに利用して、それにてKoeScriptが真面目に言語になるチャンスがあると思います。
GitHubにどんな提案でもが出来たら良かったです。ご遠慮なくよろしくお願いします。
読んでいただきありがとうございます。このトピックで話したいなら、ツイッターは@komanakun、Wantedlyはこちら、LinkedInプロフはこちらです。