early feedback from a new user

Hi everyone! I've just started using Fabric this week... at my new job at Dwarf Animation Studio... after 9 years in the video game industry. Lots of new things!

I took a bunch of notes while reading through the docs and playing around with the samples, so I thought I'd share them here. Obviously I'm still a noob with Fabric so apologies if some things don't make much sense.

  • Overall, coming from a background of C++ and C#, KL is pretty straight-forward.
    I'm actually surprised you don't mention C# anywhere in the docs, don't know if it influenced the design or not, but some concepts can be easily translated, eg struct vs object == struct vs class (or value-type vs reference-type), map-reduce looks like parallel Linq, etc.

  • Can a struct/object have mutable members (that are allowed to be modified inside of const methods)?
    Since cached objects are immutable... I'm still struggling to wrap my head around cache nodes, for a gamedev having to either build or clone something on every update is heresy ;)

  • Is there a way to get/set a variable node programmatically?

  • namespaces?
  • Not having to bother with .h/.cpp is great, but I wish I could declare methods directly inside the struct definition itself, eg:
    struct Foo { function bar() { } };

  • Not too sure I understand the difference between RTVal and the Object interface... except that structs can also be RTVal'd? Is wrapping a value in an RTVal similar to boxing in C#?

  • Parallel Execution Statement:
    It is possible and even encouraged as a programming practice to make recursive PEXes.
    ... that sounds interesting! examples? Do you mean things like map-reduce?

UI woes

  • I find the function editor very cumbersome!

    • Having to go back and forth between function and canvas is painful, why isn't it in its own window?
    • I'm sorely missing a "save" shortcut! I don't really see why ctlr+s couldn't save the function if the editor has focus, and the graph otherwise. Alternatively, how about ctrl+alt+s? Or F6, which is "compile" in Visual Studio (and then F5 to reload... not sure what it does though).
    • Also a "back" shortcut, as long as code & canvas are sharing a window...
  • The value editor is... lacking. Very hard to make something artist-friendly as soon as the number of ports becomes significant.

    • Can we make structs serializable/editable in the value editor? Obviously Vec2/3 and Xfo etc all do it, where's the black magic to do that? I tried to copy Xfo from the built-in exts, rename it and import it in my custom exts: not editable...
    • Can we provide our own UI widget for a given struct/canvas?

Documentation bugs, mostly in the KL programming guide (if there's a better place to report those, please let me know)

  • Forward-declaring co-recursive functions doesn’t seem to be necessary anymore. Haven’t tried not forward-declaring structs/objects yet.
  • Methods definitions inconsistency:
    this is read-only if the method returns a value and is read-write if the method does not return a value.
    … then later on Methods Taking Read-Only or Read-Write Values for this:
    Changed in version 1.12.0: this now always defaults to read-only in method definitions unless an explicit ! is specified after method name; the default no longer depends on whether the method returns a value.

  • The String Type example typo: String.length() is a method, not a member

  • The Type Type.isA() example seems broken, the output is all errors:
    . (stdin):22:3: error: must use parentheses to call methods

  • Direct assignment overload: example is malformed

  • The markdown parser seems to be choking on math expressions, for example:
    • Variable-Size Array: The maximum size of a variable-size array is . (according to the source, the blank spaces contains ":math: 2^31-1")
    • The String Type: The length of a string is value of type Size, and the maximum length of a string is .
    • Trigonometric functions: Warning This function doesn’t work for large x and can only return values in the range ;
    • etc...

R&D Developer at Dwarf Animation Studio

Tagged:

Comments

  • borjaborja Administrator, Fabric Employee Posts: 480 admin
    edited November 2016

    Hi @benblo

    Thanks for your feedback, it is much appreciated.
    Some answers, quoted

    @benblo said:
    Hi everyone! I've just started using Fabric this week... at my new job at Dwarf Animation Studio... after 9 years in the video game industry. Lots of new things!

    • Is there a way to get/set a variable node programmatically?

    No

    • namespaces?

    They are in the short term roadmap!

    UI woes

    • I find the function editor very cumbersome!
      • Having to go back and forth between function and canvas is painful, why isn't it in its own window?
      • I'm sorely missing a "save" shortcut! I don't really see why ctlr+s couldn't save the function if the editor has focus, and the graph otherwise. Alternatively, how about ctrl+alt+s? Or F6, which is "compile" in Visual Studio (and then F5 to reload... not sure what it does though).
      • Also a "back" shortcut, as long as code & canvas are sharing a window...

    Indeed. We have the internal ticket FE-5529 to make the function editor detachable.
    Good point on the save shortcut. I have filed the internal ticket FE-7526

    • The value editor is... lacking. Very hard to make something artist-friendly as soon as the number of ports becomes significant.
      • Can we make structs serializable/editable in the value editor? Obviously Vec2/3 and Xfo etc all do it, where's the black magic to do that? I tried to copy Xfo from the built-in exts, rename it and import it in my custom exts: not editable...
      • Can we provide our own UI widget for a given struct/canvas?

    This can be done but currently implies to do changes to the FabricUI library. We should offer an API/plugin system to make this easier (FE-7527)

    Documentation bugs, mostly in the KL programming guide (if there's a better place to report those, please let me know)

    The best place to tackle bugs (either core or documentation typos) is sending them to bugs@fabricengine.com (one bug per email please:) ). I am taking care of the ones you posted here so don't need to send them again!. Thanks for all the work collecting them!

    Borja Morales
    Technical Product Manager
    Fabric Software Inc.

  • benblobenblo Posts: 29

    Well that was fast, thanks!
    Is the roadmap public?
    Same for the FE-xxx tickets you mention, can I track them somewhere?

    R&D Developer at Dwarf Animation Studio

  • borjaborja Administrator, Fabric Employee Posts: 480 admin

    Hi @benblo

    The tickets are internal, I put them for reference. When tracked where they come from so when we fix them we communicate that.

    Borja Morales
    Technical Product Manager
    Fabric Software Inc.

  • Paul DoylePaul Doyle Administrator, Fabric Employee Posts: 229 admin

    Regarding our roadmap - that's something we can discuss with you guys offline (since you're customers), but we don't publicly share our future development plans in that kind of detail.

    CEO at Fabric Software
    Twitter

Sign In or Register to comment.