-
Notifications
You must be signed in to change notification settings - Fork 877
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement Dialogue tools Actor mechanics - closes 6461 #6469
base: master
Are you sure you want to change the base?
Conversation
Sorry this is taking awhile for the demo. I want to make sure it stress tests the new features well while demonstrating in a simple way how to set it up and use it |
… it has the key:value patern
@4ian and anyone interested in trying this new actor system, please feel free to give my little demo a try |
The demo presents a basic avatar mechanic where you have a left and a right avatar as well as layering (face is another layer from outfit) - all setup w the event sheet. I am wondering whether to expand my actor system to also keep track of actor's avatar position and face to make it even easier to setup and use (fewer event sheet lines needed that way) - but it would make the system more opinionated about how its used in some ways. For now decided not to go further with adding more to it |
I've lost a bit track of the status of this, is this something ready to review/tested? :) |
yes it is :) thanks in advance |
If you feel like I need to expand the demo to present more of these features I can do that too? Let me know if you need anything for the pr or have feedback :) |
I'm not familiar with dialogues with GDevelop. Do you know someone that used this feature a lot that could test this new feature to make sure it answers user needs? |
Hi @AlexandreSi If you ever try to make a visual novel in renpy, you will find that it has its own dialogue scripting engine - similar to yarn. But that engine has the concept of actors, which yarn does not. If you want to understand its usefulness, it is probably best to try it with the pr branch and the example project branch the description of the pr links to. See what the example project implements and how, then try to do the same without the feature - with just the event sheet. If there is not much interest in this becoming a part of gdevelop, I dont mind of declining my own pr :) Technically this doesnt really need to be a part of the engine. I have been using it for a while locally - i can override any js functionality without merging that to gdevelop. But since i was overriding my own js code that i wrote years ago, i thought might as well share the changes. It looks like if it just hangs around for years - it would just clutter the already busy pr list that GD has atm I understand that there already is a paid visual novel extension or demo project using yarn? Not sure if this free one would clash with its sales too much 😸 In any case any feedback to the pr would be much appreciated. It would help me improve the extension |
@AlexandreSi As someone who recently set up a real quick visual novel example for a friend, I can 100% confirm having the concepts of actors (and their states being accessible in the yarn dialogue files) reduces a TON of complexity that you manually have to set up a lot of duplicative events and variables for. I can assist with testing if needed, but as blurymind mentioned he implemented the original yarn/bondage.js/dialogue system as it is, so I'd trust the work. |
I'm quite confident you are the right person for such an improvement @blurymind. |
Thank you, I would appreciate any feedback on the system and the demo project. They really need to be tested together and understand that its not a trivial task to do. Should ideally be by someone who understands the goal and benefit in this. This really can be used for any type of game that needs character avatars and text colouring, but is ideal and inspired by what works for visual novels. Renpy as an engine is surprisingly successful if you look at the number of games on steam made with it. My belief is that the key to its success is how quickly you can set up most of the ui mechanics and then triggering emotes is almost seamless. Actors hold variables as state, which is also an important part of this. I didn't put that in the demo to keep it simple, but the ability to nest yarn variables which is also a part of this pr allows to easily set up a time system that makes events appear at different times of the week or day at different locations. When you progress time, characters and locations change with it. This makes visual novels give the player the feeling of a living world which they can traverse |
I have other obligations that will keep me swamped until the first weekend in November. While I can't test before then, if no one else has poked at it since then I'll see if I can play around with it. |
I forked your branch (https://github.com/4ian/GDevelop/tree/experimental-build/actors-dialoguetools), formatted the code so that the CI checks passes, and started a build so that users can test it. |
I am sorry, I will format this code on the pr after I sort out any review comments. |
Hello @blurymind There is one thing I'd like to comment on, and I apologize if this isn't the right place to ask this, but it seems like there isn't any way to input line breaks into the dialogue. This causes the last "scrolled" text that hits the dialogue box border to suddenly jump to the next line in the middle of a word. Would this be something that's easy to implement/fix as well while you're updating the dialogue tree? |
@gsleonard thank you for the kind words and the feedback. The scroll thing is something that has been requested before. Its an interesting bug which you can see in other game engines and even games on steam. One way in which rpg maker for example has solved this is by adding a margin to how many words can be added to a line of text. I've looked into this before and so far couldnt figure a nice way to do it in the runtime, so am now wondering if yarn editor itself should warn the user when they exceed number of words. Is that wrong or should it be done in the runtime - by breaking up sentences? The runtime doesnt know how many characters can fit on a line, so the developer will have to tell it. I think this should be carefully considered and discussed in another ticket. Its a task which is trickier to do justice than it seems :) |
@blurymind But yes, going back to the actor mechanic, I thought it was a good addition just based on my short time in testing it out. Though I'm just one user, I'd be happy to see it implemented. |
This expands the current dialogue tools runtime with a set of Actions, conditions and expressions to enable setting actors and opening the door to implement a story based game with much less repetition for changing of avatars, text color, actor stats and so on
Todo:
Demo here: https://github.com/blurymind/Gdevelop-dialoguetools-actor-system-demo
I can confirm that this does not change of the existing functionality unless you set up an actor that is detected in a dialogue line in yarn.
I have also made some minor changes to simplify some of the existing code a bit
Assiciated ticket that this closes #6461 and #6420 since the actor stuff relies on it
New features that greatly simplify setting up complex dialogue:
<<command oldParameter keyedParameter=123 anotherKeyedParameter=true>>
tag anotherTag keyedTag:123 anotherKeyedTag:true
inspiration for thiss
https://www.renpy.org/doc/html/dialogue.html