Dynamic Conversations - Legacy Devlog #23
HTML-код
- Опубликовано: 1 июн 2024
- Support me on Patreon:
/ aarthificial
0:00 Showcase
1:14 How does it work?
3:27 Practical example
=== GDC Talks ===
AI-driven Dynamic Dialog through Fuzzy Pattern Matching:
• AI-driven Dynamic Dial...
Programming Context-Aware Dialogue in The Last of Us:
• Programming Context-Aw...
Do You Copy? Dialog System and Tools in Firewatch:
• Do You Copy? Dialog Sy...
=== Tools I'm using ===
JetBrains Rider
Unity
Adobe Illustrator, After Effects, Premiere Pro, Audition, Photoshop
=== Music from Epidemic Sounds ===
www.epidemicsound.com/referra...
Jo Wandrini - Puzzle Of Complexity:
• Puzzle Of Complexity
Luella Gren - There Is Something about the World:
• Luella Gren - There Is...
Once again I'm absolutely blown away by your ability to easily present these complex systems in such a short video. That's awesome
Dialogue like that looks so snappy and satisfying! Really cool for people replaying the game, and don't need to go through the tutorial, too. Amazing job man!
Also the more I learn about your game the more I think speedrunners are going to love it
Finished binge watching your channel.
Damn you're good. I am a software engineer looking to do some hobby game dev and oh boy did I love watching all your vids! Keep up the good work, you're definitely on an upwards trend and the quality of your vids is stellar, the best devlogs in term of explaining architecture & code, next to Sebastian Lague.
Thanks, it really means a lot!
Your editing and explanation are so good! Similar to Sebastian Lague in some way. I really hope you'll finish the game, because as far as it goes, it looks amazing. Keep it up!
Thanks so much!
I mean he has the same trifecta:
Amazing accent
Intuitive learning
Chill and relaxing vibes
@@EthMiC_ now just imagine if @aarthificial would do a 30-minute long coding adventure!
@@samhblackmore I would watch it
I am blown away by just how insane your code structure is. It's like you're 10 steps ahead of your own programming, making every feature into a complex, yet flexible and efficient structure.
I try to follow a similar philosophy in my own code, but after watching your videos I can only awe at how much more I have to learn.. And don't even get me started on the video itself...
Always love when a game makes tutorials opt-in and doesn't do them in an obnoxious way that locks you in place while the NPC talks and then forces you to do something specific. That ability to just walk away mid-conversation is so underrated!
I love how intricate and clean everything you put into this game is. It's not common to find people talking about how they work on their architecture, so seeing channels like this always makes me intrigued on what there is. Have a great time with working on your game!
Thanks so much!
I've been watching your videos for a while and also making an event-based context-aware dialogue system based on the GDC talks you mentioned... And somehow I never saw this video! You solved every difficult aspect of this really elegantly and the tool looks great!
Yayy, new vid!
Love them!
Your devlogs are such a breath of fresh air. I havent found any devlogs that explain games systems as well as yours and most devlogs anymore are spent talking about non devlog stuff like making a coffee or going for a walk.
A day when aartificial uploads is a good day. It’s great to see how much care and thought you put into this game
Finally, a video!
I really like the way you handle your codes. It gives me a lot of insight
I love the interaction and immersion these dynamic dialogues add to your tutorial
Amazing job! Every video you put out, I'm astonished by the amount and quality of work you put into your game. I feel like a half-assed amateur, watching you.
Have you considered selling Typewriter on the Asset Store, once you deem it reasonably finished? I'm not a fan of third-party assets, but if I were looking for a dialogue system for Unity, I can totally see myself buying this.
Thanks!
Like most of my tools, I'd like to release Typewriter as an open-source package. The only problem right now is that I don't have time for maintaining it so it'll have to wait a bit
@@aarthificial im so fascinating by your concepts. I really want to see how you implement these concept to real codes! waiting for you to release the package :)
@@aarthificial I would really love to see how you made all those editor tools 😁
I just love your dev logs. You’re not just doing things, you’re showing us how you did them and even teaching us about them.
This is super cool, love that it’s letting you play freely during dialogue!
Absolutely amazed at the quality of your devlogs. Inspiring!
smh, youtube recommendation did not notify me of this one in time
on the upshot, now I have two glorious aarthificial videos to watch :D
Your videos are made so well. I literally get excited when I see them, because I know they'll be worth my time (:
The explanations are great, love those videos
Love this! I've been making a custom tool for doing something similar in Unreal for a while and I've struggled a bit on how to organize the tool. Love the look and simplicity of yours! Can't wait for more vids on Typewriter and see its inner workings.
I get so excited watching you talk about systems you built for the game, they're aways so cool and the editing is just on point! Thanks again for making these videos
very cool. Tingles the brain with excitement.
This channel deserves way more subs. Quality work!
This tutorial is so thought through and well explained. So on point with the animations too. I dont even make games and found this entertaining, good job.
Never ceases to inspire several heated, fascinating conversations in and outside my head lol
you really have a talent for explaining these very technical systems in a very human way. subscribed!
Great to see how you're implementing conversations!
Another amazing devlog! This is going to make a fantastic game
That looks very impressive. Can't wait to see what you do next
This is incredible intel. I'm very inspired.
This is just amazing. And the way it's explained is simple but insightful.
Thanks so much!
Great video as usual. I feel like I learn new things with each video. :)
some amazing work as usual
its unfair how smart you are , you inspire me ALLOT as a developer , thanks for the amazing content
I’m so excited to play this game!
Every one of your videos opens my eyes to a new way things can be programmed.
Great stuff as always!
Very cool and inspiring video!
This is wonderful.
Still waiting for this project to be published. Not even for use in my projects, but for a deep understanding of how such a system can be coded.
The real question I have is how did you make that sweet unity UI for searching for those event entries at 3:22? Is event entry a scriptable Object? Anyway good stuff! Can't wait for the next video!
such high quality editing
finaly!!!!!
i really enjoy your vids
Thanks, I'm glad to hear that!
I've personally firewatch and didn't even notice such a feature. I guess it really does make conversations more seamless. also just a great game in general
Wow this is totally amazing! I also loved reanimation! Is there any chance we will be getting typewriter on your github too? I am so in love with the tools you created for your games! You are a great help for the Unity Community!
Thanks! Yes, that's the plan, although it may take a while do to my lack of time™
Would love a tutorial or breakdown on how you put together your editor UI's.
i wanna play this game soooo baaaad. this is excelent work my friend! keep it up
Thanks so much!
Impressive system! :)
Thanks!
was doing work, this is more important
As always that's awesome !
Love the editor UI. I guess you used the new UI Toolkit, would love a breakdown :)
Also does the search dialog popup is a build-in one ?
Great work !
Thanks!
Yes, the search dialog was done as a property drawer, so I could use TreeView from IMGUI
I love your dialogue system, is there any way you could make a tutorial on your VODS channel like you did with the other cool one
Super interesting! :D
HAHA, gosh darnit dude! I was going to make a video about this and my own implementation on the Elan Ruskin dialogue system, but then you go ahead and make something even better.
Amazing work, but damn. 😅
You've gained my respect by talking about Naughty Dog.
I'm very impressed by the potential of Typewriter. It's very adaptable and seems to be very scalable also.
Getting more technical, I have a question: how are you able to reference Events in your Rules or the Interaction Handle in the inspector? How are these Entries defined? How can you create them and then reference them uniquely across Unity?
So, tldr, to make context aware dialogue you still have to script every situation you can think of manually. There are just tools and methods and stuff to make the workflow easier.
I love this system!
Do you plan on publishing the typewriter program you made? I think a lot of unity developers would be interested in using it, and you could probably make a lot of money off of it if felt like it!
I didn't even know you were able to create your own UIs in Unity for custom tools. Very neat. Did you have to create Typewriter as a Unity plugin, or is Typewriter just part of your project?
As always, short, information++
How does this compare to Inky? It can also do context-aware branches using variables. It, imo, also seems a lot simpler than handling events, you just type something similar to very basic pseudocode in plaintext files. I have no experience with either solution yet, but a dialogue system is soon on my todo list.
Also, good job on the videos! Very high quality, enjoyable and informative. I always find myself watching these far too late at night as i just get hooked!
Can’t wait until the game is finished
At this point i dont even care what the game is gonna be, look or whatever. I'm gonna buy it just because these videos are just amazing, high quality content that not only shows the work and dedication but also would help others to create their own things. Simply amazing dude keep going
Thanks!
Amazing video as always! What do you use for animations etc. ? They are so clean and well made..
Thanks! I use Illustrator and After Effects
My god, could you imagine a Phoenix Wright-type game which allowed you to solve cases through a wide variety of routes using a robust dialogue system like this?
It looks nice, but terminology can use some polishing,
- Fact, Rule, Event doesn't share any domain, you can understand termins separately, but they don't act as whole
- What you call "Rule" is in fact "Action", but should be called something domain specific, lets say Dialog. Rule as termin is more a part of criteria.
I'll make an example from different area: Imagine you have a cart in online shop, then there are a collection of promotion, that are eligible for application. Each promotion has collection of rules (cart total exceeds certain amount, cart contains at least one product from certain category) and collection of actions (do a fixed price discount, do a percentage discount, add a complimentary gift product).
So a propasal is to have something like that:
DialogEntry extends ActionEntry and has collection of rules(criteria) and collection of actions (modificator, execute)
Hey, how did you create the selection popup for events in your system? I really could use a system like that in my project.
You editor tools just look so well organized, do you have any tips or resources I could look at?
Amazing work! Could you make a video on Serializing bool functions the way UnityEvent does it with voids?
I'm not sure what you mean exactly.
UnityEvent serializes functions by storing the method's name and then using Reflection to find it. Is that what you're referring to?
Also, by "bool functions" do you mean a function that returns bool or a function that takes bool as a parameter?
How do you link the behaviour that a rule should execute? For instance, RuleA triggers a dialogue but Rule B triggers some noise to reproduce or a cutscene, how do you do that?
Great content!
Hi there, love your work. I thought you would appreciate being told that at 0:24 there's a small typo in dialogue "straigth" instead of "straight". Very nitpicky, so keep it up!
Sorry, then 0:35 "breake" instead of "break" - not like anyone cares about spelling when it all looks so awesome!
Thanks so much!
Yeah, I think there's a few more mistakes, especially when it comes to punctuation.
Don't worry though. I haven't really started writing the game yet so all these dialogues are more of a "programmer art" and will most likely change in the future
Amazing video. Do you use Odin for your custom inspectors?
Thanks!
No, it's all done with Unity's new UI Toolkit
@@aarthificial Wow, I've dabbled with custom inspectors myself but this looks absolutely astonishing! Keep up good work!
I love the dynamic dialog concept, plus your pixel perfect scrolling, seems like it's turning out to be a cool game. What platforms is this coming out for? I would love this on Atari VCS
Thanks!
I haven't thought this far ahead. Windows and Linux for sure, we'll see about other platforms.
The new Atari doesn't seem to be too difficult to relase onto though
@@aarthificial if you do that I'll definitely support it. I'll find you on itch anyway. I'm a musician and dabble in game creation myself
Interesting and flexible realization.
How about adding graph presenter of this system, so you can more easily handle the dialog flow?
Thanks!
That was the plan initially, but Elan Ruskin changed my mind (clip):
ruclips.net/user/clipUgwkneKnSZnjMGj1kFp4AaABCQ
And after making this tutorial level, I don't really feel like I need a visual tool
That's sad
Also, how do you store the dialog files?
Is they are hardcoded to the prefab or you use files?
Is there a tutorial explaining how to do it? Or source code to study?
Was the UI done by hand with Unity libraries or did you use another tool like Odin? Very cool system..
Thanks! It was done with Unity's new UI Toolkit
cool
Your videos are great and I think you deserve more views. Have you thought about posting something on reddit? I'm sure people will love it.
Thanks!
I used to post on reddit a bit in the past.
Unfortunately, for me, posting on social medias tends to be really stressful, and since growing this channel is not my priority, I don't do any marketing like that so that I can focus on the game more
God like...
Is Typerwriter public? I would love to use it but I can't find the link anywhere (:
god
Great, I no longer need friends to talk too
Instead of strings, use struct with string in it - that represent this id. This is much robust and agile method compare to strings.
I'm using keys that are integers because there's lots of dictionary lookup that needs to be done to test all the rules - and strings are much slower for that.
Elan Ruskin in his talk goes into more technical detail on why strings are generally a bad idea in this case
@@aarthificial yeah, this is true, but point that you can change how struct is works in their guts, so your struct can be as fast as integers. And you can do that _later_, when you get problem with their performance. As example, you can calculate their hash when they created, and save that hash to variable that will be used when calculated hash for dictionaries. Or can replace string completly for hash calculation and does not save them at all. You will create your ID with string, but after that it will be works as integer. Just a little trick to make the code cleaner.
This is how your Events is represented. I think :) id and their humanreadable name.
Yes, like I siad in the video, entries are objects that contain an id. I'm not using structs because these entries need to be extended.
Still, calculating the hash when a string is created would be nightmare because there is no way to prevent collisions.
@@aarthificial I am sorry for replying 11 months after, however I was wondering: when you say the entry is an object, do you mean it inherits from UnityEngine.Object, or is it just a normal class?
God damn
What language (+platform) are you using for development?
It's Unity, C#
Unless you mean something more specific?
@@aarthificial thanks! Yeah that’s what I mean. Just started learning C#, looking forward to do cool stuff with Unity too :)
Ajsohebdodowuhe it's so fascinating to see people make game systems. It's like a weight has been lifted off my shoulders as I imagine how much easier it's going to make the development process later. 🥵🥴
So it is basically a state machine with extra steps.
Good work tho
In theory, every computer is a finite state machine.
Therefore any program that runs on it is just a finite state machine with extra steps
@@aarthificial well that’s pretty true
I don't see why one shouldn't just use yarn spinner?
One should use whatever they want
half-life 2 lost cost and alyx has this type of system
Typewriter should be polished & released to asset store, there are many dialogue systems on asset store but all of them poorly implemented.
Interesting, but i wish i didnt try to recreate it, just wasted time (
I'm gonna say it again: if you end your video with "and if you want to learn how to do this for yourself, pay me all the moneys in the world" I'd pay it.
First