Holy crap, I shipped 20 games with various flows and some were terriblle. Now I have more than an intuitive understanding. This is also a video that addresses an uncommon topic, so it stands out from the usual tutorial slop.
@practicapiglobalАй бұрын
@@thygrrr Thanks! We're happy it helped. We're really trying to cover topics that haven't already been answered on KZbin, so we're glad to see we're heading in the right direction :)
@EdenDev17 күн бұрын
Finally a video showing one of the most important design points of the game. It does not matter the scale of the game. This is extremely relevant for a proper workflow. Add a systems pattern together with this and you have room for a large an scalable game.
@practicapiglobal15 күн бұрын
Thank you🙏
@tubanamiАй бұрын
I'm new to unity, but not new to programming, and the things I struggle the most while learning unity are: patterns, best practises, "this code will not scale... how do I fix this??", etc... and your channel answers most of it, I'm amazed 🥰 please keep up with the content and consider offering a paid course or something, I'd definitively hop in!
@practicapiglobalАй бұрын
@@tubanami Thanks so much glad we helped!!
@laurensdesmet70Ай бұрын
Bruh, first video 10 days ago and this channel already goes HARD.
@practicapiglobalАй бұрын
@@laurensdesmet70 Thanks!
@ThisIsNotADrellАй бұрын
You're so easy to understand that even a layman like me can follow your points. Keep up the good work.
@practicapiglobalАй бұрын
Haha thanks!
@zaidi45019 күн бұрын
I needed this video 3 years ago, before i started developing Unity games for iWatch. But still i think this is a must watch for new students looking for advanced game dev methodologies
@GFat11Ай бұрын
Finally!!! Someone how actually teaches you how to design your code and not just how to make demos.
@practicapiglobalАй бұрын
Haha thanks!
@rechnightАй бұрын
Unity 6 (2023.X), there's the Awaitable class to use in place of UniTask/Coroutines.
@practicapiglobalАй бұрын
@@rechnight Thanks! Absolutely our attention is on it. Because it's not released yet we didn't mention it. Though we will now consider adding a note that it exists 💛
@thygrrrАй бұрын
@@practicapiglobalSince years (Unity 2019 or so), you do not need UniTask anymore. Just use the TPL (System.Threading.Task et. al.)
@goehlergamedev5 күн бұрын
How did I never know about this! Please make the next video. I would really love to see how this comes together in a larger project! ❤️
@practicapiglobal3 күн бұрын
Thanks! will do
@MassimoRoughАй бұрын
Ah, such a fresh air to see the unity video without gAmEMANagEr class. Please share the video y’all, channel deserves exponentially more attention!
@practicapiglobalАй бұрын
Hahaha loved your comment, thanks!
@mikebrookens443919 күн бұрын
This channel is criminally underfollowed. Your videos are incredibly high quality. Thank you.
@practicapiglobal18 күн бұрын
Wow, thank you!
@RogueWolf_Dev26 күн бұрын
Wow this is the first video I see showing what looks like an actual production grade initialization flow. I've been trying to work around these issues and since the lifecycle is what's taught in literrally any resource online, something like what you explained felt like going against the "Unity way"
@practicapiglobal26 күн бұрын
@@RogueWolf_Dev Happy this helped! Stay tuned, cus' our goal is to break more of these 'Unity ways' ;)
@ilhamicanparlakdemir9483Ай бұрын
All tutorials are beginner level in youtube and that causes a problem while designing a system at overall. I really appreciate your work, it’s super beneficial. Please continue :)) Here’s a supporter 🎉
@practicapiglobalАй бұрын
Thank you🙏
@furkannarin2844Ай бұрын
this is a beginner level tutorial as well
@petpumpkin26 күн бұрын
This channels gonna go far if content like this keeps flowing. Great stuff, we need more advanced tuts out there!
@practicapiglobal26 күн бұрын
@@petpumpkin Thank you! On it
@OdysseyHome-GamingАй бұрын
Wish I had this video as a starting reference when I was programming my student capstone project. Will be interesting seeing the "To Service locator or to Dependency injection" follow up. Subbed. 😊
@practicapiglobalАй бұрын
Thank you! Noted
@uatarАй бұрын
This is the first channel ever that made me wait anxiously for the next video...
@practicapiglobalАй бұрын
@@uatar hahaha thanks!!
@twiddles12 күн бұрын
Guys, we need the follow-up video! 😊 Keep up the good work!
@practicapiglobal11 күн бұрын
Thanks!
@selgesel27 күн бұрын
I'm not a Unity dev and stumbled upon this video by chance, but I have to say, it's pretty amazing and useful for pretty much all gamedevs! Not many resources out there go beyond setting up a simple scene that immediately runs on startup, and ones that do don't really explain the whys and hows. So kudos for explaining such important code design decisions that make the game actually scale beyond a simple demo!
@practicapiglobal27 күн бұрын
Thanks 🙏
@FractalWanderer25 күн бұрын
Yeah this is a super solid approach. I like the simplicity of it, makes the flow significantly easier to follow. Will be using this in my game.
@practicapiglobal24 күн бұрын
Glad you like it :)
@grzegorzpedrycz2630Ай бұрын
I have seen all of the videos you have created so far, and they are brilliant! Thanks for sharing!
@practicapiglobalАй бұрын
Wow, thank you!
@le_python_manАй бұрын
As a software engineer, it took me years to finish my first game. I was always looking for a clean architecture, and I couldn't find any best-practice resources. Even on small projects, because that's how I code in my job. I'll keep an eye on your content!
@practicapiglobalАй бұрын
@@le_python_man Thanks!! No worries we will definitely focus on clean architecture💛
@practicapiglobalАй бұрын
@@le_python_man Thanks!! No worries we will definitely focus on clean architecture💛
@le_python_manАй бұрын
@@practicapiglobal You're welcome, this video is already exactly the kind of topic I was looking for. If you want a suggestion in the exact continuity of this video it's gameplay loop management. I've learned never to have an infinite loop in my code and when I started following video game tutorials where each object in the scene has its own update()... I've started to manage everything in the same place, but doing so prevents simultaneous processes from existing.
@nowoodz28 күн бұрын
Man! im new at Programming in Unity and the way you explained everything made it so easy to understand 👍
@practicapiglobal27 күн бұрын
Thank you!
@BatonyRobsonАй бұрын
That was unexpectedly deep, expirienced and high quality tutorial👍 Don't expected to find that information online
@practicapiglobalАй бұрын
@@BatonyRobson Thanks! Glad you liked it
@МухиддинМахмудов-б5щ28 күн бұрын
Can't describe how much useful it is to me, thank you
@practicapiglobal27 күн бұрын
Glad it was helpful!
@giacomocali6853Ай бұрын
I hope you gain the subscribers you deserve. Explanations are clear and easily understandable - i recently switched from Unity to Godot but still watch your videos for curiosity, and i'm sure most concepts apply regardless.
@practicapiglobalАй бұрын
Thank you!!
@jugibur21172 күн бұрын
Wow, great stuff, many tutorials never teaching this aspect while building a game!
@practicapiglobal10 сағат бұрын
Thank you!
@thefirstcoatline28 күн бұрын
I've never heard anyone talk about this. Very informative and well done video!
@practicapiglobal27 күн бұрын
Glad you enjoyed it!
@BlueDuck-vv3euАй бұрын
Thank you so much for this video! I'm very much looking forward to learning more about this topic - there aren't many videos about it so it's a bit harder to learn.
@practicapiglobalАй бұрын
Thanks glad it helped!
@dreamisover98134 күн бұрын
Wow, this channel is really good! Glad I saw someone suggest it on discord
@practicapiglobal3 күн бұрын
Thank you!
@f0kes3226 күн бұрын
dependecy inversion is a SOLID principle. I recommend everyone to look into each one of them
@landozarus25 күн бұрын
first step- delete everything in the scene second step- create a new scene and fill it up with all the objects
@quizcanners28 күн бұрын
Good video. I would recommend to have some full-screen UI element in your bootstrap scene, not to have player see empty skybox while stuff loads. Good practice to have one main scene and load other scenes additively. Scenes are also a good way to manage some assets. If there is character creation screen, for example, - making it a scene will let you place all needed assets there, load and unload them by just loading/unloading the scene. No need to jump straight into addressable. They require upkeep - if something is not used anymore, you'll need to manually remove it.
@practicapiglobal27 күн бұрын
Thanks for the great feedback :)
@gamedevlolАй бұрын
I really liked this video. It's very good for beginner and intermediate game devs. I hope you make more Unity videos :D
@practicapiglobalАй бұрын
Thanks!
@reithaz_Ай бұрын
I will watch this channel's future with great interest, subscribed
@practicapiglobal29 күн бұрын
Thanks!
@niklasmikkelsen4701Ай бұрын
Clean video! Interesting to see how you'll solve the growing reference issue. I would separe the managers into contsiners and load them at various stages! + It's not necessarly faster to remove everything from the scene as the script has hard references to prefabs which loads them into memeory once the scene is loaded! EDIT: Saw thst your aware of thede things from another comment! :)
@practicapiglobalАй бұрын
@@niklasmikkelsen4701 hahaha Thanks!! Your solution is exactly what we do as well :) ofc there's more into it, and we will do a full video about it in the future.
@lazysolutionsАй бұрын
Quality video. Looking forward to see how you tackle the next video topic!
@practicapiglobalАй бұрын
Thanks!
@barakshelef19 күн бұрын
This has changed my life!
@ninjachompekАй бұрын
Great video! That is also my usual architectural choice, with the only difference being that I use singleton managers and dictionaries to reference objects on the scene. Good luck with your channel, you are off to a great start!
@practicapiglobalАй бұрын
@@ninjachompek Awesome this works great as well! And thanks 💛
@mirm0nАй бұрын
damn this channel gonna blow up. extremely high quality content!
@practicapiglobalАй бұрын
Thanks you!
@alaslipknotАй бұрын
This video is one of the best non-intentional introduction to Zenject, at least the theoretical part of it
@practicapiglobalАй бұрын
Thanks!! Lol it was really difficult not to mention Zenject here😅 If you are interested in implementing DI following these steps, PLEASE let us know
@alaslipknotАй бұрын
@@practicapiglobal i use DI at work (am full-time software engineer fot a game studio) i thiink the concept is worth explaining indeed, however, it can easily turn into a glorified Singleton pattern if not done correctly. so make sure the video is not tagged for beginners, i don't think any small project will require any sort of DI, what you explained in this video is more than enough for a clean and scalable small/medium game. As for requesting the next topic, i would vote for ECS.
@practicapiglobalАй бұрын
@@alaslipknot Awesome feedback! Noted :)
@druidimosАй бұрын
@@practicapiglobal Any thoughts on Zenject vs Vcontainer ?
@alaslipknotАй бұрын
@@druidimos in my experience Zenject is better documented and more supported from both community and creators. I would say though that if the user is not making a "live service" game that needs constant new features update, both of these tools are an overkill. I never worked on a big game that isn't a live service so am not 100% sure what other projects may benefits from a DI framework instead of just doing a simple in-house solution like the one in this video
@sylvaindАй бұрын
Looking forward to part two. Would be nice to see additive level loading issues addressed
@practicapiglobalАй бұрын
Thanks! Can you please explain more specifically?
@sylvaindАй бұрын
Yeah for sure. These are all systems and managers but at some point you'll want to additively load/uload scenes with pre-placed gameobjects and keep this bootstrapped scene around
@sylvaindАй бұрын
Then you'll want to be in any of those level scenes and be able to press play and have it work in editor
@practicapiglobalАй бұрын
@@sylvaind Ahh we see, yes. Please take a look at the conversation with @wokarol, is this what you mean?
@GameDevBuddiesАй бұрын
Really loving your style of videos, keep up the good work!
@practicapiglobalАй бұрын
@@GameDevBuddies Thanks!
@prostra_ganesha26 күн бұрын
These is good! I think adding Zenject or another Dependency Injection container would be a good feed for part 2 of the video. Edit: ah yes mentioned in the end
@practicapiglobal26 күн бұрын
@@prostra_ganesha Hahaha thanks!
@dm1tryrinАй бұрын
Great channel! The author is good! Nice editing! I'm waiting for more videos with examples and lessons on architectural patterns in Unity.
@practicapiglobalАй бұрын
Thanks!! Great, you won't be disappointed :)
@LuizMoratelliАй бұрын
Great work, I never saw something about, but make so much sense.
@practicapiglobalАй бұрын
Thanks 🙏
@AbdullahGameDev26 күн бұрын
I am a subscriber number 196. Your videos are awesome 👌. Keep it up
@practicapiglobal24 күн бұрын
Thank you so much 😀
@omorenofАй бұрын
Hey! Your videos are cool! I can tell lots of work goes into this. Thank you and best of successes!!
@practicapiglobalАй бұрын
@@omorenof Thank you!! Indeed you are not wrong haha
@TheKr0ckeRАй бұрын
Video edit quality and the content is high level. Thanks for your effort on those. What would you recommend for Game Initiator refactor since you said end of the video, that game initiator becomes huge class very fast.
@practicapiglobalАй бұрын
Thanks you! There are many things to improve it, a good start will be DI Containers
@antoinemaesАй бұрын
This is gonna be the next biggest Unity channel.
@practicapiglobalАй бұрын
Damn thank you🙏
@nullx2368Ай бұрын
Overall i agree with the base idea but for example, referencing bunch of prefabs in the inspector just to spawn them isn't that different. When you load your initializer in the scene, it will also load the prefabs in memory since they are referenced in the inspector. I'm honestly not against this method either way, but you would want to use addressables or maybe resources to load them in, since those wouldn't be references just paths to the "prefab".
@practicapiglobalАй бұрын
@@nullx2368 Yes! @ManjeetKumar-xk8jf already mentioned that, so please take a look at the conversation with him :)
@danielsonstudiosАй бұрын
Just found your channel. Great video!
@practicapiglobalАй бұрын
Thank you!
@ManuelBeraha29 күн бұрын
Amazing tutorial! Subscribed :D I would love to set up my code like this, but it's more difficult when relying on third party assets that have their own flow and logic. I think, when having a GameObject with lots of prefab references, all of them get loaded into memory when a scene loads (when not using addressables). Not necessarily a problem, just something to consider. I would be very interested in your thoughts or a follow-up tutorial on how to make a game easily testable with this workflow, without having to change lines of code every time you don't want the developer to start the game from the entry point so they can test fighting the final boss with specific parameters and stuff like that. I expect the answer to have something to do with ScriptableObjects xD
@practicapiglobal29 күн бұрын
Thank you! And please take a look at the comments, everything you mentioned was already discussed there, even the Scriptable Objects :)
@gostan2718Ай бұрын
this channel is a gem
@practicapiglobalАй бұрын
Thanks 🙏
@JoseALugoRАй бұрын
High quality content, subscribed already
@practicapiglobalАй бұрын
@@JoseALugoR Thanks!
@TheTivec29 күн бұрын
I’m not even using Unity anymore, but this isn’t just a Unity tutorial. It shows how to turn the flow in your favor to make things easier to work with. Well done video!
@practicapiglobal29 күн бұрын
Glad it helped!
@Prasons27 күн бұрын
I like how you split EnemiesSpawner's methods into two, but you introduced a hidden temporal coupling. The methods could be called in a wrong order, which could throw a runtime exception
@practicapiglobal27 күн бұрын
Thanks! And yes, you're absolutely right. That's the nature of code, in many cases, changing the order can lead to unexpected bugs.
@Prasons27 күн бұрын
@@practicapiglobal It's just a common code smell which can be easily avoided, as not to give programmers a chance to introduce bugs. Anyways, awesome video, waiting for more content
@practicapiglobal27 күн бұрын
@@Prasons Yes, we understand your point-splitting those methods into two and making them public does open the risk of unintended calls. However, since this approach is a fundamental part of our game’s architecture, and the entire team is well-versed in it, the chance of mistakes is minimal. Even if they are called in the wrong order, it would cause the game to crash at startup, which is easy to catch, rather than creating a rare, logical bug that's hard to reproduce.
@johnnypabon581824 күн бұрын
Loved it! Thanks!
@practicapiglobal23 күн бұрын
Glad you enjoyed it!
@3d2dMukeАй бұрын
This is excellent. Thank you very much.
@practicapiglobalАй бұрын
Thanks! Appreciated💛
@ckjdinnj29 күн бұрын
This is one of those things that once you start doing you will never not do.
@practicapiglobal27 күн бұрын
Hahaha Glad you liked it
@seyedmortezakamali2597Ай бұрын
I know this video is about simple binding and I like your method but actually using dependency Injection is more convenient.
@practicapiglobalАй бұрын
Since Dependency Injection is a broad topic on its own, we decided not to cover it in detail (at least in this video).
@LeoLeeQ1Ай бұрын
Advanced Tip If you are going to do this, please DO NOT directly reference things in the GameInitiator. It will make not much of a difference when you load the entry scene. If you directly reference it, everything has to be loaded at the time of loading the scene. So there is no benefit to make fast the scene loading time. And also if you are going to contain the referenced asset in an AseetBundle, it could be duplicated. What it means that if you are using an asset both in the built-in Scene(or Resources asset) and AssetBundle and if you somehow loaded both at the same context, there will be two same assets in the memory at Runtime. To solve this, find some other way to reference assets weakly. For example, if you are using addressables, use AssetRefetence type. And only contain the entry scene in the build menu. Other scenes should be in the AssetBundle and load it from AB.
@practicapiglobalАй бұрын
Thanks for the great feedback! You're absolutely right, and we noticed that others mentioned this in the comments too. In the video, we chose to use a direct reference to keep the example straightforward and easy to follow :)
@zZMazeZzАй бұрын
Fantastic visuals
@practicapiglobalАй бұрын
Thanks!
@lokosstratos7192Ай бұрын
Thank you!
@practicapiglobal29 күн бұрын
Welcome!
@ekzacАй бұрын
I don't really know when Unity loads the prefab. That stated, if you have one object with reference to all the prefabs, wouldn't it load all the prefabs and dependencies on load the scene? In this case, it would not be all that fast, unless using some solution like Addressables, that can load async. Thank you for the video :)
@practicapiglobalАй бұрын
Yes! People have already pointed this out, please see the conversation with them below :)
@GTZ-98Ай бұрын
Does a single entry make sense no matter the games size or should I only consider this technique when building a "big" (no idea what you would consider big or what's considered big in general 😅) game?
@practicapiglobalАй бұрын
Lets say, we might not use it during a game jam, but it's always been the approach for every commercial game we've come across.
@GTZ-98Ай бұрын
@@practicapiglobal Okay, very interesting. I might give this a shot in my next project! Awesome tutorials so far!
@DeadRabbitCanDance16 күн бұрын
Nice video!
@practicapiglobal15 күн бұрын
Thanks!
@beatenbykarmaАй бұрын
Amazing video, instant subscribe
@practicapiglobalАй бұрын
Thank you! Welcome aboard
@andreaaliberti9349Ай бұрын
Please don't leave us without the part 2 ahahahah
@practicapiglobalАй бұрын
Hahaha we won't!
@JonathanTashАй бұрын
This is actually pretty helpful, and I'm using Godot, not Unity.
@practicapiglobalАй бұрын
Happy to hear!
@ManjeetKumar-xk8jfАй бұрын
I think if you have references of prefab on your script which is in scene unity will take same time to load either it's an empty scene or not.
@practicapiglobalАй бұрын
@@ManjeetKumar-xk8jf Yes you are totally right! But as we said in the video, this is a simple example and in a serious project we should load the assets async using AssetBundles/Addressables
@ManjeetKumar-xk8jfАй бұрын
@@practicapiglobal okay man got it i have just subscribed waiting for new videos.
@practicapiglobalАй бұрын
@@ManjeetKumar-xk8jf Thanks!! New one coming in a few days :)
@beatenbykarmaАй бұрын
I got my project setup in this way, but when I Instantiate my Directional Light, I appear to be losing the ambient lighting in my scene. If I add the same prefab to my scene in the editor it works fine, but for some reason instantiating with code is messing up the lighting. Any ideas?
@practicapiglobalАй бұрын
Lighting is a tricky one. In most cases it shouldn't be instantiated, but instead keep it as part of your environment scene, which is loaded additively on top of the core scene. This way you can bake your lightings, and we believe this will also solve your problem.
@beatenbykarmaАй бұрын
@@practicapiglobal I'll look into getting it setup this way. You're the best, thanks again!
@nicolasmarin-k7tАй бұрын
yeah its easier to understand for smaller projects but for a large damn another story
@practicapiglobalАй бұрын
@@nicolasmarin-k7t Haha, yes! But at least this provides a good foundation, and in the future, we'll share how we handle it in a larger project :)
@arthur-LudwigАй бұрын
This is neat XD
@practicapiglobalАй бұрын
Thanks!
@TheGroundskeeper27 күн бұрын
If you need a video editor, let me know, whatever it takes to get more tutorials like this
@practicapiglobal27 күн бұрын
Hahaha what a hero! If you are serious, and want to do this from true passion for free like us, let's chat :)
@mrcool2963Ай бұрын
Most problems in CS are solved with one extra level of indirection :D
@grzegorzpedrycz263025 күн бұрын
We waiting for next tutorial.. just saying ;) :)
@practicapiglobal24 күн бұрын
Haha thanks 🙏 We promise it will see the daylight
@arctiformgamesАй бұрын
This is the issue im having with my project. The demo is so big that loading times are eek.
@practicapiglobalАй бұрын
Awesome we hope this helped🙏
@successor0Ай бұрын
Is there a discord server for the channel? If not, I'd recommend you create one. I'd love to be a part of it.
@practicapiglobalАй бұрын
@@successor0 Thanks man! We are really thinking about it
@ardaozler631Ай бұрын
So what is the difference between binding and the creation steps, there seems to be some overlap in logic
@practicapiglobalАй бұрын
Bindings is done to your core services, imagine it was implemented with Dependency Injection and not with Instantiation. While on the other hand, the Creation step creates GameObjects that are part of the game's environment.
@ardaozler631Ай бұрын
@@practicapiglobal got it thanks, when is the next video?
@practicapiglobalАй бұрын
@@ardaozler631 Honestly, there's still some time. We're focusing on finishing the Unity Iceberg series first.
@00ZeroCoolGamingАй бұрын
Folks should be aware: async void is generally a bad practice. If the code is not run on the main thread and throws an exception, that exception won't be caught and will likely result in the game being in an invalid state. Otherwise, good info overall
@practicapiglobalАй бұрын
Thanks! And you're absolutely right! We chose to keep the code simple for this video, so we didn’t dive into UniTask or use Cancellation Tokens 🫠
@KeegansLifeАй бұрын
Insanely good video. However, the AI voice makes it feel cheap and made me assume the content was going to be low quality. Glad I was wrong.
@practicapiglobalАй бұрын
Fair enough, glad you enjoyed!
@wokarolАй бұрын
How would you handle editor playmode support in that workflow? Let's say I edit a level in the game and want to playtest it. With this approach I would be required to switch the scene, go with the full flow and then I would have to load the specified level. It feels like shooting myself in the foot when it comes to iteration.
@practicapiglobalАй бұрын
@@wokarolHi, you're absolutely right. This is indeed a whole topic in itself, which we intentionally ignored to keep things simple. However, the approach we recommend is for each scene to manage its own dependencies and setup data. This way, if we load the scene with mock data, it should load flawlessly. For example, we can create a ScriptableObject that contains mock data for the scene to load.
@wokarolАй бұрын
@@practicapiglobal // But don't we run back into the same problem? Now you have to add some manager with a player prefab and all that, which if I understand well was the problem we wanted to avoid. As now we have two points of entry, the Game scene and the Mock Manager
@practicapiglobalАй бұрын
@@wokarol There's still only one entry point. For example, let's say you also have a MainMenuScene where the player chooses which level to play. Default Game Flow: GameScene -> MainMenuScene -> The level the player picks. Testing a specific level flow: GameScene (with some mock data that indicates which level to test) -> The level you want to test. As you can see, we always load our GameScene before anything else, but with different data which controls the flow. Hope this helps! :)
@wokarolАй бұрын
@@practicapiglobal // Oh, you mean it like that... yeah, that feels like a pain in the butt. With that approach iterating on a level becomes a chore, you have to switch to the game scene -> run the game -> test -> switch back to the level scene -> make changes -> load the game scene again -> ... And during all of that, you have to remember not to accidentally commit changes to the Game scene into the git repo
@practicapiglobalАй бұрын
@@wokarol Thank god no haha There's this life saving trick that always starts the game on Play with a specific scene🤩 Call this from an editor script: EditorSceneManager.playModeStartScene = your game scene
@albertb4460Ай бұрын
Doesnt this lead to an emtpy scene in edit mode? Won't that make editing and developing harder?
@practicapiglobalАй бұрын
@@albertb4460 Hi! We recommend revisiting 3:32, where we explain how you can work on other separate scenes while the main scene is empty.
@albertb4460Ай бұрын
Sorry, my bad, did not contextualize properly :) Say you're developing a new kind of platform for a level, to test it the player is necessary Using this workflow, would the way to tackle this be to have 2 prefabs (level and player) and 1 initializer script (to initialize the level and player instances) with all the other dependencies commented out? Thank you for the look into more advanced Unity techniques
@practicapiglobalАй бұрын
@@albertb4460 Ahh we see. So please take a look at the conversation with @wokarol. We think this is what you are looking for.
@DreamingConceptsАй бұрын
Looks like a channel with 2M+ subs and years of doing videos on these subjects.
@practicapiglobal29 күн бұрын
Haha hopefully! Thanks
@WaszzupАй бұрын
Holy pro dis is gud😎😎😎
@practicapiglobalАй бұрын
Thanks so much!
@teammdyssАй бұрын
Please continue with this topic. Many try to, but either are being too vague or too nerdy. Your explanations have a good balance
@practicapiglobalАй бұрын
@@teammdyss Thanks! It's in our todo 💛
@IceForgeOfficialАй бұрын
Great video and great visuals! I still have trouble understanding what’s the benefit of having every object as prefabs? I feel like it’s an extra step to instantiate everything vs just having them already in the game and then having some game initiator call methods on them. Here’s how I usually do it: kzbin.info/www/bejne/qnaUontuhN2CaLssi=_k25xZLlGZ3bzqrf it’s somewhat the same structure where you have a game state manager that handles game prep, game cycles, and game end. I was wondering if there’s any downside to this compared to how you do it using prefabs?
@practicapiglobalАй бұрын
@@IceForgeOfficial Thanks!! And yes you are right, @ManjeetKumar-xk8jf already mentioned that, so please take a look at the conversation with him :)
@practicapiglobalАй бұрын
@@IceForgeOfficial I didn't watch the video, but a possible downside is that it might be tailored more specifically for games with those kinds of states. In contrast, the approach we demonstrated in the video is more generic and doesn't depend on the type of game (for example, Farmville doesn't have those game cycles).
@KYL3R6423 күн бұрын
if Start() and Awake() isn't enough for you to sort things out, a quick-fix would be setting up "Script Execution Order" from Project Settings. Your approach feels like over-complicating things, but I do see the benefits of it. Clean video nontheless.
@SirShrimpey20 күн бұрын
Using script execution order is not a good practice though. It's best if execution order can be deduced directly from code, without relying on additional "lists". Easier to navigate through code, debug and manage.
@practicapiglobal15 күн бұрын
Yep, this is what we think as well :)
@YouSupPopАй бұрын
Lupet
@harikrushnbhingradiya3788Ай бұрын
I don't understand single word u say and i started game development 2 days ago is it normal?? How much time should it take to understand this?? Can i learn it all in a month?? Please don't give me the answer like it depends on self.
@jackwilliams4398Ай бұрын
take your time bro take your time if you enjoy the process just do it to hell with what people say if you struggel in some step just ask someone with more knowledge about that
@JackFoz454Ай бұрын
@@jackwilliams4398 Don't worry. If you just started learning, this video will be full of things you don't understand, and that's normal. The reference in the title to 'Starting your unity game' is not meant to imply that it's a beginner-level video. It's 'starting' as in 'starting up the game', and an approach like this would only be appropriate for somebody who's been learning for much longer than you, and has a project so large the normal (beginner) way of doing things has become unweildy. I would suggest you just relax and focus on materials that you know are beginner-level for now.
@graphics_guruntАй бұрын
It's normal to practice for years in order to understand this, This is intermediate level knowledge and such you don't need to trouble yourself with it. I suggest you get in a lot of game jams inorder to create some prototype. Practice will eventually lead you to realize the problem this content creator is trying to solve.
@3d2dMukeАй бұрын
This video is for intermediate/advanced users. It will take a couple of years to get to that point. Eyes on the horizon, walk on.
@practicapiglobalАй бұрын
Hi! It is totally normal don't feel bad for being overwhelmed. From the start this video was targeting an audience with basic+ knowledge in Unity. Luckily In our next video we will cover all the basics you need to know!💛
@publicmmiАй бұрын
The way i did it in my "game" is to use a bootstrapper ([RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] ) and load a prefab (i call it System) which contains everything (other prefabs like GameManager, UI, etc.) which should be in every scene. I call then Object.DontDestroyOnLoad(myInstantiatedPrefab). To prevent the bootstrapper to load this on scenes (e.g. test scenes, ...) I only load the "System" in the bootstrapper if the current scene starts with a specific name (in my case "Game_").
@practicapiglobalАй бұрын
@@publicmmi Thanks for sharing! We're familiar with this approach as well, and it aligns with what we demonstrated in the video. However, we recommend avoiding grouping things based on their prefix, as this tightly couples the object's name to its purpose.
@TheraotАй бұрын
This is a composition root.
@practicapiglobalАй бұрын
Yep 💛
@TheHiddenVillage-qr6xd21 күн бұрын
Could someone translate this to a Playmaker user like myself
@SandorClegane-TheHound26 күн бұрын
Actually started getting really confused with the early part of the video It's a good foundation introduction to solid
@practicapiglobal26 күн бұрын
@@SandorClegane-TheHound Thanks for the feedback! Can you explain more please, was it too fast? Did we need to pause for more explanation maybe?
@SandorClegane-TheHound26 күн бұрын
@practicapiglobal no nah The way you said certain things led me to think you had a really bad teacher telling you to use start functions and awake like methods And some other earlier parts were confusing in the same sense Asif you'd learnt from a singular standpoint t But that's probably just me thinking cos like I've been coding for years now so I find it hard to remember what it was like really early with no knowledge at all The pace seemed fine to me And by the end of the video I'd had my assumptions changed so that's also good I think the early part was just making g some assumptions on how others have learnt is all We all learn at our own pace dont we so I surmise it's just a personal gripe Doesn't mean the info's bad or wrong Actually meant it when I said this is a good early into to solid principal
@hldfgjsjbd27 күн бұрын
Making components logic public and dependent on one single master class is a bad design. What actually should be used are state machines and events (could be static for easier access). If you want centralised system, create a static GlobalEvents class and store all your events there. This way you will also see connections without dependencies. If you want visualisation, use new Unity’s package Behaviour and watch things happen in real time.
@practicapiglobal27 күн бұрын
@@hldfgjsjbd Thanks for feedback! We used to handle it that way, but as we explained in the video, we need the flow to be asynchronous and to control the execution order. Using events doesn’t allow for these requirements. Hopefully in the next video it will make more sense.
@disobedientdolphinАй бұрын
I feel like all of this is super unnecessary. More often than not I would want to load a complete level with probs and NPCs already therein. So the point of time when I load it does not make any difference.
@practicapiglobalАй бұрын
It just depends on the game :) For instance, the content in our game is configurable, so each time the game loads it may need to load different GameObjects.
@TortuapАй бұрын
This is not the best way to do. Instead of having one initiator that knows everyone and call every methods, you should use an event based system that call initialize, build, whatever events you need in your game, to which everyone register. This is the correct dependency order to use.
@practicapiglobalАй бұрын
Thanks for the feedback! This is exactly what we try to avoid, because while your suggestion provides better loose coupling, it sacrifices control over execution order and doesn't allow for awaiting operations.
@RecordofRadio17 күн бұрын
@@practicapiglobal Why? I do this with an event system and I simply created a manager and bit flags to set when things are finished with preparation, which I'll know and block code execution until they receive those events. it requires a little thought but it's not that big of a problem.
@AlexeyFilippenkoPlummetАй бұрын
Save it for later, never open again Inc.
@anonymous49125Ай бұрын
ewww... 1:11 doing anything in awake other than managing assets... gross