Skip to content

スタートガイド

前提条件

Naninovelは Unityゲームエンジン ↗ 用の拡張機能です。そのため、Naninovel を始める前に Unity の基礎を学んでおくことを強くおすすめします。

以下のマニュアルは特に重要です:

Naninovel 外で独自のゲームプレイを作成する予定がなければ、シーン関連の情報は全て無視して構いません。Naninovel で対応できます。

基本の概念

Naninovel をセットアップして使用する前に、基本概念についてざっと見てみましょう。 このガイドでよく目にする重要な概念に、アクター というものがあります。アクターは識別子(ID)、外観、空間(シーン)の中の位置、その他いくつかのパラメーターによって記述される抽象的な要素です。

アクターは抽象的な要素であり、直接存在することはできません。代わりに、様々な追加パラメーターが付与された特別なバージョンが使われます。

アクターの種類追加パラメーター説明
キャラクターLook Directionシーン中のキャラクターを表します。
背景Noneシーンの背景を表します。デフォルトでは、キャラクターアクターの後ろに配置されます。
テキストプリンターText, Author ID, Reveal Progressテキストメッセージを時間差で徐々に表示します。
選択肢Choicesプレイヤーに選択肢を選ばせます。

背景の上にキャラクターが描かれた典型的なビジュアルノベルの設定を考えてみましょう。 Naninovelの用語では、次のように表されます。

cover

では "Kohaku" キャラクターを嬉しそうに見せたいとしましょう。キャラクターにはいくつかのテクスチャ(画像)が存在し、それぞれが異なる感情を表現します。Naninovel では、そのようなテクスチャはアクターの 外観 と呼ばれます。同様に "MainBackground" に別の何かを表示させるには、背景アクターの外観を変更する必要があります。

アクターとそのパラメーターは、Naninovel スクリプト に記載されているコマンドによって制御します。

他にも広く使用される概念として、ユーザーインターフェイス (UI) があります。UIは、プレイヤーがアクターやゲーム自体を操作するのに使います。例えばメニュー画面(タイトル、セーブロード、設定など)やコントロールパネル(自動読み進み機能の切替、スキップなど)です。デフォルトではUI要素はアクターの上に配置されます。

テキストプリンターと選択肢ハンドラーは、アクターでありUI要素でもあります。つまりアクターの性質を共有し、naninovelスクリプトを介して制御できると同時に、プレイヤーがゲームを操作するのにも使用されます。

プログラミングに詳しい方は エンジンアーキテクチャー を参照して、ソフトウエアの観点からどのように設計されているかをご確認ください。

新規 Unity プロジェクトを作成する

基本概念を念頭に置きつつ、早速初期設定を始めましょう。始めに Unity プロジェクトが必要です。作成方法は、Unityマニュアル ↗ を参照してください。

プロジェクトは 2D テンプレート を使用して2Dモードのエディターで作成するのがよいでしょう。そうすれば画像はデフォルトでスプライトアセットとしてインポートされるので、手動でインポート設定を変える必要がありません。エディターモードは後から プロジェクト設定 ↗ で変更できます。

新しいプロジェクトを作成すると、Unityは2つのゲームオブジェクトを含むサンプルシーンを自動的に追加します。「メインカメラ」と「指向性ライト」です。Naninovel は完全にシーンから独立しているため、この二つのオブジェクトは削除することができます。そうすれば不要なパフォーマンスの圧迫を発生させません。サンプルシーン自体を削除することもできますが、一部のエディター機能を正しく動作させるには、プロジェクトに少なくとも1つのシーンを含めることをお勧めします。

Naninovel のインストール

アセットストア ↗ で Naninovel パッケージをインポートし、スクリプトコンパイルとインポート処理を待ちます。必要に応じて、プロジェクトアセットディレクトリ内の任意の場所に自由に Naninovelパッケージフォルダーを移動できます。

Naninovelを使用する過程で、いくつかのアセット(コンフィグ、設定、保存など)が Assets/NaninovelDataフォルダー内に自動的に生成されます。パッケージフォルダーと違って、データフォルダーを手動で移動しないでください(自動的に再生成されます)。データフォルダーの場所を変更する場合は、エンジンの設定メニューで Generated Data Path プロパティを編集します。

Naninovel スクリプトを追加

アセットのコンテキストメニューから Create -> Naninovel -> Naninovel Script を選択して、Naninovel スクリプトアセットを作成します。

Create Naninovel Scriptcover

NOTE

Naninovelスクリプト(および他のすべてのNaninovelリソース)は任意のプロジェクトフォルダーに保存し、好きなように整理することができます。命名も自由です。上図は一例です。

Naninovelスクリプトはテキストドキュメント( .nani拡張子)であり、シーンで発生する動作を制御します。メモ帳、TextEdit、VS Code ↗ などの任意のテキストエディターで開いて編集できます。

Open Naninovel Scriptcover

ビジュアルスクリプトエディターを使用して、naninovelスクリプトを編集することもできます。作成したスクリプトアセットを選択すると、ビジュアルエディターが自動的にインスペクターウィンドウで開きます。

cover

スクリプトに新しい行を追加するには、行を挿入したい場所を右クリックするか、 Ctrl+Space を押して(入力コンフィグメニューでデフォルトのキー紐付けを変更できます)、目的の行を選択します。行を並べ替えるには、番号ラベルを使用してドラッグします。行を削除するには、行を右クリックして "Remove" を選択します。

ビジュアルエディターを使用してスクリプトを変更すると、インスペクターヘッダーのスクリプト名の上にアスタリスク (*) が表示されます。つまりアセットを保存する必要があります。 Ctrl+S を押してアセットを保存します。スクリプトがダーティの時に別のアセットを選択しようとすると、ダイアログウィンドウがポップアップ表示され、変更を保存または元に戻すことができます。

編集したスクリプトを外部で更新すると、ビジュアルエディターに自動的に同期されるため、テキストエディターとビジュアルエディターの両方でスクリプトをシームレスに操作できます。

NOTE

以降のガイドではテキストエディターを使用しますが、必要に応じて、ビジュアルエディターで同じ手順を全て行うことが可能です。

Naninovel関連のアセット(作成したスクリプトなど)をエンジンで "表示" できるようにするには、プロジェクトリソースとして割り当てる必要があります。アセットの作成メニューからスクリプトを作成すると、自動的に割り当てられます。 スクリプトリソースを手動で割り当てる(または編集/削除する)には、エディターのコンテキストメニューから Naninovel -> Resources -> Scripts を選択して、リソースウィンドウを使用してください。スクリプトを追加するには、リストから + (プラス記号)ボタンを押して新しいレコードを追加し、スクリプトアセットをリストにドラッグアンドドロップします。複数のアセットまたはフォルダ全体をリストにドラッグアンドドロップして、バッチで追加することもできます。

Add Naninovel Scriptcover

作成したスクリプトをテキストエディターで開き、次のテキストを追加しましょう:

nani
Hello World!
@stop

1行目は、ゲームが実行された時に"Hello World"というテキストを出力します。2行目はスクリプト実行を停止するのに必要です。

プレイモードでゲームを実行し、結果を見てみましょう。

NOTE

使用可能なすべての組み込みスクリプトコマンド、サポートされているパラメーター、および使用例は、APIリファレンスに記載されています。カスタムコマンドを追加することもできます。詳細については、 カスタムコマンド を参照してください。

タイトルメニューの"NEW GAME"がアクティブでない場合、スクリプトコンフィグ (Naninovel -> Configuration -> Scripts) の Start Game Script が作成したスクリプト名と同じになっているか確認してください。このプロパティは、アセットの作成メニューから最初のスクリプトを作成するときに自動的に入力されますが、既存のスクリプトをプロジェクトにコピーした場合は機能していない可能性があります。

cover

キャラクターの追加

Naninovelのキャラクターは、通常の分解スプライト、アニメーションのLive2Dモデル、および3Dメッシュをベースにしています。独自の実装を追加することもできます。このチュートリアルでは、スプライト実装を使用します。

各キャラクターは、ID と外観のセットで表現されます。キャラクターを追加するには、Naninovel -> Resources -> Characters からキャラクターマネージャーGUIへアクセスしてください。IDを指定して新しいキャラクターアクターレコードを追加してから、レコードをダブルクリック(またはレコード下のボタンをクリック)して、全ての外観スプライトを Resources リストに追加します。

Add Charactercover

追加したキャラクターIDを"Kohaku"としましょう。naninovelスクリプトを編集して、追加した文字を表示します:

nani
@char Kohaku
Hello World!
@stop

ゲームを実行すると、画面の中央にキャラクターの外観スプライトの1つが表示されます。外観を指定しない場合は、キャラクターIDと同じ名前か "Default" となっているものがデフォルトで選択されます。特定の外観を選択するには、次のように、ドットで区切られたキャラクターIDの後にその名前を追加します:

nani
@char Kohaku.Happy
Hello World!
@stop

キャラクター "Kohaku" に "Happy" という名前の外観があれば、デフォルトのスプライトではなく、対応するスプライトが表示されます。

コロンの前にIDを追加して、表示テキストにキャラクターを紐付けることができます:

nani
@char Kohaku.Happy
Kohaku: Hello World!
@stop

キャラクターの外観を表示テキストと結合させて、より簡単に入力することもできます:

nani
Kohaku.Happy: Hello World!
@stop

キャラクター(または背景、テキストプリンターなどの他のアクター)を非表示(シーンから削除)にするには、 @hide コマンドに続けてアクターIDを記述します:

nani
Kohaku.Happy: Hello World!
@hide Kohaku
@stop

背景を追加

キャラクターと同様に、Naninovelでの背景表示には複数の方法があります。スプライト、汎用オブジェクト、動画、シーンなどです。カスタムのユーザー実装も可能です。

独立した背景アクターを複数作成できますが、通常のビジュアルノベルゲームでは一つの背景を使用してトランジションさせます。 ルーチンを簡略化するために、 MainBackground アクターはデフォルトで背景アクターリストに追加され、naninovelスクリプトで外観を操作する度に毎回IDを指定する必要はありません。

Naninovel -> Resources -> Backgrounds メニューから背景スプライトを追加します。MainBackground が自動で開きますが、必要に応じてアクターリストに戻って他のアクターを追加することもできます。

Add Backgroundcover

追加した背景の外観スプライトの名前を "City" とします。背景を表示するには、 @back コマンドに続けて背景の外観名を記述します:

nani
@back City

背景の切り替えはデフォルトで、cross-fade トランジションエフェクト となっています。エフェクトを変更するには、外観名の後にトランジションの種類を指定します:

nani
@back City
@back School.RadialBlur

上記は "RadialBlur" のトランジションエフェクトを使って、"City" から "School"へと切り替えます。

メイン背景以外を参照するには(たとえば、複数の背景を互いに重ね合わせたい場合)、アクターのIDを指定します。たとえばメインのアクターの他にIDが Flowerの背景アクターがあるとして、次のコマンドでその外観を "Bloomed" に変更し、次に "Withered" に変更します:

nani
@back Bloomed id:Flower
@back Withered id:Flower

音楽と効果音の追加

BGM(バックグラウンドミュージック)またはSFX(効果音)アセットを追加するには、エディターメニューから Naninovel -> Resources -> Audio を開きます。Unityでサポートされている ↗ オーディオ形式が使用できます。

Managing Audiocover

追加したBGMファイル名を "ThePromenade" としましょう。BGMとして再生するには、 @bgm コマンドに続けてトラック名を記述します:

nani
@bgm ThePromenade

音楽トラックを切り替えると、クロスフェードエフェクトが自動的に適用されます。音楽はデフォルトでループするようになっていますが、コマンドパラメータを使用して音量やフェード時間と同様に変更できます。

逆に、効果音はデフォルトではループしません。"Explosion" SFXを追加した場合、再生するには @sfx コマンドを使用します:

nani
@sfx Explosion

動画ガイド

動画を参照したい方は、上記の説明が以下に載っています。

cover

デモプロジェクト

デモプロジェクトの全てのソース(ストアで紹介されているものと同じもの)は、 GitHub の github.com/Naninovel/Demo ↗ にあります。

Git clientでリポジトリをクローン ↗ するか zipファイルをダウンロード ↗ することができます。デモプロジェクトで配布されるアセットはカスタムライセンスの対象となる場合があり、学習目的でのみ提供しています。

WARNING

プロジェクトに Naninovel パッケージは含まれないため、初めて開く際はコンパイルエラーが発生します。問題を解決するには、アセットストアから Naninovel をインポートします。