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:
Comments
= 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: The "Inventory: Check" and "Inventory: Add
- 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 =or remove" Actions can be used on prefabs other than the current Player,
if multiple Players are involved
- 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:
- Added:
- 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 =Static function "PlayerMenus.RecalculateAll ()" - call after changing
screen resolution to correct the size and position of all Menus
Static function "PlayerMenus.SimulateClick" - call to simulate the
effects of clicking on any slot of any Element of any Menu
- Added: "Hotspot: Enable or Disable" Action - easier than using "Object: Send message"!
- Added:
- Added:
- 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 =Ability to set a Hotspot's "Interaction source" as a custom script -
use to trigger a script function when an Interaction is run
Option to show all nearby Hotspots at once when using Player Vicinity
method of Hotspots detection in Direct Control or First Person games
- Added:
- 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 =Option to automatically select next Interaction when clicking Hotspots
with "Cycling Cursor And Clicking Hotspot" method of selecting
Interactions
- 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:
= Other =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)
Ability to define a generic "mouse-over cursor" for Hotspots in Context
Sensitive mode - Interaction icons will still override it
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
Great job Chris. I'll try this one out next week.