Starting Your Unity Game Flawlessly (8 Steps)

  Рет қаралды 27,915

PracticAPI

PracticAPI

Күн бұрын

Пікірлер: 231
@thygrrr
@thygrrr Ай бұрын
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
@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 :)
@EdenDev
@EdenDev 17 күн бұрын
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.
@practicapiglobal
@practicapiglobal 15 күн бұрын
Thank you🙏
@tubanami
@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
@practicapiglobal Ай бұрын
@@tubanami Thanks so much glad we helped!!
@laurensdesmet70
@laurensdesmet70 Ай бұрын
Bruh, first video 10 days ago and this channel already goes HARD.
@practicapiglobal
@practicapiglobal Ай бұрын
@@laurensdesmet70 Thanks!
@ThisIsNotADrell
@ThisIsNotADrell Ай бұрын
You're so easy to understand that even a layman like me can follow your points. Keep up the good work.
@practicapiglobal
@practicapiglobal Ай бұрын
Haha thanks!
@zaidi450
@zaidi450 19 күн бұрын
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
@GFat11 Ай бұрын
Finally!!! Someone how actually teaches you how to design your code and not just how to make demos.
@practicapiglobal
@practicapiglobal Ай бұрын
Haha thanks!
@rechnight
@rechnight Ай бұрын
Unity 6 (2023.X), there's the Awaitable class to use in place of UniTask/Coroutines.
@practicapiglobal
@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
@thygrrr Ай бұрын
​@@practicapiglobalSince years (Unity 2019 or so), you do not need UniTask anymore. Just use the TPL (System.Threading.Task et. al.)
@goehlergamedev
@goehlergamedev 5 күн бұрын
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! ❤️
@practicapiglobal
@practicapiglobal 3 күн бұрын
Thanks! will do
@MassimoRough
@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
@practicapiglobal Ай бұрын
Hahaha loved your comment, thanks!
@mikebrookens4439
@mikebrookens4439 19 күн бұрын
This channel is criminally underfollowed. Your videos are incredibly high quality. Thank you.
@practicapiglobal
@practicapiglobal 18 күн бұрын
Wow, thank you!
@RogueWolf_Dev
@RogueWolf_Dev 26 күн бұрын
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"
@practicapiglobal
@practicapiglobal 26 күн бұрын
@@RogueWolf_Dev Happy this helped! Stay tuned, cus' our goal is to break more of these 'Unity ways' ;)
@ilhamicanparlakdemir9483
@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
@practicapiglobal Ай бұрын
Thank you🙏
@furkannarin2844
@furkannarin2844 Ай бұрын
this is a beginner level tutorial as well
@petpumpkin
@petpumpkin 26 күн бұрын
This channels gonna go far if content like this keeps flowing. Great stuff, we need more advanced tuts out there!
@practicapiglobal
@practicapiglobal 26 күн бұрын
@@petpumpkin Thank you! On it
@OdysseyHome-Gaming
@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
@practicapiglobal Ай бұрын
Thank you! Noted
@uatar
@uatar Ай бұрын
This is the first channel ever that made me wait anxiously for the next video...
@practicapiglobal
@practicapiglobal Ай бұрын
@@uatar hahaha thanks!!
@twiddles
@twiddles 12 күн бұрын
Guys, we need the follow-up video! 😊 Keep up the good work!
@practicapiglobal
@practicapiglobal 11 күн бұрын
Thanks!
@selgesel
@selgesel 27 күн бұрын
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!
@practicapiglobal
@practicapiglobal 27 күн бұрын
Thanks 🙏
@FractalWanderer
@FractalWanderer 25 күн бұрын
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.
@practicapiglobal
@practicapiglobal 24 күн бұрын
Glad you like it :)
@grzegorzpedrycz2630
@grzegorzpedrycz2630 Ай бұрын
I have seen all of the videos you have created so far, and they are brilliant! Thanks for sharing!
@practicapiglobal
@practicapiglobal Ай бұрын
Wow, thank you!
@le_python_man
@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
@practicapiglobal Ай бұрын
@@le_python_man Thanks!! No worries we will definitely focus on clean architecture💛
@practicapiglobal
@practicapiglobal Ай бұрын
@@le_python_man Thanks!! No worries we will definitely focus on clean architecture💛
@le_python_man
@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.
@nowoodz
@nowoodz 28 күн бұрын
Man! im new at Programming in Unity and the way you explained everything made it so easy to understand 👍
@practicapiglobal
@practicapiglobal 27 күн бұрын
Thank you!
@BatonyRobson
@BatonyRobson Ай бұрын
That was unexpectedly deep, expirienced and high quality tutorial👍 Don't expected to find that information online
@practicapiglobal
@practicapiglobal Ай бұрын
@@BatonyRobson Thanks! Glad you liked it
@МухиддинМахмудов-б5щ
@МухиддинМахмудов-б5щ 28 күн бұрын
Can't describe how much useful it is to me, thank you
@practicapiglobal
@practicapiglobal 27 күн бұрын
Glad it was helpful!
@giacomocali6853
@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
@practicapiglobal Ай бұрын
Thank you!!
@jugibur2117
@jugibur2117 2 күн бұрын
Wow, great stuff, many tutorials never teaching this aspect while building a game!
@practicapiglobal
@practicapiglobal 10 сағат бұрын
Thank you!
@thefirstcoatline
@thefirstcoatline 28 күн бұрын
I've never heard anyone talk about this. Very informative and well done video!
@practicapiglobal
@practicapiglobal 27 күн бұрын
Glad you enjoyed it!
@BlueDuck-vv3eu
@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
@practicapiglobal Ай бұрын
Thanks glad it helped!
@dreamisover9813
@dreamisover9813 4 күн бұрын
Wow, this channel is really good! Glad I saw someone suggest it on discord
@practicapiglobal
@practicapiglobal 3 күн бұрын
Thank you!
@f0kes32
@f0kes32 26 күн бұрын
dependecy inversion is a SOLID principle. I recommend everyone to look into each one of them
@landozarus
@landozarus 25 күн бұрын
first step- delete everything in the scene second step- create a new scene and fill it up with all the objects
@quizcanners
@quizcanners 28 күн бұрын
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.
@practicapiglobal
@practicapiglobal 27 күн бұрын
Thanks for the great feedback :)
@gamedevlol
@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
@practicapiglobal Ай бұрын
Thanks!
@reithaz_
@reithaz_ Ай бұрын
I will watch this channel's future with great interest, subscribed
@practicapiglobal
@practicapiglobal 29 күн бұрын
Thanks!
@niklasmikkelsen4701
@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
@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
@lazysolutions Ай бұрын
Quality video. Looking forward to see how you tackle the next video topic!
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks!
@barakshelef
@barakshelef 19 күн бұрын
This has changed my life!
@ninjachompek
@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
@practicapiglobal Ай бұрын
@@ninjachompek Awesome this works great as well! And thanks 💛
@mirm0n
@mirm0n Ай бұрын
damn this channel gonna blow up. extremely high quality content!
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks you!
@alaslipknot
@alaslipknot Ай бұрын
This video is one of the best non-intentional introduction to Zenject, at least the theoretical part of it
@practicapiglobal
@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
@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
@practicapiglobal Ай бұрын
@@alaslipknot Awesome feedback! Noted :)
@druidimos
@druidimos Ай бұрын
@@practicapiglobal Any thoughts on Zenject vs Vcontainer ?
@alaslipknot
@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
@sylvaind Ай бұрын
Looking forward to part two. Would be nice to see additive level loading issues addressed
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks! Can you please explain more specifically?
@sylvaind
@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
@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
@practicapiglobal Ай бұрын
@@sylvaind Ahh we see, yes. Please take a look at the conversation with @wokarol, is this what you mean?
@GameDevBuddies
@GameDevBuddies Ай бұрын
Really loving your style of videos, keep up the good work!
@practicapiglobal
@practicapiglobal Ай бұрын
@@GameDevBuddies Thanks!
@prostra_ganesha
@prostra_ganesha 26 күн бұрын
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
@practicapiglobal
@practicapiglobal 26 күн бұрын
@@prostra_ganesha Hahaha thanks!
@dm1tryrin
@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
@practicapiglobal Ай бұрын
Thanks!! Great, you won't be disappointed :)
@LuizMoratelli
@LuizMoratelli Ай бұрын
Great work, I never saw something about, but make so much sense.
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks 🙏
@AbdullahGameDev
@AbdullahGameDev 26 күн бұрын
I am a subscriber number 196. Your videos are awesome 👌. Keep it up
@practicapiglobal
@practicapiglobal 24 күн бұрын
Thank you so much 😀
@omorenof
@omorenof Ай бұрын
Hey! Your videos are cool! I can tell lots of work goes into this. Thank you and best of successes!!
@practicapiglobal
@practicapiglobal Ай бұрын
@@omorenof Thank you!! Indeed you are not wrong haha
@TheKr0ckeR
@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
@practicapiglobal Ай бұрын
Thanks you! There are many things to improve it, a good start will be DI Containers
@antoinemaes
@antoinemaes Ай бұрын
This is gonna be the next biggest Unity channel.
@practicapiglobal
@practicapiglobal Ай бұрын
Damn thank you🙏
@nullx2368
@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
@practicapiglobal Ай бұрын
@@nullx2368 Yes! @ManjeetKumar-xk8jf already mentioned that, so please take a look at the conversation with him :)
@danielsonstudios
@danielsonstudios Ай бұрын
Just found your channel. Great video!
@practicapiglobal
@practicapiglobal Ай бұрын
Thank you!
@ManuelBeraha
@ManuelBeraha 29 күн бұрын
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
@practicapiglobal
@practicapiglobal 29 күн бұрын
Thank you! And please take a look at the comments, everything you mentioned was already discussed there, even the Scriptable Objects :)
@gostan2718
@gostan2718 Ай бұрын
this channel is a gem
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks 🙏
@JoseALugoR
@JoseALugoR Ай бұрын
High quality content, subscribed already
@practicapiglobal
@practicapiglobal Ай бұрын
@@JoseALugoR Thanks!
@TheTivec
@TheTivec 29 күн бұрын
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!
@practicapiglobal
@practicapiglobal 29 күн бұрын
Glad it helped!
@Prasons
@Prasons 27 күн бұрын
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
@practicapiglobal
@practicapiglobal 27 күн бұрын
Thanks! And yes, you're absolutely right. That's the nature of code, in many cases, changing the order can lead to unexpected bugs.
@Prasons
@Prasons 27 күн бұрын
@@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
@practicapiglobal
@practicapiglobal 27 күн бұрын
@@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.
@johnnypabon5818
@johnnypabon5818 24 күн бұрын
Loved it! Thanks!
@practicapiglobal
@practicapiglobal 23 күн бұрын
Glad you enjoyed it!
@3d2dMuke
@3d2dMuke Ай бұрын
This is excellent. Thank you very much.
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks! Appreciated💛
@ckjdinnj
@ckjdinnj 29 күн бұрын
This is one of those things that once you start doing you will never not do.
@practicapiglobal
@practicapiglobal 27 күн бұрын
Hahaha Glad you liked it
@seyedmortezakamali2597
@seyedmortezakamali2597 Ай бұрын
I know this video is about simple binding and I like your method but actually using dependency Injection is more convenient.
@practicapiglobal
@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
@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
@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
@zZMazeZz Ай бұрын
Fantastic visuals
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks!
@lokosstratos7192
@lokosstratos7192 Ай бұрын
Thank you!
@practicapiglobal
@practicapiglobal 29 күн бұрын
Welcome!
@ekzac
@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
@practicapiglobal Ай бұрын
Yes! People have already pointed this out, please see the conversation with them below :)
@GTZ-98
@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
@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
@GTZ-98 Ай бұрын
@@practicapiglobal Okay, very interesting. I might give this a shot in my next project! Awesome tutorials so far!
@DeadRabbitCanDance
@DeadRabbitCanDance 16 күн бұрын
Nice video!
@practicapiglobal
@practicapiglobal 15 күн бұрын
Thanks!
@beatenbykarma
@beatenbykarma Ай бұрын
Amazing video, instant subscribe
@practicapiglobal
@practicapiglobal Ай бұрын
Thank you! Welcome aboard
@andreaaliberti9349
@andreaaliberti9349 Ай бұрын
Please don't leave us without the part 2 ahahahah
@practicapiglobal
@practicapiglobal Ай бұрын
Hahaha we won't!
@JonathanTash
@JonathanTash Ай бұрын
This is actually pretty helpful, and I'm using Godot, not Unity.
@practicapiglobal
@practicapiglobal Ай бұрын
Happy to hear!
@ManjeetKumar-xk8jf
@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
@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
@ManjeetKumar-xk8jf Ай бұрын
@@practicapiglobal okay man got it i have just subscribed waiting for new videos.
@practicapiglobal
@practicapiglobal Ай бұрын
@@ManjeetKumar-xk8jf Thanks!! New one coming in a few days :)
@beatenbykarma
@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
@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
@beatenbykarma Ай бұрын
@@practicapiglobal I'll look into getting it setup this way. You're the best, thanks again!
@nicolasmarin-k7t
@nicolasmarin-k7t Ай бұрын
yeah its easier to understand for smaller projects but for a large damn another story
@practicapiglobal
@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
@arthur-Ludwig Ай бұрын
This is neat XD
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks!
@TheGroundskeeper
@TheGroundskeeper 27 күн бұрын
If you need a video editor, let me know, whatever it takes to get more tutorials like this
@practicapiglobal
@practicapiglobal 27 күн бұрын
Hahaha what a hero! If you are serious, and want to do this from true passion for free like us, let's chat :)
@mrcool2963
@mrcool2963 Ай бұрын
Most problems in CS are solved with one extra level of indirection :D
@grzegorzpedrycz2630
@grzegorzpedrycz2630 25 күн бұрын
We waiting for next tutorial.. just saying ;) :)
@practicapiglobal
@practicapiglobal 24 күн бұрын
Haha thanks 🙏 We promise it will see the daylight
@arctiformgames
@arctiformgames Ай бұрын
This is the issue im having with my project. The demo is so big that loading times are eek.
@practicapiglobal
@practicapiglobal Ай бұрын
Awesome we hope this helped🙏
@successor0
@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
@practicapiglobal Ай бұрын
@@successor0 Thanks man! We are really thinking about it
@ardaozler631
@ardaozler631 Ай бұрын
So what is the difference between binding and the creation steps, there seems to be some overlap in logic
@practicapiglobal
@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
@ardaozler631 Ай бұрын
@@practicapiglobal got it thanks, when is the next video?
@practicapiglobal
@practicapiglobal Ай бұрын
@@ardaozler631 Honestly, there's still some time. We're focusing on finishing the Unity Iceberg series first.
@00ZeroCoolGaming
@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
@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
@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
@practicapiglobal Ай бұрын
Fair enough, glad you enjoyed!
@wokarol
@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
@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
@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
@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
@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
@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
@albertb4460 Ай бұрын
Doesnt this lead to an emtpy scene in edit mode? Won't that make editing and developing harder?
@practicapiglobal
@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
@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
@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
@DreamingConcepts Ай бұрын
Looks like a channel with 2M+ subs and years of doing videos on these subjects.
@practicapiglobal
@practicapiglobal 29 күн бұрын
Haha hopefully! Thanks
@Waszzup
@Waszzup Ай бұрын
Holy pro dis is gud😎😎😎
@practicapiglobal
@practicapiglobal Ай бұрын
Thanks so much!
@teammdyss
@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
@practicapiglobal Ай бұрын
@@teammdyss Thanks! It's in our todo 💛
@IceForgeOfficial
@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
@practicapiglobal Ай бұрын
@@IceForgeOfficial Thanks!! And yes you are right, @ManjeetKumar-xk8jf already mentioned that, so please take a look at the conversation with him :)
@practicapiglobal
@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).
@KYL3R64
@KYL3R64 23 күн бұрын
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.
@SirShrimpey
@SirShrimpey 20 күн бұрын
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.
@practicapiglobal
@practicapiglobal 15 күн бұрын
Yep, this is what we think as well :)
@YouSupPop
@YouSupPop Ай бұрын
Lupet
@harikrushnbhingradiya3788
@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
@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
@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
@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
@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
@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
@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
@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
@Theraot Ай бұрын
This is a composition root.
@practicapiglobal
@practicapiglobal Ай бұрын
Yep 💛
@TheHiddenVillage-qr6xd
@TheHiddenVillage-qr6xd 21 күн бұрын
Could someone translate this to a Playmaker user like myself
@SandorClegane-TheHound
@SandorClegane-TheHound 26 күн бұрын
Actually started getting really confused with the early part of the video It's a good foundation introduction to solid
@practicapiglobal
@practicapiglobal 26 күн бұрын
@@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-TheHound
@SandorClegane-TheHound 26 күн бұрын
@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
@hldfgjsjbd
@hldfgjsjbd 27 күн бұрын
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.
@practicapiglobal
@practicapiglobal 27 күн бұрын
@@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
@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
@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
@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
@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.
@RecordofRadio
@RecordofRadio 17 күн бұрын
@@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
@AlexeyFilippenkoPlummet Ай бұрын
Save it for later, never open again Inc.
@anonymous49125
@anonymous49125 Ай бұрын
ewww... 1:11 doing anything in awake other than managing assets... gross
@practicapiglobal
@practicapiglobal Ай бұрын
Haha yea we wanted to keep it simple
@jokesterthemighty227
@jokesterthemighty227 Ай бұрын
Lol, amateur
Why Do Big Video Game Studios Avoid Blender?
6:49
The Cantina
Рет қаралды 691 М.
SIMPLE Tip For Better Unity Game Architecture
12:57
git-amend
Рет қаралды 37 М.
Увеличили моцареллу для @Lorenzo.bagnati
00:48
Кушать Хочу
Рет қаралды 8 МЛН
Real Man relocate to Remote Controlled Car 👨🏻➡️🚙🕹️ #builderc
00:24
The Ultimate Sausage Prank! Watch Their Reactions 😂🌭 #Unexpected
00:17
La La Life Shorts
Рет қаралды 8 МЛН
Why Is It Bad That My Game Looks Good?
16:40
Deynum Studio
Рет қаралды 325 М.
Everything Worth Knowing In Unity (Part 1)
9:14
PracticAPI
Рет қаралды 10 М.
Unity 6 is Here ...Without the Awful Run-Time Fee!
10:02
Gamefromscratch
Рет қаралды 37 М.
How to instantly increase your game's fun
13:37
BiteMe Games
Рет қаралды 12 М.
Better Coding in Unity With Just a Few Lines of Code
15:27
Firemind
Рет қаралды 316 М.
18 Laws of Gamedev Everyone Knows But No One Follows
20:18
Oskar Schramm
Рет қаралды 15 М.
Rebuilding my game after 2 years
9:40
AIA
Рет қаралды 47 М.
Giving Personality to Procedural Animations using Math
15:30
t3ssel8r
Рет қаралды 2,6 МЛН
The Power of Scriptable Objects as Middle-Men
17:41
samyam
Рет қаралды 130 М.
Увеличили моцареллу для @Lorenzo.bagnati
00:48
Кушать Хочу
Рет қаралды 8 МЛН