Пікірлер
@CaptainBlackSea
@CaptainBlackSea Күн бұрын
thank you
@legendarybanditmb
@legendarybanditmb Күн бұрын
doing these kinds of "post-mortems" are SO helpful! it's kind of like Step -1 for whatever your next project is. The cycle continues! :)
@WarspawnOG
@WarspawnOG Күн бұрын
oh yes... everything always takes longer than you think comes up constantly. the full spectrum from "oh this project will take 3 months (1 year)" to "fixing this bug will take me 15 minutes (4 hours)"
@LlamAcademy
@LlamAcademy Күн бұрын
😆 that “fixing this bug” is me SO many times!
@SunSailor
@SunSailor Күн бұрын
If working in a bigger team, you must even expect team members, who refuse to touch prefabs, scriptableobjects or such at all.
@drake_eric9799
@drake_eric9799 Күн бұрын
i like your video more on scriptable
@drake_eric9799
@drake_eric9799 Күн бұрын
do you have scriptable video for inventory system
@LlamAcademy
@LlamAcademy Күн бұрын
I do not 😟
@zivv1147
@zivv1147 Күн бұрын
I really like your tutorials. They are of the best ones out there. I want to add a wishlist to your tutorials - that you will make a tutorial about google analytics (Firebase). That is how to to setup custom events with parameters, how to test its working, etc. I've been searching for ages and still haven't found good and up-to-date tutorials about it.
@kuraikage15
@kuraikage15 Күн бұрын
this video is a life saver. Thank you so much buddy. Very well explained
@oredi
@oredi 2 күн бұрын
Those states, affect only that list? I usually don't use it, but it seems those NEED the list to work. Is that the case? Ty for the video btw. <3
@SAAVYentertainment
@SAAVYentertainment 3 күн бұрын
Thank you so much is very straight to the point (y) I'ive been looking to how to map one key (E) to a screen button, its very simple but there is no documentation or something about it Thank you
@daslolo
@daslolo 4 күн бұрын
red hair = 12% cooler
@mattg1345
@mattg1345 4 күн бұрын
Are you using the Unity Third person controller along side this?
@LlamAcademy
@LlamAcademy 4 күн бұрын
Yes that is the base for the movement and the model
@raifazhar9727
@raifazhar9727 4 күн бұрын
Sir, I want to know know how can we fix the joystick to bottom left side of the screen. I tried to get the position of reactransform and then used RectTransformUtility.ScreenPointToLocalPointInRectangle but it did not work.
@LlamAcademy
@LlamAcademy 3 күн бұрын
If you want it to be fixed to bottom left you can just anchor it there on the Canvas and not move it around at all
@raifazhar9727
@raifazhar9727 3 күн бұрын
@@LlamAcademy but how to see if the user touch at the joystick because now we are not comparing with screenwidth/2f
@certilremy
@certilremy 4 күн бұрын
Can you help me? I follow your turtorial, I completed all the step, it works perfect on my laptop. When I move to my iphone, I manualy add all the product to app store. i get this error on my xcode logs : "Purchasing failed to initialize. Reason: NoProductsAvailable. More details: No product returned from the store.". Do i need to wait for my app aproved to test it on my iphone?
@sakeb1
@sakeb1 5 күн бұрын
how am i only finding this now???? what
@fabioxperuggia
@fabioxperuggia 5 күн бұрын
You should have shown how the code works and how to call those agent variables.
@gerarddiazvidal5121
@gerarddiazvidal5121 5 күн бұрын
shadowmasking the lights should avoid the shadow popping, would that have a noticeable impact on performance?
@khurum
@khurum 7 күн бұрын
Animation Rigging supports Generic IK now!.
@garethdenyer21
@garethdenyer21 7 күн бұрын
This really got me started on making something that would select particular items in a spreadsheet-style grid on teh UI.... thanks so much!!!
@davidschmitt9210
@davidschmitt9210 8 күн бұрын
Great tutorial! I really liked that you offered both a code-driven approach and an inspector driven approach. The 2017 Unite talk is geared toward studios that have dedicated designers with an emphasis on inspector use. Your guide is very balanced, showing how the inspector setup is an optional step beyond what can already be done in code! Thanks so much 😁
@salmanalfarisi6678
@salmanalfarisi6678 8 күн бұрын
i've watched a lot of people discussing about scriptable object, i never understand what case it can be use for, but i watched this video, and it gives me an idea about how to use it, and i've been used scriptable object since then, thank you Liam academy, thanks, love you, wish all your dream can become true
@RimuruDev
@RimuruDev 9 күн бұрын
Cool
@pirateskeleton7828
@pirateskeleton7828 10 күн бұрын
Behavior trees are still state machines, however it organizes the states by hierarchy and goes into sub-states. You can massively increase the scalability of a state machine by creating sub-states. There is no reason anyone would have to define every single transition condition between every state.
@MalikenGD
@MalikenGD 10 күн бұрын
The main issue I see with this approach is the number of scriptable objects you then have to create and fill your project with, one for every single event you could need. You mention when reaching for a static class it's because you want something fast, not scalable, but I look at 100s of potential scriptable object event channels and see that is not scalable. Really surprised you went from an event bus to this, but I get the rationale, just not the solution. Good video, and great way of explaining generics. Never seen it explained that hand-holdy before, and I'm sure it helped someone stuck on the concept
@criminalbotanist
@criminalbotanist 11 күн бұрын
Man all this AI playlist is incredible. I followed and made projects with many of the examples you show. Truly appreciated! If i wanted to make a everyone vs everyone king of the hill type of game, where we had the player and 9 AI agents, all fighting and pushing each other to stay on top of the hill for the longest time, could i simply modify this GOAP system? Here's an example of the desired end result: kzbin.info/www/bejne/pXWqmKqBgKx8psk
@LlamAcademy
@LlamAcademy 9 күн бұрын
You can absolutely use GOAP for the AI Agents on a King of the Hill game. It's all about setting up the goals, potential actions, and knowledge the world! :)
@maitrykotak3703
@maitrykotak3703 12 күн бұрын
why u take same animator controller in player n enemy?
@LlamAcademy
@LlamAcademy 12 күн бұрын
For ease of use for the tutorial 🙂 they’re all doing the same thing so I just reused the animator.
@worldkho
@worldkho 12 күн бұрын
I keep coming back to this video thinking how I would implement this but I cant figure it out. I'm thinking of doing a periodic check of all units in the scene to check the closest point around the player it can move to. However, it can be clunky and very costly in performance. I just want to have the my horde enemies to at least try to find an open spot around the player
@LlamAcademy
@LlamAcademy 11 күн бұрын
For hoards I think you are better off with a “manager” of some kind that sets the destination for the AI. That way you don’t need dozens or hundreds of agents all checking periodically
@Strangertoyourlife
@Strangertoyourlife 12 күн бұрын
1. Before uploading to the In-App Products tab you will need to set up your payment profile , you don't need to be registered as a legal company also 2. If you cannot get your csv file uploaded correctly (mine was saying there was no default language) , the only solution I found was to manually enter them into the In-app Products page
@SebastianZoellner
@SebastianZoellner 13 күн бұрын
It is not entirely clear to me what the benefit of using a events bus is over using the standard system events.
@LlamAcademy
@LlamAcademy 11 күн бұрын
What do you mean the “standard system events”?
@brickch4pel
@brickch4pel 13 күн бұрын
The funny thing is, I've been trying to learn how to use the Jobs system via implementing it into the LOS system I had and failed miserably because I didn't know the caveats of needing unmanaged resources lmao ---- Then this video popped up!
@anonymous49125
@anonymous49125 13 күн бұрын
I was really skeptical clicking on this video - I'm historically not a fan of SO let alone using them for events (as that has become popular lately to do)... but right off the bat, you talk about high coupling and you explain really well that it lowers dependencies on other scripts. Very compelling when put in those terms. I'll likely still use delegates for most of this stuff (from monolithic singletons), but honestly, you make a really strong point in this video and for that I enjoyed it greatly!
@MalikenGD
@MalikenGD 10 күн бұрын
It's funny, your use case (monolithic singletons) is the exact reason we've gotten to the point where we need solutions like this.
@maitrykotak3703
@maitrykotak3703 13 күн бұрын
this tutorial is awesome....having one problem is that bullet clone is creating but they all are inactive..ranged enemy come closer to our player but no bullet is generated...
@rocketB343s
@rocketB343s 14 күн бұрын
is it ok to follow this tutorial without text mesh pro? ,since i don't know how to use it
@LlamAcademy
@LlamAcademy 13 күн бұрын
You can, but the way we interact with the text is not the same with TextMeshPro versus the standard text component. I highly recommend to use TextMeshPro instead of the standard text because it looks much nicer and has more functionality.
@rocketB343s
@rocketB343s 13 күн бұрын
@@LlamAcademy K thanks
@Sethizback1
@Sethizback1 14 күн бұрын
Thanks! A very helpful example of using static classes. In my project individual units had to be registered with appropriate manager classes on enable and that caused a lot of headache to manage. I will try to move most of this logic into the event bus system you've explained and hopefully adding more particle and sound effects events in the future will be much easier. The TODO list keeps growing, no matter how many refactoring passes I do...
@LlamAcademy
@LlamAcademy 9 күн бұрын
Make sure the refactoring passes are helping you deliver value to your game. Eventually "good enough" has to be good enough and move on 🙂.
@joaopedromonteiro2517
@joaopedromonteiro2517 14 күн бұрын
In a real world scenario, would you use this buses only in events that connect different systems/unrelated parts of code? I do use a lot o Actions in my code, and many of those are to bind together closely related scripts, like the Player triggering some small events that are used in other scripts of the same hierarchy. In these it seems like it'd be and overkill to create all those classes.
@LlamAcademy
@LlamAcademy 9 күн бұрын
It depends on the complexity of your game. If what you have is working well and scales to the level you need it, you're good! If you find out some of those events need to be listened to by other scripts, you may consider refactoring those to a global event bus with one of these 3 methods.
@rofu8096
@rofu8096 14 күн бұрын
Who me?
@LlamAcademy
@LlamAcademy 14 күн бұрын
YEESSSSS YOU! 😁
@dreamisover9813
@dreamisover9813 14 күн бұрын
I've been using something similar - just in code without scriptable objects. But it has been really convenient for decoupled logic and avoiding logic from breaking when certain other objects don't exist in the scene
@darryljf7215
@darryljf7215 14 күн бұрын
I searched for Unity animation controller interruption source because I needed to get an animation to interrupt and found your video. Nicely explained. I understand it now. And it will help me interrupt some of my animations. I'll check out your videos too.
@ToughAndGrittyOpGrunts
@ToughAndGrittyOpGrunts 14 күн бұрын
Thank You !
@halivudestevez2
@halivudestevez2 14 күн бұрын
you just overcomplicate simple things.
@halivudestevez2
@halivudestevez2 14 күн бұрын
sounds great for the first glance, but in real, it's bullshit. Bus< ??? you have to find out, look thru your 1000 code finding out what to write here. While "Bus. <-- innellisense helps you, and you are more productive.
@halivudestevez2
@halivudestevez2 14 күн бұрын
I'm trying to avoid assigning events in inspectors: these assignments are easy to loose, they also fall apart if you add more parameter to the event. They are also untrackable, and hidden from the code aspects: you cannot track doen, why that event happens. I ban UnityEvent-s from my code as much as possible, and go by System.Event. More stabile.
@halivudestevez2
@halivudestevez2 14 күн бұрын
I have many criticizm about this approach, since I solodev and has negative, real-world experiences...
@LlamAcademy
@LlamAcademy 14 күн бұрын
Yup. If it doesn’t work for you and your workflow, don’t use that approach!
@sadbuttrue666
@sadbuttrue666 13 күн бұрын
@@LlamAcademy Shouldn't it be quite easy to solve the problem with the messaging approach? It would only be necessary to insert a message in the base class, which is given to each event and can be read at a suitable point. I currently use the signal system from DoozyUI and it does exactly that. Each event also has a message payload. There is then the SignalConsole and the StreamsConsole in which all fired events are displayed.
@Briezar
@Briezar 11 күн бұрын
I have the same approach as yours; if there's a Button component that needs to register click events, I'd create a reference to that Button and hookup from code instead. But then I am a programmer, I have the option to do that. It doesn't apply to designers who shouldn't be touching any codes.
@halivudestevez2
@halivudestevez2 14 күн бұрын
why SciptableObject for this? I have a MonoBehaviour for eventbus, for LevelEvents.
@LlamAcademy
@LlamAcademy 14 күн бұрын
Why do you need a MonoBehaviour for this? You do not need a GameObject nor the lifecycle methods like start/awake. 🙂 there are many ways to approach a problem. In this video I show a typical standard C# one, and two that Unity themselves have suggested in their e-book.
@franciscooteiza
@franciscooteiza 15 күн бұрын
How old are you? Maybe 30 or 35? You can't have more than 20 years of experience as a programmer.
@halivudestevez2
@halivudestevez2 14 күн бұрын
he worked overnight, too
@LlamAcademy
@LlamAcademy 14 күн бұрын
Well if we take either of those numbers 30-20 = 10. There are plenty of kids programming at 10. 35-20 = 15, people are taking boot camps at that age. I started programming in the late 90s with Visual Basic.
@shpoinkervr
@shpoinkervr 15 күн бұрын
i cant even get polybrush to begin with
@ragerungames
@ragerungames 15 күн бұрын
great tutorial. nice and easy to understand. thanks
@dibaterman
@dibaterman 15 күн бұрын
Sadly Godot doesn't have static actions or delegates, in there we use signals which are really convenient in their own right. I had made an event bus and made a event system which all signals emit a object Event which contains a type String and variant data (dynamic data). This isn't too bad but in bigger projects I am thinking this isn't good. So I was thinking of going with exposing the event bus via using Resources (Scriptable Objects) and putting a signal in that. Not sure... Regardless another neat thing is a broker pattern where you can get back the other end of this system, this allows for sending lamda's to handle logic inside of a broker which works independently of the origin or even the thing using the broker. So if I have say Attack and it's 0 at base but I equip a sword with 8 attack, the attack getter simply needs to return broker and whatever identifier the parameter is subscribed with to return 8. This stacks with all modifiers and I can even get a list of all modifiers and their sources since the broker knows all XD. I recall in Unity not enjoying the event channel workflow, it made it feel like drag n drop hell.
@kadircalloglu2848
@kadircalloglu2848 15 күн бұрын
its look like zenject event system
@Daeniak57
@Daeniak57 15 күн бұрын
Bread
@sealsharp
@sealsharp 15 күн бұрын
🍞
@Daeniak57
@Daeniak57 14 күн бұрын
@@sealsharp Bread
@dbweb.creative
@dbweb.creative 15 күн бұрын
Can you please make a video about saving/loading player inventory, where items are ScriptableObjects. I understand that one way to go about it is - items have to be serialized by their guid or by some sort of another id, and then maybe lookup tables or something. This way there needs to be a way to scan and add SO items to lookup table in the first place... Basically I don't know which way to go about handling this whole topic, please ponder this topic in a video, thanks.
@sealsharp
@sealsharp 15 күн бұрын
Here's my "scan for all ScriptableObjects of a type" method. public static List<T> GetAllInstances<T>() where T : ScriptableObject { return AssetDatabase.FindAssets($"t: {typeof(T).Name}").ToList() .Select(AssetDatabase.GUIDToAssetPath) .Select(AssetDatabase.LoadAssetAtPath<T>) .ToList(); }
@publicmmi
@publicmmi 15 күн бұрын
Like always, a great video! Thanks :)
@LlamAcademy
@LlamAcademy 15 күн бұрын
Glad you liked it 😁