This forum now has forum rules - please read before posting!

Version 1.40 - Lip-syncing, scene transitions, better ActionList editor

edited November 2014 in Official news
Long-time users of AC may know that the round numbered updates tend to be large ones, and 1.40 is no different.  The changelog even exceeded the Asset Store's character limit!  This update focuses on polish, both for the way your game plays, and the way your game is made.

= Lip syncing =
The biggest feature with this release is the ability to map a Character's mouth movements to a series of phoneme shapes.  This works for 2D sprites, 3D models, and portrait graphics.  The implementation is partly inspired by AGS, in that phonemes are first grouped into frames.  Like AGS, phonemes can be generated automatically from the speech text, or imported from Pamela files.  Files generated by SAPI - which produces much better "automatic" results - can also be imported, and AC now has official support for the industry-standard FaceFX tool.

Without FaceFX, lip-syncing 3D Character models is performed by manipulating blend shapes.  The Physics demo's opening cutscene now relies on this method, rather than hand-keyed animation.

= Blend shapes =
Necessary for the lip-syncing mentioned above, AC's support for Unity blend shapes has been given a makeover.  The Shapeable script is now used to sort blend shapes into groups - the principle being that only one shape in a group is "active" at any one time.  The new Object: Blend shape Action can be used to set the value of one shape, and the others will be disabled (over time, if set).  The 3D demo now makes use of this method to animate Brain's facial expressions.

= Ultimate FPS =
If your project involves UFPS, AC now assumes that you're using the latest version (v1.4.8), which requires a slightly different prefab set-up.  This tutorial will guide you through it.  To use an earlier version of UFPS, open up AC's UltimateFPSIntegration.cs script file, and follow the instructions within.

= Scene transitions =
Changing scenes in previous versions of AC resulted in a momentary black-out while objects were initialised.  No more: when using the Engine: Change scene Action, you can opt to use the last frame of the previous scene as the "transition overlay".  This allows for some nifty camera effects: if you use an overlay and fade into the next scene, it will cause a crossfading effect.  If you use an overlay and don't fade in, it will cause a straight-cut.  The "Camera: Fade" Action has also been upgraded to allow for custom textures.  And at long last: scenes can be referenced by name, not just number.

= ActionList Editor =
While it may look the same, the ActionList Editor window has had a number of important refinements.  Firstly, the right-click menu now has an "Auto-arrange" option, which arranges nodes neatly, making them much easier to view.  There's also a performance boost: nodes outside of the window's view are no longer drawn, fixing the slowdown on older machines when large lists are involved.

A number of refinements have been made to the copy/paste/delete buttons - node connections are better remembered now.  Delete an Action in between two others, for example, and the two remaining Actions will link together.

Finally, an all-powerful "Run now" button has been added to the Inspector window.  Click it when your game is running to run the ActionList instantly - it's VERY useful for testing Cutscenes.

= Custom graphics options =
For coders, a list of common functions and variables is now listed in the manual.  The most important of these is the new PlayerMenus.RecalculateAll(); function, which re-sizes all Menus after changing the screen size.  This makes it a whole lot easier to implement custom graphics options: this tutorial goes over the process of making a "Screen resolution" option.

= Updated Physics demo =
Aside from the lip-syncing mentioned above, the Physics demo has a new "safe code" puzzle, to demonstrate how tumblers can be implemented.  This work also resulted in a number of general refinements to AC's physics system.

= Custom curves =
When using the Camera: Switch or Object: Transform Action to affect something over time, you can now define a custom curve to control movement speed.  This gives much greater control than the standard "Smooth" / "Ease In" etc options of before, and also supports overshooting: if the curve goes higher than 1, it will cause the object to go past it's target, which can be used for some nice effects.

= Tutorials =
It's all in the manual, but sometimes it's better to have a more focused guide to new features.  Here are the latest:
«13

Comments

  • And the full changelog.  As ever, please back up your projects before upgrading!

    = Upgrade notes =
    • Conversations require upgrading.  To upgrade, simply view each Conversation in the Inspector and save the scene.
    • Instances of "Character: Move along path" that are set to "Stop moving" require upgrading.  To upgrade, simply view in the Inspector and save the scene.
    • Animated textures now support frames on multiple rows - as a result, the number of row and columns must now be explicitly defined.
    • The Physics demo has been updated, but errors may occur if run with a version earlier than 1.40.
    = Speech =
    • Added: Character portrait, 2D and 3D lip-syncing - can either be automatic or rely on files generated by Pamela or SAPI
    • Added: FaceFX integration - choose FaceFX lip-syncing in the Speech Manager, and it will automatically search for the correct animation
    • Added: Ability to pause speech text for X seconds with the token [wait:X] inserted into the speech text
    • Added: Ability to pause speech text until player clicks with the token [wait] inserted into the speech text
    • Added: Ability to re-order Dialog Options in Conversations, and insert new ones after any existing option
    • Fixed: Characters continuing to play "talking" animation once speech is halted with the "Dialogue: Stop speech" Action
    = Blend shapes =
    • Added: "Object: Blend shape" Action - use to animate keys in isolated groups, as set by the updated Shapeable script
    • Added: RememberShapeable script - attach alongside Shapeable scripts to store the active key's value in save games

    = Demo games =
    • Added: Safe code puzzle to Physics demo - demonstrates rotating puzzles and code sequences
    • Changed: Physics demo now makes use of BlendShape lip-syncing, rather than key-framed mouth animation
    • Changed: 3D Demo now makes use of BlendShapes for Brain's facial expressions, rather than key-framed head animations
    • Fixed: 3D Demo not restarting properly when the closing Cutscene ends
    = First person =
    • Added: Support for Ultimate FPS's v1.4.8 update - read UltimateFPSIntegration.cs to "downgrade" to earlier versions
    • Fixed: Issues related to switching Player prefab mid-game in First Person mode
    = Variables =
    • Added: New variable type "Pop up" - declare and choose from a list of text values
    • Added: "Variable: Copy" Action - use to transfer a Variable's value from one to the other - can be used between Local and Global Variables
    = Camera =
    • Added: "Overlay current screen" option to "Engine: Change scene" Action - use to create instant or crossfading scene transitions without black overlay
    • Added: Ability to set a custom texture when using the "Camera: Fade" Action to fade out
    • Added: Focal distance property to GameCamera prefab - call AC.Kickstarter.mainCamera.GetFocalDistance (); in DOF scripts to set per-camera
    • Added: SimpleCamera prefab to Scene Manager of 3D games - can only be stationary, but has reduced performance cost
    • Added: "Camera: Switch" Action can now use a custom Animation Curve to control movement speed (supports overshooting)
    • Added: Ability to set a duration for earthquake effects with Camera: Shake Action
    • Changed: The camera no longer fades in by default when a scene starts - use the Camera: Fade Action in the Cutscene On Start instead
    • Fixed: 2D cameras not always being rotated correctly when created using Scene Manager
    • Fixed: 2D cameras showing Offset variables when not appropriate
    = Characters =
    • Added: Option to NPC Inspector for NPC to try to move out of Player's way if Player gets too close
    • Added: "Character: Move along path" Action can now be used to make Characters resume the last path they were walking along
    • Added: Ability to change walk and run sounds for "Sprites Unity Complex"-based Characters with the "Character: Animate" Action
    • Added: "Angle float" parameter for Characters animated by Sprites Unity Complex - returns angle of sprite in degrees
    • Fixed: Delay in updating character sprites when camera cuts to an angle that requires directional changes
    • Fixed: "Character: Face direction" Action not always working in Top Down 2D mode
    = Parameters =
    • Added: "Variable: Check" Action can now use a parameter in place of the value to check against
    • Added: "Variable: Set" Action can now use a parameter in place of the value to set
    • Added: Boolean and Integer parameter types
    • Changed: The labels of Parameter fields in Actions are now emboldened
    = ActionLists =
    • Added: "Auto-arrange" option to ActionList Editor window's right-click menu - useful for keeping long ActionLists tidy
    • Added: "Run now" button to ActionList Inspectors - click on in-game to instantly run and test ActionLists
    • Added: Static function "ActionListManager.KillAll ()" - call to instantly end all running ActionLists
    • Added: Option to move selected Action to the front of an ActionList in the ActionList Editor Window, if only one Action is selected
    • Added: Option to black screen out when skipping Cutscenes or other ActionLists
    • Changed: "Pause until finish?" option in Actions are now named "Wait until finish?"
    • Removed: Ability to enable and disable Actions in the ActionList Editor window, as simple re-wiring can achieve the same effect
    • Fixed: Slowdown in ActionList Editor window when an ActionList with many Actions is viewed
    • Fixed: Right-click menu in ActionList Editor window now works when the cursor is hovering over an Action
    • Fixed: Various connection issues with adding, pasting and deleting Actions in the ActionList Editor window
    • Fixed: Various issues with marquee-selecting Actions in the ActionList Editor window
    • Fixed: Various operations performed in ActionList Editor window not being stored in Undo buffer
    • Fixed: Actions in an ActionList asset being wrongly highlighted when the game is running
    • Fixed: Performance issues with looping ActionLists
  • This just gets better and better, thanks Chris!
  • = Inventory =
    • Added: The "Inventory: Check" and "Inventory: Add
      or remove" Actions can be used on prefabs other than the current Player,
      if multiple Players are involved
    • Added: "Inventory: Check selected" Action - use to query the currently-selected Inventory item, or if none are selected
    • Added: When auto-creating Inventory Interactions, the chosen Inventory item's label is included in the name
    • Fixed: Right-clicking Inventory items on Hotspots not always giving intended response
    • Fixed: Not all recipes being recognised if more than one is defined
    = Moveables =
    • Added: Ability to disable free-aiming when moving Draggable and PickUp objects in First Person
    • Added: "Moveable: Check held by Player" Action - use to determine if a Draggable or PickUp object is currently being held
    • Added: "Align drag vector to front" option for Hinge Tracks - useful for Draggables that are viewed head-on
    • Fixed: Various issues related to Hinge Tracks
    • Fixed: Draggable objects' "Interaction on move" running if the object is turned off
    • Fixed: Errors when using Draggable objects in scenes with disabled Colliders
    = Menus =
    • Added: Option to call an ActionList when a Menu is turned off, as well as on
    • Added: ActionList assets can be prevented from unfreezing time when called while 'pause' Menus are enabled
    • Added:
      Static function "PlayerMenus.RecalculateAll ()" - call after changing
      screen resolution to correct the size and position of all Menus
    • Added:
      Static function "PlayerMenus.SimulateClick" - call to simulate the
      effects of clicking on any slot of any Element of any Menu
    • Changed: Menu and Element size/position option "Absolute" renamed to "Absolute Pixels"
    • Fixed: ActionLists not running correctly when called while a pausing Menu is enabled
    • Fixed: Icons and Menus set to appear over Hotspots not accounting for the Screen's height
    • Fixed: "Absolute Pixels" size option not working correctly for Menu elements with multiple slots
    • Fixed: Gameplay being resumed if a pausing Menu is turned off while others are still on
    • Fixed: "Allow speech skipping" option in Speech Manager conflicting with pausing Menus
    • Fixed: Sliders not displaying correctly when Size is set to Absolute Pixels
    = Hotspots =
    • Added: "Hotspot: Enable or Disable" Action - easier than using "Object: Send message"!
    • Added:
      Ability to set a Hotspot's "Interaction source" as a custom script -
      use to trigger a script function when an Interaction is run
    • Added:
      Option to show all nearby Hotspots at once when using Player Vicinity
      method of Hotspots detection in Direct Control or First Person games
    • Added: Ability to auto-create a Walk-to Marker within the Hotspot Inspector if none is set
    • Fixed: Occasional walk animation errors when the Player prefab moves towards a Hotspot during gameplay
    • Fixed: Issue with retrieving saved Hotspot data in recent versions of Unity
    = Interaction modes =
    • Added:
      Option to automatically select next Interaction when clicking Hotspots
      with "Cycling Cursor And Clicking Hotspot" method of selecting
      Interactions
    • Added: Option to reset cursor after click in Choose Interaction Then Hotspot mode
    • Fixed: Hotspot label prefixes not working for Cycling Cursor And Clicking Hotspot method of selecting Interactions
    = Arrow prompts =
    • Added: Auto-create button for Arrow prompt Cutscene fields
    • Fixed: Arrow prompts not being positioned correctly if the aspect ratio is forced
    = Cursors =
    • Fixed: Cursor flickering when using an Inventory item on an unhandled Hotspot in "drag and drop" mode
    • Fixed: Hardware Cursors not supporting animations
    • Fixed: Inventory cursors not always showing when Interactions are selected by cycling cursors
    = Save games =
    • Added: Option for SaveList menu element to limit display to a specific save slot
    • Fixed:
      Errors with loading and displaying save games when the available save
      files are non-sequential (e.g. saves 1 and 3 exist, but not 2)
    = Other =
    • Added: "Object: Transform" Action can now use a custom Animation Curve to control movement speed (supports overshooting)
    • Added: Game logic, settings and Actions that involve scene numbers can now refer by scene name as well
    • Added: Ability to limit player movement to four and eight directions when movement method is set to Direct
    • Added: Support for animated textures with frames arranged on multiple rows
    • Added: Free-aim lock option to "Player: Constrain" Action when using First Person or Ultimate FPS movement
    • Added:
      Ability to define a generic "mouse-over cursor" for Hotspots in Context
      Sensitive mode - Interaction icons will still override it
    • Added: List of static functions and variables to a new section of the manual
    • Added:
      If the user has not supplied a mesh to a NavigationMesh's Mesh
      Collider, it will attempt to use the one in the Mesh Filter
    • Added: Option in Hierarchy window to sort GameObjects alphanumerically
    • Changed: NavMesh Segments are now pink, to separate visually from Markers
    • Removed: Unused private variables from various scripts
    • Fixed: Time to register double-clicks being frame rate-dependant
    • Fixed: Issue when using Object: Transform to rotate an object by a set amount multiple times
  • REALLY GREAT!!!!!!! Thank you!!!!
  • "Game logic, settings and Actions that involve scene numbers can now refer by scene name as well"

    Thank the Gods!


  • Amazinggg. Looking forward to diving back in with all these features and fixes. Thanks Chris!
  • Awesome! Thank you, Chris!
  • wow, just wow
  • stupid question: importing the new assets, it also wants to import Project Settings. I guess it'd mean that it would overwrite my owns (I have a backup anyway). So I can skip them, right? There can't be anything new in there...
  • @David: Yes, you should be able to skip them just fine.  Unity insists on giving you the choice, because of the asset's category, but once you've imported the package once, you generally don't need to again.
  • Thanks, Chris. Also, I don't know if you already knows this but often when you upgrade assets, Unity tells you to hold on because it is recompiling scripts. When this happens, all cutscenes scripts become empty - I'm talking about the actions. Interactions seem fine. Does this happen to me only?
    The first time it happened I panicked for a moment, but it turns out that you just have to replace your scene with the backup and voila. Everything is okay again.

    (thanks for the conversations debug logs btw)
  • Yeeeeh! Awesome update! Tx Chris!  :)>-
  • Awasome work Chris !
  • @David: That shouldn't be happening - anyone else get that?
  • Fantastic, Chris! Just finishing up my first game using your asset. It's been a joy, so far. Looking forward to taking 1.40's new features for a spin (in a clean project, of course) ;-)

    Cheers.
  • edited November 2014
    • Added: Ability to disable free-aiming when moving Draggable and PickUp objects in First Person
    • Added: "Moveable: Check held by Player" Action - use to determine if a Draggable or PickUp object is currently being held
    hmm, after checking a bit these new things I find them to be the only ":(" of this update. Disabling free-aiming could be very useful in certain situations for draggables but I'm not sure how it would be for PickUps, as you wouldn't be able to move around with them anymore in first person.

    I was hoping for a global option "Disable free aim" but referred to rotating\zooming, like you've added for the draggables, mostly. 
    You can't use the "check if held by player" - otherwise you won't be able to walk turning around with the pickup object at all and not just when zooming or rotating. There might be some games where you can walk while rotating the object or zooming it but... 

    Just to be clear, not to take anything away from the massive work you've done. Just hope to see some small improvements for pickups =). Improving in this direction would mean for this engine a chance to make popular games like Ether One, Gone Home, Quantum Conundrum, apart from the classic Point and Click.
  • Good lord, Chris, you are a MACHINE!  I'll update this weekend and report if I have any issues.  Thank you, sir!
  • edited November 2014
    Yay, it's out! For me personally, I'm l really ooking forward to the improved ActionLists and the "Allow speech skipping" fix for the menus. And good to see that the native UFPS 1.4.8 support is in there now :)

    Great job Chris. I'll try this one out next week.
  • Hey... Impressive work!
  • Seems like 1.40 is breaking Dialigue System's AC bridge. Tried in a vanilla project with only those two imported. 

    I'm getting errors in both runtime and when i refresh the action list. I've contacted Tony from Dialogue systme for help.

    if anyone else is using Dialogue system and maybe have a workaround i'd love to hear it.
  • ok, i added a -1 parameter as a playerID in the add/remove calls and it seems to compile. but i'm not sure if it's what it's suppose to do
  • update: seems like there's a patch already for Dialogue system.
  • seems like somethign went wrong after the update. 

    1. 
    I have two scenes that i get some errors when the game changes between them.

    i don't know if these has to do with the dialogue system or a bug in AC or something in my game

    NullReferenceException: Object reference not set to an instance of an object
    AC.RuntimeInventory.MatchInteractionsFromItem (System.Collections.Generic.List`1 items, AC.InvItem _item) (at Assets/AdventureCreator/Scripts/Inventory/RuntimeInventory.cs:829)
    AC.RuntimeInventory.MatchInteractions () (at Assets/AdventureCreator/Scripts/Inventory/RuntimeInventory.cs:796)
    AC.MenuInventoryBox.PopulateList () (at Assets/AdventureCreator/Scripts/Menu/Menu classes/MenuInventoryBox.cs:378)
    AC.MenuInventoryBox.RecalculateSize () (at Assets/AdventureCreator/Scripts/Menu/Menu classes/MenuInventoryBox.cs:332)
    AC.PlayerMenus.ResetInventoryBoxes () (at Assets/AdventureCreator/Scripts/Controls/PlayerMenus.cs:1565)
    AC.RuntimeInventory.RemoveRecipes () (at Assets/AdventureCreator/Scripts/Inventory/RuntimeInventory.cs:741)
    AC.SaveSystem.OnLevelWasLoaded () (at Assets/AdventureCreator/Scripts/Save system/SaveSystem.cs:386)


    and then:
    IndexOutOfRangeException: Array index is out of range.
    AC.RememberHotspot.StringToButtonStates (AC.Hotspot hotspot, System.String stateString) (at Assets/AdventureCreator/Scripts/Save system/RememberHotspot.cs:119)
    AC.RememberHotspot.LoadData (AC.HotspotData data) (at Assets/AdventureCreator/Scripts/Save system/RememberHotspot.cs:79)
    AC.LevelStorage.UnloadHotspotData (System.Collections.Generic.List`1 _hotspots) (at Assets/AdventureCreator/Scripts/Save system/LevelStorage.cs:364)
    AC.LevelStorage.ReturnCurrentLevelData () (at Assets/AdventureCreator/Scripts/Save system/LevelStorage.cs:66)
    AC.SceneSettings.Start () (at Assets/AdventureCreator/Scripts/Game engine/SceneSettings.cs:70)


    the main chatersters

    2. something is off with the way my charater and NPC are being scaled and moving with the sort map.  they are not too small (the character is a little too small, and the NPC is very small.)
    before the update (in 1.38c) i positioned them very nicely, and they were moving. 
    i have follow sortmap component on both the NPC/Player object and on their sprite object. (is this wrong?)

    i am not sure what happened, and are these problems related, or maybe i just did something not correctly in 1.38c and now after the update somethign changed to make it appear badly.

    i'll try and compare the component's values between the two versions.

  • mhhhh, i've updated today, - amazing update! - but i encountered a few problems...

    some of my actions seem to be timed slightly differently? some actions lag about 0.5-1.0 sec.... AC triggers react slower, etc....  did something change which could cause this?

    after updating, some inventory items were linked (actions) incorrectly (but it only seemed to affect items with "spaces" in the name (a guess, i don't have enough inv items yet to be sure)

    and the actioneditor has some display bugs on my workstation (selecting doesn't draw a proper rectangle)... selecting in the actionlistEditor is a painful process in general to be honest... would you consider adding a single click select (with ctl, shift for multiples)? 


  • @David: That's certainly the aim for the Moveables system, but it's a rolling thing: like all systems, they'll improve as updates come out.

    @SoundGuy and @deroesi: I'll be pushing an 'a' release out either tomorrow or early next week - the more detail I can get on bugs, and how to recreate them, the faster I can address them. If you're up for creating separate threads with screenshots, I'd appreciate it a lot.

  • will do after my lunch break.
  • btw. thanks a lot for the sprite complex angle addition... but now ;) you've added this awesome looking lipsync support which only seems to work with the "standard" modes.. Is there a chance you could add something (int variable?) to support lipsync in sprite complex in the future?

  • @derosi: There is: you can output the phoneme frame to a Mecanim variable.
  • great! ;) I must have overlooked it in the manual, sorry for the noise
  • Wow. Thanks for the rad and THOROUGH update, Chris!

    I'm especially excited for this:
    • Added: "Camera: Switch" Action can now use a custom Animation Curve to control movement speed (supports overshooting)
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 Unity's Adventure Creator.