First time seeing this. I was surprised by how human like this is seeing as your pixel density is so low. It's impressive.
@aarthificial
3 жыл бұрын
Thanks! That's why I love pixel art
@goldenspirit3369
2 жыл бұрын
dude you are the best problem solver there is. u see a problem and you fix it. the most detailed problem solver there is! love your videos, you sir have earned a sub!
@ptinosq
3 жыл бұрын
The quality of these videos is amazing. Such a pleasure to see you come up in my notifications!
@akifdur702
2 жыл бұрын
I know this is an old video but I wanted to say thank you this really helped me out.
@HaxorBird
3 жыл бұрын
Thinking like this while doing game development is my favorite. And you provide the perfect dose for new ideas. Keep it up!
@drac.96
3 жыл бұрын
Wow, the explanation of the strategy pattern using those beautiful illustrations is so awesome! Great job.
@DArK-xj8lr
3 жыл бұрын
U know it's gonna be a good time on KZitem, when Aarthificial uploads
@wintercoldfront
3 жыл бұрын
I look forward to these videos. I always click on them whenever I see one posted. Thank you for your interesting problems and clear explanations.
@semmu93
3 жыл бұрын
your presentation skills are mind blowing
@aarthificial
3 жыл бұрын
Thanks!
@TheCrazyLunatic8
3 жыл бұрын
Your voice is pure ASMR.
@rhetorical_
3 жыл бұрын
Wow Aarthificial, your videos are top notch as always! Thank you for posting :D
@TotalPwnage777
3 жыл бұрын
Super informative video. Thanks! 😁
@nightwintertooth9502
2 жыл бұрын
This is very interesting. Ive done an assmembly line system siniliar to this for a custom network replication library that works in Unreal. The fundamental concept is the same. My contractor has no idea how it works. But our tester thanked me for making things so modularly. We needed custom replication with actor state to only upload some things to playfab tiledata thats been serialized, not entire actors. Playfab checks these with cloud script against the previous five frames of activity, it sends the object straight through our flask api running in a docker container alongside for physics based gpu accelerated bits. Theres literally no way to hack this system because the cloud provides physics correction every five frames to a modified client. But this also required quite an expensive nvidia grid conrainer to allow our playfab instance to run gpu sinulations and check them against client data. I really like this system. Having the grid conrainer was a very good investment. No matter how much a hacker tries, detatching the systems and coupling them together over the cloud ensured low network bandwidth over an active socket and zero chance that modified client data made it to the player controller thanks to the decoupling and the ability to interface out the physics portion of the equation to a network api call
@nervymountain3109
3 жыл бұрын
That's a great way to do it, and you explained it really well! Love your content man!
@aarthificial
3 жыл бұрын
Glad to hear that!
@syneydesign
2 жыл бұрын
You are way too underrated
@ikizlerlebirgun7119
3 жыл бұрын
Absolutely exciting
@PolycatGames
3 жыл бұрын
It looks very cool!
@fleity
2 жыл бұрын
Can you elaborate a bit more on how and why you set up the provider as a scriptable object instead of as a regular instanced class?
@Soundy777
3 жыл бұрын
Adore your work! Keep it up
@feliscape
Жыл бұрын
How does the Input Provider get the Input Middlewares? It doesn't really make sense to serialize them in the Scriptable Object, since that wouldn't work with things like AI. Does the GetState function need a parameter for that?
@kiririn39m8
3 жыл бұрын
This is fully functional ECS system
@davidegelhofer2257
3 жыл бұрын
Great video! One question though: You said it is advisable to implement input providers as scriptable objects, so how do you manage the necessary references to the input/dialogue/navigation system etc? A class receiving playinput would need to derive from a monobehaviour and from my rather limited understanding of scriptable objects, they cannot hold references to monobehaviours.
@eboatwright_
3 жыл бұрын
Amazing! :D
@ChrisLeeW00
2 жыл бұрын
personsonable me holding a gun to a mushroom: tell me the name of god you fungal piece of shit mushroom: can you feel your heart burning? can you feel the struggle within? the fear within me is beyond anything your soul can make. you cannot kill me in a way that matters me cocking the gun, tears streaming down my face: I’M NOT FUCKING SCARED OF YOU miaislying Hey OP? What the FUCK does this mean? personsonable decay exists as an extant form of life miaislying That’s a terrifying answer, have a nice day
@TripleA737
Жыл бұрын
I have a question about Astortion, can it also work in top down games?
@ZooHair
3 жыл бұрын
What software do u use for the motion graphics?
@aarthificial
3 жыл бұрын
After Effects
@lucasmontec
2 жыл бұрын
No no no! Not: Input System PlayerMovementController/AnyOtherInputDrivenController So you can: Any System -> PlayerInputController -> PlayerMovementController/AnyOtherInputDrivenController This way, taking control is just disabling the player input. This can be easily done with an input controller stack, where the top element is the only one that can control the player. This way any UI interactions are also just a stack entry to disable player input.
@Rih4rd_dota
3 жыл бұрын
€49 PER MONTH aww, it's les than 50 :/
@hashimoto128
3 жыл бұрын
Hey, I don't know if you realized but once you've decoupled Inputs from Actions, this Input may come from ANYWHERE: a controller, an AI brain (as you said), but it may also come from the internet (leading to multiplayer/remote playing) or a file (leading to replays/TAS speedruns). Awesome work 'til now, by the way. :)
@aarthificial
3 жыл бұрын
Thanks!
@thepro4805
Жыл бұрын
@@aarthificial ohh i would LOVE to TAS it it sounds amazing
@capsey_
3 жыл бұрын
I love how these videos are short and yet very dense with information and doesn't play with viewer like with a child that just opened Unity for the first time
@RoffeDH
3 жыл бұрын
This video should have ended: "If you want to learn how to program something like this, become an 'apprentice' tier supporter on my Patreon before," bla bla date, "and watch it." That would have sold me in a heartbeat!
@codinginflow
3 жыл бұрын
you've just earned a new fan man
@AngusJMcGregor
3 жыл бұрын
always feels so interesting seeing how you go about these kind of problems, I love seeing how different kinds of systems are set up in relation to each other
@Dastmema
3 жыл бұрын
Everytime I saw this guy I'm wondering "why their animations are so clever?" And stay watching because they're entertaining
@coyo_t
3 жыл бұрын
Also don't forget that this kind of system can be used for demo recording/playback, DOOM style (along with a few other objects to save and load state variables like random seeds).
@galbenshire3463
3 жыл бұрын
This is something I feel isn't discuss often when it comes to game development. You can find many tutorials on player input, even on how to decouple it from your game objects, but they rarely go over when you might want to temporarily take control from the player, for things like cutscenes. So this is a great video to find. If you don't mind, I do have a question: You recommended the InputProvider to be a Scriptable Object. But would the Input Middlewares also be Scriptable Objects? Or would they be some form of global instance?
@aarthificial
3 жыл бұрын
It depends on how you want to set up your middlewares. If you want to register them dynamically, from code, then you can just make an interface for your middleware and register whatever object you want. But if you want to have a serialized list of middleware then they need to be scriptable objects. In Astortion, for example, middlewares are monobehaviours registered during OnEnable. It makes sense in my context because most systems are not global and are represented by components in the scene. It also makes it easy to integrate with the new input system. You can create an object with the PlayerInput component and another component that will serve as the middleware.
@feliscape
Жыл бұрын
@@aarthificial How exactly are the middlewares registered? In my implementation I have them registered in the scriptable object, but that means it wouldn't work with AI, because then I would need an extra ScriptableObject for every enemy instance (or at least I think)
@SuperGamersgames
3 жыл бұрын
Dang it! You’re making me want to make a devlog series now.
@aegeanviper73
3 жыл бұрын
You should go for it!! Devlogs are a great way to track your own progress as well as teach others solutions you find for problems and others (including myself) would love to see it
@0bmerlin
3 жыл бұрын
Coming from a functional programming background, this is really interesting. I'm not really used to OOP and game dev yet, so this shows me how to do things properly. Love the visualizations, keep it up!
@tiagoalmeida2194
2 жыл бұрын
Is there a code example or a video where this is a bit more detailed? This is a great video for people who are familiarized with the concept of interfaces, event providers and subscribers. Plus, the chain of responsibility took me completed by surprise xD
@n8dev
3 жыл бұрын
really interesting stuff!
@ikizlerlebirgun7119
3 жыл бұрын
Our little channel has grown up and is now able to keep this channel with the money coming from his fans. Keep working, we will always support you!
@aarthificial
3 жыл бұрын
They grow up so fast :') Thanks so much!
@ikizlerlebirgun7119
3 жыл бұрын
@@aarthificial Thanks for reply. It is an honor for me. I am looking forward to see more astortion devlogs and other useful videos. :D
@HAWXLEADER
2 жыл бұрын
I made something similar in my game just because it felt right. I had a SetInput command for my player controller that it'd forward to the player movement or the mounted vehicle accordingly. This input was used by both the player input provider and the ai input provider.
@alexanderosinubi5154
3 жыл бұрын
Another video, finally!
@JoeldaSilvaVicenteFilho
2 жыл бұрын
man, I would love to see an implementation of this, I'm trying to incorporate this I'm my game but I think that my existing code is not that compatible, so seeing an implementation would help a ton in figuring out how to approach this
@prodjectz1866
3 жыл бұрын
feels good to be early
@rampaging_teddy
3 жыл бұрын
You're insane! Keep up the good stuff and I'm looking forward to the game!
@ethanlynch3639
3 жыл бұрын
what a fantastic reference there
@icarusgaming6269
3 жыл бұрын
The term I prefer to use is "borrowing" because you should be prepared to give it back at a moment's notice. This is an important part of the design philosophy. Stealing control is called a cutscene. Conflating the two is a good way to make it hard to tell where the gameplay ends and begins, leading to unintentional pacing breaks where the player stands motionless when they're expected to play or try to play when a cutscene is active. COD campaigns have begins infamous for this
@aarthificial
3 жыл бұрын
In Assassin's Creed, when you enter a walking crowd and let go of your joystick, the character will start walking alongside them. Enabling "auto-jump" in Minecraft will jump for you when walking into a block. Entering a safe zone in most third-person games will prevent you from drawing your weapon and/or sprinting. Aiming at an ally in some FPSs won't let you shoot. None of these are cutscenes
@icarusgaming6269
3 жыл бұрын
@@aarthificial Not at all, those are great examples of borrowing because you can either cancel out of them or still control a different part of the game like with auto jump. One of my favorites lately has been Miles Morales' soft camera work that's capable of both automating and following your inputs. What I was trying to differentiate is games that try to give the illusion of borrowing but actually just prevent you from playing entirely. I feel like it's easy to take it too far, so I think using two different terms is a good way to keep the concept in check
@aarthificial
3 жыл бұрын
That's an arbitrary choice of words really. Cutscenes at some point also give back control to the player. I could argue, for example, that calling this "borrowing" implies that you first ask if you can borrow it. Whereas "stealing" can still affect only one aspect of control, like jumping. Still, I get that you're referring to a concept of interruptibility of a certain action/interaction. It's just that I'm not sure if using a different verb is explicit enough to convey that. But even if it is, the concept presented in this video can be used for both stealing and borrowing
@cozyfog
9 күн бұрын
its funny that down at the os (win32 api) level it uses a messaging system like this
@doommustard8818
3 жыл бұрын
Encapsulation is pretty neat!
@wrenmacneil7703
3 жыл бұрын
me, knowing absolutely nothing about coding: uh huh, input providers, of course. Middleware? Yeah I know what that is.
@algs5483
3 жыл бұрын
As always, couldn't really understand anything but I like your voice.
@snesmocha
3 жыл бұрын
i need to figure this out, i have been screaming for 30 minutes
@MadamLava094
2 жыл бұрын
I love it when devs actually talk about decoupled object design like this. I myself am looking to get familiar because my own project would benefit heavily from being based on this approach
@NoVIcE_Source
Жыл бұрын
woah
@dixalex02
2 жыл бұрын
I know your an indie game dev but your videos are also very clean. Thanks.
@early2000skid
2 жыл бұрын
this is so cool, how do you make your graphs and figures btw?
@tommyford1301
3 жыл бұрын
Always happy when I see your new vids in my recommended :)
@kingjawdev8102
3 жыл бұрын
Really interesting stuff you talk about!
@curiouspers
3 жыл бұрын
Can you elaborate a little more in details of implementation?
@ygorperez
2 жыл бұрын
The first thing that I thought after seeing the thumbnail was: "that's not right"
@BastianTop
3 жыл бұрын
Im too dumb for this stuff but it does look very useful 😜👍
@fibulawars
3 жыл бұрын
very cool animations with the explanation
@rjendoubi
3 жыл бұрын
Always enjoy your videos, but this was particularly great - such a beautiful and *fun* demonstration of the patterns in question. I wouldn't want to distract you from making vids on exactly what you're working on and what is interesting for *you* currently... But, I'm sure a lot of people would enjoy and benefit from seeing more examples connecting a high-level and easily understandable game dev situation to a common software dev pattern which can be kind of abstract. It really makes the benefits of the pattern easier to grasp :)
@AdroSlice
3 жыл бұрын
I don't like programming Controllers, Managers, Providers, Factories etc. It often tends to complicate things unnecessarily, for which a great example would be the esoteric FizzBuzz Enterprise Edition project.
@aarthificial
3 жыл бұрын
Cargo cult programming
@Snowdrama
3 жыл бұрын
Can you provide any example code for the interaction shown? I'm curious how it's specifically implemented, for example how does the system that moves the player to the bench know which direction the bench is in? Clearly the middleware needs to know where the player is, and where the target to move to is, so how do you provide that information to the middleware? I'd love to know! I've been trying to implement something like this over the last couple days so any examples would be helpful!
@aarthificial
3 жыл бұрын
It's difficult to share any code because interactions are made up in the editor from small building blocks. My next devlog will go more in-depth on how they work. But the general idea is that the Interaction Manager (which is also a middleware) delegates the Process method to the current interaction. And since interactions are components in the scene, they can be configured from within the inspector and reference other scene objects. In this case, there's a navigation interaction that references some target transform and calculates the correct direction and speed. So the middleware doesn't really know where the target is etc.
@didierdidier-mm3hh
Жыл бұрын
at this point i just want to play the game. can't wait !
@natemyers1791
3 жыл бұрын
What do you use to create these graphics (representations of the code) for the video, and what special things do you do to make everything look so excellent? Superb video, by the way. Long time subscriber; love the look of your game.
@aarthificial
3 жыл бұрын
Thanks so much! I use Illustrator and After Effects and loosely follow material design principles
@natemyers1791
3 жыл бұрын
@@aarthificial Ah, thank you! Never thought to use material design in a video. I’ll have to try it out myself. Cheers!
@marc_frank
3 жыл бұрын
so version 2 will be called Di stortion?
@ilcanalechenonce
3 жыл бұрын
It is so rare to find content about more abstract design concepts.. and delivered so well! Great job!
@aarthificial
3 жыл бұрын
Thanks so much!
@ArkaniproMA
3 жыл бұрын
With every video he teaches us something new, while widening the scope of his project xD. Even though he might just make it easier for the many things he wants to have in his game. I am definitely curios for what is to come 🤗
@djdavidj
3 жыл бұрын
Thank you for posting.
@bucketofcereal3711
2 жыл бұрын
Decay exist as an extant form of life
@TinyDeskEngineer
Жыл бұрын
hey give it back :(
@GRex0o0
3 жыл бұрын
Everything about your videos just leaves me in awe every time! I would like to know about your learning journey, how did you become the artist/developer/storyteller that you are?
@aarthificial
3 жыл бұрын
Thanks so much! It would take too long to answer that but I am planning a video on this topic bc people often ask
@MrHandsy
3 жыл бұрын
You're a pretty bright guy
@EthMiC_
3 жыл бұрын
i know u probably are asked this many times, but how do u edit ur videos. I just started youtube and editing is pain and my video never seems to look good.
@aarthificial
3 жыл бұрын
I use Illustrator and After Effects to create the graphs and then edit the rest in Premiere
@EthMiC_
3 жыл бұрын
@@aarthificial it looks awesome, keep up the great work.
@izerpizer
3 жыл бұрын
What's the name of the song at the end of the video (3:20)? And also where do you source all the songs that you use in your videos?
@aarthificial
3 жыл бұрын
Luella Gren - There Is Something about the World kzitem.info/news/bejne/pmhpun-gnXaloqw I used to think that because I'm using Epidemic Sounds I don't need to credit these songs. But I just checked and they actually recommend to do that so I'll try to add them to my descriptions in my free time. Thanks!
@anonymoussloth6687
3 жыл бұрын
How do u make the animations for your explanations?
@aarthificial
3 жыл бұрын
Illustrator and After Effects
@anderloquero2011
2 жыл бұрын
In spanish tex please
@creasu124
2 жыл бұрын
I was wondering, do those events for jumping for example also work for 2 players locally? or do you need to make 2 events 1 for each that are differently named?
@aarthificial
2 жыл бұрын
With two players you should have two input providers, one for each player. This way the event is implemented once, but there are two instances of it. Each plugged to a different control scheme / input device.
@creasu124
2 жыл бұрын
@@aarthificial i don’t really understand events fully yet but i think i get it. I do find this method interesting, looks very useful for ai controlled characters and maybe even machine learning ones
@offbeatstuff8473
3 жыл бұрын
How do you make these animations????
@aarthificial
3 жыл бұрын
Using After Effects
@Skeffles
3 жыл бұрын
Really well explained. This system looks fantastic for your game.
@arthurgentz2
3 жыл бұрын
This is some really interesting stuff. Though, i still can't wrap my head around each "middleware" has its own jump event, and how 'canJump' is written therefrom. Does each of these middleware have a jump event handler that sets 'canJump'?
@ArielLothlorien
3 жыл бұрын
This was a great video nice and clear but I do have a question! What program did you use to make those code structure graphics?!
@aarthificial
3 жыл бұрын
Thanks! It's illustrator and After Effects
@ArielLothlorien
3 жыл бұрын
@@aarthificial oh you just litterally made them wow very nice and smooth! Did you use a template or just make them from scratch?
@aarthificial
3 жыл бұрын
I designed then myself loosely following the material design guidelines
@Duckamoly
3 жыл бұрын
Nice as always, your videos always are entertaining!
@urdailycupoftea1475
3 жыл бұрын
What do you use to animate? It looks really good! Keep up the good work man (even if it takes forever)
@aarthificial
3 жыл бұрын
Thanks! Nowadays I use Aseprite but - when it comes to pixel art - software doesn't really matter. In the past, I used to work with both Krita and Photoshop and the experience was the same
@urdailycupoftea1475
3 жыл бұрын
@@aarthificial I meant animate the videos! But thanks
@aarthificial
3 жыл бұрын
Oh, in that case it's After Effects and Illustrator
@greatot7429
3 жыл бұрын
Recently just found this channel, I already watched all the devlogs. What I can say is I'm astonished!!!🔥. This is a lot of motivation to keep working on my own game too.
@krawieck
3 жыл бұрын
I love your videos, they are so aesthetically pleasing!
@kimi59
2 жыл бұрын
Your color scheme and general design in your videos look professional and are really pleasant to look at. Nice.
@JackAllpikeMusic
3 жыл бұрын
This was a fantastic video. I look forward to more from you!
@marcbentoy
3 жыл бұрын
Damn! Those graphics, man. Here's a sub!
@bilel114
3 жыл бұрын
A great and elegant solution as always. Thank you for sharing.
@aliceofclover
2 жыл бұрын
i absolutely love all of the work you put into making these videos, as well as your game, but one thing i haven't seen other people point out is the reference to the mushroom post on tumblr when Alice sits on the bench. massive props to that
@krycerkris
3 жыл бұрын
Great video! Clean visuals, concise and clear information!
@noodle-eater
3 жыл бұрын
Awesome dude, I love ur code architecture. I love how you separate your code into different modules and used it
@monsieuralexandergulbu3678
3 жыл бұрын
Really cool vids, lovin'it! Very nice visuals
@r8teful
3 жыл бұрын
Just got recommended this video on my youtube. Just wanted to say that the quality is superb and I'm gonna be binge watching the rest of your videos. Cheers and keep it up!
@aarthificial
3 жыл бұрын
Thanks so much!
@igrb
3 жыл бұрын
loving the animations and the explanations, they get better every video
Пікірлер: 170