Personally, I think the key for making these kind of tools work, is being able to do encapsulation. Using hierarchical trees or graphs will allow to model Level-Of-Details for behaviour code and facilitate re-usability.
Visual Systems are less effective for low-level logic but should be supported for non-coders. I probably would code low-level behaviour in C# and model high-level behaviour using such a hierarchical visual system. From my personal experience (9 years Virtools) this is pretty powerful and often underestimated.
(Btw. Virtools is different to many other systems because it models two flows explicitly: data flow and program flow. )
Dom! Well here you go guys, between Dom and I (being huge proponents of Virtools) you can gather quite a bit of info on the system, moreso from Dom than I.
One thing I didn’t make clear is encapsulation as he describes. It wouldn’t be one endless chain of behaviors, but rather just like a function, you would create a series of behaviors that do something specific and then create what Virtools calls “behavior graphs” (BG’s), essentially turning that series of behaviors into one, which for all intents and purposes looks like yet another behavior except you can delve back into it as needed. Upside to this, again as he addresses, is reusability and cleaner graphing (re: readability).
It’s quite powerful and I myself have nested quite a few BG’s to great effect in my Virtools games. Kismet introduced this as it evolved so it’s quite necessary IMHO to get the most out of this system.
I used Virtools for six years (they even flew me to Australia to train resellers when Dassault bought them out). Our first games were exclusively written in their visual schematic system.
There are substantial advantages to a visual programming system–yes, even for “real” programmers–and of course substantial disadvantages. I’ll find some time to write up a more detailed reply with my suggestions (we’re launching all kinds of stuff on Tuesday and pretty busy until then)…
My only experience with “visual” application design was a brief encounter with Quest3D and a bit more experience with the Blender Game Engine. I found the Quest3D design process thoroughly confusing, and at the time I would not have considered myself a programmer by any stretch. So I don’t really agree with the thought that a visual design system makes it any easier for an artist to grasp than, for example, learning to program in Javascript. Even so, I think developing such a thing for Unity is probably worthwhile, although I would personally like to see the time invested in more mundane, but useful stuff (like allowing us complete control over the input manager / quality control panel and stuff like that).
My apologies to the former Virtools and Quest people who want to see this, but one of the reasons I bought Unity instead of V/Q3D is because programming in Javascript is sooo much easier.
Quest3D, while capable, isn’t a great example of a visual system done right. I too struggled with Quest despite my having tremendous success with Virtools…
…another way to look at it…
…there are HOW many different programming languages? Obviously they are not all created equal.
Another suggestion to throw on the inspiration pile is Quartz Composer. If I’m not mistaken(IANAP), it also has the same kind of encapsulation that Steve and Dom were talking about earlier. I was taking some of the examples apart and couldn’t figure out how they were getting such a simple graph to do a really complex effect. An errant mouseclick drilled down into a particular function revealing a whole mess of spaghetti and nodes.
If you’re on a Mac and haven’t played around with QC, you really should, it’s a neat little toy that can do some very cool stuff.
[quote=“”]
Quest3D, while capable, isn’t a great example of a visual system done right. I too struggled with Quest despite my having tremendous success with Virtools…
…another way to look at it…
…there are HOW many different programming languages? Obviously they are not all created equal.
Implementation is key here, not the concept.
[/quote]Also I think Virtools is successfully at this approach is because their BB library is sooooo extensive you can do A LOT!!! before you need to resort to vsl and the BB’s are documented quiet well.
I’d imagine coding as many BB’s as virtools has would be as big a job as coding unity to begin with.
True…Virtools’ foundation was laid with it’s system in mind so yea, it’s a large undertaking…
…but it’s not like such a system couldn’t grow into something as robust as theirs over time.
But yea the documentation and examples were quite excellent, including optimizing the graphs with BG’s and such to create faster executing scripts. The system in and of itself was very well thought out.
I mean I’m not kidding just how much can be done for someone with little to no coding experience…though having conceptual knowledge of code structure and/or design is necessary; a layman isn’t going to come in and start creating complex interactive media, but for someone with a clear understanding of design and what goes into a game for example can make a lot of headway in it without having ever coded.
My only experience in programming prior to using Virtools was BASIC on my Commodore Vic20 and C64. My experience in the game industry for the past 13 years though gave me the knowledge to, at the very least, understand programming and game structure conceptually to know what to look for while learning Virtools and onto actually creating real applications (games).
Thank you all for thoughts and ideas. Really useful!
Btw I’ve never seen Virtools But since there are so many who used it and liked it I’ll definitely take a close look at it. Also looking forward to hearing Mathews ideas.
I do think that this is not only “tool for those who can’t code”. It’s also a great abstraction level for your game logic. Now the game logic is scattered all over the place. Logic is “built” from small pieces in different code files, inspector settings, components attached, etc. In visual logic editor it’s all in one nice place. VLE is not a tool to do your regular coding visually. It should be showing how your game works and hide the implementation details. Well, but I guess one could write books about visual vs. normal coding.
Hmm, looks interesting. I can see two main uses for this type of thing
For novice programmers / artists types.
Lots of people here have mentioned VirTools but no one has mentioned Authorware (http://www.adobe.com/products/authorware/ - there’s a free 30 day trial). Authorware is a flow chart creation based tool for creating 2D training type applications. I last used it with version 5 and it definitely had its limitations. On the plus side its one of the few tools I’ve seen that people who had never programmed could use after a day’s training.
You might also like to have a look at Scratch (http://scratch.mit.edu/ - its free). Scratch is a completely visually based programming language aimed at kids and is mainly used to make 2d games.
As a way of automatically visualising game code. I’m thinking here of the Dreamweaver model where you can use Dreamweaver’s visual tools to create web sites but you can also go in edit the code. Dreamweaver uses “round-trip” editing so all your code changes are kept and then reflected back into the visual environment and vice versa.
Like, I say, interesting stuff and keep at it. I suspect it will take a whole heap of work to make it as good as we’d like it to be
wow, I completely love Unity, and since I can’t code at all, and really hard to get my hands around it, this is a life saver! Seriously, if Unity gets visual coding, that would be… a serious dream come true.
Wow, please continue to develop this feature for Unity. For game logic and design development, this type of system is perfect. Visual logic graphs really opens the field to every type of creative mind (right and left brainers).
IMO, the CryEngine flowgraph system is central to all the power of that system. I think they do it right. The crazy mods and prototype coming out from crymod.com are just plain astonishing. Even if the visual logic flow isn’t the best solution for the system for the final game, the benefit for rapid prototyping warrants development of a visual logic graph.
I would definitely look at the CryEngine’s flowgraph editor/implementation for inspiration. I would take the time to learn Crytek’s tool and look at how they made extensive use of the system for Crysis. Crytek, used it for all game logic, AI routines, game token handling, cinematic events, scripted sequences, HUD effects, etc. There was even some movement from a Crytek developer (on his own ‘mod’ time to open up the flowgraph system:
Another source for inspiration would be Softimage’s ICE system.
ICE graphs are a really low level logic graphs. I’m not an ICE expert by any means, but I did spend a month going thru all the nodes and following the very good Digital Tutor’s ICE Reference guide. I’m not a big fan of Digital Tutors because the few tutorials I’ve seen seem like the instructor is just reading a few pages ahead of me in the manual. But the ICE Node Reference Library (and possibly there other two ICE learning videos) are the exception; they are very well done. Worthy of study.
More then a network of trigger and variable passing, ICE is really all about dynamically getting and setting data. It’s implementation is very deep. Objects can even have new properties created and manipulated on the fly. Another interesting implementation of ICE is that most ICE nodes can accept any type of data (boolean, int, float, string, vectors, matrices, colors, and arrays of various or mixed types).
If you are interested in studying ICE, you can download a Softimage 30 day trial from here:
hello, i’m happy to find this post, because i was much work with the flowgraph of sandbox 2 and when i was trying unity, i was not finding anything like that, and i was searching all the night some pluggin to add on unity for that, and this post is the most concrete thing i found ^^. so somebodies speek from virtools, or softimage, but how is it possible to work on this programs, in external way of unity, and convert it for it work on it?
i would like to ask also, if someone can tell me if it exist a freeware that can do this system of bounding blocks, for working in unity? or some system of bounding blocks that can convert the work in javascript for use it in unity?
and my last question: would it be possible to see a pluggin addapted on unity for that, in future?
This is amazing.
This would help a lot of people out, I like coding and have always wanted to be a programmer but I know there are people out there who would want it. I would loove to test it out.
I didn’t post in this thread, did I? :?
Anyways, an important aspect is to be able to build hierarchies. It’s important for re-use and keeping it less confusing. Hierarchical visual scripting systems are very powerful when used with high-level behaviour components. Also a trace mode (or debugger) is - like everywhere - an intense boost.
Yes, Virtools has an extensive lib but a big number of their components has design-errors and require a rewrite to consider for different use-cases.