Examples of Node Based Programming?

Started by
29 comments, last by Tutorial Doctor 10 years, 2 months ago
So, I have recently become interested in what I am, for now, calling "Node based Programming." My actually first encounter with node based programming was in Blender 3d, but I overlooked it because it is not good.

Recently I came across an app on the iPad called GamePress. It is a game engine that can make 2d games right on your ipad for free. Here is a demo:

GamePress:
">


And this is when the Eureka came! Game Press uses a node based system for programming. And I truly think that this is the best way to program games. One of the advantages is that your rendering can be tied in directly to the code of the program itself (because it would be node based too like Blender Cycles nodes). All of your graphics would be set up through the use of nodes.

I think nodes look the way that programs work. As I mentioned in another thread, that if we were to perceive a variable as a real life object it would be a container that stores values. A node looks like a variable already. Nodes also look like functions. Data goes through a wire to the function, and the function does something and either transmits that data through another wire to another function or it does not transmit that data.

I also think that node based programming could work for any language. I could see myself programming in c++ with a node based system.

So, what I am really wondering if there is anyone here who knows of any other uses whether present or past that use a node based system for programming. Anyone see the weaknesses or strengths of such a system?

I'd like to look into any such software that use a sort of node based system for programming (I presume there are some used for robotics programming).

Thanks.
Note: I will be updating this post with my discoveries also for people who are interested. I already am downloading one.

NODE BOX:
http://nodebox.net/

Node Box Opinion: After downloading node box and going through the brief tutorial on the website, I have to say this is a very interesting program. And I just got a major idea from using it. I have been looking for ways to procedurally generate graphics and animations and such. I think that a node based system will make this 1,000 times easier. Node box also lets you export these graphics to pdf which can be opened in Illustrator or Adobe Photoshop. It also exports mp4! Hmm, wonder if you can do animations.

It seems node box now lets you generate your own nodes! Haha. This is too awesome man. You can generate it using Python?! And it gets even crazier. You can build shader nodes! If this isn't the future of game programming, I don't know what is.
http://nodebox.net/node/documentation/advanced/programming-nodes.html

Node Box Demo:
http://vimeo.com/54523585#at=85

NODEKIT:

NodeKit Opinion: I have yet to get started on this program. Just discovered it. I am also interested in another software they developed for the ipad but it is 39.99 called Tagtool. I believe it was made with nodekit, but I am not sure. I am downloading it from Sourceforge now. It is open source software.

NodeKit Demo:
">


DYNAMO (Autodesk):

Okay, so if Autodesk has their hands in it, you know it is worth noting. I am now downloading Dynamo which is an open sourced Visual programming software for design. This has to be interesting.

BLOCK V3 (Node based system for Autodesk Maya)

Demo:
">



Additional Stuff:

Programming with Nodes in Blender 3D:
http://vimeo.com/13495148

Thread on issues of Visual Programming:
http://cs.stackexchange.com/questions/539/visual-programming-languages


Someone posted this link in a forum:

http://www.nevigo.com/en/articydraft/overview/

They call me the Tutorial Doctor.

Advertisement
This is more commonly referred to as "visual programming" and was a bit of a fad about 20 years ago.

It failed, for a number of reasons, the most important being that expressing non-trivial logic in a visual language is a pain in the ass and far harder to untangle and debug than textual languages.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

This is more commonly referred to as "visual programming" and was a bit of a fad about 20 years ago.

It failed, for a number of reasons, the most important being that expressing non-trivial logic in a visual language is a pain in the ass and far harder to untangle and debug than textual languages.

Thanks for the key word Apoch. I came across another new word for me, "generative design."

Node box is the first thing I have come across, and I have to say that it is very interesting. You can create your own nodes with python and it has some sort of svg graphics importer. So it seems you could use svg graphics as your shapes. Within the first 10 minutes of using it I have exported a png graphic generated with it, as well as an mp4 video made with it.

Question though, do you think that if there was a way to solve the "non-trivial logic" aspect of visual programming, that it would be the better way to program?

The GamePress app on the ipad seems to be appealing to people who also use the Codea app (which is more useful for non-trivial programming than GamePress.) Just image if it expanded its nodes also. You can even create particle systems and sound effects from within the app. And they are both procedurally generated.

I think I might actually be using node box for my game menu elements. And this is only the first software I have found so far.

They call me the Tutorial Doctor.

What you're talking about is commonly used in a subset of games. Both shader editing and game logic event scripting is often done in a node-based visual language of some kind in many higher-end engines. As ApochPiQ notes, these tools are a pain in the ass to use for more advanced needs and typically have some way to insert "real code" into them for these cases.

Question though, do you think that if there was a way to solve the "non-trivial logic" aspect of visual programming, that it would be the better way to program?


This is a topic under active research by many large companies and universities. I'm sure you could generate a lot of opinions on a little forum like this one but this is hardly the place to expect any kind of expert opinion on core computational science research topics. Lots of people are trying to show that visual programming languages can be used for non-trivial work but there's no consensus on any of them actually being "the future."

Sean Middleditch – Game Systems Engineer – Join my team!


these tools are a pain in the ass to use for more advanced needs and typically have some way to insert "real code" into them for these cases.

Yes, I think this is even why Game Maker has a "real code" feature. I do think Node Box has a real code feature also.

Even the ipad App "Editorial" which uses a sort of snippet system has a "real code" feature.

It seems it would take a stroke of genius to break free of textual programming. So much of our communication is done through either spoken language or written language. But then the information we speak or write comes from the information we have gathered through seeing and hearing.

When I look at a long page of programming, I cannot see the program that well. When it is compiled and run, I can then see the product of the program.

It just seems that a node based system can be more representational of what actually happens both at the hardware level and software level. Things such as memory allocation and pointers and such. It would certainly make low level programming a lot easier.

They call me the Tutorial Doctor.

I've heard of these being called flowgraphs and Kismet for UDK is one program that allows you to design your logic visually. Have a look at it because it's pretty cool and powerful. Many programmers don't understand how it's "better" than coding, but to a game designer, these tools are amazing and allows for much faster game mechanic development/testing.

I'm a believer that this is the future of programming. Text based commands will always exist because at it's core that's what is running these flowgraphs, but I think flowgraphs will eventually become the way the majority of people program (and it'll open up programming to an entirely new audience). I'm a programmer of 15+ years and I think this way. That often gets other programmers upset with me, but with everything having touch screen functionality and Windows really pushing touch screen on their PC OS, and visually being able to tell what things are at a glance simply by shape & color, (aren't shapes and colors more fun smile.png ), I just think this is the future.

From what I've seen, the biggest failures of "Visual Programming" are the ones that more use your normal Windows OS controls like dropdown boxes, and such to make links between components and all of that. I agree that method is horrible, but flowgraphs use color and shape to represent things which makes it much better. It uses lines to show the flow where some of these other visual programming languages in the past didn't. There is a big different between some of these "visual programming" tools.

Alice is one that many people use as an example but I'd say take a look at Alice http://en.wikipedia.org/wiki/File:Alice-2-screenshot.jpg and then take a look at Kismet http://www.gatheral.co.uk/images/blog/udk_warehouse_kismet_onoff.png. It's like night and day. Kismet at this time is higher level, but it could be lower if they designed it that way.


It would certainly make low level programming a lot easier

At this point in time it would not. The reason being it can take a lot of nodes, and so screen space, to represent something that maybe 15 lines of code does. That's one reason why people say it's a pain in the ass to use.


The reason being it can take a lot of nodes, and so screen space, to represent something that maybe 15 lines of code does

Good point! That was what I saw with Game Maker (even when I was looking for visual programming). It was much shorter to write a line of code than having to use all these connections and stuff. That is why I think the Editorial app uses a snippet system. Yet it does allow full python programming, which makes it that much more powerful.

And you are right about it opening up programming to a whole new audience. Looking at the responses to even the Game Press app, people who have never programmed a day in their lives can get a game up and running in a matter of minutes.

Then i saw the responses of people who use the Codea app the ipad. They were looking for power and flexibility. Thing is, quite a few of them saw how powerful it is. And a lot of them wanted to know if they could export an ipa version of their game (I suppose this is against apples's terms though). I truly believe I can make a full featured game with Game Press' node based system.

Also, I just watched a video on Node Box. They have several versions. They have a version called Node Box OpenGL. This version is more textual. The company has been pushing Node Box 3 (the one I downloaded) because perhaps they see the future benefits of developing such a system.

I am glad to see that someone with your experience can see how this type of programming might be the way of future programming (as you said, especially with touch based devices and things.)

I will be doing more research into this.

They call me the Tutorial Doctor.


these tools are a pain in the ass to use for more advanced needs and typically have some way to insert "real code" into them for these cases.

Yes, I think this is even why Game Maker has a "real code" feature. I do think Node Box has a real code feature also.

Even the ipad App "Editorial" which uses a sort of snippet system has a "real code" feature.

It seems it would take a stroke of genius to break free of textual programming. So much of our communication is done through either spoken language or written language. But then the information we speak or write comes from the information we have gathered through seeing and hearing.

When I look at a long page of programming, I cannot see the program that well. When it is compiled and run, I can then see the product of the program.

It just seems that a node based system can be more representational of what actually happens both at the hardware level and software level. Things such as memory allocation and pointers and such. It would certainly make low level programming a lot easier.

I dont believe we will ever get away from textual programming for the none trivial problems, there is just not a clear way of presenting a node graph that does something complex, sub graphs help but then you are staring at a magic box in the graph until you open it and see whats underneath.

The closest thing I have used that is useful in a graph based approach are petri nets and thats only a modeling language to show how systems interact with each other.

I think we are stuck with text and that's because math is thought that way and fundamentally programming is a math based activity.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

Visual programming was "destined to be the future" in the early 1990s when I started programming. It wasn't a correct prediction then, and I doubt it's a correct prediction now.

There may be aspects of programming that become "less" textual, and/or drift away from file-oriented code; in fact I'm working on such a language project right now. But overall, I think the fundamental principle of expression programs using comparatively terse textual symbols is here to stay.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]


I think we are stuck with text and that's because math is thought that way and fundamentally programming is a math based activity.

I think math is easier seen in a node based system actually, when you think of how original math was done. Node based systems are used to do very complex graphical computations as in Blender's cycles. They have the Add node and the Multiply node, which we would understand textually as a function, but in a node based system as a node that takes however many input values and adds them together and outputs the result either to another node or to another function or whatever else.

From the video of NodeKit that I posted he shows how he can look at the flow of the nodes as text also (that setup just feels right). It is like opening the hood of your car to see what is underneath and tweaking things a bit if you need to. I mean, they actually used NodeKit to produce the app TapTool which is currently on the ipad and can do some pretty neat things from what I am seeing.

I have always been one to think outside the box. But at least in this case, I am thinking within the box.

They call me the Tutorial Doctor.

This topic is closed to new replies.

Advertisement