Creating visual novels in Unity: Naninovel 1.20

Naninovel asset for Unity, positioned as an engine for creating visual novels.
During its short (relative to other similar solutions) existence, it managed to acquire a fan base and go through quite a bit of development. Each subsequent version is a lot of work on corrections and new features. And most importantly: Naninovel is carried out by our compatriot. However, the engine is also popular abroad, including for its flexibility, simultaneous simplicity and depth of development, and the possibility of separate use of built-in components.

Soon the author promises to release version 1.20, which will contain many new features and more.

This article contains translation and short analysis changelog.

Unity supported 2022.3.45 - 6. Recommended – 2022.3.45.

  • Script file names no longer need to be unique. Now scripts can be referenced via local paths:

    @goto Prologue/Day1

  • You no longer need to specify assemblies for custom types.

  • Nani can now be installed as a UPM package.

  • Live2D and Spine extension are now part of Nani, so you no longer need to install them separately.

  • Improved engine initialization due to caching.

    It’s worth making a note: the Nani engine takes some time to initialize, including loading services and built-in/custom UIs.

  • Script resources are now loaded on demand rather than pre-loaded.

    An excellent feature that I have been waiting for a long time, because if the screenwriter did not break the script into smaller scripts, especially large fragments of the plot could take a little longer to load.

  • Option Label By Scriptsrelated to the use of resources and optimization of their loading. [doc]

  • Read progress no longer consumes unnecessary resources because the data is cached at build time. Option Count Total Commands is now enabled by default.

  • Added option @Remove Actors (automatic by default), which removes unused actors and associated resources when unloading script resources. [doc]

    An actor in nani refers to such participants in the scene as characters and backgrounds.

    A useful feature, since previously in certain situations it was necessary to remove actors yourself, for example using @remove parameter of some commands.
    I had such a need for multi-layered characters (with a separate render camera, taking into account the features of Unity and Nani) with a custom implementation of blinking.

  • Async Instantiation as the default setting for engine initialization to transfer the load from the main thread.

  • Generic, Live2D and Spine actors now support multiple images. [doc]

  • Join Lines a utility that allows you to store common strings in one line [doc]

  • Annotations inside localization documents now also include the essence of the translated content [doc]

  • To the team @choice added parameter @lockallowing you to lock/disable selection. [doc]

    Accordingly, one of many use cases: bind @lock to some variable or previous selections.

  • Auto Detect Locale option to determine the locale when you first start the game. [doc]

  • Added a prompt to continue typing to display page numbering.

  • Instances of layered actor prefabs are now nested within the associated actor game object; this adds support for behavior that depends on object transformation, such as lighting, interactive spots, etc.

    By the way, the characters in Nani are not realized through Sprite Rendererbut they use unit Graphics.DrawMesh for rendering. Which, in addition to the advantages, can also bring some inconveniences. For example, the inability to set sorting layer a character different from defaultwhich led in my case to overlapping particles on the generic background.

  • Option Camera Maskwhich allows you to specify additional camera layers that need to be preserved when rendering the actor; use to support rendering features that require special camera layers such as 2D Light Unity.

  • Added option to character configuration Has Name [doc]

    If this setting is disabled, neither the display name nor the actor ID will appear in the printer user interface. Useful for announcer type characters with associated printers.

  • Added the ability to provide a font with community localization (yes, Nani supports the community localization option instead of a hack). [doc]

  • Added Separator Literal in the built-in UI with tips. Allows you to change the character used to separate title, category, and tooltip text in managed text entries.

  • Added Selected Prefix in the built-in UI with tips. Allows you to change the prefix of the unlocked ID, as an indication that the prefix has been viewed at least once.

  • TipsPanel.HasUnselectedItem() method in the built-in UI with hints. Allows you to check whether the panel contains unselected elements

  • Added Build Resources editor to create Nani-related assemblies.

  • Addedlazy flag to teams @char, @back, @camera, @slide so as not to complete them in case of missing text.

    A useful feature that we have been wanting to see for a long time. Helps you create smoother, asynchronous animations.

  • Added a way to create identified text links by adding & to the identifier. [doc]

  • Added the ability to specify an alias and documentation for custom expression functions.

  • Numeric expression function parameters are no longer limited to value double

  • Play SFX While Skipping option for sounds. Responsible for losing sound when skipping.

  • Added as parameter to command @print. Allows you to set your own name tag; in combination with the parameter authornow handles multiple authors (separated by ,) [doc]

  • Added a way to include script expressions in localization documents and force re-evaluation when the locale changes. [doc]

  • Added a correct handler for missing fonts: a warning is logged and the default font is used instead of throwing an exception.

  • Added @block parameter to command @movieto block player interaction while the video is playing, including preventing skipping.

  • Added SkipMovie input binding, tied to video skipping (previously responsible for this Cancel bind).

  • Added separate command @remove to remove actors. [doc]

    Previously, this was a parameter to other commands.

  • Added option Support Custom Opacityfor the text disappearing effect; when enabled, the effect will take tags into account <alpha> and limit maximum opacity at full expansion at some performance cost.

  • Added type parameter to command @input indicate the value type of the input variable.

  • Include Author To Backlog option for text printers that allows you to not include the author in backlog (built-in UI that stores message history). Off by default for Fullscreen-printer.

  • Scene Path Root An option in the background settings that allows you to change the root directory of scene resources associated with the actor's appearance.

  • The engine now has its own CSV parser and no longer depends on a third party library.

    By the way, Nani instead of the standard one DOTween uses its own implementation.

  • Some improvements for the IDE (VS code)

  • Yes, Nani has her own extension for VS code with highlighting of the script language and custom commands. There is also a web version for writing scripts.

    Similar Posts

    Leave a Reply

    Your email address will not be published. Required fields are marked *