Thank you kindly! This has helped me reduce my game's compile time from "This takes so long, I don't enjoy working on this game anymore" back to "This is so much fun again, just like back in the old days when my project used to be small".
Oh man, this format really skyrockets the entertainment of your video. While it is still a tutorial, it doesn't bore me at all, maybe actually the opposite. Really a genius idea to keep the viewer attracted.
This is my style of programtion, first I talk to myself helping me to answer all my questions and keep me in company all the process... later we both start crying about all that messy code and our loneliness. It's beautiful. Btw, I love this tutorial ❤
I was thinking, what about this third-party code? I mean, I use a lot Leantween but if I put my UI scripts into an assembly leantween stay into the default assembly and it's not possible to make a dependency. Or am I wrong?
Me: Yea should I be worried if I start talking to myself like this? Other Me: Not at all! The technique of projecting inner monologues onto dialogues between 'make-believe' characters is ancient and used by the likes of Plato in his dialectics.
Dude, this is hands down one the best tutorial videos out there, not just about the subject, the way you present and explain the tutorial is super creative and even though I just watched the video cuz i saw it in the subscription tab and wasn't really interested in the subject, I completed the whole thing, RING BILL IS ON FROM NOW ON
What a satisfyingly casual and straight-forward conversation about code organization in Unity between two pleasant and completely unrelated individuals :D.
You and the 2 Jsons are fucking amazing. I have gone from zero to hero in around 4 months with 3 projects due to the content each of you puts out regarding code, architecture and best practices. Man I can't believe how far I have come this fast. Still a beginner but I am now helping other beginners and I can see that I am dipping my toes regularly into the intermediate waters. The Journey amazing. Sometimes I get goosebumps when I am coding and I realize I did something organically that I saw when I was brand new and had no idea what was going on.
I think the vids fill two puposes: teach you awesome code, while serving as PSAs on how to treat colleagues at the office (how to ask for/offer help to a colleague). xD
I just want to say that this is the first tutorial I haven't watched on greater than 1.0x speed in a very, very long time. Everything was clear and concise. Thank you!
this kind of format usually is pretty cringe but this was super helpful to understanding assembly definitions. The guy with the cap asks all the questions I would want to ask haha, thanks a bunch
I would love to see a video on how to design good assembly definitions for games. This is one of those things where I know what it is, what it's used for, but not sure how to utilize it properly in a real-world setting.
I know this is old but here is something i learned. One of the reasons this method is helpful is when you realise you need to sit down and thing about what your project needs and how you would structure the different subsystems. If you cant figure it out maybe you just need to try and then learn from mistakes? After a few projects you will have a clear feeling about how you wished you would have done from the beginning. So think about these techniques but dont let it keep you from progressing as a game coder! ITs possible to stay in the system design phase for ever and thats not productive either.
I literally just pulled up that page in the beginning and said in my head, "this is confusing" , then went on youtube and searched assemblies in unity and got this video.
@@InfallibleCode yep, what I really wanted to know is what the default assembly Included and you pointed it out in the solution explorer. I wanted to know because internal is scoped to the assembly, and in order to use it intelligently, I had to know what that scope included. Would I be right in guessing that internal is fairly secure so long as your app isn't exposed directly to something like code injection? Does it protect against window hooks? I still have security questions.
Man, this format is a great way to go through a topic like this. I work in simulation and have a ton of calls like this about complicated topics, but mine come with interruptions, dead ends that the person might not be knowledgeable about, and other tangents. This really takes a conversation like that and cuts out the useless info to deliver the information in a way that is conversational, easy to digest, and to apply to your work. Well-earned sub, awesome content.
Great explanation thank you. And I liked your approach showing 2 sides to this conversation. When I was a Junior coder I found it intimidating to ask these sorts of questions but they are very important and just like in your video 9 times out of 10 the other person or code lead will take time out of their day for you. Iv worked in the games industry for 5 years now and only just discovered Assembly Definitions. Subbed to your channel :)
You managed to create a simple and fun tutorials for subjects i never wanted to encounter. (mainly unit testing) Your videos have next level production value. you can easily become a top player in this platform. Thanks for the help!
Most important lesson learned from this video is that you should not judge a book by its cover... People with reverse-caps can still be knowledgable and great teachers! I should tell my boss! 🤓😎
I am in love with your style of presenting, giving me so much inspiration to start a series like this myself to help pass on some of my knowledge! keep up the good work man
Always love your intuitive approach to making tutorials sir 🔥 I try making videos like you for my channel but eventually fail. Can you please give me some tips sir
First figure out what you want to teach. Research it if need be. Write a script so that you know exactly what you are going to say. Try to imagine one character as a know nothing noob like myself and the other as the all knowing Guru. Have the guru explain and the know nothing ask questions that real noobs might ask. One place I don't feel this channel goes far enough is in trying to remember what it's like to not know the lingo or the process of making games or programs. But then, maybe it's not supposed to be for people who don't even know that much. For example, I now know how to make assemblies in Unity but I don't really know why. He says it's for organizing and optimization, and I get the optimization part because it will only recompile the assemblies that have changed saving time, but I'm not sure how it organizes anything.
So if it's overkill to use an assembly in every name space, how do we differentiate between when we should and should not give a namespace its own assembly?
awesome tutorial but it would be nice with some more in depth info about potential problems and general workflow on how and when to use these. Many thanks for your great videos, you rock! :)
I'm still having so much trouble with this stuff, but the main reason is that I'm using someone else's code. They have put things into namespaces, like you're recommending. The problem is, that creates boundaries that are annoying. So for example, there's a script where the whole thing is in a namespace (I see it in the coding), and while I'm in that script there is a raycast, and I want it to send information from that raycast to another script (the raycast is a bullet, I want to adjust the HP of the object it's hitting). I do a normal getcomponent for the script on the object being hit, but I get this. The type or namespace name 'BodyPartId' could not be found (are you missing a using directive or an assembly reference?) It seems strange to me, because I can understand there being a problem if another script is trying to access stuff in a namespace (which I believe you can just define the namespace before the getcomponent to fix that), but here, I'm trying to access something completely open and normal, and it's not letting me, because I'm within a namespace. How do I fix that problem? I've been told doing stuff with the assembly definitions would help, but I don't totally understand what's happening here. Thanks for any help you can provide!
The content was gold! However, although I'm highly impressed by your acting skills, I still thought it was a little cheesy to do it like this :D But I guess some others really liked it so oh well! I can live with it because the content and structure is very good otherwise ;)
Really clear tutorial thank you, however I can't seem to get rid of the errors by putting a reference to my core assembly (which now holds the rest of the scripts), there seems to be a bigger issue at hand
Can you reuse the DLLs generated as assemblies in other Unity projects, without needing to also copy their source into the new project? For instance, could you add the Core.dll file from this example as a managed plug-in to a new project, and then use the classes and functions within it?
Should work. Usually you would put those dlls into the Plugins folder - and there should be no dependencies in the assembly that you forgot to include (like linking to other dlls that you haven't imported) connect.unity.com/p/move-plugin-code-to-plugins
If you're going to share them across multiple projects, I would keep it completely separated so it's not strongly tied to any one project. You can just create a C# "class library" project in visual studio and then when you compile it, copy of the dll file to the unity projects that need it (or set up visual studio to automatically copy the dll file). If your dll is in your unity project file, you should automatically be able to reference it. You're essentially creating your own kind of private asset store asset
Bro which one u r using visual studio or visual code? iam trying to follow your videos but i cant see any of those setting in either visual studio or in visual code can u please tell me what u use that will be help full for like beginners thank you
Amazing video, however I am having a small problem, once I added an assembly definition to my folder, the scripts in that folder could no longer find any of the classes in the UnityEngine assembly, when I tried to add references I was able to find stuff in the list like such as UnityEngine.UI, but not UnityEngine itself, and now those scripts cannot find things like monobehaviour and the GameObject class... Any idea on how to fix this?
Hi, thanks for this video, it definitely help to grasp this stuff. But there are still some things confusing to me. How should I deal with packages? I have TextMeshPro installed (among others) that cannot be found anymore as soon as I setup an Assembly Definitions in my Scripts folder. TMPro already provides its own assemblies that can be referenced, but it is not the case for all packages. What can I do to solve this problem? Hope that someone can help.
hello man I have the same problem, I spend some hours trying to get it but yet nothing, was three years ago this comment so i think that you can help me
Thank you for this helpful Video. But what are you doing with imported packages which are belonging to the csharp assembly? As far I could see, I can not set up a dependency to this assembly!?
Can somebody explain in more detail to me? If we look at the video example, it is said that adding definitions for all your namespaces would be bad, so what is that benefit to having definitions for core & interactables vs not having at all?
If you make a change in the core library then all assemblies that depend on it will also get compiled. If you make a change in the interactables then only it will be compiled. It also causes your code to specifically list each dependency, which makes it more obvious when two things are tightly coupled. You don't want too many because its just tedious to manage all of the dependencies. As a common rule I would suggest staying away from creating dependencies that are more than 3-4 layers deep. aka avoid something that depends on something depends on something that depends on interactables that depends on core this is 5 layers deep making it hard to reason about which layer to add new code to. You'll end up with similar spaghetti dependencies.
To use an example from the video, it's fine to reference Core from Interactables, but you wouldn't want Core to reference Interactables. Although it is completely up to you, the name core implies that it really shouldn't have anything to do with interactables.
I don't even use Unity, I just like hearing this guy be nice to himself
yeah seriously! it's a bizarre format and I love it
Lmao
Thank you kindly! This has helped me reduce my game's compile time from "This takes so long, I don't enjoy working on this game anymore" back to "This is so much fun again, just like back in the old days when my project used to be small".
we're lucky that Charles is so nice and didnt just say "ok" at 0:23 causing the vid to end!
Oh man, this format really skyrockets the entertainment of your video. While it is still a tutorial, it doesn't bore me at all, maybe actually the opposite.
Really a genius idea to keep the viewer attracted.
This is my style of programtion, first I talk to myself helping me to answer all my questions and keep me in company all the process... later we both start crying about all that messy code and our loneliness. It's beautiful.
Btw, I love this tutorial ❤
I was thinking, what about this third-party code? I mean, I use a lot Leantween but if I put my UI scripts into an assembly leantween stay into the default assembly and it's not possible to make a dependency. Or am I wrong?
Another episode of 'The Schizophrenic Programmer'.
🤪
I loved this video. Short and informative. Also very entertaining to watch haha 😅👌
Me: Yea should I be worried if I start talking to myself like this?
Other Me: Not at all! The technique of projecting inner monologues onto dialogues between 'make-believe' characters is ancient and used by the likes of Plato in his dialectics.
Dude, this is hands down one the best tutorial videos out there, not just about the subject, the way you present and explain the tutorial is super creative and even though I just watched the video cuz i saw it in the subscription tab and wasn't really interested in the subject, I completed the whole thing, RING BILL IS ON FROM NOW ON
It does not make one feel sleepy.
What a satisfyingly casual and straight-forward conversation about code organization in Unity between two pleasant and completely unrelated individuals :D.
You and the 2 Jsons are fucking amazing. I have gone from zero to hero in around 4 months with 3 projects due to the content each of you puts out regarding code, architecture and best practices. Man I can't believe how far I have come this fast.
Still a beginner but I am now helping other beginners and I can see that I am dipping my toes regularly into the intermediate waters. The Journey amazing. Sometimes I get goosebumps when I am coding and I realize I did something organically that I saw when I was brand new and had no idea what was going on.
I think the vids fill two puposes: teach you awesome code, while serving as PSAs on how to treat colleagues at the office (how to ask for/offer help to a colleague). xD
This form of explanation is so cool, I am feeling like you ask every question that I care about!!!
Man, you really are getting lonely during the lockdown, making Skype calls with yourself like that!
They are twins :)
I just want to say that this is the first tutorial I haven't watched on greater than 1.0x speed in a very, very long time. Everything was clear and concise. Thank you!
this kind of format usually is pretty cringe but this was super helpful to understanding assembly definitions. The guy with the cap asks all the questions I would want to ask haha, thanks a bunch
Why is this format so soothing and entertaining?? Such an amazing idea
I would love to see a video on how to design good assembly definitions for games. This is one of those things where I know what it is, what it's used for, but not sure how to utilize it properly in a real-world setting.
I know this is old but here is something i learned. One of the reasons this method is helpful is when you realise you need to sit down and thing about what your project needs and how you would structure the different subsystems. If you cant figure it out maybe you just need to try and then learn from mistakes? After a few projects you will have a clear feeling about how you wished you would have done from the beginning. So think about these techniques but dont let it keep you from progressing as a game coder! ITs possible to stay in the system design phase for ever and thats not productive either.
I literally just pulled up that page in the beginning and said in my head, "this is confusing" , then went on youtube and searched assemblies in unity and got this video.
Did the video clear up your confusion?
@@InfallibleCode yep, what I really wanted to know is what the default assembly Included and you pointed it out in the solution explorer. I wanted to know because internal is scoped to the assembly, and in order to use it intelligently, I had to know what that scope included.
Would I be right in guessing that internal is fairly secure so long as your app isn't exposed directly to something like code injection? Does it protect against window hooks? I still have security questions.
Man, this format is a great way to go through a topic like this. I work in simulation and have a ton of calls like this about complicated topics, but mine come with interruptions, dead ends that the person might not be knowledgeable about, and other tangents. This really takes a conversation like that and cuts out the useless info to deliver the information in a way that is conversational, easy to digest, and to apply to your work. Well-earned sub, awesome content.
Just found your channel while researching about Unity's assembly definitions. Quite an original and clear way to explain the topic. Great video!
Awesome, thank you!
Man your way of teaching is refreshing. I really love it.
Love these tutorials - great style and easy to follow
This guy needs more subscribers. Thanks for explaining everything in an easy manner to understand!
This guy's channel really shows how helpful programmers should be to each other.
Great explanation thank you. And I liked your approach showing 2 sides to this conversation. When I was a Junior coder I found it intimidating to ask these sorts of questions but they are very important and just like in your video 9 times out of 10 the other person or code lead will take time out of their day for you. Iv worked in the games industry for 5 years now and only just discovered Assembly Definitions. Subbed to your channel :)
This is really cool! I'll start using assemblies from now on.
Man you are really making GREAT tutorial video!!! THANK YOU.
bro this is relaxing af because its not robotic
These tutorials are awesome
You managed to create a simple and fun tutorials for subjects i never wanted to encounter. (mainly unit testing)
Your videos have next level production value.
you can easily become a top player in this platform.
Thanks for the help!
Most important lesson learned from this video is that you should not judge a book by its cover... People with reverse-caps can still be knowledgable and great teachers! I should tell my boss! 🤓😎
Very interesting stuff. Surely will come in handy when making a project.
Love your videos, also very nice is this format of dialog with yourself, cool.
I can tell you worked hard on this. Thanks, so much for this video. I actually learned about assemblies thanks to you. Keep it up.
Thanks again to you both digital twins.
Had no idea what i was getting into listening to this converzation kinda tutorial. But damn I loved every bit of it.
Thank you for this awesome tutorial! Interesting, non standard topic and one of the best ways to teach it I‘ve ever saw. Thumbs up!
A great explanation. Thank you 🙂
Very effective communication style
what an amazing style, thanks for the tutorials.
I am in love with your style of presenting, giving me so much inspiration to start a series like this myself to help pass on some of my knowledge! keep up the good work man
fyi, youre the best unity youtuber out there (for coders).
Thank you so much!
Wow! To the point! Really helpful!
You deserve 100K subscribers! I am happy to discover this channel :)
Amazing tutorial, I love it Thanks!
Very delgant explanation, thanks :)
Just got yourself a new fan!
These videos should be shown in psychology classes. “How to treat yourself with respect and kindness”. This is how our inner dialogue should be.
Always love your intuitive approach to making tutorials sir 🔥 I try making videos like you for my channel but eventually fail. Can you please give me some tips sir
First figure out what you want to teach. Research it if need be. Write a script so that you know exactly what you are going to say. Try to imagine one character as a know nothing noob like myself and the other as the all knowing Guru. Have the guru explain and the know nothing ask questions that real noobs might ask.
One place I don't feel this channel goes far enough is in trying to remember what it's like to not know the lingo or the process of making games or programs. But then, maybe it's not supposed to be for people who don't even know that much.
For example, I now know how to make assemblies in Unity but I don't really know why. He says it's for organizing and optimization, and I get the optimization part because it will only recompile the assemblies that have changed saving time, but I'm not sure how it organizes anything.
@@someoneontheinternet3090 thanks a lot sir! Will definitely try this
@@makra2077 You're welcome! Good luck!
Aweeeeeeeeesome video! Thanks a lot. Really funny to watch as well lol
6:42 thanks! that was the missing piece that i needed
You look so natural with coding. Did you ever had a time where you also make beginner mistakes? (Like I do everyday)
Great tutorial! Thank you :)
Великолепно! Большое спасибо за урок.
very great tutorial, thanks!
Спасибо! Обожаю ваши видео!!!
Man, Charles is the best! - Barles
So if it's overkill to use an assembly in every name space, how do we differentiate between when we should and should not give a namespace its own assembly?
Very cool thanks for the clear explanation!
So clear. Thank you
"hey man, I heard you talked about fight club, not cool"
I really love these tutorials with crossovers with other developers. Even if the other developer is also you ;)
Very usefull video thank u Infallible Code
love the shared knowledge point and this sharing method :)
Another excellent video, thanks!
This is amazing! Great job explaining it! Way better than unity's reference.
Great as always!
Hmm. Interresting video!
Didn't know Unity had that feature.
I've been working witj .DLL files for while, though 👍
awesome tutorial but it would be nice with some more in depth info about potential problems and general workflow on how and when to use these. Many thanks for your great videos, you rock! :)
Awsome tutorial.
Great video man
bruh, best gimmie that spotify playlist
oh nevermind...that was pretty straight forward haha
Aww hell yeah libraries in Unity!
These videos are so good dude
nice and clear!!! thank you
thank you! good tutorial
Very helpful dude
YEAS - was thinking why I can't define my custom class in downloaded assets, and you helped me (:
The one with the backwards cap is definitely the evil one!
I'm still having so much trouble with this stuff, but the main reason is that I'm using someone else's code. They have put things into namespaces, like you're recommending. The problem is, that creates boundaries that are annoying. So for example, there's a script where the whole thing is in a namespace (I see it in the coding), and while I'm in that script there is a raycast, and I want it to send information from that raycast to another script (the raycast is a bullet, I want to adjust the HP of the object it's hitting). I do a normal getcomponent for the script on the object being hit, but I get this.
The type or namespace name 'BodyPartId' could not be found (are you missing a using directive or an assembly reference?)
It seems strange to me, because I can understand there being a problem if another script is trying to access stuff in a namespace (which I believe you can just define the namespace before the getcomponent to fix that), but here, I'm trying to access something completely open and normal, and it's not letting me, because I'm within a namespace.
How do I fix that problem? I've been told doing stuff with the assembly definitions would help, but I don't totally understand what's happening here.
Thanks for any help you can provide!
great video, thanks!
What code editor is that ? Never see that tbh, and if you mind what font youre using ? Kinda elegant
The code editor is called Rider and the font is called Victor Mono:D
@@InfallibleCode cool ! Btw, thankyou so much for your content. Really helpful for me. Youre awesome :D
Great, many thanks
The content was gold! However, although I'm highly impressed by your acting skills, I still thought it was a little cheesy to do it like this :D But I guess some others really liked it so oh well! I can live with it because the content and structure is very good otherwise ;)
Great video!
Can you make some videos covering Advance topics in DOTS?
Really clear tutorial thank you, however I can't seem to get rid of the errors by putting a reference to my core assembly (which now holds the rest of the scripts), there seems to be a bigger issue at hand
Great video I’ve Always got confused about assembly definition
yo dude, this is great
I want this dude's coding music playlist lol, I can't find it on Spotify! But I love that it has Griz
Very Good!
Can you reuse the DLLs generated as assemblies in other Unity projects, without needing to also copy their source into the new project? For instance, could you add the Core.dll file from this example as a managed plug-in to a new project, and then use the classes and functions within it?
Should work. Usually you would put those dlls into the Plugins folder - and there should be no dependencies in the assembly that you forgot to include (like linking to other dlls that you haven't imported)
connect.unity.com/p/move-plugin-code-to-plugins
If you're going to share them across multiple projects, I would keep it completely separated so it's not strongly tied to any one project. You can just create a C# "class library" project in visual studio and then when you compile it, copy of the dll file to the unity projects that need it (or set up visual studio to automatically copy the dll file).
If your dll is in your unity project file, you should automatically be able to reference it.
You're essentially creating your own kind of private asset store asset
@@fmproductions913 Very usefull link. Thx mate for sharing !
What font are you using in your editor?? It's so amazing!!
Bro which one u r using visual studio or visual code?
iam trying to follow your videos but i cant see any of those setting in either visual studio or in visual code
can u please tell me what u use that will be help full for like beginners
thank you
Life saver!
A valuable video
Amazing video, however I am having a small problem, once I added an assembly definition to my folder, the scripts in that folder could no longer find any of the classes in the UnityEngine assembly, when I tried to add references I was able to find stuff in the list like such as UnityEngine.UI, but not UnityEngine itself, and now those scripts cannot find things like monobehaviour and the GameObject class... Any idea on how to fix this?
Hi, thanks for this video, it definitely help to grasp this stuff. But there are still some things confusing to me. How should I deal with packages? I have TextMeshPro installed (among others) that cannot be found anymore as soon as I setup an Assembly Definitions in my Scripts folder. TMPro already provides its own assemblies that can be referenced, but it is not the case for all packages. What can I do to solve this problem?
Hope that someone can help.
hello man I have the same problem, I spend some hours trying to get it but yet nothing, was three years ago this comment so i think that you can help me
I thinks it helps in patching as well and shorter updates.... :)
Definitely!
Thank you for this helpful Video.
But what are you doing with imported packages which are belonging to the csharp assembly? As far I could see, I can not set up a dependency to this assembly!?
Can somebody explain in more detail to me? If we look at the video example, it is said that adding definitions for all your namespaces would be bad, so what is that benefit to having definitions for core & interactables vs not having at all?
If you make a change in the core library then all assemblies that depend on it will also get compiled. If you make a change in the interactables then only it will be compiled. It also causes your code to specifically list each dependency, which makes it more obvious when two things are tightly coupled. You don't want too many because its just tedious to manage all of the dependencies. As a common rule I would suggest staying away from creating dependencies that are more than 3-4 layers deep. aka avoid something that depends on something depends on something that depends on interactables that depends on core this is 5 layers deep making it hard to reason about which layer to add new code to. You'll end up with similar spaghetti dependencies.
To use an example from the video, it's fine to reference Core from Interactables, but you wouldn't want Core to reference Interactables. Although it is completely up to you, the name core implies that it really shouldn't have anything to do with interactables.