PlayMaker - Visual Scripting for Unity [30% OFF SALE]

Some new suggestion:
- playmaker startup slow. need more quick.
- when graph has many node, editor slow?
- each action can has an [Enable] FsmBool variable for dynamic control action enable/disable.
- (debug) support manual transition and raise event on runtime. (Shift+mouse left click next state node for transition to new state. Event editor can add [Raise Event] button to each event. )
- how to edit deatived action properties on runtime like inspeator?
- state action editor can support foldout like Component.

i'm currently use AnimationClip as data, when Animation Component hasn't this AnimationClip will auto add this clip to Animation.
i'm working for an ACT game, character require many animation for combo tree. use AnimationClip as data i don't need add many predefine AnimationClip to Animation Component, i can dynamic add AnimationClip by currently combo for weapon's combo table. It is easy to test and adjust parameters.(just Drag AnimationClip->Play Button).

@mah, RoyS - I agree. At the same time, I'm sympathetic to struggling startups and there is a lot of work involved in testing and supporting software, so there's some room for negotiation there... as long as both parties benefit...

@TheLlama - "...makes setting up puzzles and trigger based events fast and easy!" Great! Can I quote you on that?

@jiong

Slow startup - I assume you mean when running the game? This is my main concern now, and I'm looking into optimizations...

Editor slowdown - do you have the Play Maker FSM inspector open? If so, try collapsing the inspector foldout. Even though the inspector is showing minimal data I think it might get confused by the recursive nature of the fsm (fsm has list of states, each state has reference to fsm...). I have an email out to Unity... If this isn't the problem, how many states before you see a slowdown? Is runtime performance effected?

Raise event - You can Alt-click on transitions and states to raise events at runtime. I plan a control panel interface down the line - it would have fsm event buttons and variable sliders in one tidy window. Then you could share Playmaker enabled objects without worrying about all the internal details...

Deactivated (finished) actions should still be editable - they are just greyed out visually. I'll double check that now...

1 Slow startup is running game. (When press play game button)
2 state graph edit time have a little lag when have many state node. (like drag StateNode in graph view.) Play Maker FSM inspector closed, and maximum state graph.

these are some new problem:

- can disable playmaker logo display at current version?

- how to use currently version playMaker impl press 1+2+3 button at the time send event [A] and press 1 button send event? i’ve use BoolTest action and enable [Every Frame] in a [Input Checking State] (next state for SendFsmEvent to other GameObject with playMakerFSM and return Input Checking State), look like prompt “may be infinite loop” warning.
I had resolved this problem by the nest state condition in the past.

- you need add more demo when final release. ( like a full playMaker driven demo game? )

- look like OnExit function called by order has some problem? i don’t know is this a bug;
when i have order call 3 Action with Fsm.Event(). FsmAction first call OnExit for all state actions, next call other action’s OnUpdate(After fire Fsm.Event() Action ); last transition to next State.

My goal is to add broadly useful higher level actions like these to speed up development.

For example: GetRelativeSpeed Action - takes 2 game objects and calculates the relative speed. You can now branch state based on that speed.

Or even higher level: IsApproaching Action - takes 2 game objects and sends an event if game object 2 is approaching game object 1.

Higher level actions should help keep things simple, while low level actions let you come up with your own solutions. However, compound math operations are generally a problem in visual scripting languages - it used to bug me no end in virtools to use 10 building blocks to perform a one line math operation (this was many years ago, maybe they came up with a solution). I don't have a great solution yet - I'm playing with a custom Maths Action that lets you build more complex operations without having to use so many low level actions...

The OnExit flow you describe sounds like a bug - I'll look into it...

BTW, thanks for all the great feedback! If you really need a beta without the logo, I can send you a build...

nice tool.
can you send me a copy without logo too?
its little big difficult with the big logo if you have the layout 2 by 3.
btw is there a site with some tutorials wit how to create a.i behavior or gui elements?

Oh!Thank you for such a detailed explanation.
these code open my think.
hmm, i will create more custom action for my scene. currently i have create some higher level action for my ACT solution. but state template with predefine actions also a good idea. I can create
a template of specify genre(like ACT AttackMove state template) provide to designer.

- logo gui rendering is slowdown runtime performance. see unity profiler. (UnityGUI is very slow.) you can add playMaker logo to Component Inspeator or state graph. it’s part of Editor feature. XD
If it is convenient, my email is <jiong@studio-symphonie.org>. can you send build to this?

- it’s idea : D, PlayAnimation, Animation Setting etc can use FsmAnimationClip like FsmGameObject as parameter, it can change between AnimationClip and animation name as data.

- OnExit problem look like it's my logic error, no problem.

- startup and shutdown game beyond 10s when more than 10 state in a fsm. i had try create a null gameobject and add playMakerFSM component , next add 20 state without any action, startup is slow, and state graph editor also slowdown. i think it’s a big bug. = =+ Is it editor logic cause this problem?
FSM data is so big, i’ve drag character gameobject with fsm to prefab, its size is 8.8m!
a gameobject just attach on fsm with 15 null state, its size is 8.3m!
when i delete all state in fsm, re drag fsm to prefab. its size still is 8.3m.
i create a new null prefab and drag to it, its size down to 4k.
create a new null object and drag 8.3m prefab, then its size still 8.3m (i think it’s unity bug).

this is infomation show startup. look like have some memory leak?
"Cleaning up leaked objects in scene since no game object, component or manager is referencing them
Texture2D has been leaked 48 times.”

look like beta2 fixed Startup times bug.
-------- new note---
- how to support send event with custom datatype? eg: i want send a hitinfo data to damageable target. damageable target has a GetHit state handle this hitinfo. （store data in Damager component and call SendMessage function of Damager?）

Highlights:
- Much improved editor performance and startup times with large graphs.
- Now runs in web player properly.
- More GUI actions.
- More Physics actions.
- Copy/Paste and Template bugs fixed.
- Other bug fixes...

Note, there is one situation where startup times are still bad. See release notes. Will be fixed in next beta (soon).

One word of caution to beta testers. A new beta might break saved projects. For example, actions that have changed since they were added to a state will be reset to default parameter values when the fsm is next loaded. I'll try to keep the data when possible, and warn when not - but be aware that you might need to fix up your test projects with a new beta.

@vegeta - I'm working on tutorials and more sample scenes. Want to get the feature set finalized and bug free before making larger samples - I've thrown away many, many test scenes during development!

I'll change the logo to be proportional to screen size so it takes up less room on smaller screens. The logo is really the only restriction in the beta - without it I'd basically be giving Playmaker away for free!

@Jiong -

Let me know how Templates work for you. I plan to have some general purpose templates in the final release, but I think the feature will probably prove most valuable for project specific setups...

I like the idea of an FsmAnimationClip that lets you pick the name or clip. I'll think about that.

As far as I can tell the Texture2D leaks aren't real. I have an open UnityAnswers question here

I'm playing with an idea for storing and sending Collision info in FSMs, since it's such a fundamental building block. E.g., Adding standard collision events (as system events) and storing collision info that can be queried by actions... and sent between FSMs. For now though, have you looked at the CollisionEvent and TriggerEvent actions? You could use those to trigger a SendMessage action...

@tatoforever - I've definitely found visual state editors to be the sweet spot for artists and designers. I've seen animators work wonders in Havok Behavior, and artists that could mockup really cool interactive content using our in-house visual state machine editor, and there's Kismet obviously. If the visual scripting is too low level you kind of have to know how to program anyway... although I have met a lot of people who learned how to program with virtools. As usual there are shades of grey...

Look like i can't show saved template asset in templates window. did i do a wrong operation? (i had save select state to asset folder, but templates window still gray.) currently i've just copy/paste states.

I had use TriggerEvent already, but SendMessage Action can't attach custom data. i had to store custom data in Damager Component, i want send a message or event with many custom data to target fsm. Target get this TakeDamage event change to GetHit State; In current case, i send a HitInfo with many data to target, HitInfo has many data tell target how response by this DamageHit. eg: Knockd Back, Launch, Down etc.

@Jiong - Save the template in Playmaker/Templates. That should be the default location of the save file dialog... Then select a template in the Template Browser to paste into the FSM. I'll probably rework this so you can access saved templates directly from the right click menu.

@tatoforever - You can do it now. Use a string instead of the ActionCategory enum. I've started the API reference docs. Here's the page on Action Attributes.

I'm an artist with some programming and scripting (MaxScript/Unity) experience. I cannot even begin to understand how this works though! I look forward to seeing some video training on this product because I want to learn PlayMaker!

Looking forward to it.
Beta 2 notes: I cant seem to find the "Level Menu" example scene in the "TestLab" folder (Beta 2). Is it included in the release or is it just included in the documentation for now?

- ToolTipAttribute look like can’t accurately work for action properties?
i had create action with many comment for FsmVariable, but when move mouse to action properties in state window, comment can’t accurately display. (look like just display last tooltip)
the code like this:

Code (csharp):

// Get Damage Info from DamgeRecevier Component.

[ActionCategory("Genre/ACT")]

[Tooltip("Activated when a certain amount of damage is taken. Allow the designer to define how much and whilch type of damage shound be required.(or ignored).")]

publicclass TakeDamageEvent : FsmStateAction

{

[Tooltip("The actor that was damaged")]

[RequiredField]

[CheckForComponent(typeof(Damageable))]

public FsmOwnerDefault Originator;

[Tooltip("The actor that did the damaging")]

public FsmGameObject storeInstigator;

public FsmBool m_Enabled;

[Tooltip("Damage must exceed this value to be counted")]

public FsmFloat MinDamage;

[Tooltip("Total amount of damage to take before activating the event")]

public FsmFloat DamageThreshold;

[Tooltip("Should the damage counter reset if this event is toggled")]

public FsmBool m_ResetDamageOnToggle;

[Tooltip("Store all damage taken gone beyond Damge Threshold")]

[UIHint(UIHint.Variable)]

public FsmFloat m_DamageTaken;

}

- when create long name FsmVariable, i can’t see full property name in action panel.

- state tab bug:
runtime change select fsm gameobject->exit play to editor time, then can’t find other fsm in fsm list or state graph viewer.

TooltipAttribute - Came across this problem myself, but haven't had a chance to look into it. I remember it happening when you use tooltips on every parameter. I use tooltips on single parameters here and there and it works okay. This *might* be a unity bug, since I'm just using the tooltip in GUIContent... but I'll take another look.

Long variable names - I plan to implement a splitter control for the Inspector panel at some point so you could make the panel wider. Another solution would be an automatic tooltip with the full name when it is too long - but that runs into the problem with Tooltips above.

bug note:
- when name of gameobject is no english language(like chinese), click [select fsm], then unity crash.
- SendMessage Action Parameter look like can’t ref to FsmVariable. (when play game, Parameter auto reset to None.)
- can Select FSM just show FSMs in Scene? currently it’s also show FSM in prefabs.

- I'll look into non english language support. I use Windows 7 and it doesn't crash, but it also doesn't display properly...
- With SendMessage, were you using FsmString? That should be fixed in Beta 4.
- Prefab/scene object filters would be good. I'm also considering these changes to FSM selection: here.

- some time state action lost. and report memory leak.
when i add new param to my state action script, and Compiled.
playmaker report this:
Action script has changed since Fsm was saved: Parameters reset to default values....
NullReferenceException: Object reference not set to an instance of an object

Hello!
This tool looks very promising! I have two questions:
1. How do you test variables? Like: if (Collision.gameobjectname=='enemy') then...
2. It seems that there's no access to touch inputs. Is there?