Unity でノベルゲームを作ってみた ~Naninovel編~

ゲーム開発 |

今日は、Unityで簡単にビジュアルノベルゲームを作るアセット、Naninovelを使ってみます。

日本語マニュアルが充実していて分かりやすいので、こちらを読めばほとんどの機能が使いこなせるようになりますが、ここではよく使うメインの機能に絞って紹介します。

とりあえず、

  • Unity Asset storeでNaninovelを購入
  • 新しい2Dゲームプロジェクトを作って、Naninovelをインポート。

ここまで終わっている前提で進めます。

画面に文字を表示させる最初の一歩

新しい.naniファイルを作る

ゲームの挙動は全て、拡張子が.naniのファイルで管理します。

まずプロジェクトウィンドウの上で右クリックし、Create -> Naninovel -> Naninovel Script を選択して、Naninovel スクリプトアセットを作成します。

フォルダ構成は自由ですが、Assets/Scripts という名前のフォルダにNaninovel スクリプトを入れておくと、後々いいことがありそうです。

他にもキャラクター画像やBGMなどをフォルダ分けして管理すると便利です。

.naniファイルを開く

今しがた作ったファイルを(ここでは Main.nani というファイルを作ったとして)VSCodeなどのエディタで開きます。

お約束通りにこの一行だけ書いてみましょう。

Hello World!

ゲームを実行すると自動でタイトル画面が表示されます。「New Game」をクリックすると、Hello World! と表示されるはずです。簡単ですね。

シナリオを表示させてみる

Naninovelはライターフレンドリーなツールを謳っているだけあって、シナリオライターが普段小説やシナリオを書くような感覚で記述できます。

試しに適当な小説、例えばhttps://www.aozora.gr.jp/cards/000081/files/43754_17659.html

をスクリプトにコピペしてみます。

そのままゲームを実行すると、クリック待ちや改ページが自動で行われ、これだけで何だかノベルゲームっぽくなっています。

スクリプトファイル中では、改行がクリック待ち&改ページとして扱われるので、その行間に画像や音楽の表示を記述していきます。

キャラクター、背景、音楽を追加

キャラクターリソースを登録

必要最低限のキャラクター、背景、音楽を表示させるためには、まずコンフィグメニューからリソースを追加する必要があります。

まず上のメニューから Naninovel -> Resources -> Characters を選択。

この画面が出るので、Manage Characters Resourcesをクリックすると、キャラクターリストを管理できます。

+ボタンでキャラクターIDを追加します。このIDは分かりやすいアルファベット表記推奨。ここではA、B、Cに。

キャラクターの詳細設定画面に移ります。

Pixels Per Unit …画像の表示サイズを調整

Display Name …キャラクターの表示名

Resources …画像ファイルを登録

ひとまずこの3点だけ設定すればOK。

キャラクターを表示

リソースを登録したら、スクリプトで以下を記述します。

@char A

画面にキャラクターが登場しました。

背景を表示

背景を表示するにも、まずコンフィグメニューでリソースの登録が必要です。

Naninovel -> Resources -> Backgrounds を開き、MainBackgroundという項目の中に画像を追加します。

ここで一番上のforestを選択すると、ウインドウの下に、

「スクリプト @back forest で表示できます」という解説が出る親切設計。

言われた通りに、スクリプトファイルで

@back forest

と打ちます。

背景が出ます。

音楽を再生

音楽もまずはリソース登録から。

Naninovel -> Resources -> Audio

設定画面では、効果音もBGMも区別はありません。同じ音源ファイルでも、場面によって効果音として使ったりBGMとして使ったりできます。

; BGMを再生
@bgm forest
; 効果音を再生
@sfx door

BGMとして再生するとデフォルトでループします。効果音は単発の再生。

表現をさらにアレンジ

背景をアレンジ

パラメーターを追加することで、背景の表示の仕方を変えられます。この例をご覧ください。

@back forest.DropFade time:2 wait:false

forestという名前の背景を、DropFadeエフェクトで表示。

time:2 で、このエフェクトを2秒かけて表示します。

wait:false を指定することで、背景エフェクトを再生しながら同時進行で他の演出も実行します。

キャラクター表示をアレンジ

次の例をご覧ください。

@char B look:right
@slide B to:120 time:1

まずキャラクターIDがBのキャラクターを、右向きに表示。

@slide B to:120 で、BをX位置120の場所へスライド移動させます。

X位置は0が画面左端。100が画面右端。つまりX位置に120を指定すると、キャラクターが画面右端の外へ移動して見えなくなります。

time:1 で、1秒間かけてスライドします。

完成した実際のスクリプト

これが、今回Naninovelを使って作成したゲームの実際のスクリプト(前半パート)です。

@bgm forest
@back title.CircleReveal time:2 wait:false
@wait 4
@startTrans
	@back forest time:0
@finishTrans time:2
@printer TMProWide
二人の若い紳士が、ぴかぴかする鉄砲をかついで、白熊のような犬を二匹つれて、だいぶ山奥を歩いておりました。
@sfx foot
@char A.Body look:Right tint:grey
A: ここらの山はつまらないね。鳥も獣も一匹も居ないじゃないか。なんでも構わないから、早くタンタアーンと、やって見たいもんだなあ。
@char B.Body tint:grey
B: 鹿の黄色い横っ腹に、二三発お見舞いしたら、ずいぶん痛快だろうねえ。くるくるまわって、それからどたっと倒たおれるだろうねえ。
それはだいぶの山奥でした。案内してきた専門の鉄砲打ちも、ちょっとまごついて、どこかへ行ってしまったくらいの山奥でした。
@stopSfx foot fade:2 wait:false
@startTrans
	@hide A
	@hide B
	@back 2dogs
@finishTrans time:1
あんまり山が険しいので、その白熊のような犬が、二匹いっしょにめまいを起こして、しばらく唸って、それから泡を吐いて倒れてしまいました。
@hidePrinter
@sfx hit
@back forest.DropFade time:2 wait:false
@spawn ShakeBackground
@wait 2
@char A
@slide A to:40 time:1
A: 困ったな
一人の紳士が、その犬の瞼を、ちょっとかえしてみて言いました。
@char B
@slide B to:60 time:1
はじめの紳士は、すこし顔いろを悪くして、じっと、もう一人の紳士の、顔を見ながら云いました。
A: ぼくはもう戻ろうとおもう。
B: ぼくも寒くなったし腹は空いてきたし戻ろうとおもう。
A: そいじゃ、これで切りあげよう。なあに戻りに、昨日の宿屋で、山鳥を買って帰ればいい。
B: 兎も売っていたねえ。そうすれば結局おんなじこった。では帰ろうじゃないか。
@hidePrinter
@sfx foot
@char A look:left
@slide A to:-20 time:1 wait:false
@char B look:right
@slide B to:120 time:1
@wait 1

ゲームのダウンロードはこちら。上のスクリプトが実際のゲームではどんな演出になるのか、お試しください。

THE RESTAURANT WITH MANY ORDERS


この記事もおすすめ

執筆者

Yulius

ゲームの翻訳を承っています。お気軽にご相談ください。 パブリッシング、その他ゲーム開発についての相談もまずはご連絡ください。

お問い合わせ