0
Fixed in Beta

Flow Machine Source Interaction Not Behaving Correctly

Noble Valerian 5 months ago • updated by Lazlo Bonin (Lead Developer) 5 months ago 8

I've copied this from a reply on this topic:  https://support.ludiq.io/communities/5/topics/612-graphs-getting-deletedcorrupted

I'm using Windows 7 Pro (SP1), Unity 2018.3.0f2 Personal, Bolt 1.4.0f11_NET3, Intel Core i7, NVIDIA Graphics, 32GB Ram

I'm doing a tutorial and building a flow graph macro source on an an empty object that is the parent of a sphere.  The tutorial showed the user dragging the child sphere directly into the graph, but that was not able to be done.  However, converting the source to embed allowed me to do it.  I can go back and forth between Macro and Embed and the graph is unchanged.  After switching back to Macro, and overwriting the Macro in the save dialog that pops up, I can successfully play the scene that references the scene object even though it should have been deleted.  I save a working scene and project, close Unity, open Unity, open my project, and ALL my graphs are empty, but still showing in the Assets folder.  Even ones I didn't convert.  I get an error that says, "failed to deserialize scriptable object."  I can reproduce this over and over.

Here's where things get tricky.   I've read the manual and the person doing the tutorial should not have been able to drag the sphere into a flow macro based on the manual.  Doing an Embed is the proper way, but as I'm reading the manual and playing with this convert feature, things aren't working quite as expected.

The manual states about converting from Macro to Embed:

"To do so, simply click on the Convert button. A dialog will warn your that this conversion will permanently overwrite your current embed graph, so make sure you're OK with this before moving on."

This doesn't happen when I click Convert, the drop down just instantly changes to say Embed.  If I click on the drop down that says Macro, and choose Embed from the list that shows up, there's no confirmation dialog there, either.  However, my original flow graph instantly disappears and is replaced with a start and update event.

The manual states about converting from Embed to Macro:

"To do so, simply click on the Convert button and choose a path and file name for the new macro. Bolt will copy all the items in your embed graph to the macro (except scene references, which are not supported in macros). The machine will then automatically switch to macro mode and reference your new graph.

A dialog will warn your that this switch will permanently delete your current embed graph, so make sure you're OK with this before moving on."

I can choose a path and file name in the dialog that pops up and that new Macro will be created and show up in my project folder, but again, there is no dialog warning me that the switch will permanently delete my current graph.  It just happens.  However, if I click the Embed drop down and choose Macro I will get a dialog warning me that if I switch to Macro it will delete the current embed graph, and I can choose to Switch or Cancel.  If I choose Switch, Boom!  The graph is gone, but I never see a dialog asking for a path and file name.

This is the feature that is not behaving correctly:



While I appreciate help, I'm primarily reporting a bug about Bolt not functioning as intended/expected.  Suggestions and tips about how to setup the scene, assets, or graph are a waste of everyone's time.  Suggestions to resolve the bug with Bolt's functionality are welcome.  Thank you for your time and understanding.

Bolt Version:
1.4.0f11_NET3
Unity Version:
2018.3.0f2 Personal
.NET Version:
4.x Equivalent? Backend > Mono? Api Compatibility > .NET Standard 2.0?
GOOD, I'M SATISFIED

I received a quick reply from Ludiq, which gives me confidence that issues will be addressed quickly while I'm neck deep in development.  That's encouraging and appreciated.

Satisfaction mark by Noble Valerian 5 months ago
Under Review

Hi Noble Valerian,

Sorry you're experiencing this issue. 

To be clear, can you confirm that the reproduction steps are:

  1. Create a new flow machine
  2. Convert it to Embed source
  3. Drag a scene object inside and use any of its related unit options
  4. Convert it to Macro source
  5. The error appears?

Also, can you paste the full stack trace of the "failed to deserialize" error? I can't know where it's coming from with just the message.

My steps to duplicate the Convert error on the Flow Machine:
Create a new 3D project in Unity > Import and Install Bolt
Add a Sphere to my scene > Add a Flow Machine to my Sphere
Create a Flow Macro in the Project panel > Drag the Macro into the Macro box in the Flow Machine
Add a couple units to the graph

Click Convert
No dialog appears warning that you will "permanently overwrite your current embed graph" (which might actually be a typo, since I don't yet have an embed graph)

Click Convert
A "Save Macro" dialog appears asking you to choose a file name and location to save to.
The change is made, but no dialog appears warning "this switch will permanently delete your current embed graph"

Read this page of the Manual and see that the Convert button does not do what the Manual says it will do:
https://ludiq.io/bolt/manual/concepts/graphs-machines-macros

My steps to duplicate the "failed to deserialize" error:
Follow this tutorial (using CharacterThirdPerson from SampleScenes > Scenes in Unity's Standard Assets):



Then this one, up to the 3:55 mark:



At this point, I watch the user drag the Sphere into the Flow Graph, but I'm unable to do it myself.  After reading through the comments and manual, it's clear the user shouldn't have been able to do it, since his graph was Macro instead of Embed, which the manual says, "cannot refer to game objects from the current scene, because it does not "belong" to any scene."

I click the "Convert" button in the Flow Machine component, there's no confirmation or notification, my graph just now says it's "Embed" and nothing else has changed.

I am now able to drag the Sphere into the graph and add the GameObject SetActive unit.  The project works as expected, and having not yet read the manual, I'm curious why it matters.

I click "Convert" again and a Save Macro dialog pops up.  I click on the existing Macro, choose Save, and confirm I want to replace the Macro asset that already exists.  Again, my graph does not change and I get no other notification/warning/confirmation about the process.  The Flow Machine now says Macro, but the Sphere object is still in the graph, and the game still works properly when it's run.

Now I'm confused, but at this point I still haven't learned the Flow Machine is not behaving correctly.  I'm wondering why I had to change the graph to Embed if the game still works and the Sphere is allowed in the Macro graph.  I save and close Unity, then open my project again.  I get the "Failed to deserialize scriptable object." error in the bottom left of my Unity window.  I click on it and the console pops up showing a yellow triangle and red octagon with this information:

Failed to log deserialization failure data:
System.InvalidOperationException: EnsureRunningOnMainThread can only be called from the main thread
at UnityEngine.Object.EnsureRunningOnMainThread () [0x00010] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:153
at UnityEngine.Object.GetInstanceID () [0x00002] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:73
at UnityEngine.Object.IsNativeObjectAlive (UnityEngine.Object o) [0x0003b] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:182
at UnityEngine.Object.CompareBaseObjects (UnityEngine.Object lhs, UnityEngine.Object rhs) [0x00025] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:140
at UnityEngine.Object.op_Equality (UnityEngine.Object x, UnityEngine.Object y) [0x00003] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:403
at Ludiq.UnityObjectUtility.IsUnityNull (System.Object obj) [0x00000] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Utilities\UnityObjectUtility.cs:18
at Ludiq.SerializationData.ToString (System.String title) [0x00054] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Serialization\SerializationData.cs:77
at Ludiq.Serialization.DeserializeInto (Ludiq.SerializationData data, System.Object& instance, System.Boolean forceReflected) [0x0004b] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Serialization\Serialization.cs:120
UnityEngine.Debug:LogWarning(Object, Object)
Ludiq.Serialization:DeserializeInto(SerializationData, Object&, Boolean) (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Runtime/Serialization/Serialization.cs:124)
Ludiq.LudiqScriptableObject:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize() (at C:/Users/lazlo/Projects/Bolt1/Package/Ludiq.Core/Runtime/Unity/LudiqScriptableObject.cs:48)

Failed to deserialize scriptable object.
System.Runtime.Serialization.SerializationException: Deserialization into 'Bolt.FlowMacro' failed. ---> System.InvalidOperationException: EnsureRunningOnMainThread can only be called from the main thread
at UnityEngine.Object.EnsureRunningOnMainThread () [0x00010] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:153
at UnityEngine.Object.GetInstanceID () [0x00002] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:73
at UnityEngine.Object.IsNativeObjectAlive (UnityEngine.Object o) [0x0003b] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:182
at UnityEngine.Object.CompareBaseObjects (UnityEngine.Object lhs, UnityEngine.Object rhs) [0x00025] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:140
at UnityEngine.Object.op_Equality (UnityEngine.Object x, UnityEngine.Object y) [0x00003] in C:\buildslave\unity\build\Runtime\Export\UnityEngineObject.bindings.cs:403
at Ludiq.UnityObjectUtility.IsUnityNull (System.Object obj) [0x00000] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Utilities\UnityObjectUtility.cs:18
at Ludiq.UnityObjectConverter.TryDeserialize (Ludiq.FullSerializer.fsData storage, System.Object& instance, System.Type storageType) [0x0003c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Serialization\Converters\UnityObjectConverter.cs:57
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_5_Converter (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x0001a] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:861
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_4_Cycles (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x00032] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:851
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_3_Inheritance (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00157] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:826
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_2_Version (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x0011c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:730
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_1_CycleReference (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00049] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:675
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Type overrideConverterType, System.Object& result) [0x0003d] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:628
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result) [0x00000] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:599
at Ludiq.FullSerializer.fsDictionaryConverter.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Object& instance_, System.Type storageType) [0x00197] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\Converters\fsDictionaryConverter.cs:83
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_5_Converter (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x0001a] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:861
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_4_Cycles (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x00032] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:851
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_3_Inheritance (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00157] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:826
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_2_Version (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x0011c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:730
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_1_CycleReference (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00049] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:675
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Type overrideConverterType, System.Object& result) [0x0003d] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:628
at Ludiq.FullSerializer.fsReflectedConverter.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Object& instance, System.Type storageType) [0x00082] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\Converters\fsReflectedConverter.cs:97
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_5_Converter (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x0001a] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:861
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_4_Cycles (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x00032] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:851
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_3_Inheritance (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00157] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:826
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_2_Version (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x0011c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:730
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_1_CycleReference (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00049] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:675
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Type overrideConverterType, System.Object& result) [0x0003d] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:628
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result) [0x00000] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:599
at Ludiq.FullSerializer.fsIEnumerableConverter.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Object& instance_, System.Type storageType) [0x0005b] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\Converters\fsIEnumerableConverter.cs:100
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_5_Converter (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x0001a] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:861
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_4_Cycles (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x00032] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:851
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_3_Inheritance (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00157] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:826
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_2_Version (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x0011c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:730
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_1_CycleReference (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00049] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:675
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Type overrideConverterType, System.Object& result) [0x0003d] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:628
at Ludiq.FullSerializer.fsReflectedConverter.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Object& instance, System.Type storageType) [0x00082] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\Converters\fsReflectedConverter.cs:97
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_5_Converter (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x0001a] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:861
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_4_Cycles (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x00032] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:851
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_3_Inheritance (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00157] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:826
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_2_Version (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x0011c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:730
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_1_CycleReference (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00049] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:675
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Type overrideConverterType, System.Object& result) [0x0003d] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:628
at Ludiq.FullSerializer.fsReflectedConverter.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Object& instance, System.Type storageType) [0x00082] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\Converters\fsReflectedConverter.cs:97
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_5_Converter (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x0001a] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:861
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_4_Cycles (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type resultType, System.Object& result) [0x00032] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:851
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_3_Inheritance (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00157] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:826
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_2_Version (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x0011c] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:730
at Ludiq.FullSerializer.fsSerializer.InternalDeserialize_1_CycleReference (System.Type overrideConverterType, Ludiq.FullSerializer.fsData data, System.Type storageType, System.Object& result, System.Collections.Generic.List`1[Ludiq.FullSerializer.fsObjectProcessor]& processors) [0x00049] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:675
at Ludiq.FullSerializer.fsSerializer.TryDeserialize (Ludiq.FullSerializer.fsData data, System.Type storageType, System.Type overrideConverterType, System.Object& result) [0x0003d] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Dependencies\FullSerializer\fsSerializer.cs:628
at Ludiq.Serialization.DeserializeJson (Ludiq.FullSerializer.fsSerializer serializer, System.String json, System.Object& instance, System.Boolean forceReflected) [0x00015] in C:\Users\lazlo\Projects\Bolt1\Package\Ludiq.Core\Runtime\Serialization\Serialization.cs:171
at Ludiq.Serialization.Deserialize

It's also worth mentioning that I had done the previous "Spinning Cube" tutorial and even though I made no changes to that graph in the process, it had also been completely erased.  The graph itself was empty I mean, the Macro was still in the Project panel, there were just no units in the graph.

Only Bolt 1.4.1, which is still in beta, is compatible with Unity 2018.3. 

Lazlo fixed 2018.3 issues before leaving for holidays, but it was only fixed for 1.4.1 beta, judging by dates in Download page :)

Per the Bolt page in the Unity Asset Store, the current version is 1.4.0f11, and supported Unity versions are "2017.4.13 or higher".  I'd really appreciate only relevant feedback to my issue.  No source to support your compatibility claim and a boring anecdote about the holidays are not constructive.

There is more proof on Discord if you want :) Just search it. My statement is based on my personal experience too. I went back to 2018.2 after discovering this problem. 

Peace ;)

+2
Fixed in Beta

Hi Noble Valerian,

I'm sorry, I understand now these are separate issues, I thought they were somehow related. 

Regarding the dialogs, it was indeed outdated information in the manual from a much older Bolt version. It has been corrected. The reason we used to have these dialogs is because Bolt used to keep your embed graphs in the background even if you used a macro as a source. So converting from macro to embed would override that "background" embed graph. This had a significant performance overhead for no real benefit, so it was removed. You will still get a warning, like you should, if you simply change the source from Embed to Macro from the dropdown (not via the Convert button), as then the current embed graph would be deleted.

Regarding the serialization error, it was fixed in the latest beta, v.1.4.1b3. It seems related with a change Unity made in later betas of 2018, hence why it wasn't caught before in the v.1.4.0 cycle and there is no mention of it on the asset store yet. My main priority this week is getting 1.4.1 out of beta, but that requires some additional fixes to issues that were reported during my holiday break. Please understand that we're working as fast as we can to keep up with latest Unity versions, but we can only discover issues from internal changes as they arise along the way!

Thanks for the quick reply.  I don't have enough software development or coding experience to know what's related and what's not.  It felt like two separate issues to me, but one problem definitely led to the other for me.  I generally stick with the stable release to try and avoid problems, so that's striking me as ironic at the moment.

Just to clarify, is changing from Macro to Embed or vice versa suppose to work the same with the drop down as with the convert button?  Is there a reason there are two separate ways to do it, with two separate results?  Is that also something that's fixed with the Beta?

+2

No problem at all! 

Yes, there is a difference. Switching via the dropdown will not attempt to convert the existing graph to the other source type. For example, switching from Macro to Embed via the dropdown will not copy the previous macro graph to an embed; you'll just get a new default embed graph. 

We're aware this can be a little confusing, but we're not "fixing" this in the 1.4 cycle as it is not a bug per se, it is by design. In Bolt 2, which is currently under development, we will obsolete the option to have root embed graphs altogether in favor of better and different systems like classes.