Instancing flows and templating pins

Sat 13. Jul 2013, 17:37

Hello! First. AMAZING toolset. Love it to bits, as a design tool it's great, but I really think it could make a huge impact on the industry the more the tools can be coupled with actual game code to actually produce data used by the game.

I've been working on templates and examples for our scripting system that we hope to use articy:draft for, and there are a few things which I think would increase the tools usefulness for game data by orders of magnitude. If any of these are possible please forgive me (and let me know how :))

First and foremost: Instancing flows/dialogue. This is a biggy. In my flows I have created a 'IsThreatenedBy', for example, which is a flow that describes the logic to determine if a character is threatened by another character.

It does this by checking if character is a coward, if the other character is aggressive, if they have a gun armed etc. the idea is these bottom level flow nodes (or rather the template they are based on) will tie into lua classes that compute and then fire the various outputs. And we can create a library of flow level library functions that use these nodes for progressively more complicated tasks, and design their inputs and outputs. Effectively turning articy:draft into a fully functioned game scripting engine for our game with a growing standard library of useful 'methods' as flows that can be used all over the project. Flows within flows within flows.

The problem comes from iteration of these 'library' flows. The only way to get the flow into numerous flows seems to be to copy / paste it in. In which case the new flow inherits all the sub nodes of that flow, and it's a literal copy that is subsequently detached from the original. What happens then is since the IsThreatenedBy is woefully basic and incomplete, we will needed to change and improve the behaviour, and it would need changing independently on EVERY occurrence of IsThreatenedBy in the entire project. Obviously this is no good.

To work around it, I need to create a brand new flow from a 'LibraryFlow' template, and just call it the same as the flow I would ideally be referencing here, and then do the substitution when the xml is loaded by the game. This does the job, but obviously it's then not possible to submerge into that node and see what's happening, instead having to manually hunt down the node's namesake flow and open it. Also each of these would need the pins creating and naming repeatedly each time they are used. And then on top of that there's the potential for error (and lack of protection of these errors happening) with scripters copy and pasting and replicating flows and confusing the system.

Ideally, we could have an instance or reference flow node, which points at another flow elsewhere just like jumps and whatnot. However, it would visibly and functionally act exactly like a native flow node in that flow, so it would have the named pins, the correct number of pins, and drilling down into it would reveal a shared flow that when edited those changes would be reflected project wide. Perhaps have some obvious tag to show this is a reference and not a unique object.

Speaking of which, another thing we use quite heavily is as stated above, nodes that will represent lua classes. So these flows are visibly empty in articy itself, but rather just represent non-visible functionality that is assumed while designing the flows. Each one of these is a template, so we can specify relevent parameters to pass into the lua. The templating stuff is great, but obviously it only extends to the properties and the colour. In an ideal world I would define a template for an a WalkTo node which not only specified it should have coordinates to walk to, and which character should walk there, but also that there is a 'success' output pin, a 'failure' output pin, and a 'during' output pin. Perhaps even the default name of flows created using these templates to avoid us having to manually rename 'Untitled flow' a ton.

This isn't a big deal for what we need technically, as we can work around it using the methods described, but I think these features would vastly improve the workflow and both speed up, and minimize the potential for errors made by scripters using the system as well as making navigating the flows much better and make it a much more capable scripting system for games.

Thanks again! Despite these suggestions, I'm blown away by this software generally
lemmy101
 
Posts: 3
Joined: Sat 13. Jul 2013, 17:22

Re: Instancing flows and templating pins

Mon 15. Jul 2013, 10:06

Hi lemmy101! :)

Thanks a lot for your detailed feedback! We have discussed the topic of "reference nodes" already internally and we agree that they can be very useful in different scenarios. So, this feature is definitely on our list, but it hasn't got a timestamp, yet. I will bring your feedback up in our next feature planning meeting.

I also like your suggestion about being able to template the default name and pins of nodes. I'll add that to our list of feature requests!

Just to let you know: We want to improve the scripting abilities of articy:draft a lot - e.g. we're currently working on global variables, specialized condition nodes and scripting support at in- and output pins. So, please keep up the great feedback and let us know, if we're going in the right direction. :)
User avatar
Julius Kuschke
 
Posts: 23
Joined: Thu 24. Nov 2011, 14:02
Location: Bochum

Re: Instancing flows and templating pins

Mon 29. Jul 2013, 18:14

Thanks! This stuff sounds amazing!

Thought I'd share a screenshot:

Image

This is how we're using it. This is actually read in by our game via the xml output and is fully functional. We're using the node's strips for parameters read in by lua, and entities in draft are used as kinda registers within the scope of a triggered event to the flow's competion.

We use hubs for events, such as OnCharacterUpdate, with a feature to specify the entity param for the character being updated. In the screenshot X is specified as the character being updated. Then GetSafehouse grabs X's safehouse and stores it in SafehouseA and so on. Named connections are used and triggered based on the node in question within lua, in this case the 'Check idle state' one is checking a variable of the lua game character, and it fires the named connection that matches.
lemmy101
 
Posts: 3
Joined: Sat 13. Jul 2013, 17:22

Re: Instancing flows and templating pins

Thu 5. Sep 2013, 20:55

lemmy101 wrote:Thought I'd share a screenshot


That's pretty impressive, and a very clever approach. Thanks for sharing it here!

-Kai
Kai Rosenkranz
CEO | Nevigo | LinkedIn | Facebook | Xing | Google+ | MobyGames
User avatar
Kai Rosenkranz
Articy Staff
Articy Staff
 
Posts: 58
Joined: Fri 18. Nov 2011, 15:18

Re: Instancing flows and templating pins

Fri 15. Nov 2013, 15:24

Just noticed the new features since I last opened Articy Draft! Awesome <3 Will provide feedback in the scope of what I'm doing as I can imagine that being very powerful addition for us. Thank you!
lemmy101
 
Posts: 3
Joined: Sat 13. Jul 2013, 17:22

Re: Instancing flows and templating pins

Sat 25. Oct 2014, 06:17

This isn't a big deal for what we need technically, as we can work around it using the methods described, but I think these features would vastly improve the workflow and both speed up, and minimize the potential for errors made by scripters using the system as well as making navigating the flows much better and make it a much more capable scripting system for games.
Download high quality Pass4sure OG0-091 to prepare and Adams State University with oracle certification dumps certification. Also get free demos of University of California, Berkeley for review of MICROSOFT
joy9393
 
Posts: 1
Joined: Sat 25. Oct 2014, 06:14

Return to Feature Requests & Suggestions

Who is online

Users browsing this forum: No registered users and 24 guests

Who We Are
Contact Us
Social Links