Forum rules - please read before posting.

Version 1.70 - Objectives, UI resizing, ActionList Editor improvements, and new Timeline tracks

It's the first update of the new year, and it's a big one - possibly AC's biggest update yet! As such, this one does have a fair few more "upgrade notes" than usual, so please go through them carefully.

Key features:

Objectives

Objectives help players track progression quests or tasks that they're given over the course of the game. Objectives are defined in the Inventory Manager, and can be given descriptions, textures, and multiple win/lose/in-progress states. The new Objectives menu, included in the default interface, lets you view all "active" Objectives, and then click to reveal the current state of each. These states are read/set with the new Objective Actions, so they're not automatically synced to gameplay tasks, but overall they should benefit games that give players multiple tasks at once.

ActionList Editor improvements

The ActionList Editor window gets some much-needed attention, with improved panning, selection, dragging and zooming behaviour - including keyboard shortcuts. New context menu items allow you to auto-frame multiple Actions, and mark Actions as favourites.

Save file API improvements

New functions have been added to the SaveSystem script to aid with the extraction of data (e.g. Variables) from save game files without actually loading them into the game proper - allowing for things like custom save menus with progress details in the labels. The new save-file manager also lets you view and manage save data from the Editor - as well as extract the contents of save game files, which should be useful when debugging.

Translation improvements

You can now choose exactly which types of game text (i.e. speech, menus) are available for translating. In Unity 2019.2 and later, CSV files are now 'true' CSV files - using commas to separate fields. For backwards-compatibility, however, you can switch back to the 'legacy' format in AC's new 'Project settings' section:

Project settings

In Unity 2019.2, AC has it's own section in Unity's Project settings, where you can tweak a few things like gizmo colours and Hierarchy icon display.

Default parameters

ActionList parameters now have default values. In the case of scene-based ActionLists, these default values will be used each time they're run - unless explicitly set (using e.g. the Set parameters? option in the ActionList: Run Action. In the case of ActionList assets, you can specify if these default values are used each time - or only for the first time an asset is run.

New Timeline tracks

A couple of new Timeline tracks - one to control camera fading, another to control 2D character animation. The latter aims to let 2D games rely more on Timeline, and works by animating a character according to their movement - so if a character moves right (due to a separate Animation track), they will automatically play they're "walk right" animation.

ID references

Want to know how a particular GameObject is used by your project? Attach a Constant ID component to it (if it hasn't one already), and choose Find references in it's Context menu. This will then have AC search Menus and ActionLists for anything that references it - and list such references in the Console.

Menu resizing

The interface will now adapt to the screen's "safe area" (i.e. account for notched areas on mobile devices). UI-based menus can also now account for both this, and enforced aspect-ratios, with the new Auto Correct UI Dimensions component. This works by modifying the RectTransform boundary's Anchor points - see the updated Default UI prefabs for examples.

Happy 2020!

«13

Comments

  • And the full changelog:

    Upgrade notes

    • The minimum-supported version of Unity is now 2017.4
    • ActionList parameters now have default values - these will be used by ActionList assets that do not have them specifically set
    • ActionListAsset's parameters List is now private - use GetParameter or GetParameters to access its parameters
    • The "Result is automatic?" Recipe property has been moved to Crafting element that displays the resulting item
    • The ISaveFileHandler interface's Load function now returns the loaded file data as a string, and should no longer call SaveSystem.ReceiveDataToLoad directly
    • The ISaveFileHandler interface's Import function has been removed, since the updated Load function now serves both purposes
    • The SaveSystem script's AssignPlayerData function no longer returns a value
    • The SaveSystem class's GenerateSaveSuffix and GetSaveExtension functions are now static
    • The InventoryBox element's "Select item after taking?" checkbox has been replaced with a "Behaviour after selecting" Popup selector field
    • The RuntimeInventory's Remove function has been separated into Remove and RemoveFromOtherPlayer functions, each with parameter variants
    • If the "Inventory: Add or remove" Action is used to remove an item that can have multiple instances, but "Set amount?" is unchecked, all instances of that item are removed
    • If a Trigger's Source is set to Asset File, the Collider parameter is now set via a dropdown list
    • The AdvGame.GetMainGameViewSize function has been removed and replaced by the MainCamera script's GetPlayableScreenArea function
    • RuntimeLanguage's GetTranslation function now requires the text type as an additional parameter
    • The Hotspot script's IsInventoryButton function has been replaced with GetButtonInteractionType
    • Hotspot menus now transition out, as opposed to turning off instantly, when a Cutscene begins - hook into the OnEnterGameState custom event to revert this behaviour
    • The IStateChange class has been deprecated - rely instead on the OnEnterGameState / OnExitGameState custom events
    • InputTouchPositionDelegate override functions now take the touch index as a parameter

    Objectives

    • Added: Objectives - use to define quests that Players can complete and fail
    • Added: "Objective: Set state" Action - use to change the current state of an Objective
    • Added: "Objective: Check state" Action - use to check the current state of an Objective
    • Added: "Objective: Check state type" Action - use to check if an Objective is active, completed, or failed
    • Added: "Objectives" menu to the default interface
    • Added: OnObjectiveUpdate and OnObjectiveSelect events - called when an Objective is updated and selected, respectively

    ActionList Editor

    • Added: Ability to define "favourite" Actions in the ActionList Editor
    • Added: Grid background to the ActionList Editor
    • Added: The Home key in the ActionList Editor will reset scrolling, or zooming if 'Alt' is also pressed
    • Added: The Page Up/Down keys in the ActionList Editor will control scrolling, or zooming if 'Alt' is also pressed
    • Added: View options in the ActionList Editor's context menu - use to reset the view, or view Actions
    • Added: "Edit Script" button to Action cog menus in the ActionList Editor - use to open up the Action's source code in Unity's script editor
    • Changed: The ActionList Editor's "Frame Action" toolbar button has been replaced by the "View/Action" context menu item
    • Changed: The ActionList Editor's scrollable area has been widened
    • Changed: The ActionList Editor's scroll bars are now transparent and less intrusive
    • Changed: ActionList properties are now overlaid the Actions canvas in the ActionList Editor window
    • Fixed: Various issues with marquee selection in the ActionList Editor
    • Fixed: Issues when panning while dragging nodes in the ActionList Editor
    • Fixed: ActionList Editor context menus being incorrectly positioned while zooming out

    Saving

    • Added: Save-game file manager - use to manage save profiles and save game files, as well as view all data within a save file
    • Added: ExtractMainData, ExtractSaveFileVariables and ExtractSceneData functions to the SaveSystem script - use to extract the contents of a save file
    • Added: Save-game screenshots are now available for the Android and WebGL platforms, and the PlayerPrefs save- File handler
    • Added: Ability to set the relative size of save-game screenshot textures
    • Added: Ability to override, through script, the data format used by Options data
    • Changed: The ISaveFileHandler interface's Load function now returns the loaded file data as a string, and should no longer call SaveSystem.ReceiveDataToLoad directly
    • Changed: The ISaveFileHandler interface's Import function has been removed, since the updated Load function now serves both purposes
    • Changed: The SaveSystem script's AssignPlayerData function no longer returns a value
    • Changed: The SaveSystem class's GenerateSaveSuffix and GetSaveExtension functions are now static
    • Changed: Save-game screenshots now auto- Crop borders when an aspect ratio is enforced
    • Fixed: The Remember Animator component's ability to save changes in an Animator's Runtime Animator Controller not being configurable in its Inspector
    • Fixed: Display issues with the Remember Animator component

    Inventory

    • Added: The "Inventory: Property to variable" Action and Label elements that display property values can now multiply Integers and Floats by the count of the associated item
    • Added: Ability to configure how inventory item amounts are displayed in InventoryBox menu elements
    • Added: Ability to set an "Empty slot texture" for InventoryBox menu elements
    • Changed: The RuntimeInventory's Remove function has been separated into Remove and RemoveFromOtherPlayer functions, each with parameter variants
    • Changed: If the "Inventory: Add or remove" Action is used to remove an item that can have multiple instances, but "Set amount?" is unchecked, all instances of that item are removed
    • Changed: The "Result is automatic?" Recipe property has been moved to Crafting element that displays the resulting item
    • Fixed: "Inventory: Add or remove" Action not triggering OnInventoryAdd and OnInventoryRemove events when being used to replace one item for another
    • Fixed: RuntimeInventory's GetCount method not accounting for items spanning multiple slots
    • Fixed: Issues when clicking on Unity UI elements with an inventory item selected

    Containers

    • Added: Ability to only select items upon clicking them in Containers, and not automatically move them to the Player's inventory
    • Added: Ability to limit the number of Inventory item slots a Container can hold
    • Changed: The InventoryBox element's "Select item after taking?" checkbox has been replaced with a "Behaviour after selecting" Popup selector field
    • Fixed: Being able to transfer items to the Player's inventory using "Container: Add or remove" when the chosen item is not held by the Container
    • Fixed: OnContainerRemove event not triggered when using the "Container: Add or remove" Action to transfer items to the Player
    • Fixed: InventoryBox elements set to display a Container's contents not respecting the "Items can be re-ordered in Menus?" property
  • Characters

    • Added: Ability to modify - through script - a character's turning angle threshold for spot-turning to be possible
    • Added: If a Follow Sorting Map component detects that a sprite-based character uses a Sorting Group, it will rely on that to control its sorting order
    • Added: Ability to set a speed factor for characters that rely on a Shapeable component for lip-syncing
    • Changed: Tagging the Player character as "Player" is no longer necessary - the presence of the Player component is enough
    • Fixed: NPCs not always facing the correct direction after replacing a Player when using the "Player: Switch" Action
    • Fixed: Movement issues with Direct- Controlled 2D Player characters when the NavMesh uses Character evasion
    • Fixed: NPCs that follow another character not accounting for their "Keep out of Player's way?" property
    • Fixed: Automated character "Speech position" not accounting for Character Controllers
    • Fixed: Characters that rely on Root Motion not being properly affected by their 'Walk speed scale' if their Animator was set directly in the Inspector
    • Fixed: State of the Player's "Run" toggle not surviving scene changes
    • Fixed: Rare character turning issue

    Speech and language

    • Added: Ability to choose which text types are available for translation in the Speech Manager
    • Added: "Say only once?" option to speech lines gathered in the Speech Manager - use to force a line to be said only once per-game
    • Added: Ability to rely on standard CSV formatting via the AC Project Settings (Unity 2019.2 or later)
    • Added: Option to the Lip Sync Texture component to apply material changes in LateUpdate, as opposed to Update
    • Changed: RuntimeLanguage's GetTranslation function now requires the text type as an additional parameter
    • Fixed: Unity UI-based animated character portraits not respecting the "Play talking animations forever until user skips it?" setting
    • Fixed: Occasional Console error when previewing subtitle menus using the AC Speech Timeline track
    • Fixed: Issue when applying row sorting to exported CSV files

    ActionList parameters

    • Added: Ability to compare by Constant ID value when using the "ActionList: Check parameter" Action to check parameter-based GameObject parameters
    • Added: ActionList parameters now have default values
    • Added: Option for ActionList Assets to reset their parameters back to their default values upon running
    • Added: Set Trigger Parameters component - use to set all parameters of a Trigger, provided that its "Actions source" field is set to "Asset File"
    • Added: Ability to transfer Animator parameter values to ActionList parameters using the "ActionList: Set parameter" Action
    • Changed: ActionListAsset's parameters List is now private - use GetParameter or GetParameters to access its parameters
    • Changed: If a Trigger's Source is set to Asset File, the Collider parameter is now set via a dropdown list
    • Fixed: Changes made to ActionList Asset parameter values surviving when exiting Play Mode
    • Fixed: Issues with Triggers that rely on ActionList asset files that have parameters

    Scene switching

    • Added: Option to the "Scene: Add or remove" Action to run the added scene's "Cutscene on start" even if it is already open
    • Added: Option for scenes to await manual activation, if asynchronous loading is enabled

    Timeline

    • Added: "Character Animation 2D" Timeline track - use to automatically play a sprite-based character's idle, walk and run animations based on their motion
    • Added: "Camera Fade" Timeline track type - use to display a fade texture on the camera in Timeline
    • Fixed: AC Speech Timeline track bindings not being re-mappable when using the "Engine: Control Timeline" Action

    Cameras

    • Added: Ability to constrain a GameCamera's spin rotation when its "Affected by" field is set to "Look At Target"
    • Changed: The AdvGame.GetMainGameViewSize function has been removed and replaced by MainCamera's SafeScreenRect and GetPlayableScreenArea
    • Changed: If a GameCamera uses Orthographic projection, "Cursor influence" affects position, not rotation
    • Fixed: Issue when the scene's default GameCamera has "Use default PlayerStart?" unchecked
    • Fixed: First-person pitch rotation not being smooth on some systems
    • Fixed: Display issue with the "Scene: Switch" Action if used to switch to the current scene, and an overlay is set
    • Fixed: "Last gameplay camera" not being recorded if multiple camera changes are called in a single frame

    Editor

    • Added: "Adventure Creator" category to Unity's Project settings menu, with options to configure gizmo colours, icon display and menu item display (Unity 2019.2 or later)
    • Added: Ability to find references made by Actions and Menus to GameObjects with ConstantID components
    • Added: Toolbar links for the Ambience and Music Storage windows
    • Added: Minor visual improvements to the AC Game Editor window
    • Added: Visual tweaks to ActionList Inspectors if Actions are hidden from them
    • Changed: The minimum-supported version of Unity is now 2017.4
    • Changed: The Cursor Manager's "Always show system cursor in Editor?" property is now enabled by default on OSX and Linux as well as Windows
    • Changed: The Settings Manager no longer lists active options data, but only default value - use the new save-game file manager to view per-profile options data
    • Changed: The "Confine system cursor to game window?" option now only works in builds - not the Editor

    Documents

    • Added: Ability to run an ActionList upon clicking a Document in an InventoryBox menu element
    • Changed: The PlayerMenu script's OpenDocumentMenus function has been removed
    • Fixed: Display issue with the Inventory Manager when editing a Document with a large amount of page text
    • Fixed: Display issues with Document menus that pause the game when enabled
    • Fixed: Issue when opening Documents from a scrolling InventoryBox element

    Menus

    • Added: Auto Correct UI Dimensions component - use to update a UI-based Menu's anchor position and size according to aspect ratio
    • Added: Mobile games now render their menus in the "safe area" of the screen, avoiding notches etc
    • Added: Ability to directly-navigate menus with the keyboard when the Input method is set to "Mouse And Keyboard"
    • Changed: The OnMouseOverMenu event is no longer triggered if the Menu ignores mouse clicks
    • Changed: Hotspot menus now transition out, as opposed to turning off instantly, when a Cutscene begins - hook into the OnEnterGameState custom event to revert this behaviour
    • Fixed: The default Unity UI Canvas prefabs now adapt correctly to enforced aspect ratios
    • Fixed: Display issues UI-based Button elements that only show when effective
    • Fixed: "Unity UI blocks interaction and movement" option not working on touch-screen devices
    • Fixed: The Menu Manager's "Directly-navigate" fields being ignored when the Input method is set to "Mouse And Keyboard"
    • Fixed: Unity UI elements displaying Hotspot labels even if their associated Button components are not Interactable
    • Fixed: Issues with the OnMouseOverMenu event
  • Hotspots

    • Added: Ability to define a Hotspot's unhandled "Use" interaction - if a Player Action is set but no Interation assigned, it is combined with the Cursor Manager fallback
    • Changed: The Hotspot script's IsInventoryButton function has been replaced with GetButtonInteractionType
    • Fixed: Highlighting issue when a Hotspot is limited to a specific camera
    • Fixed: OnHotspotStopMovingTo event not firing in certain circumstances

    Variables

    • Added: Undo options when adding and deleting PopUp variable values
    • Fixed: OnVariableChange event not being triggered in some instances
    • Fixed: "Variable: Set" Action's output socket not showing in some circumstances

    Music

    • Added: SyncTrackWithCurrent function to Soundtrack script - use to sync a Music or Ambience track's position with the current audio for seamless blending
    • Added: The auto-ending of other Music objects, when using the "Sound: Play" Action to play music, is now optional

    Input

    • Added: InputTouchDeltaPositionDelegate and InputTouchPhaseDelegate functions - use to override Touch drag input and phase
    • Changed: InputTouchPositionDelegate override functions now take the touch index as a parameter

    Misc

    • Added: Ability to spawn the Click marker at the Player's target position, as opposed to the NavMesh Collider contact point
    • Added: "Thumbstick Rotation" QTE type - involves rotating a controller stick a given number of revolutions to win
    • Added: Drag objects set to "Rotate Only" can now optionally operate without a Rigidbody
    • Added: Controls to affect child Renderers to the Invisible component's Inspector
    • Added: Active Inputs can now respond to the "Button Up" input as well as "Button Down"
    • Added: Ability to kill an ActionList before it is run by calling its Kill function from within the OnBeginActionList custom event
    • Changed: The AdvGame script's GetMainGameViewSize function has been replaced by the MainCamera script's GetPlayableScreenArea function
    • Changed: AC's OUYA integration is now deprecated
    • Changed: The IStateChange class has been deprecated
    • Changed: A select number of component script functions are now virtual, to allow overrides through subclassing
    • Fixed: Subtitles in the 2D Demo displaying for too long in Unity 2018.3 or later
    • Fixed: "Lock snap enabled!" warning message displaying in Console inappropriately
    • Fixed: Minor issues with the 3D Demo in Unity 2018.3
  • Hey Chris,

    Unity Asset Store shows version 1.67 instead of 1.70 (just so you know).

  • Objectives look like a fantastic idea indeed! I've been using global variables for that purpose, but it wasn't perfect. The list of variables tends to grow really fast and makes the project a little bit messy. Only now I realize how much I needed that feature. Objectives in an adventure game are rather obligatory.

    I assume there is no way to convert global variables to objectives automatically? If not I believe it's worth it to do it manually anyways. It should save time in the long run.

    Year 2020 looks very promising with update like that! Thanks!

  • Great update, I was thinking about having an objective system in place mostly to organize my mind.

  • Oh objectives looks really lovely! What amazing update :smiley:

  • This. Is. FANTASTIC.

  • Where is the "say once" option in the speech manager? I've gathered all of the lines, but I can't seem to find the option:

  • edited January 2020

    @Jensen: Whoops!!! All that, and I managed to type in the wrong number. Thanks, will correct this.

    @Martin: You could do it in code, since both variables and objectives can be accessed via script. How they transfer from one to another would really be a case-by-case basis though, so likely it'd be best to just transfer manually.

    @zebbi: It should appear above the Description field. Which version of Unity did you download from?

  • edited January 2020

    @ChrisIceBox I downloaded from 2019.2.

  • Try updating again - re-download and re-import from the Asset Store, and make sure v1.70 is listed in the Manager window.

  • This looks to be an awesome update, bringing many features and fixes that will help. Thanks, Chris!

  • @ChrisIceBox: Objectives are a game changer. AC now ventures into Quest Machine territory. Well done, and hopefully the feature gets more elaborate with new versions.

  • Yeah, agree with everyone else, this looks like an awesome release. The Objectives feature is a direction I've always hoped AC would move in - edging towards RPG territory, while still keeping true to its Adventure roots

  • Whenever I dream of a certain feature I find it in the next update. Spooky, but great. Thank you!

  • It seems to me that the diary menu has stopped working. Is it possible?
    https://imgur.com/mM4LL27

    I am using this script additionally:
    https://adventure-creator.fandom.com/wiki/Adding_images_to_documents_and_journals

  • Thanks for this, Chris! Lots of good stuff.

    It seems that all my Change rendering -> Set -> Sorting layer actions have stopped working though.

    This doesn't do anything where it used to.

  • @OhNoo: Open up a new thread in Technical Q&A with more details (including the error message in full) and we'll see what's up.

    @Rairun: Same, can you start a new thread for this? Please share more info about the character you're trying to affect.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.