Skip to content

Releases: naninovel/docs

Naninovel 1.20

08 Nov 08:54
Compare
Choose a tag to compare
Naninovel 1.20 Pre-release
Pre-release

Preview

This release is not live yet and reflect work in progress for the upcoming update. Want to try new features and changes listed here before the stable release? Register your Naninovel copy and download the package via #download channel of Naninovel's Discord.

Compatibility

Supported Unity version range: 2022.3 - 6. Only latest patches of the LTS streams in the range are supported; compatibility issues with newer Unity releases (once they reach LTS) will be addressed in the next Naninovel releases. Be aware, that alpha, beta and non-LTS releases (eg 2022.1 or 2022.2) are not supported. They may work, but we won't be able to provide any support for using Naninovel with them.

Recommended Unity version: 2022.3. It's not uncommon for Unity to introduce regressions even in LTS patches (let alone major releases), so we highly recommend using this version to minimize production risks.

Upgrade Guide

When importing the package to a project with Naninovel version 1.18 or older first follow v1.19 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case using extension packages, update them: Live2D, Spine, Inventory, PlayMaker, AdventureCreator.
  3. Reset Script Parser in scripts configuration (in case not overriding the default implementation, just re-select the only available option).
  4. In case using tips, replace the | separator with ^ in the tips managed text document.
  5. In case using @if conditional blocks, either make sure the commands inside blocks are not indented or switch to the new syntax with indentation and remove @endif command. [doc]
  6. In case using @elseif ... commands, replace them with @else if:....
  7. In case using do parameter of @choice command, replace it with nested callback. [doc]
  8. In case using do parameter of @wait command, replace it with @delay command. [doc]
  9. In case using [skipInput] command, replace the occurrences with [< skip!] generic parameter. [doc]
  10. In case using ExpressionFunctions attribute to expose custom expression functions, remove the attribute from the class and instead apply ExpressionFunction attribute to the methods of the class. [doc]

Remember to keep NaninovelData folder when updating the engine to preserve project configuration and asset references. If an error about failing to load an asset is logged after the upgrade, restart Unity editor.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case using VS Code IDE extension, check for updates.

Don't forget to backup the project before upgrading or use a VCS.

Added

  • Added nesting concept to NaniScript allowing to specify a block of commands nested under (associated with) other command. Various existing commands are now using this concept for more readable and concise syntax; added several new commands, which were previously impossible to represent in NaniScript without the new syntax: [doc]
    • Upgraded @if and @else commands to support nesting; [doc]
    • Upgraded @choice command to support nesting; [doc]
    • Added @while command for looping nested commands as long as condition is truthy; [doc]
    • Added @delay command allowing to delay execution of nested commands; [doc]
    • Added @random command allowing to randomly execute one of its children; [doc]
    • Added @group command allowing to join multiple lines into single execution block; [doc]
    • Added @await command allowing to await nested async commands before continuing script playback. Intended to be used with Wait By Default disabled in script player configuration, which is now the default in new projects. [doc]
  • Added boolean flags as shortcuts for boolean parameter values. [doc]
  • Added a way to apply print parameters for parts or whole generic text lines. [doc]
  • Added a way to delimit slack white space in generic lines with [] (empty inlined command). [doc]
  • Added Conservative, Optimistic and Lazy resource policy modes instead of Static and Dynamic. [doc]
  • Generic, Live2D and Spine actors now support multiple appearances applied at once to make setting up complex animation states easier. [doc]
  • Added Join Lines to localization utility. When enabled, generic lines in localization documents will be kept in single line for convenience. [doc]
  • Annotations inside localization docs now also include gist of the translated content to give translators more context. [doc]
  • Added lock parameter to @choice command allowing to lock/disable a choice. [doc]
  • Added Auto Detect Locale to localization configuration. When enabled (default) will attempt to auto-detect locale using system language when the game is started first time. [doc]
  • Pagination reveal effect will now prompt for continue before changing page.
  • Added Has Name to character configuration; when disabled, neither display name, nor actor ID will be displayed in printer UI. Useful for narrator-type characters with linked printers. [doc]
  • Added an option to supply font with community localization. [doc]
  • Added Separator Literal to built-in Tips UI allowing to change character used to separate title, category and tip text in managed text records.
  • Added Selected Prefix to built-in Tips UI allowing to change unlockable ID prefix used to indicate that item was selected (seen) at least once.
  • Added TipsPanel.HasUnselectedItem() method allowing to check if the tips panel contains any unselected items.
  • Added Build Resources editor menu allowing to build Naninovel-related project resources (including addressables, when enabled) without building the player.
  • Added weak (informational) warnings in VS Code when a dynamic parameter value is preventing resource preloading.
  • Appearances metadata (used for auto-completion in VS Code) for generic, live2d and spine actors is now generated based on trigger parameters in Animator component of the implementation prefab.
  • Added a way to create identified text references by prepending & to the identifier. [doc]
  • Added an option to specify alias and documentation for custom expression functions.
  • Added Play SFX While Skipping option to audio settings; when disabled, @sfx commands without loop! will not play while skipping.
  • Added as parameter to @print command allowing to set custom name label; when combined with author parameter now handling multiple authors (delimited with ,) and all authors specified with * — useful for representing multiple characters authoring single text line. [doc]
  • IDE (VS Code) extension improvements:
    • Label auto-completion and diagnostics no longer requires syncing metadata with editor;
    • Already specified parameters are no longer suggested in the auto-completion list;
    • Parameters, that has no effect or not supported by the command, such as if parameter in @if command and wait parameters in commands that are not async, are no longer suggested in the a...
Read more

Naninovel 1.19

17 Oct 19:38
Compare
Choose a tag to compare

Watch the video

Watch changes overview on YouTube: youtu.be/agyTc_GixSU

Read Before Upgrading

This release has major breaking changes requiring potentially labor-heavy upgrade procedures, namely:

  • All the custom UIs built with legacy uGUI text have to be upgraded to use TMPro text instead;
  • All the scenario script localizations have to be redone from scratch;
  • All the auto-voicing has to be re-mapped from scratch.

Please consider the above when deciding whether to upgrade projects in late development stages and especially shipped projects. Complete upgrade guide can be found below.

Compatibility

Supported Unity version range: 2019.4 - 2022.3. Only latest patches of the LTS streams in the range are supported; compatibility issues with newer Unity releases (once they reach LTS) will be addressed in the next Naninovel releases. Be aware, that alpha, beta and non-LTS releases (eg 2022.1 or 2022.2) are not supported. They may work, but we won't be able to provide any support for using Naninovel with them.

Recommended Unity version: 2019.4.40. It's not uncommon for Unity to introduce regressions even in LTS patches (let alone major releases), so we highly recommend using this version to minimize production risks.

Upgrade Guide

When importing the package to a project with Naninovel version 1.17 or older first follow v1.18 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case using extension packages, update them: Live2D, Spine, Inventory, PlayMaker, AdventureCreator. Spreadsheet tool is now embedded to the core package, so if you have it installed, remove the folder with the tool.
  3. Due to removal of the legacy (uGUI) text components and text reveal revamp, you may have to re-setup various UI objects; eg: customized built-in UIs, text printers, font settings, etc.
  4. In case using line breaks via \n in managed text values, replace them with <br>.
  5. In case using expressions for generic line author (eg, {mc}: Hi), use display name instead. (guide)
  6. In case having existing tips managed text documents, either remove Tips from managed text config's Multiline Categories list or format existing documents in multiline (same as script localization documents).
  7. In case having existing script localization documents, delete and re-create them with the new system. (guide)
  8. In case having existing voice mappings via voice map utility, re-map the clips. (guide)
  9. To use new adapt to input mode feature, add Page, Tab, Delete, NavigateX, NavigateY, ScrollY and ToggleConsole bindings in input config with enabled Always Process option (actual action bindings are configured via Unity's input system actions asset); check input example project for reference setup.
  10. In case using custom Title UI, enable Visible on Awake on the UI prefab to show it after engine is initialized.
  11. In case using bridging (VS Code extension or web editor), install Newtonsoft Json via Unity's package manager. (the package is only used in editor and is not required by Naninovel runtime in builds)
  12. In case using custom commands and VS Code extension, purge cached metadata in VS Code by pressing Ctrl+Shift+P and selecting Naninovel: Purge cached Metadata.

Remember to keep NaninovelData folder when updating the engine to preserve project configuration and asset references. If an error about failing to load an asset is logged after the upgrade, restart Unity editor.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case using VS Code IDE extension, check for updates.

Don't forget to backup the project before upgrading or use a VCS.

Added

  • Added adapt to input mode feature, which detects current active input mode (mouse and keyboard, gamepad or touch) and adapts the UI look and navigation accordingly. (guide)
  • Default UI has been updated for more consistent look and better UX.
  • Added utilities for automated end-to-end scenario testing and coverage. (guide)
  • Added community localization feature. (guide)
  • Added Stable Identification option to script configuration menu; when enabled, Naninovel will automatically write unique persistent IDs to each localizable text parameter on script import. This allows preserving text association (eg, for localization or auto voicing) while editing text content. (guide)
  • Language is now switching faster and text is updated instantly in all the printers and UIs, including backlog.
  • Added Character Extractor utility allowing to find all the unique text characters ever displayed to the player by Naninovel; useful for optimizing TMPro atlases, especially for CJK languages. (guide)
  • Added Render Camera option to layered actors allowing to render the prefab content with a camera, which lifts all the previous limitations (such as lacking stencil support) and allows rendering non-trivial objects, like particle systems, trails, etc. (guide)
  • Added Render Only and Default Appearance options to layered behavior component allowing to outsource appearance handling to external mechanisms, such as Unity's Animator. (guide)
  • Added Slack Opacity option to revealable text; when below 1 will change opacity of the text that was printed before last append.
  • Added Reveal Paginator component allowing to split the revealed text between virtual pages in case of overflow; enabled by default in Fullscreen printer.
  • Added event tags allowing to execute arbitrary actions when printed text is revealed. (guide)
  • Added dedicated commands for all the built-in effects: @blur, @bokeh, @glitch, @rain, @shake, @snow, @sun.
  • Added Load On Goto option to script player configuration; when enabled (default) will show ILoadingUI when @goto command requires loading another script to mask the loading process with the loading screen.
  • Added ColorContext and VectorContext parameter value context attributes.
  • Added Engine.UseLogger method allowing to inject custom logger to be used by the engine.
  • Added clickable link to the script asset that is missing translation when using localization utility.
  • Added time parameter to initialize engine method allowing to override time service used by Naninovel (eg, to make it use custom time/unscaledTime instead of Unity.Time values).
  • Added Font Sizes asset (created via Create -> Naninovel -> Font Sizes asset context menu) assignable to font configuration of custom UIs and printers; can be used to share common font sizes across multiple UIs.
  • Added Include Children option to font change configuration; when enabled, font changes will aff...
Read more

Naninovel 1.18

28 Oct 11:24
Compare
Choose a tag to compare

Compatibility

Supported Unity versions: 2019.4.40, 2020.3, 2021.3. Previous and non-LTS (tech) versions are not supported; compatibility issues with newer versions will be addressed in the next Naninovel releases.

Recommended Unity version: 2019.4.40. It's not uncommon for Unity to introduce regressions even in LTS patches (let alone minor and major releases), so we highly recommend using this version to minimize production risks.

Upgrade Guide

When importing the package to a project with Naninovel version 1.16 or older first follow v1.17 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case using extension packages, update them: Spreadsheet, Live2D, Spine, Inventory, PlayMaker, AdventureCreator.
  3. To use the newly added chat reply choice handler, add ChatReply actor in resources manager; built-in prefab is stored at Naninovel/Prefabs/ChoiceHandlers.
  4. It's no longer required to double-escape quotes inside script expressions, so remove the additional escape symbols in case you've used them in scenario scripts; eg @set var="lorem \\"ipsum\\"" should be changed to @set var="lorem \"ipsum\"".

Remember to keep NaninovelData folder when updating the engine to preserve project configuration and asset references. If an error about failing to load an asset is logged after the upgrade, restart Unity editor.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case using VS Code IDE extension, check for updates.

Don't forget to backup the project before upgrading or use a VCS.

Added

  • Added Fountain converter tool allowing to convert .fountain screenplay documents into .nani scripts. (guide)
  • Added shared poses allowing to re-use a pose between actors. (guide)
  • Added an option to inject custom metadata providers. (guide)
  • Added an option to specify constant expressions to be evaluated by the IDE extension. (guide)
  • Added script labels auto-completion for @goto and @gosub commands; can be disabled via Generate Label Metadata option in engine configuration.
  • Added @despawnAll command allowing to de-spawn (destroy) all the currently spawned objects.
  • Added an option to filter and auto-asign items in voice map utility. (example)
  • Added Wait Hide On Choice option to choice handlers. When enabled, choice handler will wait until the UI is completely hidden before proceeding when a choice is picked. (example)
  • Added Hide In Thumbnail option to Custom UI component allowing to prevent specific UIs from appearing in save-load slot thumbnail. (example)
  • Added support for UI camera under URP.
  • Added Font Changer component allowing to sync font with game settings on arbitrary game objects (eg, choice handler button prefabs).
  • Added support for blur FX for scene backgrounds.
  • Added spine background actor implementation (via spine extension).
  • Added Wait Visibility Before Print option to text printers; when enabled, full Change Visibility Duration will be awaited before starting to print the text. (example)
  • Added XML documentation files for the pre-compiled engine libraries.
  • Added an option to auto-apply a font when a specific locale (language) is selected; set in UI configuration via font options. (example)
  • Added Default Slant Angle to revealable tmpro text component allowing to set slant angle of the reveal rect outside of italic text.
  • Added CSV format option for voiceover document generation utility.
  • Added Wait After Reveal Skip option to printer metadata (enabled by default); if disabled, wait for input won't be activated when text reveal is skipped. (example)
  • Added an option to inject custom voiceover document generator. (guide)
  • Added an option to inject custom spreadsheet processor. (guide)
  • Added Link Template property and On Link Clicked event to Naninovel TMPro Text component allowing to stylize the <link>-tagged content and attach Unity event handlers when the links are clicked.
  • Added ChatReply built-in choice handler and updated Chat and TMProChat printers to support embedded choices. (guide)
  • Added a prompt to confirm directory clean when generating voiceover documents while the target directory is not empty.
  • Added parameter to "LineReveal" transition effect allowing to reverse the effect.
  • Added an option for a video actor appearance to not loop by appending NoLoop (not case sensitive) to the appearance name.
  • Exposed transitional renderer materials to allow setting properties of custom actor shaders.
  • Expression functions now accept arguments of assignable types, even when they're not equal (eg, int to double).
  • Making multiple UIs modal is now supported.
  • Most members of the built-in resource providers can now be overridden.
  • Bridging transport will now automatically scan port range starting with the preferred port specified in the engine configuration; no warnings will be logged when multiple editor instances are opened.
  • VS Code IDE extension can now work in web browsers via vscode.dev.
  • .NET runtime is no longer required by the VS Code IDE extension.
  • It's now possible to localize UI resources (prefabs) in the same way as the other resource types.
  • It's now possible to specify parameter context for the parameter fields declared in parent classes and override them; consult the updated IDE docs for examples.
  • It's now possible to use layered expressions in generic text line author prefix, eg Miho.Costume>Uniform: Hello!.
  • A managed text document for locales (language tags) is now automatically generated and is used when displaying available languages in the settings menu allowing to change and/or localize them.
  • Backgrounds of different sizes are now matched during transitions when match mode is set to crop.
  • Shake printer FX implementation is no longer coupled with specific content object name.
  • Script parse errors detected on asset import will now contain full file path.
  • Spreadsheet extension will now specify associated file paths when processing exception occurs.
  • Voiceover documents will now also contain voiced line hash.
  • Improved package path resolving performance in editor.

Changed

  • Minimum supported Unity version changed to 2019.4.35 due to #119.
  • Invisible UIs with Canvas Group component will now be set as non-interactable to improve keyboard and gamepad navigation.
  • Game objects under "Naninovel" root object are now grouped based on their type (UI, characters, backgrounds, etc).
  • Default Naninovel addressable group will now have bundle mode set to Pack Separately to allow asset unloading.
  • Naninovel will now throw Naninovel.Error exception instead of System.Exception.
  • Changed some of the script parsing models and semantic tokens used to highlight the script in VS Code; refer to the IDE guide for the updated info.
  • Type of all the pixels per unit (PPU) related properties has been changed from int to float for flexibility and better compatibility with Unity internals.
  • It's no longer required to double-escape quotes inside script expressions.
  • Command values in visual script editor are now displayed identical to the text in the inspected script. It's now expected for user to apply the same rules when specifying the values in visual editor, including wrapping the value in quotes in case they contain white space and escaping the quotes t...
Read more

Naninovel 1.17

07 Jul 10:43
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.4.30 to 2021.2. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: 2019.4.30.

Upgrade Guide

When importing the package to a project with Naninovel version 1.15 or older first follow v1.16 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case using extension packages, update them: Spreadsheet, Live2D, Spine, Inventory, PlayMaker, AdventureCreator.
  3. In case using message sound option for characters, select the playback type with the newly added Message Sound Playback option.
  4. In case using engine's async APIs (eg, custom commands), change CancellationToken to AsyncToken. (example)
  5. In case using Reveal SFX in a text printer, use either the newly added On Reveal Started and On Reveal Finished events (example) or Chars SFX property.
  6. Remove UniRx.Async usings from custom async C# scripts (they're no longer required to reference UniTask types).

Remember to keep NaninovelData folder when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case using VS Code IDE extension, check for updates.

Added

  • Added audio support for video actors.
  • Added Add Ruby Line Height property to Naninovel TMPro Text component allowing to disable auto line height compensation for the lines that contain ruby text. Disable and increase default text line height to ensure equal height for all lines when using ruby tags. (example)
  • Added RevealableTMProText (Extra Effects) revealable shader for TMPro text based on full SDF shader bundled with TMPro (the default one is based on mobile version). (example)
  • Added Authored Template property to text printer actor configuration allowing to specify processing for printed text messages with an author (direct speech). (guide)
  • Added Toggle Skip default input allowing to toggle skip input mode; default bindings are Tab on keyboard and right stick press on gamepad. To use the input in existing projects, add the binding in input configuration or input actions asset when using new input system. (example)
  • Added Warn Untranslated option to localization utility. When enabled and generating documents with Try Update enabled, will log warnings when untranslated lines are found. (example)
  • Added invert option to custom transition. To invert, specify 1 as second parameter, eg: @back Appearance.Custom dissolve:Textures/Spiral params:,1.
  • Added time parameter to @movie command allowing to control the fade-in/out duration.
  • Added Message Sound Playback option to character metadata configuration allowing to select the sound playback type (looped, one shot or clipped).
  • Added universal serialization handlers (selected by default in new projects).
  • Added Engine.OnDestroyed event invoked when the engine is destroyed.
  • Added Exclude From Reset property to new game button of default title UI, allowing to exclude specific engine services from state reset when starting a new game. (example)
  • Added On Reveal Started and On Reveal Finished Unity events to the text printers. (example)
  • Added an option for the text char reveal routines (char commands and char sfx) to trigger on any char; leave Characters field empty for that.
  • Added On Unlocked and On Locked Unity events to Unlockable Trigger component.
  • Added Wait By Default option to script player configuration allowing to control whether the player should wait the played commands when wait parameter is not explicitly specified.
  • Added Delete input binding (delete keyboard and gamepad pause button by default) and an option to delete save-load slots with a gamepad and keyboard. (example)
  • Added Disable Wait Input option to Play Script component allowing to disable waiting for input mode when the script is played. (example)
  • Added UI navigation focus support for generic HID gamepads.
  • Added Default Duration to the actor, camera and audio configurations allowing to set default duration of the modification commands; default value of the time parameter is no longer hard-coded.
  • Added Choice Button Loader property to choice configuration allowing to load custom button prefabs without Resources API (eg, via addressable or any other resource provider). (example)
  • Added load progress indicator to loading and engine initialization UIs. (example)
  • Video actors now fade the volume when changing appearances or hiding/showing.
  • Text preview printer now accepts any implementations of IRevealableText interface for better extensibility.
  • Script player will now attempt to find nearest playable inline index when loading state; will prevent crash when using localized scripts with extra commands, but could still lead to an undefined behavior (warning is logged in such cases).
  • Most of the built-in async methods will now automatically handle async cancellation; it's no longer required to check for cancellation after awaiting such methods.
  • Spreadsheet extension now supports organizing the scripts in subfolders.
  • New line symbols (\n) are now supported in managed text documents.
  • @set command now supports compound assignment (+=, -=, /=, *=).
  • IDE extension will now show default parameter values. (example)
  • IDE extension will now provide autocomplete for look direction parameter.
  • It's now possible to update project metadata with a menu or a ctrl+shift+U hotkey. (example)
  • Project metadata is now automatically generated and synced with IDE.
  • IDE extension now shows currently played line and allows navigating scenario scripts. (guide)
  • It's now possible to combine layered composition keys with expressions, eg @char Miho.Uniform,Hair/Front>Short.
  • Spreadsheet extension now support long script names when Single Spreadsheet is disabled.
  • It's now possible to use UI Toolkit as Naninovel UIs. (example)

Changed

  • Minimum supported and recommended Unity version changed to 2019.4.30 due to a regression fix (#138).
  • Changed movie player service and associated UI APIs. Instead of OnMovieTextureReady event use PlayAsync method to get the movie texture and assign it to the UI with SetMovieTexture; see Commands/PlayMovie.cs implementation for example.
  • Removed Clip Message Sound option from character metadata configuration and text printers; select One Shot Clipped in the newly added Message Sound Playback option instead.
  • Changed async cancellation API: CancellationToken struct has been renamed to AsyncToken, CancelASAP and CancelLazy properties to Canceled and Completed respectively. When a token is canceled AsyncOperationCanceled exception will now be thrown.
  • UniRx.Async using is no longer required when using UniTask types.
  • When creating a new naninovel script with a name that already exist in script resources, an error will be logged and script won't be created.
  • Removed Reveal SFX from text printers; use the newly added reveal events, Chars SFX or character message sounds.
  • Removed IDE Metadata tool. The metadata is now automatically generated and synced with IDE (can be disabled in the engine configuration).
  • Renamed IDE... attributes to ...Context.

Fixed

  • Fixed compatibility issues with Unity 2021.2
  • Fixed revealable TMPro sprite shader (emoji will reveal correctly when emoji texture is assigned directly to the material; see UI project for example).
  • Fixed (harmless) errors when generating localization scripts form other localization scripts with "Try Update" enabled and some of the target scripts missing.
  • Fixed audio continue playing after hiding a video a...
Read more

Naninovel 1.16

15 Mar 15:29
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.4.24 to 2020.3. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: 2019.4.24.

Upgrade Guide

When importing the package to a project with Naninovel version 1.14 or older first follow v1.15 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case using extension packages, update them using following links:
  3. In case using sprite dicing, update the extension (remove and add it again in the package manager via the same git url).

Remember to keep NaninovelData/Resources folder and NaninovelData/EditorResources.asset file when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case using VS Code IDE extension, check for updates to handle changes in the commands API.

Added

  • Added actor record assets allowing to manage actor metadata records (characters, backgrounds, printers, choice handlers) without using editor menus with support for multi-editing and organizing the records with folders. (example)
  • Added pos (scene position), position (world position), rotation and scale parameters to @spawn command allowing to specify transform of the spawned objects.
  • Added ActorPopup property drawer attribute for drawing list of available actors in the Unity editor.
  • Added GetName built-in expression function allowing to get display name of a character with the provided ID.
  • Added @unloadScene command allowing to unload a Unity scene.
  • Added @openURL command allowing opening specified URL with web browser.
  • Added On Appearance Changed Unity event to layered actor behavior component.
  • Added Paste Current Composition context menu item allowing to paste current layered composition expression. (example)
  • Added gyroscope bindings for camera look to the default input actions.
  • Added Clip Rect Scale property to revealable TMPro text component allowing to modify the reveal rect size. (example)
  • Added Default Skip Mode option to script player config allowing to specify default text skip mode to set when the game is first started.
  • Added On Initialization Progress Unity event to "EngineInitializationUI" for listening progress changed events.
  • Added On Tint Changed Unity event to text printers allowing reacting to tint color set via @printer command. (example)
  • Added IScriptPlayer.HasPlayed(scriptName) method, allowing to check whether a script has been previously played.
  • Added Play On Awake property to Play Script component allowing to play the script automatically when the game object is instantiated.
  • Added TMProChat built-in printer.
  • Added Naninovel TMPro Text component — a wrapper over uGUI text mesh pro with ruby and tips tags and Arabic text support.
  • Added remove parameter to @hide, @hideAll and @hideChars commands allowing to remove (destroy) resources associated with the hidden actors; can be used instead of @resetState to prevent memory leaks.
  • Added Render Rectangle allowing to specify an area to render when using render actor to texture feature.
  • Added parameter for custom (dissolve texture) transition for smoothing (fuzzing) borders of the transition. (example)
  • Naninovel scripts will now be automatically removed from the resources list when associated asset is deleted.
  • Sprite dicing extension has been updated for better compression efficiency and speed; it now also possible specifying custom pivot in the diced sprites when Keep Original (pivot) is enabled in the atlas settings.
  • Choice handler buttons will now invoke show/hide events in sync with handler itself allowing to attach a custom behavior when choice is shown/selected.
  • Updated built-in TMPro printers to support conservative memory usage, which prevents GC allocations when printed text message length is above certain threshold. If you're using custom printers, disable Vertex Buffer Auto Size Reduction on the TMPro text components manually. (ref issue)
  • Optimized script file watcher performance; only directories containing naniscripts will now be watched.
  • It's no longer required to restart Unity editor when changing settings related to script file watcher.
  • Resources path selection menu now supports sub-menus based on path hierarchy.
  • Missing dependency error will now include type of the component that is missing the dependency.
  • Game pad left stick will now also trigger focus when UI focus mode is set to navigation.
  • Resource editor tooltips are now selectable to allow copy-pasting the script examples.
  • It's now possible to import/export localization data into multiple spreadsheets.
  • It's now possible using arbitrary enums to autocomplete parameters of custom commands. (guide)
  • IDE extension now support comment folding.
  • Spine extension now support multiple materials (submeshes).
  • Improved layered actor auto render canvas evaluation.

Changed

  • Minimum supported Unity version changed to 2019.4.24 due to breaking changes in TextMesh Pro package.
  • "UniTask" third party library has been stripped and embedded inside Naninovel assembly. Upgrade script to v2 has been removed. UniTask v2 can now be used alongside default Naninovel installation.
  • Service access methods in the Engine class have been changed: GetService no longer accepts a predicate, use FindService instead; GetAllServices has been renamed to FindAllServices.
  • Removed Correct Render Aspect option. The aspect will now be corrected by default. To modify the rendered area (viewport), use the added Render Rectangle property. (example)

Fixed

  • Fixed author name missing in chat messages when display name is not set.
  • Fixed resources assigned in editor menus and kept in Resources folder, but not under project provider root path not included to build.
  • Fixed exception being thrown when attempting to preview layered actor composition while not in prefab mode.
  • Fixed exception when building with cloud build service with addressable system installed.
  • Fixed addressable labels not automatically added on build.
  • Fixed script parser not changing until recompile or editor restart.
  • Fixed movie UI blinking white after fade when playing a video for the first time.
  • Fixed non-generic GetService method not resolving services from interfaces.
  • Fixed auto play default input binding for gamepad fails to toggle the auto mode when using input system.
  • Fixed quote un-/escaping in parameter values without whitespace.
  • Fixed managed text records only applied to the first property in a type.
  • Fixed TMPro font variants (weights) and sprites not working with text reveal effect.
  • Fixed rotation applied to parent game objects in layered actors is ignored at runtime.
  • Fixed entering skip mode prevents rollback to the command from which the skip started.
  • Fixed editor resources lost when re-importing all assets or deleting "Library" folder.
  • Fixed @toast command not included to localization documents.
  • Fixed appearance and id parameters of @back command not auto-completing for actors other than main (IDE extension).
  • Fixed engine pre- and post- initialization tasks not counting toward the reported initialization progress.
  • Fixed text line incorrectly revealed when a ruby tag is placed at the end of a line.
  • Fixed nullref when invoking LayeredActorBehaviour.RebuildLayers() at runtime.
  • Fixed movie volume not affected by master volume setting.
  • Fixed minor alpha blending artifacts when performing scene transitions.
  • Fixed actors appear darker then they should be in semi-transparent areas.
  • Fixed nullref when using preview composition of layered actor while gizmos are disabled.
  • Fixed layered actor size distorted when using RebuildLayers method at runtime.
  • Fixed title script labels not played when wait for input is enabled.
  • Fixed expression function exceptions suppressed and not logged correctly.
  • Fixed incorrect actor texture scaling when transitioning between appearances with different sizes.
  • Fixed text incorrectly revealed and input indicator missing after saving game.
  • Fixed duplicate rollback step added after loading a saved game.

Naninovel 1.15

16 Nov 19:01
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.4.22 to 2020.3. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: 2019.4.22.

Upgrade Guide

When importing the package to a project with Naninovel version 1.13 or older first follow v1.14 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case you're using extension packages, update them using following links:
  3. In case using a custom main camera prefab, set the desired orthographic size on the prefab (it's no longer set automatically when a custom camera is assigned). Automatically set size is evaluated as follows: reference resolution height / PPU / 2; height is 1080 and PPU is 100 by default, so the default size is 5.4.
  4. With the addition of match mode option for the background actors, revise how existing backgrounds should be matched to the screen ratio. In case using custom background actors, that aren't supposed to stretch to the entire screen, disable the matching by settings the property to "Disabled". In case using generic backgrounds, see scale to match example.
  5. Naninovel will no longer override UI render mode, so in case using custom or modified UIs and text printers, make sure Render Mode is set to Screen Space - Camera and Render Camera field is empty. (example)
  6. If using new input system, update "Input System" package to version 1.1 via package manager.
  7. To use the newly added blur effect, add Naninovel/Prefabs/FX/Blur.prefab to the spawn resources (Naninovel -> Resources -> Spawn).
  8. In case using custom UIs inherited from built-in components, revise the prefabs configuration.
  9. In case using poses, revise which modifications should be applied by enabling corresponding toggle boxes. (example)
  10. In case using speaker highlight feature, re-setup the config using character poses. (example)
  11. To use the newly added Toast UI, add Naninovel/Prefabs/DefaultUI/ToastUI.prefab to the UI resources (Naninovel -> Resources -> UI).
  12. In case you've used quotes inside script expressions by double-escaping them, remove one escape symbol (single escape is enough now).
  13. In case using custom chat printer message prefab, setup the typing state (if necessary) using the newly added OnType Unity events. (example)

Remember to keep NaninovelData/Resources folder and NaninovelData/EditorResources.asset file when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case you're using VS Code IDE extension, check for updates to handle changes in the commands API.

Added

  • Added spreadsheet extension allowing to export/import localizable project data (scenario, managed text and all the associated localization documents) to/from an .xlsx spreadsheet. (guide)
  • Added compatibility with Unity's new visual scripting solution. (guide)
  • Added Spine character implementation. (guide)
  • Added per-object blur FX. (guide)
  • Added a toast UI and @toast command allowing to show general-purpose self-hiding popup notifications aka "toasts". (guide)
  • Added an option to provide custom actor sprite shader, allowing to apply various lighting and surface effects. (guide)
  • Added Match Mode option to the background actor configuration allowing to specify in which mode the actor should be matched against the screen resolution. (guide)
  • Added Reference PPU property to the camera configuration allowing to control pixels per unit count when evaluating scene dimensions.
  • Added Match Screen Width option to the camera configuration; when enabled, relative (scene) position evaluation will use screen border as the origin; otherwise a rectangle based on the reference resolution and PPU is used.
  • Added Arrange Range property to character manager configuration, allowing to specify the range (relative to scene width) in which the characters are distributed by default. (example)
  • Added Update Delay property to React To Aspect Ratio component allowing to specify frequency of the updates.
  • Added IsUnlocked() built-in expression function, allowing to check wither an unlockable item with the specified ID is currently unlocked.
  • Added video character implementation.
  • Added detailed error description when an internal package asset is failed to load.
  • Added Default Font option to UI configuration, allowing to specify a font option to apply by default when the game is first started.
  • Added Offset property to Render Canvas component, allowing to specify an offset for the rendered layered or Live2D actor.
  • Added Default Base Reveal Speed and Default Base Auto Delay properties to the text printers configuration, allowing to specify the related game settings values when the game is first started. (example)
  • Added Voice Source property to character configuration, allowing to assign a dedicated audio source to be used when playing voice clips associated with the character. (example)
  • Added source and target language specs to the generated localization documents.
  • Added do parameter to @wait command, allowing to execute specified commands after a delay. The wait command now also supports wait:false mode.
  • Added Stop Voice property to text printer actor configuration; when enabled, the printer will stop any playing voices on each print command.
  • Added Activate On Move to swipe input configuration, allowing to register the swipes while fingers are moved (disabled by default).
  • Added default swipe bindings for open backlog and toggle UI inputs.
  • Added Touch Distance Limit property to input configuration allowing to limit the touch distance when sampling input.
  • Added On Clicked for CG gallery slot prefab allowing to specify custom behavior when an unlocked gallery slot is clicked.
  • Added Group By Category option to resource provider configuration, allowing to group addressable resources by category. (example)
  • It's now possible to select a custom script parser in scripts configuration menu; to create a custom parser, implement IScriptParser interface. (example)
  • It's now possible to localize text printers and choice handlers in the same way as all the other resources.
  • It's now possible to generate localization documents for all the available localization in the project at once by specifying path to the localization root directory (Resources/Naninovel/Localization by default). (example)
  • It's now possible to provide custom implementation for audio player used by the audio manger service (selected in audio config).
  • It's now possible to control z-position of text printer actors with pos parameter of @printer command.
  • It's now possible to group multiple CG images into one gallery slot. (guide)
  • It's now possible to selectively apply modifications in poses.
  • It's now possible to modify chat message typing state without C# with the new OnType events added to the message prefab.
  • It's now possible to prevent Naninovel from unloading Unity objects assigned as resources with IResourceProviderManager.Hold method.
  • It's no longer required to enable "keep original pivot" in diced sprite atlas.
  • It's no longer required to double-escape quotes inside script expressions (single escape is enough).
  • Optimized shader keyword usage: all the built-in shader keywords are now local and don't count to...
Read more

Naninovel 1.14

27 Oct 20:23
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.4.7 to 2020.2. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: Latest 2019.4 LTS release.

Upgrade Guide

When importing the package to a project with Naninovel version 1.12 or older first follow v1.13 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case you're using extension packages, update them using following links:

Remember to keep NaninovelData/Resources folder and NaninovelData/EditorResources.asset file when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case you're using VS Code IDE extension, check for updates to handle changes in the commands API.

Added

  • It's now possible to select voice language independently of the main localization in the game settings menu. (guide)
  • Unused resources are now automatically released when navigating between naninovel scripts (via @goto command); state reset is no longer required.
  • Improved CG gallery resource management: only the items displayed on the current page will load; previously, all the CG items were preloaded on opening the gallery, which caused freeze with large amounts of CG resources.
  • IDE extension now provides completion for expression functions and custom variables.
  • Added an option to affect all camera components (via * symbol) for toggle and set parameters of @camera command.
  • Added script graph synopsis: first comment lines in the naninovel scripts will now be added to the script nodes, representing scenario synopsis. Can be disabled via Show Synopsis property in the script configuration. (example)
  • Added an option to specify non-uniform (x,y,z) scale with @animate command.

Changed

  • Reset On Goto (state configuration) is now disabled by default for new projects. Consider disabling the option for existing projects as well, as the unused resources are now automatically released when navigating between naninovel scripts and state reset is no longer required. Don't forget to remove reset parameters in the @goto commands after disabling the option.

Fixed

  • Fixed state manager initializing sooner then expected.
  • Fixed Rollback UI saving visibility state by default, which cause inconsistent behavior of the UI when rolling back.
  • Fixed scene transitions disabling skip and auto play modes.
  • Fixed @despawn command not printing script position on warnings.
  • Fixed IDE extension not recognizing script expressions inside generic text lines, which contains inlined commands.
  • Fixed CG gallery not updating item unlock status while the UI is opened.
  • Fixed depth of field effect flickering on despawn.
  • Fixed some spawned FX (eg, dof, rain, snow, sun shafts) gradually revealing after loading a game, while they're expected to be fully revealed.
  • Fixed state rollback stack reset on goto preventing from rolling back to the previously played script.
  • Fixed UI resources referenced in script commands using prefab names instead of resource names.
  • Fixed incorrect color of the comment lines in the visual script editor when using dark editor scheme.
  • Fixed nullref exceptions when editing TMPro printer prefabs in play mode.
  • Fixed script lines searcher navigation in Unity 2020.2.
  • Fixed look camera mode not working correctly when using camera offset.
  • Fixed "shake" FX and @animation command freeze editor when running in a loop.
  • Fixed numeric values parsing in IDE extension on non-English OS locales.

Naninovel 1.13

27 Aug 12:52
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.4.7 to 2020.2. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: Latest 2019.4 LTS release.

Upgrade Guide

When importing the package to a project with Naninovel version 1.11 or older first follow v1.12 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case you're using extension packages, update them using following links:
  3. In case you're using a custom "ChatMessage" prefab for built-in chat printer, assign OnMessageTextChanged Unity event for the prefab. (example)
  4. In case you're using a custom ITipsUI with built-in implementation, assign Items Scroll Rect property. (example)
  5. In case you're using a custom "SaveLoadSlot" prefab, assign Empty Slot Thumbnail property.
  6. In case you've removed com.unity.textmeshpro package (added by default when creating a new Unity project), add it back, as Naninovel will no longer compile without the package.
  7. In case you're using custom metadata types, remove the attribute from the implementations and inherit them from CustomMetadata<>. Be aware, that values of the custom metadata properties will be lost after the changes, so make sure to backup them.
  8. In case using a custom actor implementation, apply ActorResources attribute and revise how the resources are loaded: if the implementation uses multiple resources, add the attribute and set second argument true, otherwise change path of the loaded single resource to be equal to the actor ID.
  9. In case using custom preloadable commands or actor implementations with overridden Hold/ReleaseResources methods, change the signature of the hold and release methods to comply with the new interface. (example)
  10. In case you've used a sprite characters without appearances to represent a narrator, switch to NarratorCharacter implementation (sprite implementations will now show a special texture when an appearance is missing).
  11. In case using any custom types under a non-predefined assembly (via .asmdef files) to extend or override engine behavior (eg, actor implementations, serialization handlers, custom configurations, etc), add the assembly name to the Type Assemblies list property found in the engine configuration menu.
  12. In case using custom configurations, apply EditInProjectSettings attribute if you need the associated project settings menu.
  13. Run Naninovel -> Upgrade -> v1.12 to v.13 upgrade script.

Remember to keep NaninovelData/Resources folder and NaninovelData/EditorResources.asset file when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case you're using VS Code IDE extension, check for updates to handle changes in the commands API.

Added

  • IDE extension for VS Code is now available. (guide)
  • It's now possible to render character and background actors to render texture assets assigned in configuration; supported by all the implementations, except generic. (guide)
  • It's now possible to execute commands via title script before starting a new game, exiting game or loading a game with OnNewGame, OnExit and OnLoad labels. (guide)
  • It's now possible to associate printed text with tips to auto unlock them and show tips UI when the associated text clicked. (guide)
  • It's now possible to specify y and z coordinates with from and to parameters of @slide command.
  • It's now possible to disable opacity hover of grid slots (CG, save-load, etc), by setting Hover Opacity to zero.
  • It's now possible to assign asset references to custom metadata.
  • It's now possible to assign script expression to display name. (guide)
  • It's now possible to override built-in configuration editors (Naninovel project settings menus). (guide)
  • Improved script line searcher styling for better visibility when using dark Unity editor skin.
  • Improved engine initialization and localization change times by using a stripped version of the domain types.
  • Improved performance when state rollback is disabled (controlled via state configuration menu). The engine will no longer perform full serialization on each played command, which was previously required to save the game; this significantly reduce GC allocations and saves CPU time when playing scripts with rollback disabled.
  • Added support for Unity 2020.2.
  • Added "DicedSpriteBackground" background actor implementation; configured and used in the same way as diced characters.
  • Added support for direct interaction (eg, raycasting) with the models of Live2D character implementation.
  • Added ActorResources attribute, allowing to specify resource type constraint and whether an actor implementation is allowed to have multiple resources assigned in configuration menu.
  • Added NarratorCharacter implementation for character actors that doesn't have any presence on scene and can be used to represent a narrator (author of the printed text messages).
  • Added EditInProjectSettings attribute; when the attribute is applied to a configuration implementation, the associated project settings editor menu will be added.
  • Added PrintFrameDelay property to text printer metadata allowing to specify number of frames to wait before completing @print commands; a value greater than zero is required to make the printed text visible while in skip mode.
  • Added Type Assemblies list property to the engine configuration menu allowing to specify which assemblies will be scanned when looking for actor implementations, serialization handlers, managed text, etc.
  • Added OnMessageTextChanged Unity event to ChatMessage component, allowing to use it with any types of text.
  • Added AudioListener property getter to IAudioManager interface, allowing to access audio listener component currently used by the engine.
  • Added managed text records for the graphic options.
  • Added On Started Speaking and On Finished Speaking events for layered character behavior allowing to set up lip sync.
  • Added a Font Options list property in the UI configuration allowing to specify which fonts should be available for the player to choose from in the game settings UI. (example)
  • Added default option of the font dropdown setting to the auto generated "DefaultUI" managed text document.
  • Added an option to specify file extension of the video assets (movies, video backgrounds) streamed under WebGL. (example)
  • Added an option to prevent specific printers from adding messages to the backlog. (example)
  • Added an option for a text printer to always split messages added to backlog; enabled by default for the built-in chat printer.
  • Added extension methods for custom variable manager allowing to get/set variables with float, int and bool value types.
  • Added a default actor appearance shown when referencing a non-existing actor via naninovel scripts.
  • Added Render Canvas component allowing to specify custom render canvas size for layered actors.
  • Added concurrent invocations support for RuntimeInitializer.InitializeAsync() method.
  • Added @sfxFast command allowing to play transient SFX audio clips (eg, via Play Script component in reaction to UI events); the command also allows playing the same clip concurrently multiple times with additive parameter.
  • Added Scene Independent option to the engine configuration menu; when disabled, the engine objects will become part of the scene the engine was initialized at and will be destroyed when the scene is unloaded.
  • Added Dynamic Load property to the CG gallery UI; when disabled, all the CG resources will be preloaded on initialization instead of loading only the resources for the current CG gallery page.

Changed

  • TMPro (com.unity.textmeshpro) package is now a require...
Read more

Naninovel 1.12

28 Jul 14:40
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.4.7 to 2020.1. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: Latest 2019.4 LTS release.

Upgrade Guide

When importing the package to a project with Naninovel version 1.10 or older first follow v1.11 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case you're using extension packages, update them using following links:
  3. Update TextMeshPro (com.unity.textmeshpro) to the verified version via package manager.
  4. In case using SpriteDicing extension, update it and regenerate the atlases (make sure to enable "Keep Original Pivot" in atlas config).

Remember to keep NaninovelData/Resources folder and NaninovelData/EditorResources.asset file when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case you're using Atom IDE extension, check for updates to handle changes in the commands API. Should the extension fail to work after the update, try manually deleting the extension directory and installing it again; re-installing Atom itself could also resolve the issue.

Added

  • Added an option in UI configuration menu to disable override of the managed UIs object layer.
  • Added Render Material property to Layered Actor Behavior component, allowing to use a single custom material when rendering the layers.
  • Added Reversed property to Layered Actor Behavior component, allowing to render the layers in reversed order.
  • Added an upgrade script for UniTask v2.
  • Added IInputIndicator interface allowing to provide an arbitrary "waiting for input indicator" object implementation.
  • Added dark skin for visual script editor; enabled when Unity editor is using "Professional" theme.
  • It's now possible to inject custom data to actors metadata.
  • It's now possible to copy and paste lines in visual script editor.
  • It's now possible to override all the public and protected members of the built-in engine service implementations.
  • It's now possible to rewind by clicking a line in visual script editor, while holding Shift key (can be configured in script configuration).
  • It's now possible to use any renderers derived from UnityEngine.Renderer as layers in layered actor implementations.
  • SunShafts, Rain and Snow built-in FX now have a proper fade-out animation when despawned.

Changed

  • Due to com.unity.textmeshpro verified status in Unity 2019.4.7 release has been changed to a newer version, which has breaking changes, minimum Unity version supported by Naninovel has also changed to 2019.4.7.
  • When Render Material is not assigned, layered actor behavior will now use material from layer renderer component instead of a single predefined material; this allows assigning different materials for specific layers.

Fixed

  • Fixed state manager loading settings and global state later than expected.
  • Fixed an unnecessary error logged when attempting to remove a non-managed UI.
  • Fixed input indicator positioned incorrectly when reveal speed is set to max value (instant).
  • Fixed custom dissolve appearance transitions failing to rollback properly.
  • Fixed built-in searcher scripts conflicting with com.unity.searcher package.
  • Fixed layered actors inconsistent render state when rolling back during appearance transition.
  • Fixed TMPro text printers excessive material assignments.
  • Fixed list record in editor menus deleted when "Delete" key is pressed while editing record's text field.

Naninovel 1.11

11 Jun 13:23
Compare
Choose a tag to compare

Compatibility

Supported Unity versions range: from 2019.3 to 2020.1. Previous versions are not supported; compatibility issues with newer (major) versions will be addressed once they're out of beta.

Recommended Unity version: Latest 2019.4 LTS release.

Upgrade Guide

When importing the package to a project with Naninovel version 1.9.8-beta or older first follow v1.10 release upgrade guide, then continue with the following instructions:

  1. Remove Naninovel folder from the project before importing the updated package.
  2. In case you're using extension packages, update them using following links:
  3. In case using custom text printers, add continue input triggers to the new Continue Input Triggers list property.
  4. In case using Naninovel's async API in custom scripts, resolve ambiguity of cancellationToken arguments by removing System.Threading usage or specifying full name for the argument: Naninovel.CancellationToken; example video.

Remember to keep NaninovelData/Resources folder and NaninovelData/EditorResources.asset file when updating the engine to preserve project configuration and asset references.

Be aware, that in-game saves (slots in save/load menu, values in settings menu and global game state) created with previous versions could cause unexpected behavior when loaded with the updated version; when patching a shipped project with a new Naninovel version, make sure existing saves work as expected.

In case you're using Atom IDE extension, check for updates to handle changes in the commands API. Should the extension fail to work after the update, try manually deleting the extension directory and installing it again; re-installing Atom itself could also resolve the issue.

Added

  • Added support for Unity 2020.1.
  • Added Animated property to layered actor behavior component; when enabled, the actor will be rendered each frame allowing to animate the layers or implement other dynamic behavior.
  • Added Goto.DontReset attribute; when applied to an engine service implementation, the service won't be reset by default while executing @goto command.
  • Added support for right to left (arabic) text reveal effect (TMPro printers only).
  • Added Font Change Configuration property to the managed UI components, allowing to configure which text components should be affected by font and text size settings (set by player via in-game settings menu); it's also possible to specify font sizes for individual text elements.
  • Added an utility to generate metadata for custom commands allowing to support them in IDE extensions (eg, Atom).
  • Added play parameter to @choice command, allowing to control whether the script should continue playing after the choice is picked when neither goto nor gosub parameters are specified (enabled by default).
  • Added an auto voice mode to associate voice clips by content instead of command playback spot.
  • Added only parameter to @resetState command, allowing to reset only the provided services.
  • Added Complete On Continue property to script player configuration, allowing to control whether to instantly complete blocking (wait:true) commands performed over time (eg, animations, hide/reveal, tint changes, etc) when Continue input is activated; enabled by default.
  • It's now possible to rollback via backlog UI by clicking a button next to backlog message; the feature can be disabled via Allow Rollback property in backlog UI.
  • It's now possible to disable replay voice feature in printer backlog UI via Allow Replay Voice property.
  • It's now possible to mute/un-mute individual input samplers with set parameter of @processInput command; eg: @processInput set:Rollback.false,Pause.false,Continue.true.
  • It's no longer required to restart the game when setting default font type or size in game settings menu.
  • It's now possible to setup multiple continue input triggers for a text printer.
  • It's now possible to control voice volume of specific characters.
  • It's now possible to override built-in commands.
  • Improved @resetState command performance when a service filter is used.

Changed

  • Blocking (wait:true) commands performed over time (eg, animations, hide/reveal, tint changes, etc) are now instantly completed when Continue input is activated; can be disabled in script player configuration via Complete On Continue property.
  • Changed type of cancellationToken arguments used in async Naninovel's API from System.Threading.CancellationToken to Naninovel.CancellationToken.
  • Anchor for ButtonArea built-in choice handler content is now centered to prevent buttons from moving when changing display aspect ratio.
  • Script will now automatically continue playing by default when do parameter is assigned in @choice command, unless play parameter is set to false.
  • Text font size (in game settings menu) is now a dropdown instead of slider.
  • Text font and size (in game settings menu) no longer affect all the text elements by default; individual text elements of the UI (including custom UIs), that should be affected by the setting can now be specified via Font Change Configuration property.
  • Continue Input Trigger property of text printers has been replaced with Continue Input Triggers (list) to allow adding multiple objects.
  • Chat text printer no longer reset by default (only affect new projects).
  • Changed unloaded resource object field visual style to be more similar to normal object field.
  • Third party NCalc library has been updated to the latest version.

Fixed

  • Fixed layered actors sometimes not rendered properly when scaled.
  • Fixed some resources unloaded while being used.
  • Fixed bubble printers have incorrect position when display aspect ratio changes.
  • Fixed reset parameter of @goto command not working with types outside of "Naninovel" namespace.
  • Fixed @resetState command not resetting ICustomVariableManager service when no parameters are specified.
  • Fixed built-in TMPro printers using incorrect font shader for author name text labels.
  • Fixed author avatar images inside TMPro printers failing to crossfade correctly.
  • Fixed camera rotation over negative values.
  • Fixed some text printer and choice handler resources not disposed correctly.
  • Fixed default voice volume property in audio config ignored when starting a new game.
  • Fixed missing ref exception sometimes throwing in editor when closing script graph window.
  • Fixed skippable wait timer (eg, @wait i3) not behaving correctly when used before or after a generic text line.
  • Fixed script localization failing when localized lines with equal content exist.
  • Fixed backlog messages ignoring authors when using chat printer.