Search Unity

DOTS Visual Scripting Experimental Drop 9

Discussion in 'Entity Component System' started by ans_unity, May 14, 2020.

  1. ans_unity

    ans_unity

    Unity Technologies

    Joined:
    Oct 12, 2017
    Posts:
    124
    Drop 9 of Visual Scripting for DOTS is ready for you to try!

    Hi everyone, this time around we focused on events and tracing, which we hope you will find useful.

    You will find the drop 9 project .zip in here
    And a demo project here

    The demo project includes everything from drop 9 so you do not need to install both.
    It will provide a few examples with documentation to help you start if it’s your first time.

    Just look for the 00_Example scene:


    We recommend using 2019.3.8f1 since 2019.3.11f1 has some performance issues on larger graphs (>30 nodes).


    What’s new?
    • Send and receive events to/from the code from/to visual scripts using On Event/Send Event nodes.
    • You can now choose which scripts are traced.
    • Portals
    • Data Node: This
    • Data Node Select
    • Expression Node
    • Basic node documentation in searcher

    Known issues / Limitations
    • Tracing on portals isn’t supported
    • Events only accepts string128
    • Jobs that dispatch or receive events are not Burst compilable yet
    • You must call Complete() on the jobHandles that dispatch or receive even
    • Editor is slow when many nodes are present in the graph. This will be fixed in 2019.3.13f1. Reverting to 2019.3.8f1 is also possible.

    Disclaimers

    As with the previous experimental drops, this is work in progress that we share to engage in an open discussion with our community. Expect issues and weird workflows as we work our way up to a more final product.

    So kindly take note of the usual disclaimers:
    • Not for production use.
    • Early picture of Visual Scripting, not be representative of the final version.
    • Things will change.
    Feedback

    We are very grateful for your feedback. Even if we do not have the time to answer and debate every point, rest assured we read every comment.

    Kindly keep the exchanges polite and constructive. The forum is a space for us to learn and discuss.

    Stay safe.
     
    Last edited: May 18, 2020
  2. Ofx360

    Ofx360

    Joined:
    Apr 30, 2013
    Posts:
    155
    "This" is great

    Portals probably should have a way to be titled. Seems kind of confusing that every one would be named "Data Portal" and the only way to know which start and end point belong to each other is by hovering them. I like the typical way this is done, where you give a start portal a title, and then when you add an end point, you get a nice drop down with all the start portal titles to pick from and link too.

    That and/or allow the start portal node color to be linked to the end portal node color

    Then there is this:

    upload_2020-5-14_23-25-31.png

    I don't think that's supposed to be allowed! Event edges don't seem to break when other events are added - at least visually

    Also parts of the UI is kinda hard to read atm!

    upload_2020-5-14_23-8-32.png

    Side note, i'm sure you're aware but getting some really bad GC spikes:

    upload_2020-5-14_23-29-24.png
     
  3. ericb_unity

    ericb_unity

    Unity Technologies

    Joined:
    Nov 24, 2017
    Posts:
    167

    Portals:
    - To rename a portal, simply double click on one, all opposite portals will be renamed at the same time.
    - We still have a huge pass to do with colors in general. We have the same issue with variables.
    - You can at the moment press ctrl+f and search portals by name. (Press enter to to focus on the selected item. WIP)

    Node inspector:
    Should be fixed in next drop.

    Then there is this:

    As you can disable nodes, the only thing we may do is add warnings in the future for stuff like in your screenshot.

    Spikes:

    We are aware of perf issues.
     
    Tanner555 and Ofx360 like this.
  4. schovan

    schovan

    Joined:
    May 24, 2016
    Posts:
    4
    Hi you disabled connectors in this version? How do I enable them?
     
  5. toomasio

    toomasio

    Joined:
    Nov 19, 2013
    Posts:
    199

    Thanks!

    Also like the Data portals idea. Will play around with this more.
     
  6. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    The current implementation is focused on correctness - once the runtime has the right behaviour, we'll start implementing a performant runtime. That way we can iterate fast now and have unit tests comparing the two backends.
    Meaning, we've been actively avoiding optimization until now. We'll start working on low hanging fruits ( like these spikes) for the next drop
     
    Ofx360 likes this.
  7. ericb_unity

    ericb_unity

    Unity Technologies

    Joined:
    Nov 24, 2017
    Posts:
    167
    Simply select the disabled nodes and right click to get to option to enable.
    EnableDisableNodes.gif
     
    Tanner555 likes this.
  8. ericb_unity

    ericb_unity

    Unity Technologies

    Joined:
    Nov 24, 2017
    Posts:
    167
    The Input axis node will only be accessible in the demo project. this is a custom node to give some support for inputs until we make the real thing. I also added 2 nodes in the project to show how to make your own nodes. Warning, TechArt code :p.
     
  9. toomasio

    toomasio

    Joined:
    Nov 19, 2013
    Posts:
    199
    Yes exactly. Really cool. :)
     
    ericb_unity likes this.
  10. schovan

    schovan

    Joined:
    May 24, 2016
    Posts:
    4
    No, I don't see connectors, but they work correctly, just invisible. Maybe it is a rendering bug in this window.
    upload_2020-5-15_19-40-31.png
     
  11. Ofx360

    Ofx360

    Joined:
    Apr 30, 2013
    Posts:
    155
    Ahh ok, cool

    I'm guessing then any number of Events can trigger whatever they're hooked up to as well, or does all but one need to be disable for it to work?
     
  12. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Oh, the edges between ports? looks like a bug. any error in the console ? which version of unity and os ?
     
  13. ericb_unity

    ericb_unity

    Unity Technologies

    Joined:
    Nov 24, 2017
    Posts:
    167
    You can hook multiple events on nodes and it will work.

    upload_2020-5-15_14-31-3.png
     
    toomasio likes this.
  14. BenzzzX

    BenzzzX

    Joined:
    Jun 4, 2018
    Posts:
    14
    Got some render issue.
    upload_2020-5-16_2-45-6.png
    Ports on disabled node are not displayed correctly.

    upload_2020-5-16_2-47-50.png
    Control points do not move with Placement.
     
  15. ericb_unity

    ericb_unity

    Unity Technologies

    Joined:
    Nov 24, 2017
    Posts:
    167
    Thx, those issues are already logged.
     
  16. toomasio

    toomasio

    Joined:
    Nov 19, 2013
    Posts:
    199
    Anyway to get enums to show up in the nodes? Or do you have to make separate nodes similar to your getaxis node?

    I would like my 'space' variable to show up here:

    Code (CSharp):
    1. [Serializable]
    2.     [WorkInProgress]
    3.     [NodeDescription("Translate an Entity based on input and multiplier.")]
    4.     public struct Translate : IFlowNode
    5.     {
    6.         [PortDescription("")]
    7.         public InputTriggerPort Input;
    8.         [PortDescription("")]
    9.         public OutputTriggerPort Output;
    10.  
    11.         [PortDescription(ValueType.Entity, Description = "The GameObject that will change its position.")]
    12.         public InputDataPort GameObject;
    13.  
    14.         [PortDescription(ValueType.Float3, Description = "Translation direction")]
    15.         public InputDataPort Direction;
    16.  
    17.         [PortDescription(ValueType.Float, Description = "Speed of the translation")]
    18.         public InputDataPort Multiplier;
    19.  
    20.         public enum Space { Self, World }
    21.         public Space space;
    22.  
    23.         public void Execute<TCtx>(TCtx ctx, InputTriggerPort port)where TCtx : IGraphInstance
    24.         {
    25.             var entity = ctx.ReadEntity(GameObject);
    26.             if (entity != Entity.Null)
    27.             {
    28.                 var t = ctx.EntityManager.GetComponentData<Translation>(entity);
    29.                 var r = ctx.EntityManager.GetComponentData<Rotation>(entity);
    30.  
    31.                 var translation = math.normalizesafe(ctx.ReadFloat3(Direction)) * ctx.ReadFloat(Multiplier) * ctx.Time.DeltaTime;
    32.  
    33.                 if (space == Space.Self)
    34.                     translation = math.mul(r.Value, translation);
    35.  
    36.                 t.Value += translation;
    37.  
    38.                 ctx.EntityManager.SetComponentData(entity, t);
    39.             }
    40.  
    41.             ctx.Trigger(Output);
    42.         }
    43.     }
     
  17. schovan

    schovan

    Joined:
    May 24, 2016
    Posts:
    4
    Windows 10, Unity 2020.1.0b8, 1 error:
    Unable to find required resource at GraphView/GraphViewUIE.shader
    UnityEditor.EditorGUIUtility:LoadRequired(String)
    Unity.GraphToolsFoundations.Bridge.GraphViewBridge:OnEnterPanel() (at Library/PackageCache/com.unity.graphtools.foundation.overdrive@f688d1899a2a-1589291002000/Editor/InternalBridge/GraphViewStaticBridge.cs:435)
    Unity.GraphElements.GraphView:OnEnterPanel(AttachToPanelEvent) (at Library/PackageCache/com.unity.graphtools.foundation.overdrive@f688d1899a2a-1589291002000/Editor/GraphElements/Views/GraphView.cs:778)
    UnityEditor.VisualScripting.Editor.VseWindow:OnEnable()
    UnityEditorInternal.InternalEditorUtility:LoadSerializedFileAndForget(String)
    UnityEditor.WindowLayout:LoadDefaultWindowPreferences()
     
  18. toomasio

    toomasio

    Joined:
    Nov 19, 2013
    Posts:
    199
    Nevermind....it appears off to the side. I don't know if I like that. Why not just put it right on the node? seems very off to me.

    need to do this first in code:
    Code (CSharp):
    1. public struct Translate : IFlowNode, IHasExecutionType<Translate.Space>


    edit: I guess I can understand if you have a huge monolithic node to have the execution types off to the side like that...but is there a way to put it right on the node if you want to?
     
    Last edited: May 15, 2020
  19. toomasio

    toomasio

    Joined:
    Nov 19, 2013
    Posts:
    199
    How do you get non-object variables to show up in the inspector? Like "speed" for example.
     
  20. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    We don't support 20.1 yet, can you try the version provided in the first post ?
     
  21. ezhilselvan

    ezhilselvan

    Joined:
    Oct 23, 2017
    Posts:
    3
    Dear Team, I am an UX Specialist as well as part time Programmer & designer.
    My challenge is to convert C# Code to VS (Visual Scripting) is it Possible? if not do you have any plan to do it. Because as per my knowledge there are so many people like me who need conversion in both sides(C# Code to VS & VS to C#).

    This would be Really helpful and could be a Game Changer. Please do reply. Thanks!!
     
  22. Only manually. I remember they specifically stated in the very first topic about VS that conversion will only be available from graph to code, not the other way around. I don't think it has changed since then.

    If you have valuable and relevant statistics (I mean real, hard data) that a lot of people want to convert code to graph, I suggest to send it to them. They may revisit this idea after the release if they see that a ton of people has this use case (which I seriously doubt, but this is just me without any real backing data).
     
    ezhilselvan likes this.
  23. Thjellesen

    Thjellesen

    Joined:
    Oct 7, 2014
    Posts:
    23
    How can I use the On Event/Send Event nodes ?
    Cannot find the nodes.. Is that something I should setup for them to appear
    Is this the only way to communicate with C# script ?

    Test code learn.unity Tutorial Events
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class EventManager : MonoBehaviour
    5. {
    6.     public delegate void ClickAction();
    7.     public static event ClickAction OnClicked;
    8.  
    9.  
    10.     void OnGUI()
    11.     {
    12.         if(GUI.Button(new Rect(Screen.width / 2 - 50, 5, 100, 30), "Click"))
    13.         {
    14.             if(OnClicked != null)
    15.                 OnClicked();
    16.         }
    17.     }
    18. }
     
    Last edited: May 19, 2020
  24. Vectrex

    Vectrex

    Joined:
    Oct 31, 2009
    Posts:
    267
    WOAH WOAH.. I haven't looked at the VS editor in a while, when did the editor go from vertical logic flow to horizontal?? PLEASE tell me this isn't going to be how it works now?
     
    LooperVFX and awesomedata like this.
  25. FernandoMK

    FernandoMK

    Joined:
    Feb 21, 2017
    Posts:
    178
    what they said in previous drops is that it will be an option for the user, so you can do it both vertically and horizontally
     
  26. FernandoMK

    FernandoMK

    Joined:
    Feb 21, 2017
    Posts:
    178
    This is really cool VS now, I just wanted to know if these portals work between another object's Visual scripts, (How to send events, or send data between them) I tried to do this but it went wrong.

    but I'm enjoying working with him. has a very simple workflow.
     
  27. Vectrex

    Vectrex

    Joined:
    Oct 31, 2009
    Posts:
    267
    As a coding teacher for 15 years, I think that's a huge mistake. Tutorials/docs/forums would be all separate and massively confusing.
    Having logic vertical and data horizontal was perfect from a beginners standpoint. Much much better than BP's
    I've taught C# and Blueprints to beginners and artists for many many years, I know exactly what is confusing to them (and it's not what programmers think would be confusing AT ALL). BP's are confusing for DIFFERENT reasons than text. You CAN combine the best of both and Drop 6 seemed to be getting close (BP's are horrible AND text code is horrible for many reasons). I'd love to lay it all out, if anyone is listening?

    Keep in mind the industry standard is vertical nodes (deliberately to match text code). Look at Nuke, Houdini, even Scratch (millions of kids learn to code in this, don't underestimate its influence in the coming years).
    The editor should at least flow and snap the same way as code/scratch and Drop 6 seemed to start doing this.
    I honestly felt a bit sick to see BP style being copied, almost like they gave up.
     
    Last edited: May 19, 2020
  28. FernandoMK

    FernandoMK

    Joined:
    Feb 21, 2017
    Posts:
    178
    I understand your point of view:)

    it really divides opinion, but if it really becomes a user option, people will choose their best work flow. there are people who do not like BP and there are people who love it, so it is something that is really interesting if it is to choose.:p
     
    Vectrex likes this.
  29. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Great conversation starter.

    Like it or not, horizontal flow is common. We fell back to that because we have other things to tackle right now, and a proper vertical implementation (meaning, not the one we had that just doesn't work) takes time. I'd like us to give it another go later, but we have more pressing issues. Ideally we'll find an isomorphism between horizontal and vertical flow.
     
  30. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    You'll need smart objects and inputs/outputs for that. Portals are limited one graph
     
  31. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Tricky subject. graphs are basically coroutines, so the generated code wouldn't be pretty the moment you use any node taking more than one frame. Not planned at the moment, no promises, but who knows.

    Edit: also, the graph<->code transformation is hardly a bijection
     
  32. Vectrex

    Vectrex

    Joined:
    Oct 31, 2009
    Posts:
    267
    Wait, I wasn't being combatitive, I haven't been following the threads at all, so I didn't know if devs are listening. From my perspective that's just what it looked like. Very happy to see that it's not.
    I think my teaching experience could be useful to you as you seem to be aiming at that level of user, so I'd be happy to give genuine feedback.
    For the 'multiple flow' problem I'm sure there's a way to visualise it. I've used node systems in lots of domains for about 25 years so I'd be happy to help.
    First I think VS should have it's own sub-forum, it's too important to hide away with ECS stuff.
    Second I'd love to see failed attempts at vertical visualisation and other upcoming editor specific stuff, so we can have a go mocking up solutions and general brain storming.

    ps "Like it or not, horizontal flow is common". OOP is common, so why make ECS? ;) Joking aside, text coding is common, so why make visual scripting? What is it about visual scripting that makes it need to exist?
     
    Last edited: May 19, 2020
  33. toomasio

    toomasio

    Joined:
    Nov 19, 2013
    Posts:
    199
  34. Thjellesen

    Thjellesen

    Joined:
    Oct 7, 2014
    Posts:
    23
    I think I've have tried everything now.. and I can really not find it.

    "What’s new?
    • Send and receive events to/from the code from/to visual scripts using On Event/Send Event nodes."
    Please someone help! is driving me crazy
     
    Lars-Steenhoff likes this.
  35. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    events are not C# events, but structs deriving from IVisualScriptingEvent. We'll prepare a small sample for that, but that might help you getting started.
     
    ezhilselvan likes this.
  36. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Just to be clear: the goal is not teaching and not to replace code. We're not making a visual programming tool, but a tool for scripting, orchestrating features. The goal is not to implement algorithms with it, but to be able to use predefined nodes exposing the engine features, those nodes being developed by us, your programmers or the asset store.

    Again, we'll come back to the flow, but we have higher priorities right now and are not a huge team. However, don't worry, we're not forgetting it. The most common issue is two nodes linked by flow AND data - if the first node feeds the second one, either you have an edge crossing right to left, or you have to force "wireless" edges like our portals everywhere. which can be ok, but doesn't scale. Then, there's ifs/switchs/... etc. Anyway, it takes quite an effort not te be worse than horizontal flow, even more to be better; as I said, priorities.

    About hiding with ECS stuff: VS is for DOTS only, so it makes sense. We'll get to a separate forum eventually.
     
  37. jeanedouard_unity

    jeanedouard_unity

    Unity Technologies

    Joined:
    May 2, 2019
    Posts:
    49
    Hi, here is some documentation about the events. Just like other features in the package, the API is not final (it has already changed from drop9 to where we are right now) and not optimized.

    Creating an Event
    To dispatch or receive an Event from a Scripting Graph or from a Job the Event has to be a struct inheriting from IVisualScriptingEvent (previously IDotsEvent).
    Code (CSharp):
    1. public struct MyEvent : IVisualScriptingEvent { }
    Once created, OnMyEvent and SendMyEvent nodes will appear in the Searcher. You can now use them in you graph.

    Supported Events data types
    Here is the list of the supported types in an Event:
    - bool
    - int
    - float
    - float2
    - float3
    - float4
    - quaternion (from Unity.Mathematics, not from UnityEngine)
    - Entity
    - NativeString128

    Example:
    Code (CSharp):
    1. public struct MyEvent : IVisualScriptingEvent
    2. {
    3.   public int MyInt;
    4.   public float2 MyFloat2;
    5. }
    Dispatching an Event from the code
    Code (CSharp):
    1.  
    2. public class DispatchEventSystem : ComponentSystem
    3. {
    4.    VisualScriptingEventSystem m_EventSystem;
    5.    protected override void OnCreate()
    6.    {
    7.        m_EventSystem = World.GetOrCreateSystem<VisualScriptingEventSystem>();
    8.    }
    9.    protected override void OnUpdate()
    10.    {
    11.        new MyEventDispatcherJob().Schedule(m_EventSystem).Complete();
    12.    }
    13.    struct MyEventDispatcherJob : IVisualScriptingEventDispatcherJob
    14.    {
    15.        public void Execute(VisualScriptingEventStream.Writer writer)
    16.        {
    17.            writer.Write(new MyEvent { MyInt = 42, MyFloat2 = new float2(2.1f, 4.5f) }, 0);
    18.        }
    19.    }
    20. }
    Alternative way to dispatch one or many Events from a job:
    Code (CSharp):
    1. public class DispatchEventSystem : ComponentSystem
    2. {
    3.    VisualScriptingEventSystem m_EventSystem;
    4.    protected override void OnCreate()
    5.    {
    6.        m_EventSystem = World.GetOrCreateSystem<VisualScriptingEventSystem>();
    7.    }
    8.    protected override void OnUpdate()
    9.    {
    10.        // 3 corresponds to the number of events to dispatch
    11.        var writer = m_EventSystem.CreateEventWriter(3);
    12.        new DispatchManyEventsJob { Writer = writer }.Schedule(m_EventSystem).Complete();
    13.    }
    14.    struct DispatchManyEventsJob : IJob
    15.    {
    16.        public VisualScriptingEventStream.Writer Writer;
    17.        public void Execute()
    18.        {
    19.            // The last argument is the index of the event in the Writer
    20.            Writer.Write(new MyEvent { MyInt  = 10 }, 0);
    21.            Writer.Write(new MyEvent { MyInt  = 20 }, 1);
    22.            Writer.Write(new MyEvent { MyInt  = 30 }, 2);
    23.        }
    24.    }
    25. }
    Receiving an Event from the code
    Code (CSharp):
    1.  
    2. public class ReceiveMyEventSystem : ComponentSystem
    3. {
    4.    VisualScriptingEventSystem m_EventSystem;
    5.    protected override void OnCreate()
    6.    {
    7.        m_EventSystem = World.GetOrCreateSystem<VisualScriptingEventSystem>();
    8.    }
    9.    protected override void OnUpdate()
    10.    {
    11.        new MyEventReceiverJob().Schedule<MyEventReceiverJob, MyEvent>(m_EventSystem).Complete();
    12.    }
    13.    struct MyEventReceiverJob : IVisualScriptingEventReceiverJob<MyEvent>
    14.    {
    15.        public void Execute(MyEvent evt)
    16.        {
    17.            Debug.Log($"{evt.MyInt} {evt.MyFloat2}");
    18.        }
    19.    }
    20. }
    Know issues or missing features
    - Only NativeStrings128 are avaible in Event data types
    - Jobs that dispatch or receive events are not Burst compilable yet
    - You must call Complete() on the jobHandles that dispatch or receive events
    - No event jobs parallel scheduling
     
    Thjellesen likes this.
  38. Thjellesen

    Thjellesen

    Joined:
    Oct 7, 2014
    Posts:
    23
    The second/Alternative way script don't work please help !
    Assets\test\DispatchEventSystem2.cs(19,64): error CS1503: Argument 2: cannot convert from 'Runtime.VisualScriptingEventSystem' to 'Unity.Jobs.JobHandle'

    Sadly I can't use the first script..but it works for one parameter
     
  39. Coroknight

    Coroknight

    Joined:
    Jul 10, 2012
    Posts:
    26
    This sounds super limited. Why is the scope so small? I don't understand the logic here because you know people will want to use it for all these use cases.

    Flow is fundamental to visual scripting, what higher priorities do you have? Now is the time to get this right.

    Overall it sounds like Unity wants to rush this out the door
     
    LooperVFX and awesomedata like this.
  40. msfredb7

    msfredb7

    Joined:
    Nov 1, 2012
    Posts:
    168
    I don't think the scope is small, it's focused. If your tool does everything, it's great at nothing.
     
  41. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    msfredb7 got it right:

    "Now" as in "Before 1.0" ? I'm happy to see we're aligned.
     
  42. FernandoMK

    FernandoMK

    Joined:
    Feb 21, 2017
    Posts:
    178
    Still testing drop9, I really liked the portals, it helps a lot in the organization of the code.:D

    This looks bad, because I hoped I could create something big using only VS (without codes) ...:(

    Just looking at other solutions, I know very well what can be done and what cannot be done, assets like playmaker or bolt still need some line of code here or there, but at least there is a wide range of possibilities without need traditional programming. :rolleyes:
    I know that Visual Script DOTs is still in development and has a long way to go, but can we hope that at some point it will follow the same path?

    What are your plans (roadmap) for VS DOTs for the future?


    sorry about my English:p
     
  43. Coroknight

    Coroknight

    Joined:
    Jul 10, 2012
    Posts:
    26
    Great, let's just continue to ignore the feedback from these threads and respond with snarky comments.
     
    riffing and useraccount1 like this.
  44. brunocoimbra

    brunocoimbra

    Joined:
    Sep 2, 2015
    Posts:
    679
    I think you are being a little hostile for no reason... We are still far away from the 1.0 and it was made clear that those flow issues will be revised before the 1.0 release. It is very clear to me that they are not ignoring feedbacks, you can't demand Unity to just shift priorities because you think they should and hope that they will do it because you said so.
     
    davenirline, LooperVFX, Djayp and 7 others like this.
  45. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Alright, less "snarky". brunocoimbra got it right.

    It is fundamental, you're right about that. We're not pretending the current version is 1.0 worthy. This is a subject we want to tackle before 1.0. Hence, I don't get why you're worried, when we never said we'd ship the product as it is, and we're giving a pre-alpha version to the public in order to get that kind of feedback, and have said multiple times we want to have a deeper look at the issue. When I say "this is not the priority", all it means is "this is not a topic we could tackle for this drop". In some case, it does mean "we have no plan to do that" (eg. "Visual scripting as a way to teach people to code"), but if not specified, it would be better to assume it just means "this is not a topic we could tackle for this drop".

    English is not my first language, so I might be mistaken ; but it does feel like you're being snarky AND accusing me of being snarky at the same time, which, from my point of view, doesn't look like the ideal path in terms of communication/iteration. Now, english might now be your first language either, so I won't assume you are hostile, but it felt right to let you know this how it might be perceived.
     
    NotaNaN, PanthenEye and brunocoimbra like this.
  46. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    I don't think Bolt or Playmaker can replace code, but as a programmer, I might be biased :)

    Given the potential of DOTS in terms of things you can do with it, trying to replace it with a visual solution is not something we're aiming for at the moment. However, it doesn't mean we'll stop developing any new feature once we reach 1.0.
     
    LooperVFX and brunocoimbra like this.
  47. Vectrex

    Vectrex

    Joined:
    Oct 31, 2009
    Posts:
    267
    That's always interesting to me. A lot of people separate VS, scripting and code as distinct things. I see VS as a different editor for coding the same stuff, most don't. It seems when VS comes up, there's actually 3 or 4 things that are lumped together with the 'Visual' part that aren't necessarily related.


    I'd be interested what people think which ones below are fundamental to VS or Code.

    - Is it the wires that define what visual scripting is? If so, does that mean it's the non-visual JUMPING ABOUT that is the core problem for people when coding?

    - If the jumping about IS the core problem, could a text based editor address that? Could you add WIRES to text code?

    - If you look at Scratch, the editor is laid out exactly as pure code does, with no wires. Does this count as visual scripting? If yes, why?

    - In Scratch and BPs you CAN'T make a syntax error. The blocks are unbreakable, unlike structures in typed code. If this is fundamental to VS, could unbreakable code structures be added to an IDE like Rider? Could Rider 'blockify' their editor, so turn it into something like Scratch and still be called 'real' coding? Is free text the main difference?

    - Is the ability of text to allow non-visual ordering of data flow a problem? You COULD use lots of lines with temp variables to build up data for a method parameter, in a more visual way, but most don't.
    Could the IDE show this in a more verbose way similar to VS?

    - Could you make a VS editor that is also capable of mostly keyboard input like text? Is the mouse fundamental?

    - Is it simplifying code down to chunky concepts that are hard to patch together in code? If so, could something like Rider add a visual element to text code?

    - Freely placing blocks of code visually in a workspace is in all VS editors. Could TEXT editors also allow this? Why is text automatically assumed to be a single list of vertical lines when VS isn't?

    - If program FLOW is a big problem, then visualising the WHOLE program isn't addressed in any editor I know. Is it feasible to zoom out past single scripts and visualise data between objects/entities/managers etc?

    I'm interested to know what fundamentally the 'visual' part IS for different people, as from reading these threads, there doesn't seem to be a clear definition.
     
  48. Lars-Steenhoff

    Lars-Steenhoff

    Joined:
    Aug 7, 2007
    Posts:
    3,527
    @theor-unity
    Did you ever use playmaker in a project?

    You know that the actions that you use in the state machiche are just pieces of c# code right?
     
    theor-unity likes this.
  49. brunocoimbra

    brunocoimbra

    Joined:
    Sep 2, 2015
    Posts:
    679
    I agree with your point, in the end VS is just a syntax-error-free way of coding, based on nodes and wires instead of text, braces and newlines, but as the engine was not built purely on top of VS everything that you want to see in the VS world needs to be coded in text first, thus to have a "complete replacement for text code" would require a lot more work than first focusing on a high-level solution for non-programmers.

    This is also true for BP btw, there is a lot of "basic stuff" that wasn't available on day one (like knowing if the code is running in the editor or in a build). A lot of playmaker actions and bolt functionalities were also only introduced after day one too.

    In would guess that in the future there will be enough functionalities (from both the community and built-in) to make any sort of game from scratch with DOTS-VS only, just like with BP today, but we can easily understand why this is not the team goal for 1.0.
     
    ShadLady and Vectrex like this.
  50. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Yes, and that code is neatly bundled in an action, the same way you can write custom nodes for our solution
     
    Lars-Steenhoff and brunocoimbra like this.