スタートガイド
前提条件
Naninovelは Unityゲームエンジン の拡張機能であるため、Naninovelを始める前に少なくともUnityの使用に関する 基本を学ぶ ことを強くお勧めします。
Naninovel以外でカスタムゲームプレイを実装する予定がない場合は、シーン関連の情報を無視してもかまいません。Naninovelが自動的に処理します。
ビデオガイド
ビデオガイドがお好みの場合は、このスタートガイドの内容をビジュアルノベルモードとダイアログモードの両方について説明している動画をご覧ください。
Unityプロジェクトの作成
プロジェクトを作成する際は、Universal Render Pipeline (URP) に基づく Universal 2D または Universal 3D テンプレートのいずれかを選択することをお勧めします。従来の組み込みレンダーパイプライン (BiRP) も動作しますが、Unityによって積極的にメンテナンスされなくなっており、廃止される予定です。High Definition Render Pipeline (HDRP) は推奨されません。一般的には動作しますが、一部のレンダリング機能がそのままでは互換性がない場合があります。
2Dか3Dの選択は、構築するゲームのスタイルによって異なります。ほとんどの標準的なビジュアルノベルでは、画像がデフォルトでスプライトアセットとしてインポートされ、インポート設定を手動で調整する必要がないため、2Dを選択することをお勧めします。エディタの動作モードは後で プロジェクト設定 で変更できます。
新しいプロジェクトを作成すると、Unityは自動的に「Main Camera」を含むサンプルシーンと、テンプレートに応じてその他のさまざまなゲームオブジェクトを含めます。
Naninovelはシーンに依存しないため、不要なパフォーマンスのオーバーヘッドやNaninovelシステムとの競合を防ぐために、これらのオブジェクトをシーンから削除することをお勧めします。サンプルシーン自体を削除することもできますが、特定のエディタ機能が正しく機能するように、プロジェクト内に少なくとも1つのシーンを保持することをお勧めします。
エディタの最適化
この手順はオプションですが、Unityエディタの起動、リロード、およびプレイモードへの移行時間を大幅に改善できるため、推奨されます。
まず、Edit -> Project Settings -> Editor に移動し、「Enter Play Mode Settings」オプションの下にある Do not reload Domain or Scene を選択して、プレイモードに入るまでの時間を短縮します。
次に、Unityプロジェクトルートの下にある「Packages」フォルダ内の manifest.json ファイルを開いて検査します。このファイルには、インストールされているすべてのパッケージとモジュールがリストされています。テンプレートに応じて、Unityにはデフォルトで多くのモジュールが含まれていますが、そのほとんどはおそらく必要ありません。追加のモジュールごとにエディタの起動時間とコードのリロード時間が増加する可能性があります。以下はNaninovelに必要なモジュールです。不要な他のエントリは削除することを検討してください。
{
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.video": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.render-pipelines.universal": "17.3.0",
"com.unity.inputsystem": "1.17.0",
"com.unity.ugui": "2.0.0"
}
}NOTE
ドメインのリロードを無効にしたり、manifest.json ファイルを変更したりすることは、Naninovelを使用するために必須ではありません。これらはUnityエディタのパフォーマンスを向上させることのみを目的としています。これらの変更の影響や、ゲームに必要なモジュールが不明な場合は、これらの手順をスキップしてください。
VCSのセットアップ
Gitなどのバージョン管理システムを使用している場合は、不要な変更を防ぐために以下のパスを無視することを検討してください。
# Auto-generated Unity assets of transient nature.
/Assets/NaninovelData/Transient*
# Transient artifacts of the external tools.
/Assets/NaninovelData/.nani/Transient*Assets/NaninovelData は自動生成されるフォルダであることに注意してください。最初に作成された後は、Assets 下の任意のフォルダに名前を変更したり移動したりできます(Naninovelは引き続きそれを見つけることができます)。そうする場合、上記の無視パスをそれに応じて更新する必要があります。
EXAMPLE
Gitの無視プロファイルの例については、サンプルプロジェクト の .gitignore を参照してください。その例では、整理のために NaninovelData フォルダの名前が Naninovel に変更され、Assets/Profiles の下に移動されています。自分のプロジェクトでも同様にフォルダを移動できます。
Naninovelのインストール
リリースストリーム
Naninovelは、preview、stable、final の3つのリリースストリームにわたって配布されています。
Preview(プレビュー)は最先端です。最も頻繁に更新され、すべての最新機能を備えています。ただし、時折互換性を損なう変更やバグが発生する可能性があります。開発の初期段階にある場合や、他のリリースでは利用できない特定の機能が必要な場合は、このストリームを選択してください。
Stable(安定版)は中間の選択肢です。バグ修正のみを受け取り、最新機能はありませんが、互換性を損なう変更もありません。ほとんどの場合に推奨されます。
Final(最終版)は、最もテストされ安定していますが、最も古く、技術サポート の対象外です。プロジェクトがすでにリリースされており、アップグレードできない場合にのみ、最終リリースにとどまってください。
StableストリームはGitHubとUnityのアセットストアの両方で公開されていますが(GitHubほど頻繁ではありません)、previewとfinalストリームはGitHubでのみ利用可能です。
アセットストアからインストール
Naninovelをインストールする最も簡単な方法は、Unity Package Manager (UPM) の「My Assets」タブを使用することです。Package Managerウィンドウを開き、Naninovelを見つけて「Install」をクリックします。
UPMの使用方法の詳細については、Unityドキュメント を参照してください。
GitHubからインストール
PreviewおよびStableストリームの最新のNaninovelリリースは、Naninovel GitHubリポジトリ経由で配布されています。リポジトリにアクセスするには、Naninovelライセンスを登録 し、ダッシュボードの指示に従ってGitHubユーザーを割り当ててください。
リポジトリへのアクセス権を取得したら、UnityのPackage Manager経由で https://github.com/naninovel/upm.git#X.X をGitパッケージとして追加します。ここで X.X はインストールするリリースバージョンです。例:
https://github.com/naninovel/upm.git#1.21利用可能なすべてのリリースとそのGit URIは、リリースページ で確認できます。
このインストール方法は、Previewストリームで最先端を維持したい場合や、GitHubリポジトリにプッシュされた直後にStableストリームのパッチを取得したい場合に特に便利です。Package Managerウィンドウで「Update」をクリックするだけで、インストールを最新のコミットにアップグレードできます。
TIP
パッケージのインストール中にエラーが発生した場合は、アカウントダッシュボードで割り当てられたGitHubユーザーとして認証されていることを確認してください。Windowsで認証する最も簡単な方法は、GitHub Desktop でサインインすることです。macOSおよびLinuxでは、代わりに GCM を使用してください。詳細については、Unityガイドの 詳細情報 を参照してください。
アーカイブからインストール
Naninovelをインストールするもう一つの方法は、ダウンロードアーカイブ からパッケージをダウンロードすることです。この方法は、アセットストアで配布されなくなった特定の最終リリースが必要な場合に便利です。アーカイブには、バージョン1.14から現在の安定リリースまでのすべてのレガシーバージョンの最終リリースが含まれています。
ダウンロードした .unitypackage ファイルをUnityエディタウィンドウにドロップし、「Import」をクリックしてパッケージをインストールするだけです。ローカルパッケージのインストールに関する詳細情報は、Unityドキュメント で確認できます。
コアコンセプト
Naninovelを詳しく見ていく前に、そのコアコンセプトのいくつかを簡単に見てみましょう。
不可欠なものの1つとして、このガイドの残りの部分で絶えず遭遇するのが アクター です。アクターは、識別子(ID)、外観、空間(シーン)内の位置、およびその他のいくつかのパラメータによって記述されるエンティティです。
アクターは抽象的なエンティティであり、直接存在することはできません。代わりに、さまざまな追加パラメータを持つ特殊なバージョンが使用されます。
| アクタータイプ | 追加パラメータ | 説明 |
|---|---|---|
| キャラクター | 向き | シーン上のキャラクターを表します。 |
| 背景 | なし | シーン上の背景を表します。デフォルトではキャラクターアクターの後ろに配置されます。 |
| テキストプリンター | テキスト、著者ID、表示進行度 | 時間の経過とともにテキストメッセージを徐々に表示(印刷)します。 |
| 選択肢ハンドラー | 選択肢 | プレイヤーが利用可能な選択肢の1つを選択できるようにします。 |
背景の上にキャラクターが描画される典型的なビジュアルノベルのセットアップを考えてみましょう。Naninovelの用語では、次のように表現されます。
ここで、キャラクター「Kohaku」に異なる感情やポーズを表示させたいとします。そのキャラクターには、異なる状態を描いた複数のテクスチャ(画像)があります。Naninovelでは、このようなテクスチャはアクターの アピアランス(外観) と呼ばれます。これを実現するには、キャラクターアクターの外観を変更する必要があります。同様に、「MainBackground」に別のものを表示させるには、その背景アクターの外観を変更する必要があります。
アクターとそのパラメータは、シナリオスクリプト で指定されたコマンドによって指示されます。
もう1つの広く使用されている概念は、ユーザーインターフェイス (UI) です。UIは、プレイヤーがアクターやゲームの他の部分と対話するために使用されます。これには、さまざまなメニュー(タイトル、セーブ/ロード、設定など)やコントロールパネル(オートリードモードの切り替え、テキストのスキップなど)が含まれます。UI要素は、デフォルトでアクターの上に配置されます。
テキストプリンターと選択肢ハンドラーは、アクターとUI要素の両方と見なされます。つまり、アクターの性質を共有し、シナリオスクリプトを介して制御できる一方で、プレイヤーがゲームと対話するためにも使用されます。
プログラミングに慣れている場合は、ソフトウェアエンジニアリングの観点からどのように設計されているかを理解するために、エンジンアーキテクチャ をご覧ください。
最初の一歩
いくつかのサンプルスクリプトが Assets/Scenario フォルダにスキャフォールド(自動生成)され、Naninovelの初期インストール時に ストーリーエディタ タブが自動的に開きます。ストーリーエディタの上部にある「Play」ボタンをクリックして、プレイモードに入ります。
Unityエディタがプレイモードになり、デフォルトのタイトルUIが表示されます。同時に、Title シナリオスクリプトがストーリーエディタで開き、現在再生中であることが示されます。
ストーリーエディタを探索してスクリプトを編集してみてください。変更はライブで適用されます。近くのコマンドの簡単な説明については、サンプルスクリプト内のコメントを読んでください。タイトルUIで「NEW GAME」をクリックして、いくつかの追加例を含む Entry スクリプトに進みます。
シナリオスクリプトの追加
一般的な流れに慣れてきたところで、ゲームに実際のコンテンツを追加する方法について詳しく見ていきましょう。Naninovelでストーリーを動かす重要なアセットは シナリオスクリプト と呼ばれます。
すでに自動的にスキャフォールドされた2つのスクリプトがありますが、新しいスクリプトを追加する方法を学びましょう。ストーリーエディタ を使用してスクリプトを管理することもできますが、ここでは開始時の標準的なUnityワークフローに焦点を当てます。ストーリーエディタ固有のワークフローについては、専用ガイドで学習できます。
まず、「Stop」ボタンをクリックしてプレイモードを終了します。原則として、アセットの追加や削除、プロジェクト設定の調整など、プロジェクトレベルの変更は、Unityのプレイモード外で実行する必要があります。
サンプルスクリプトと一緒に自動的にスキャフォールドされた Assets/Scenario フォルダを見つけます。これは シナリオルート であり、すべてのNaninovelシナリオスクリプトが保存されるフォルダです。シナリオフォルダの下で右クリックし、Create -> Naninovel -> Scenario Script を選択して、新しい Test.nani シナリオスクリプトを作成します。
NOTE
シナリオスクリプト(およびその他のアセット)は任意のプロジェクトフォルダに保存でき、好きなように整理できます。名前付けも完全に自由です。ただし、すべてのシナリオスクリプトは単一のルートディレクトリ内に保存する必要があることに注意してください。すべてのサブフォルダが最終的にUnityプロジェクト内の共通ルートに解決される限り、整理目的で必要な数のネストされたフォルダを作成できます。
WARNING
Unityは Resources という名前のフォルダを特別な方法で扱います。そのようなフォルダの下に保存されたアセットはビルドに強制的に含まれ、パフォーマンスの問題 を引き起こす可能性があります。最も重要なことは、ガイドで特に必要とされない限り、Resources/Naninovel フォルダの下に何も保存しないでください。これはあらゆる種類の競合や未定義の動作を引き起こす可能性があります。
シナリオスクリプトは .nani 拡張子を持つテキストドキュメントで、Naninovelの脚本言語である NaniScript を使用してシーンで何が起こるかを制御します。Microsoft Wordや VS Code など、任意のテキストエディタまたはコードエディタでスクリプトファイルを開いて編集できます。
ストーリーエディタ を使用すると、同じNaniScriptがシナリオファイルに出力されるため、コードエディタと交換可能に使用できます。このガイドの残りの部分では、コードエディタを使用していると仮定してスクリプトスニペットを表示しますが、ストーリーエディタ内でも同じ手順に従うことができます。行タイプドロップダウンリストで @ を入力し始めると、一致するコマンドが表示されます。
作成した Test.nani スクリプトを開き、次の行を追加します。
Hello World!— この行は、実行されると「Hello World!」と表示します。
次に、Entry.nani スクリプトを開き、最後の @title コマンドを次のように置き換えます。
@goto Test— このコマンドは、タイトルメニューに戻るのではなく、新しい Test.nani スクリプトに再生を移動します。
プレイモードに入り、新しいゲームを開始し、「Hello World!」が表示されるまでプレイします。ゲームのプレイ中にスクリプトを編集してみてください。変更はすぐに適用されます。
キャラクターの追加
シナリオスクリプトを追加するのに使用したのと同じメニューを使用しますが、今度は Create -> Naninovel -> Actor Record -> Character を選択します。これにより、新しいキャラクターのアクター設定を含む キャラクターレコード アセットが作成されます。レコードアセットに名前を付けましょう — K です。なぜ K なのでしょうか?識別子はシナリオスクリプト全体で使用されるため、長い名前を繰り返し入力したくないからです。実際の名前 — 「Kohaku」 — は、レコードアセットの Display Name で設定できます。これは、ゲーム内でプレイヤーに表示される名前です。
もちろん、キャラクターには任意の識別子と表示名を使用できます。IDに空白や特殊文字が含まれていないことだけを確認してください。一方、表示名には空白や任意の特殊文字を含めることができます。
TIP
設定メニューには多くのオプションがあります。他のUnityメニューと同様に、ほとんどのコントロールには、その機能を説明するツールチップが関連付けられています。ツールチップを表示するには、マウスをその上に置いてしばらく待ちます。説明がカーソルの下に表示されます。
次に、アクターの実装を選択しましょう。Naninovelのキャラクターは、通常のスプライトまたはダイススプライト、アニメーション化されたLive2DまたはSpineモデル、3Dメッシュ、およびその他の多くのアセットタイプに基づくことができます。独自の実装を追加することもできます。このチュートリアルの目的のために、2Dテクスチャアセット(画像)に基づくスプライト実装を使用します。
最後に、テクスチャをキャラクターのフォルダにドロップしてアピアランス(外観)を割り当て、それらを選択し、Inspectorヘッダーの下にあるNaninovelアイコンをクリックして、Characters -> K を選択します。
@char コマンドを使用して、追加されたキャラクターを表示するようにシナリオスクリプトを変更します。
@char K
Hello World!画面の中央にキャラクターが表示されます。外観を指定しない場合、「Default」という名前のものが自動的に選択されます。特定の外観を選択するには、次のようにドットで区切ってキャラクターIDの後ろにその名前を追加します。
@char K.Happy
Hello World!キャラクター「K」に「Happy」という名前の外観が追加されている場合、デフォルトの代わりにそのスプライトが表示されます。
テキストの前にコロンを付けてIDを追加することで、表示されるテキストをキャラクターに関連付けることができます。
@char K.Happy
K: Hello World!キャラクターの外観と表示されるテキストを組み合わせて、入力を節約することも可能です。
K.Happy: Hello World!キャラクターを隠すには、@hide コマンドの後にアクターIDを続けます。
@hide K背景の追加
キャラクターと同様に、背景もNaninovelではスプライト、ビデオ、シーンなど複数の方法で表現できます。カスタム実装も可能です。
複数の独立した背景アクターを作成できますが、一般的なビジュアルノベルでは通常、1つだけを使用し、異なる外観間を遷移させます。ルーチンを簡素化するために、@back コマンドを使用して背景アクターを制御する場合、デフォルトで MainBackground IDを持つ背景アクターが想定されます。
@back Road— このコマンドは、MainBackground アクターを Road の外観に遷移させます。
キャラクターと同様に、背景アクターレコードを作成し、外観スプライトを割り当てます。
- 背景を保存するフォルダ、例えば
Assets/Backgroundsを作成します - フォルダを右クリックし、
Create -> Naninovel -> Actor Record -> Backgroundを選択してMainBackgroundレコードを作成します - レコードを検査し、実装、例えば
SpriteBackgroundを選択します - 外観リソースを割り当てます
背景の外観を切り替える際、デフォルトでクロスフェード トランジションエフェクト が使用されます。エフェクトを変更するには、外観名の後にトランジションタイプを指定します。
@back Road
@back Ruins.RadialBlurこれにより、「RadialBlur」トランジションエフェクトを使用して「Road」から「Ruins」に遷移します。
メイン以外の背景を参照するには(たとえば、複数の背景を重ねて構成したい場合)、アクターのIDを指定します。例えば、Flower IDを持つ背景アクターがメインアクターと一緒に存在する場合、次のコマンドはその外観を「Bloomed」に変更し、次に「Withered」に変更します。
@back Bloomed id:Flower
@back Withered id:Flower同じ @hide コマンドで背景を隠します。
@hide Flowerオーディオの追加
BGM(背景音楽)またはSFX(効果音)オーディオアセットをNaninovelに登録するには、オーディオクリップアセットを選択し、キャラクターと背景リソースを登録するために使用したのと同じインスペクターメニューを使用しますが、代わりに「Audio」を選択します。
登録されたオーディオリソースをBGMとして再生するには、@bgm コマンドを使用します。
@bgm CloudNine音楽トラックを切り替える際、クロスフェードエフェクトが自動的に適用されます。音楽はデフォルトでループしますが、コマンドパラメータを使用して、これを変更したり、ボリュームやフェード時間を変更したりできます。
対照的に、効果音はデフォルトではループしません。@sfx コマンドで再生します。
@sfx Explosion再生中のBGMまたはSFXを停止するには、それぞれ @stopBgm および @stopSfx コマンドを使用します。
@stopBgm CloudNine
@stopSfx Explosionリソースの管理
Naninovelタブの下にあるプロジェクト設定ウィンドウで、すべてのアクターやその他のエンジンオプションと同様に、登録されているすべてのリソースを確認できます。Naninovel -> Configuration エディタメニューを使用して、設定にすばやくアクセスできます。
リソースパスを変更するのは自由です(デフォルトではアセット名と同じです)。これは整理目的で役立つ場合があります。登録されたパスは、シナリオスクリプトでリソースを参照するときに実際に使用されるものです。例えば、上のスクリーンショットでは Explosion を SFX/Explosion に変更しました。これで、新しいパスを使用して効果音を再生できます。
@sfx SFX/Explosionリソースを追加または変更すると、ストーリーエディタとVS Code拡張機能の両方が変更と自動的に同期し、関連リストを更新します。
TIP
アセットの整理方法や最終ビルドでのバンドル方法を究極的に制御するには、Unityの Addressablesパッケージ のインストールを検討してください。Naninovelはパッケージと自動的に統合されます。
ダイアログモード
Naninovelは主にビジュアルノベルを構築するための基盤として設計されていますが、あらゆるジャンルのゲームの組み込みダイアログまたはカットシーンシステムとしても使用できます。
「組み込み」のユースケースに合わせてエンジンを手動で設定することは可能ですが、設定を自動的に変更し、ほとんどの組み込みUIを削除し、機能を無効にしてエンジンを最小限に抑える専用の「Minimal Mode(最小モード)」スイッチがあります。
Naninovel -> Set Up Minimal Mode Unityエディタメニューから最小モードを有効にします。
WARNING
最小モードのセットアップ手順は、エンジンのデフォルト設定とリソースを変更し、変更を自動的に元に戻すことはできません。Naninovelをビジュアルノベルエンジンとしてではなく、組み込みのダイアログシステムとして使用する新しいプロジェクトを開始する場合にのみ、モードを有効にしてください。
セットアップが完了し、スクリプトが再コンパイルされるまで待ちます。「Naninovel」エディタメニューが「Tools」の下にあることに注意してください。これは、プロジェクトの基礎部分ではなく、ツールステータスに降格したことを示しています。
既存のコードベースへのエンジン統合のC#部分については、ガイドの「アドバンスド」セクションで詳しく読むことができます。ここでは、単純なノーコードのダイアログインタラクションシナリオを示します。プレイヤーがインタラクト可能なオブジェクトにマウスを合わせ、クリックしてダイアログを開始します。空のシーンで、以下を追加します。
UI / Event Systemコンポーネントを持つオブジェクトActions AssetとしてNaninovel/Resources/Input/DefaultControlsを割り当てます
Event / Physics Raycasterコンポーネントを持つカメラオブジェクト- ダイアログトリガーとして機能するキューブ
- キューブにアタッチされているデフォルトのコライダーコンポーネントを削除します
次に、キューブを右クリックし、Naninovel -> Dialogue を選択します。これにより、選択したオブジェクトにダイアログトリガーが自動的に設定されます。キューブの下に作成された Dialogue オブジェクトを検査し、再生するシナリオスクリプトアセットを割り当てます。
次に、Dialogue/Trigger オブジェクトでトリガー条件を設定します。
Collide WithとRaycast Fromを "None" に設定Perform InputをNaninovel入力アクションアセットのUI/Clickアクションに設定Hover With Pointerを有効化
プレイモードに入り、キューブにマウスを合わせます。マウスカーソルが上にあるとプロンプトが反応します。左クリックしてダイアログを開始します。ダイアログを終了するには、@exitDialogue コマンドを使用します。
Trigger Events コンポーネントの多くのオプションに注意してください。特定の距離での一人称視点、横スクロールビューの衝突、三人称ポインターホバー後のキー押下など、微調整するだけで最も一般的なインタラクションシナリオを設定できます。各オプションのツールチップを読んで、それらがどのように機能するかを理解してください。
デモサンプル
Naninovelパッケージには、2つの基本的なサンプルが含まれています。
- Visual Novel — プレースホルダーアクター、さまざまなコマンド、ローカルおよびグローバル変数、カスタマイズ可能なキャラクター名、その他の従来のVNメカニクスの使用を示す、複数のルートを持つ基本的なビジュアルノベルテンプレート。
- Dialogue System — Naninovelを組み込みダイアログシステムとして使用する3D横スクロールシーン。一時的なプリンター、吹き出し選択肢ハンドラー、Cinemachineとの統合、およびその他の一般的な使用シナリオの使用を示します。
Naninovelパッケージを選択し、「Samples」タブに移動してサンプルの「Import」ボタンをクリックすることで、Unity Package Manager経由で両方のサンプルをインポートできます。
より高度な例のコレクションについては、サンプルプロジェクト を確認してください。Live2DおよびSpineキャラクター、カスタムアクターシェーダー、インタラクティブマップ、ビデオアクター、カレンダーおよびインベントリのカスタムUIなど、多くの特殊なサンプルが含まれています。