First of all DISCLAIMER: this is NOT an oficial upcoming Unity feature. At Unity we have this thing called “Fridays Are For Fun”, meaning that on fridays we can work on whatever we want, even if it’s not useful and might never get released.
For several of my last fridays I was doing Visual Logic Editor for Unity.
So far only basic things work. Quite messy since there is no subsequence support yet (everything is in one large sequence).
Circles right now can only be Component type variables (dragged from hierarchy).
Later should have editable properties displayed and edited on nodes themselves. And “bunch of other stuff” ™.
Would like to ask what you guys think.
Would it be useful?
Any tips from people who actually worked with systems like that?
Do you want it?
Any other feelings it gives you? Let us hear it.
Cannot yet give any demo to try out. Below are some screenshots of test “Game” that shows concepts. To “complete” the game one needs to collect 5 “pickups”, then elevator goes down. Walking on elevator makes it go up. After that walking to particle system makes you “win” the game (uses node to call custom function to change particle color and size then waits few seconds and calls function to display “You won the game” text on screen).
Nodes are defined like this:
[NodeAttr(CustomName = "Destroy", Menu = "Control")]
public class VLEDestroy : VLENode
{
public ExitLink Out;
[Variable("Object", VariableType.In)]
public Object Obj;
[EntryLink]
void In()
{
if (Obj != null)
Object.DestroyImmediate(Obj);
Trigger(Out);
}
}
I certainly think so - even though personally, I really enjoy coding in text. But I guess there are probably quite a few use cases for logic being “drawn out”.
Yeah, gieef!!!
I think the power of such a system lies in its extensibility via custom nodes; and users that don’t like creating such nodes will probably need a convenient way to get and integrate nodes (and libraries of nodes) that others have created into their own game.
Which reminds my of my old request: Please support namespaces
Anyways, I guess if UT provides the Editor and a few examples and then Unity users provide general and special nodes this could also become a pretty cool marketplace
Looks great and the custom node makes it very flexible in its use.
Can basically be used for anything, from logic scripting to effect composition to quest scripting …
I would use the hell out of this. Like others, I’m a lot more visual, so not only would it speed up prototyping for me, but it would actually entice me to prototype more ideas and more often. Please finish it yesterday!
I come from an extensive Virtools, Unreal Kismet background (we used the hell out of it on Borderlands and Aliens) and Quest 3D to a lesser degree so…
…YES this would be an utterly AMAZING addition; I can guarantee every ‘artist-coder’ here (raises hand) just vomited out of excitement at this being a potential new feature.
I’ve prototyped full blown games in a week in Virtools, including FPS’s, top down TB RPG’s and graphic adventures. Though my coding friends argue with me that coding is faster, mind you they are CODERS (and I do agree with them on some things), for artists that have no coding background, there is no ‘faster’…seeing our level and gameplay designers using Kismet to whip up complex interactions with zero programming background is proof enough how liberating this is in allowing a greater portion of the development team to participate in actual gameplay development without relying on a programmer (and said turn-around for implementation).
I’d argue though that if you are serious about this (please!!!) that you look to Virtools primarily as while abstracting general code concepts into building blocks is great for some things (Quest 3D), Virtools brings function specific BB’s that remove the headache of long graph chains that they accomplish in one behavior. Character controlling behaviors come to mind which are quite superior in Virtools to other visual programming apps which require you to essentially construct such things from scratch…
…requires a bit more investment on your end (UT) but the end result is greater accessibility and faster prototyping.
I’d be MORE than happy to offer my services in this regard!
SteveB> please read the disclaimer Sorry to say but it might take really really long time until it will come… Cannot yet even promise that it will.
But I’ll be sure to check out virtools editor (i only really looked at kismet so far).
Oh no I know…mind you my enthusiasm was here to set the tone so if a year down the line you guys decide to implement it, it will be a desirable feature…
…I’ve already resigned myself to coding anyway so it’s no huge loss, only a tremendous gain.
Now as for function specific BB’s (Building Blocks in Virtools vernacular) think of your “Has Tag” node in your screenshot above. That’s exactly what these two examples are; one node but with a completely specific function and of course appropriate parameter inputs and outputs. They serve no other purpose but to do what they do. Virtools contains generic logic behaviors as well, and so:
Character Animation
Animation Synchronizer - Allows you to scrub the animation (its also a pop-up editor) and place ‘events’ on specific frames which can fire off messages. E.g. scrubbing the animation and wherever the character steps, you can ‘tick’ it for a Send Message to play a footstep sound.
Character Go To - Not terribly complex but straight forward; simply tells the character to walk to a target object (just like you assign GO’s in the Inspector), distance from the target before the character should stop (aids in removing ‘jittering’ as the character could attempt to reach an impossibly small decimal value…setting this to like 0.5 or even 1.0 smooths out the characters arrival), the characters front facing and the angle limit between the facing and the target. There’s even a boolean to have the character walk ‘backwards’ to the target if you want.
Between just these you can see how powerful the character setup can be with just two BB’s. Coupled with their fantastic Grid system for pathfinding and you can have characters walking all over the place, doing all sorts of things very easily.
In a simple example, I wanted to have a character patrol and at each ‘waypoint’ have him decide to keep walking to the next, stop to look around or play any of several fidget idles (scratching himself, etc). I would have Raycast BB and Test BB’s as well so upon reaching the waypoint he would search for items of interest (ammo, health, scripted trigger such as walking to a bench and sitting down) or the player character. This way I quickly randomized his behavior very easy using a Random BB to generate a value between min/max (I would also weight these so the NPC would have a greater or lesser chance of doing certain things (i.e. 50% chance to keep walking, 30% to look around, 10% to scratch himself, 10% to sit down) and feed that into a simple graph containing the various “actions” take on targets that were either in range (Proximity BB) or hit by a ray that I could then feed back into the Character Go To BB above to keep him moving around and performing organic interactions.
Of course this is all doable in Unity, it was just so quick to do visually in Virtools and very easy to track the NPC state. Again I’m not arguing that its better or worse than coding, only that for an artist(me) at the time, it was godsend and here I was creating complex character behavior (one of the hardest things in dev) without a lick of coding knowledge (well minimal I should say).
OH! …the Arrays in Virtools are all visual as well so MY GAWD do I miss that to be completely honest. I could see a graph of all my stored values and do specific column/row picking if I so choose. I could quickly parse by string, or search out a particular value. Again all doable in Unity, but being able to see what’s going on in the Array interactively is huge, again especially for a non-coder.
I once was skeptical of the power and flexibility of visual programming, but AmigaVision sold me on the potential. (Just dated myself I think!)
If it could be bi-directional with JS, so hand-coded scripts could be viewed/edited/debugged that way, it would be awesome. Some kind of system that took the whole Unity “dictionary” and made it visual automatically.
What do I feel about it?
Reminds me of the XPresso setups from Cinema4D just that I find it more useful for gamelogic, personally. So I feel it might be a very good approach to make Unity more accessible and felxible.
Would it be useful?
I really think so. Yes.
Despite that I like the current code-attach-to-object approach (out of the box) very much I think that a system like this might ease the clarity of complex setups tremendously.
If this would develop into a real feature I’d be happy
I like that “Fridays Are For Fun” idea. More employers should have that ;). It’s pretty impressive what a small creative team can do “for fun” with a lot of motivation! But I guess it’s a subject of it’s own ;).
On a sidenote: I am one of the people those which will always remain skeptical to visual interfaces like these, although Unreal Engine 3 and 3DS Max make it pretty interesting to use. I haven’t used Virtools. (Maybe my traumatic experiences come from DSP editors…)
Almar: programmer type of users commonly won’t see much of use behind it, its really a designer / artist thing normally …
My ex GF worked with such programming in their job (programming scientific lab microcontrollers) and told me its the only kind of programming she really ever was able to use.
I on the other hand just see how many worlds more space and views it needs to get even trivial things done.
During procedural programming, such visual programming somewhere might have might been more powerfull but with fully fledged OO languages (C#, Java, Eiffel), its impossible for me to think that those languages do more and faster than I can do in code, just due to the amount of “going in” and “going out” required in the schemas to get larger functionality done. OO took the only benefit such design environments directly had, “placing blocks”.
For dialog design, ai and alike its naturally a whole different topic as those things benefit heavily from it as anything in those fields is commonly modelled from trees, graphs and paths anyway.
Kismet under Unity. I honestly believe that this is heaven to me and all other fellow developers here that are artists and have no programming background. :lol:
You really should take your project to your bosses over UT: it’s an amazing idea, and should be developed as a serious feature.