Naninovel is an extension for Unity game engine, so it's strongly recommended to at least learn the basics of using the engine before starting with Naninovel.
The following manual chapters should be considered essential:
In case you're not going to build any custom gameplay outside of Naninovel, feel free to ignore the scene-related information altogether, as Naninovel will take care of that.
Consult the Unity manual on how to create a new project.
When creating a project you'd probably like to use
2D Template to set the editor in 2D behaviour mode, so that images will be imported as sprite assets by default and you won't have to manually change the import settings. You can change the editor behaviour mode later using the project settings.
Import Naninovel package using the Asset Store window and wait for the initial scripts compilation and assets import process. You are free to move
Naninovel package folder anywhere inside your project assets directory, if you wish.
Over the course of using Naninovel a number of assets (configuration, settings, saves, etc) will be automatically generated inside
Assets/NaninovelData folder. In contrast to the package folder, you shouldn't manually move the data folder (it'll be automatically regenerated). If you wish to change location of the data folder, edit
Generated Data Path property in the engine configuration menu.
Create -> Naninovel Script assets context menu to create a naninovel script asset.
Notice: you can create and store naninovel scripts (as well as all the other Naninovel resources) under any project folder and organize them in any way you like; the naming is also up to you. The above illustration is just an example.
Naninovel scripts are text documents (
.nani extension) where you control what happens on scenes. You can open and edit them with a text editor of your choice, like Notepad, TextEdit or Atom.
Add the created naninovel script to the project resources. For this, open scripts manager using
Naninovel -> Resources -> Scripts context menu, press
+ (plus sign) button in the list to add a new record and drag-drop script asset to the list. It's also possible to drag-drop multiple assets or even whole folders to the list to add them in batch. While not recommended, it's also possible to just keep the scripts in a
Resources/Scripts folder and they'll be automatically exposed to project resources.
In case you’ve chosen to not use the script manager, you’ll have to manually set
Start Game Script value in the
Naninovel -> Configuration -> Scripts menu; it will be set automatically when you add first naninovel script in the manager otherwise.
Open the created script in a text editor and add the following text:
Hello World! @stop
The first line will print the text "Hello World!" when the game is run and the second is required to gracefully stop script execution.
Enter play mode and start new game to see the result.
Characters in Naninovel can be based on regular and diced sprites, animated Live2D models and 3D meshes; you can add your own implementations as well. For the purpose of this tutorial, we’ll use a sprite implementation.
Each character is represented by ID and a set of appearances. To add a sprite character, you can either use the character manager GUI (recommended) or place the character’s appearance sprites in a
Resources/Characters/CharacterName folder, where
CharacterName is the name of the character.
If you choose to use the manager GUI, access it with
Naninovel -> Resources -> Characters menu, add new character record specifying its ID, then double click the ID record (or press button at the and of the record) and add all the appearance sprites to the
Resources list. Just like with naninovel scripts, you can drag-drop multiple assets and folders to the list.
Let’s assume the added character ID is "Kohaku". Edit naninovel script to show the added character:
@char Kohaku Hello World! @stop
Run the game and you’ll see one of the character appearance sprites at the center of the screen. When you don’t specify an appearance, either the one named equal to character's ID or "Default" will be chosen by default. To select a specific appearance, add its name after the character ID separated by a dot like this:
@char Kohaku.Happy Hello World! @stop
Given there is an appearance with the name "Happy" added for the character "Kohaku", the corresponding sprite will now be shown instead of the default one.
You can now also associate the printed text with the character by adding its ID followed by a colon before the text:
@char Kohaku.Happy Kohaku: Hello World! @stop
To hide (remove from scene) a character (or any other actor, like background, text printer, etc), use
@hide command followed by actor ID:
@char Kohaku.Happy Kohaku: Hello World! @hide Kohaku @stop
Similar to characters, a background can be represented in multiple ways in Naninovel: sprite, generic object, video and scene; custom user implementations are also possible.
While you can create multiple independent background actors, in a typical VN game you'll usually use just one and transition it to different appearances. To simplify the routine, a
MainBackground actor is added to the background actors list by default and you don't have to specify the ID every time to change its appearance in naninovel scripts.
Add sprite background in the same way you’ve added a character: using editor GUI
Naninovel -> Resources -> Backgrounds (
MainBackground actor will be chosen automatically) or place the appearance sprites under a
Let’s assume the added background appearance sprite is named "City". To show a background, use a
@back command followed by the background appearance name:
When switching between backgrounds a cross-fade transition effect will be used by default. To change the effect, specify transition type after the appearance name:
@back City @back School.RadialBlur
This will transition "City" to "School" using "RadialBlur" transition effect.
To add a BGM (background music) or SFX (sound effect) asset, either use
Naninovel -> Resources -> Audio editor menu (recommended) or place the audio assets inside
Resources/Audio folder. You can use any audio formats supported by Unity.
Let’s assume the added BGM file name is "ThePromenade". To play this track as a background music use
@bgm command followed by the name of the track:
A cross-fade effect will be automatically applied when switching the music tracks. The music will loop by default, though you can change this, as well as volume and fade duration using command parameters.
On the contrary, sound effects won't loop by default. Assuming you've added an "Explosion" SFX, use an
@sfx command to play it back:
In case you prefer following video guides, here is one illustrating the above instructions.