iCanScript - Visual Script Modeling Engine for Unity

Disruptive software is pleased to announce the community and professional editions of iCanScript. iCanScript is a powerful modelling engine allowing both novices and experts to create visual scripts for the Unity Game Engine.

iCanScript integrates both multi-level functional diagrams and state charts into a single visual script. You can mix-and-match both concepts to realize your scripts in a natural way, in the same visual graph.

In addition, iCanScript supports nesting and grouping of sections of your visual script in what are referred to as packages. Packages can be folded and unfolded to work at the level of details desired at any point in time.

iCanScript provides a visual scripting environment that has a one-to-one mapping with all Unity Engine API’s. Full games can be created without a single line of code. At the same time iCanScript is designed to co-exist with code and other tools, allowing for a mix of technologies when best suited.

These capabilities put iCanScript in a class of its own, allowing for true next generation Visual Scripting!


iCanScript Functional Diagram for controlling space ship movements.


iCanScript State Chart for controlling game states.

The community edition is fully featured and targets smaller projects. The professional edition is not limited by project size. You are invited to try iCanScript and provide feedback that will help its continued evolution, making this product even better!

Our recreation of the “Unity Space Shooter Tutorial”, entirely scripted using iCanScript, is an excellent way to learn the basics. Install the community or professional edition of iCanScript and follow along with the tutorials: iCanScript YouTube Channel

Homepage: http://www.icanscript.com

Community Forum: http://www.icanscript.com/helpdesk/community/index.html

Don’t forget to provide feedback!

Love to use it. Rightly priced, with maximum capacity to be used in programming games visually. No visula script give me this much flexibility before. Great going. I have heard that next feature coming to iCS like arrays and loop will make this tool more and more useful. So lets begin the game design completely visually.

This is best tool compare to any visual scripting asset available on asset store, I really love to use it,as it is very user friendly for non coder. Best devloper support on devloper forum

How is the performance on mobile, versus regular c# scripts?
I mean it seems to me that ICS simply visualizes scripting but in essence still creates scripts.
Even though i can program just fine, i’d like i visual solution if it did not lead to performance impacts.
I’ll check the tutorials, but let me know.

Cheers.

maybe this half-answers my question but not entirely:
http://helpdesk.icanscript.com/support/discussions/topics/1000028450
You should include this information somewhere, ppl would be very happy to know that ICS is not a 3 step process.

Hi Klori,

iCS does not generate a script that is compiled using a standard compiler. Instead, it compiles at runtime into .NET code and glue logic to determine the execution flow and resolve the deadlock condition that could occur with circular dependencies. The glue logic does cost some CPU cycle and you will not get the same performance has tightly hand coded scripts.

iCS is primarily a data flow model in comparaison with the other Visual Scripting tools that are control flow based. What you do gain with this technology is the automatic allocation of CPU resources and automatic parallel execution of nodes that are not co-dependent. On the long run, the improved parallel execution could eventually win in performance on multi-core CPUs (this is not true of the current version but can be realized without the need to change your script) over hand coding the control flow (hand written or VS using control flow). iCS autonomously identifies the parallel execution paths and takes advantages of those when executing the nodes.

1 Like

I guess this isn’t ideal for heavy games on mobile then.
I hope you implement your performance improving ideas.

It sounds like a really interesting possibility.

Thanks again.

I’ve been trying out a few visual scripting options (namely Playmaker and Antares Universe), and find your product very intriguing. Playmaker is very easy to use but gets bogged down with complicated actions while Antares Universe is very powerful but more low-level with a somewhat janky interface.

ICanScript looks like it has a very nice interface and sounds as powerful as Antares Universe. One thing I really like about Antares Universe is the ability to modify graphs during execution; is that something possible with ICanScript? Also, do you have any pre-built high-level nodes like Playmaker?

Hi Alphalpha,

currently you can modify the port values while the engine is running but changes to the connections or addition/removal of nodes is not accepted (it currently breaks the execution and therefore is not accepted). We do want to be able to allow for full graph change while the engine is running. But that feature is of lower priority then container support and full Unity 5 compliance at this time.

We do have some high-level nodes but not has much as Playmaker. However, our philosophy is that you or any user can easily create your own nodes. Any standard C# code can be added to the iCS library. We are not using a predefined format or require the C# code to be mangled any way to be included in the library. This ability to bring in any C# code is how we can support all of the functionality of the Unity engine. We don’t believe in a closed environment, especially for developers.

I was attempting to create a simple script to, upon a left mouse click, reposition a sphere on the surface of a plane to the point clicked, ignoring any obstructions between view and plane, which I attempted to achieve using raycasts and layermasks.

As you can see, I dragged the String[ ] layerNames to the edge of the container so I can edit it in the inspector. Unfortunately, whenever I hit Play, the array gets reset to null. I’m also getting these error messages:

iCanScript: Internal Error: Unbalanced user transaction.
UnityEngine.Debug:Internal_Log(Int32, String, Object)
UnityEngine.Debug:LogWarning(Object)

iCS_IStorage:CloseUserTransaction(String, TransactionType)
iCS_UserCommands:CloseTransaction(iCS_IStorage, String, TransactionType)
iCS_UserCommands:ChangePortValue(iCS_EditorObject, Object)
iCS_GuiUtilities:OnInspectorDataPortGUI(iCS_EditorObject, iCS_IStorage, Int32, Dictionary2) <InspectDataProcessingNode>c__AnonStorey1B:<>m__52(iCS_EditorObject) Prelude:forEach(Action1, List`1)
iCS_Inspector:InspectDataProcessingNode(iCS_EditorObject)
iCS_Inspector:InspectNode(iCS_EditorObject)
iCS_Inspector:OnInspectorGUI()
UnityEditor.InspectorWindow:smile:rawEditor(Editor, Int32, Boolean, Boolean&, Rect&, Boolean) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:1093)
UnityEditor.InspectorWindow:smile:rawEditors(Editor[ ]) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:907)
UnityEditor.InspectorWindow:OnGUI() (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:332)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[ ], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[ ], CultureInfo) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
System.Reflection.MethodBase:Invoke(Object, Object[ ]) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView:Invoke(String, Object) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\GUI\DockArea.cs:244)
UnityEditor.HostView:Invoke(String) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\GUI\DockArea.cs:237)
UnityEditor.DockArea:OnGUI() (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\GUI\DockArea.cs:674)

(Filename: C:/BuildAgent/work/d63dfc6385190b60/Editor/Mono/Inspector/InspectorWindow.cs Line: 1093)

ArgumentException: Getting control 13’s position in a group with only 13 controls when doing Repaint

Aborting at UnityEngine.GUILayoutGroup.GetNext () [0x00038] in C:\BuildAgent\work\d63dfc6385190b60\artifacts\EditorGenerated\GUILayoutUtility.cs:513

at UnityEngine.GUILayoutUtility.DoGetRect (Single minWidth, Single maxWidth, Single minHeight, Single maxHeight, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[ ] options) [0x00047] in C:\BuildAgent\work\d63dfc6385190b60\artifacts\EditorGenerated\GUILayoutUtility.cs:306

at UnityEngine.GUILayoutUtility.GetRect (Single minWidth, Single maxWidth, Single minHeight, Single maxHeight, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[ ] options) [0x00000] in C:\BuildAgent\work\d63dfc6385190b60\artifacts\EditorGenerated\GUILayoutUtility.cs:297

at UnityEditor.EditorGUILayout.GetControlRect (Boolean hasLabel, Single height, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[ ] options) [0x00000] in C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\EditorGUI.cs:6084

at UnityEditor.EditorGUILayout.TextField (System.String label, System.String text, UnityEngine.GUILayoutOption[ ] options) [0x00000] in C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\EditorGUI.cs:4863

at iCS_GuiUtilities.m__4C (System.String n, System.String v) [0x00000] in :0

at iCS_GuiUtilities.ModalEdit[String] (System.String niceName, System.String name, System.String& currentValue, System.String parentName, System.Func3 editor, System.Collections.Generic.Dictionary2 db, Boolean noDelay) [0x00000] in :0

at iCS_GuiUtilities.ShowInInspector (System.String name, Boolean isReadOnly, Boolean hasSource, System.String compositeParent, System.Type baseType, System.Object currentValue, Int32 indentLevel, System.Collections.Generic.Dictionary`2 foldoutDB, System.Boolean& isDirty, .iCS_IStorage iStorage) [0x00000] in :0

at iCS_GuiUtilities.ShowInInspector (System.String name, Boolean isReadOnly, Boolean hasSource, System.String compositeParent, System.Type baseType, System.Object currentValue, Int32 indentLevel, System.Collections.Generic.Dictionary`2 foldoutDB, System.Boolean& isDirty, .iCS_IStorage iStorage) [0x00000] in :0

at iCS_GuiUtilities.OnInspectorDataPortGUI (.iCS_EditorObject port, .iCS_IStorage iStorage, Int32 indentLevel, System.Collections.Generic.Dictionary`2 foldoutDB) [0x00000] in :0

at iCS_Inspector+c__AnonStorey1B.<>m__52 (.iCS_EditorObject port) [0x00000] in :0

at Prelude.forEach[iCS_EditorObject] (System.Action1 action, System.Collections.Generic.List1 lst) [0x00000] in :0

at iCS_Inspector.InspectDataProcessingNode (.iCS_EditorObject node) [0x00000] in :0

at iCS_Inspector.InspectNode (.iCS_EditorObject node) [0x00000] in :0

at iCS_Inspector.OnInspectorGUI () [0x00000] in :0

at UnityEditor.InspectorWindow.DrawEditor (UnityEditor.Editor editor, Int32 editorIndex, Boolean forceDirty, System.Boolean& showImportedObjectBarNext, UnityEngine.Rect& importedObjectBarRect, Boolean eyeDropperDirty) [0x00355] in C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:1093
UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
UnityEditor.InspectorWindow:smile:rawEditor(Editor, Int32, Boolean, Boolean&, Rect&, Boolean) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:1103)
UnityEditor.InspectorWindow:smile:rawEditors(Editor[ ]) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:907)
UnityEditor.InspectorWindow:OnGUI() (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\Inspector\InspectorWindow.cs:332)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[ ], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[ ], CultureInfo) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
System.Reflection.MethodBase:Invoke(Object, Object[ ]) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView:Invoke(String, Object) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\GUI\DockArea.cs:244)
UnityEditor.HostView:Invoke(String) (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\GUI\DockArea.cs:237)
UnityEditor.DockArea:OnGUI() (at C:\BuildAgent\work\d63dfc6385190b60\Editor\Mono\GUI\DockArea.cs:674)

(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/EditorGenerated/GUILayoutUtility.cs Line: 513)

Is it still being developed. Or lost in wind just like many assets on assets store.
I see no update for last 15-20 days on this.

Hi Rahuxx,

iCS is a large visual script editor with many features. It includes features for functional visual graphs, object-oriented visual graph, and state charts (overblown state machine). Most users are having difficulty bringing all of these features when starting to use iCS. We have decided to cut this single product into multiple smaller products such as a state chart only, a functional only visual script editor making it simpler for new users to use. iCS will continue to be available for those that can comprehend to overall feature set. User of the subset product will be able to upgrade to the full iCS feature set.

For now, we are dividing iCS and it will be evolved with and when the subordinate product become available.

Can you explain more about this

1 Like

why there is no update on your forum for last 20 days?
Are you people still making iCS? Adding compatibility to Unity5?

iCanScript is a large product that has been in development for 4.5 years now. Its has been an exciting product to build and one that attempts to integrate existing and breaking new concepts into a single product.

Since we started, the game development landscape has changed significantly. Notably, the well known and used Unreal game development engine is now available for free. It includes a solid and easy to use visual script environment named “Blueprint” that is directly financed by the core product.

After a financial analysis of the situation, I have concluded that the cost of the continuous evolution of iCanScript cannot be offset from the sell on the Unity asset store. The development and support of iCanScript is therefore left to the goodwill of the existing team members.

I want to thank those individuals that have followed along for this exiting journey and wish each of them success in their own endeavours.

Michel Launier
Founder of iCanScript

This is not so good. This is the best tool for visual scripting. Unity is loosing competition to Unreal with this. This is the tool that can beat unreal blueprint.
<UNITY PEOPLE THINK ON THIS>

It is important that those of you that have purchased iCanScript register on the web site and open a ticket with your Unity invoice number. This allows us to identify and support our Pro customers.

so…does this mean iCanScript is dead fish in the water?
i see the asset is not being sold on unity assetstore nor in the official website.

so dead project?

btw, the current 1.2.8 and 1.27 (only 2 versions i tested)
are a hog, it makes my unity editor run sluggish as hell. when you click on play it takes like 7 to 10 seconds for
playmode to kick in.

and that is without even using the visual scripting tool, just recent import of the asset.

and when i try to use it in my scene it throws any errors and crashes my editor.

tried both `1.2.7 and 1.2.8 both useless to unity 5

using unity 5.0.0f4 64bit

was this the reason the product is dead?

was there any versions that worked before? or in unity 4?

if you guys wont be supporting it or developing why not make it open source so the community take over?

this product came out of nowhere and vanished the same way.
whats going on?
seemed like a nice asset in the video tuts

Hi Muber,

I’m sorry that you are having these performance issues with iCS. The libraries in Unity 5 (using C++ backend) are not fully compliant with the .NET standard and the reflection technology. iCS is using the reflection technology to get to and run the visual script.

The sluggish nature comes from the mismatch with the reflection technology. iCS was removed from the asset store to avoid to many people use the product in that state.

I am currently working on iCanScript2, this version will generate C# code from the visual script and therefore will be isolated from the issues described above. The UX is also changed to be closer to Blueprint (Unreal).

If you want to work with iCS version, you will need to go back to Unity 4.6 until we finish the first release of iCS2. Then it will be available again on the Asset store.

Once more, I am sorry for the troubles.

Regards,
Michel Launier

awesome, looking forward for v2

btw i sent you a pm .

good day