Announcement

Collapse
No announcement yet.

MGC 'Magic Nodes'

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    Hehe.. I have no luck with that kind of stuff.
    Dev Grants, lottery, etc.

    I just don't even try
    | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

    Comment


      #17
      Everything should be set now for Marketplace release.
      Later on I will setup a GitHub public repo as well, but before that, I want to collect feedback from both users without coding experience and C++ veterans.

      For now, I've written a little bit about the ins and outs of this system and how it is meant to work for you, here:

      https://brunoxavierleite.com/2019/01...s-programming/
      | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

      Comment


        #18
        Does it make separate files for each function? Or are all magic nodes put inside one big function library?

        Comment


          #19
          Originally posted by Mootjuh View Post
          Does it make separate files for each function? Or are all magic nodes put inside one big function library?
          The first iteration I was compiling them to a library.
          But then I noticed that hot-reloading time was increasing the more nodes I create.

          Now what I do is create source files for each node class, hot reload became way faster and will remain the same time always, when I recompile just one node.

          Now instead of packing them within a library, I pack their source files inside the Source/MagicNodes/ folder. You will be able to see each generated class within Content Browser's C++ directory.

          The good thing is, if desired, you can remove all Magic Nodes from your Blueprints later and destroy the "Script" asset once the C++ class is generated and compiled. Then you include and use the C++ code directly. So the nodes in this case would be just a testing environment before moving your algorithms to full C++ in Visual Studio environment...
          I've been doing that. Once a node works the way I want, and I know I will never change it again, I delete the node asset and call the native functions directly from my Character.cpp.
          Only nodes that are really self-contained I leave them running as is, when the functionality doesn't fit any of my native classes.

          Oh I think I forgot to mention in the blog post to include "MagicNodeRuntime" module to Build.cs file for that, to make those sources usable by native project classes, otherwise project classes might cause error when calling magic node functions directly.
          | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

          Comment


            #20
            This is brilliant. Please update this thread when it arrives on GitHub (or other site like it).

            Comment


              #21
              Subscribed, bookmarked, noted and thousand thanks for this plugin!
              VR Shooter Guns - Arcade Shooter for Vive
              Unreal Meetup Franken - Unreal Engine 4 Meetup
              Hands for VR: Basic - For Vive and Oculus [Marketplace]
              Hands for VR: SciFi - For HTC Vive and Oculus Touch [Marketplace]

              Comment


                #22
                This plugin is now released



                MARKETPLACE
                GITHUB
                | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

                Comment


                  #23
                  Edit: Seems it wont generate code because it was open in visual studio.

                  I would like to see it auto indent code and needs a complile/generate button in the MagicNode editor. (Not just on the node itself.)
                  Last edited by ArxMods; 02-03-2019, 06:54 PM.

                  Comment


                    #24
                    At this moment I consumed all the time I was allowed to invest into this plugin.
                    I wanted to implement all the algorithms in the custom toolkit just like the ones that is implemented on the Node editor; I just couldn't deliver for now, ran out of time.

                    Auto indent I was also unable to implement at this time, Slate got in the way (I failed in that function and scrapped it).

                    But all these things already noted, I also want them lol
                    I'm not too worried about it, because I want to keep working on it for many years. I just can't rush it or prioritize it above my job tasks :s
                    | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

                    Comment


                      #25
                      Originally posted by BrUnO XaVIeR View Post
                      Hehe.. I have no luck with that kind of stuff.
                      Dev Grants, lottery, etc.

                      I just don't even try
                      It might not be my place to say this but in case you really didn't, you should DEFINITELY submit for Dev Grants (there is no luck involved), they even have a check-box for "Tool/Plugin" in submission form. I just hope you get rewarded for this awesome tool materialistically as well! Wish I could do it myself .
                      HeadsAndBrains
                      MARKETPLACE | YouTube

                      Comment


                        #26
                        I submitted plugin update for Unreal 4.22.
                        Keep in mind that this thing is still an experimental beta tool, I still didn't have any extra time to go back and work it some more.
                        | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

                        Comment


                          #27
                          I've submitted v0.1.5 to marketplace (I have no access to GitHub where I am right now so the files in Git will be outdated for a while)...


                          * In text/code editor within Nodes (expanded nodes) I have included auto indentation for new code lines.
                          However, there's a hard-coded routine in Slate's multiline text widget which I cannot override right now, it automatically adds new line whenever Enter key is pressed. So the auto indentation will always come with an extra line break, I am working around that pressing backspace once a new line is included... I cannot find a way to fix this problem for now, sorry!

                          * In pre-compiler class I've included an extra check to ignore whatever header includes that are incomplete or invalid before trying to generate the C++ objects.


                          Those changes are currently on the submitted plugin v0.1.5 for Unreal 4.22.
                          | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

                          Comment


                            #28
                            Some quick nodes to workaround this issue: https://issues.unrealengine.com/issue/UE-68641

                            Make sure you read this: https://brunoxavierleite.com/2019/01...s-programming/

                            Can download nodes here:
                            https://www.dropbox.com/s/19foctkvju...ts.uasset?dl=0
                            https://www.dropbox.com/s/sqymv91hvo...el.uasset?dl=0











                            | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

                            Comment


                              #29
                              This is so awesome. Is this like some sort of convenience wrapper around the normal "C++ backed Blueprint node" design or are you doing something special?

                              Comment


                                #30
                                It's a custom "Kismet Node": https://wiki.unrealengine.com/Create..._For_Blueprint

                                The turn-around thing about this node is that it can actually generate C++ classes and invoke functions from the generated classes by itself.
                                In general Kismet Nodes (or the UFUNCTION(...) ones) only know about C++ functions that already exist.

                                This node in particular creates an Unreal Object to store the code the user typed, then in runtime it already knows the pointer in memory to the compiled version of the function to call.
                                At runtime the node de-references the pointer and calls the "Execute" function of its object...

                                So you can have N^ custom Kismet Nodes packed into this only one node, instead of need to create one custom Kismet Node for each execution object you have.
                                | Finite State Machine | Savior | USQLite | Object-Pool | Sound-Occlusion | Property Transfer | Magic Nodes | MORE |

                                Comment

                                Working...
                                X