Great work pal! This is an excellent supplement to the Assembly Definitions video I made, and goes into more technical detail about what's ACTUALLY happening and why. Love it. Will be sharing this on the Discord.
not sure you will read this but I used to love your videos, always chill + concise and to the point. but then they became poorly acted telenovelas and that made me left. It truly felt like you didn't care at all about the viewer's time but rather the view time and you were just looking for ways to pad out your video length. total opposite of old school infallible code
I can't believe you left it on a cliff-hanger! I sat through this going "yes, yea the pain, yup." and I thought you was going to show the magical solution, but nope instead "catch you on the next one" lmao. Over all great video, and I'm so looking forward to the next video :)
While I already knew how to do this, I don't know why I didn't understand the significance of it until Jason explains it in such a clear way. Keep this content coming Jason, it is pure gold.
I admit, I should be looking under the hood more than I do. I treat Unity like a tool, don't care what engine it has, as long as it gets me to my goal. However, I know if I learned more on how it works, I would improve my overall results. Also, thanks again Storey! Love what you're adding to the community.
OMG and you have never created a video explaining how to compile it and put it in Unity directory. I am using separate assemblies but your solution seems to be even faster than that. At least you mentioned few keywords and I know in which direction to continue research! THANK YOU!
We need the next video! Think you said it once in other Jasons stream a while back how to make your own dll the proper way. Though it was just my computer being old, but even on my new NVME SSD unity is slow to build even when usng assembly defenition
This seems really cool. If I understand correctly, creating assembly definitions allows you to compile scripts into separate DLLs so that when a change is made to a script only the associated DLL needs to be recompiled instead of the entire Unity project. If that is the case, I'm confused as to why you would need to build the DLLs manually instead of letting Unity handle it. Does Unity rebuild all DLLs in the project by default each time? That seems like it would defeat the purpose of assembly definitions.
Depends on what is the default assembly definition, it seams to automaticly create a new unique assembly so nothing breaks, most likely with a hash as name and afterwards links it in. If you write you own it is fixed as well so it should partly resolve the issue. (Plugins will not adhere and still clutter it up over time) But if you build external you can make shure all changes are covered in this newway with no leftovers cluttering it up :)
you are the best. I was talking to a friend the other day complaining about my slow computer needing to refresh the assemblies everytime before testing my games. I had no idea this was possible. thank you so much for being a god at what you do :D
Jason Great video , I saw you on the stream of Jason Weimann , and we met inside the arena Giveaway as well that day haha Thx again for great tutos and advises.
great video. been using C# and VS for 20 years, so separate DLLs, references, namespaces, etc. are second nature to me. but when I got into Unity, it seemed confusing and limited. this is a strange little method to make separate DLLs but this practice should be much more common. Example: if you need to patch the network code in your game. If your network logic is in its own assembly, your patch might only need to distribute that one small DLL.
I'll be waiting for the next one! This may help all newbs(myself included) out there save hours and hours of waiting to recompile, cheers for this! Much appreciated.
for some reason I just feel like this knowledge just instantly made my unity skills go up significantly.. This adds so much flexibility and actually the fact I know what really goes on behind my scripts.
You save our time! I am a newbie dev, I don't know doing this could break unity or not, but I will try it. You are such an amazing developer. Edit: Looking for the next video.
Awesome video; I've always used assembly definition assets, but this video reinforces my motivation to use them and gained a deeper understanding. Very cool :D
it's sad he just stopped this channel had crazy good potential and he had a really good view count too. I don't know why you'd dump a channel doing so well
Just found this gem of a channell! Nice job covering some real pain points of unity! When is the next video coming ? :) I find that topic quite interesting and would love to see how you do it! Good Job!
The issue is when you place you code in external DLL (not the assembly definition way), you lost the stacktrace line number information. I used this approach before and when an error occurs inside a function from the DLL, I could not know the exact line that raise the exception. The time to to track the issue in this case could exceed the compile time. ( My project is not huge so my compile time is not very long so I simply prefer to put my code in the project). It doesn't mean its not worth putting code in external dll. Some hard to change stable codes could be extracted to DLL to help a bit.
Did you delete the PDB file that was included with your debug build? That is what it is for. It maintains stack trace information for debugging into dlls. It also wont be created for you if you build in release mode as it assumes... you are releasing.
@@JasonStorey I did copy paste the PDB alongside the debug DLL but don't know why the stacktrace show line 0 for all stack frames. It was so frustrating and I gave up. Anyway, thanks for the reply. Really didn't expect that. Looking forward to your next video.
Agreed. I have been making a huge game for a few years. Assembly Def's are a life saver. It takes to long to recompile everything every time. More time coding, less time waiting.
I love assembly definitions. I've been using them since IC covered them and I find it to be a really pleasing way to organize things. I haven't yet built a project that is big enough to really have a noticeable change in compile times, but I'm glad to know that I'll be easily taking advantage of the shorter compile times when I *do* make a big project, because I'm already in the habit of making assembly definitions. It's kinda cool that we can pretty easily identify what games were built in Unity because of the Assembly-CSharp thing! I always love learning that a game has been made in Unity because that means I can look at it and say 'I can make something like this happen if I put my mind to it.'
Great Video. You have an amazing style to explain concepts so even I as a beginner don't feel lost. Great Timing and thank you for not hurrying along. I'm hoping to see many more Videos :)
Actually as a general tip to everyone dump your external packages in to a separate folder add an assembly definition so that unity won't rebuild those all the time aswell!.
I installed unity 2 days ago and it takes 10+ minutes to load a core 2D project, anyway to speed it up? My pc is i5, 8gb ram, 2gb nvidia 820m any suggestions?
I finished that dll process months ago, but CAN"T wait to see how you do it. Great series of videos so far. I don't remember if I saw you anywhere else, but your solo videos are working out soo much better. I would LOVE a video on Marvin, and that other project manager one. Obsidian. I think I get obsidian, since its free'ish. BUt 'amazing' Marvin, the one I found was paid. So WOULD love a break down and more real life how you do it vs their help project. AND how you setup windows desktops. I think I could do the desktops, but a quick overview would rock! AND do you have a better work flow for your tags, html, mark up code for Obsidian. LIKE how you built that, HOW to replace default unity scripts. I need that level of documentation, but easy to look up. Was looking like a nice html webpage, but was in Obsidian I gather.
Awesome video, Jason, I'm following your videos. I am trying to work similar, decoupling the business logic from the technologies like unity. I would appreciate a video explaining how to separate this layers correctly. For example, when we are programming a Mario game, the Mario model can't have vectors or use the engine tools like physics checks. Also, are x and y coordinates part of the business part? If they are used to calculate things, maybe yes. But if it's just for rendering in the screen, maybe not. How do you decide it?. My approach would be having a unity class (MarioUnity) and then the Model (that is testable, etc). Works fine, but the logic is split into the infrastructure layer and the business layer. It has benefits, but it's not perfect. It would mean the world if you could answer this. Thank you. :)
Very informative! Thank you! Had a bit of trouble with with importing Cinemachine but that's easily fixable by adding an Assembly Definition Reference for `com.unity.cinemachine`.
if you finish a vid with a teaser for next video about the external compilation, please link some where (in video or in vid description) so we can find it ;)
I tried adding assembly definitions to my game and got a ton of "type or namespace missing errors." For example, it no longer liked the TMPro using statements.
You have to select your assembly and add in section 'Assembly Definition References' your dependecies, for example your TextMeshPro should be named like unity.TextMeshPro.dll. Don't forget to hit apply on the bottom. Afterwards the change is active and the compiler errors should disappear.
@@FileTh1rt3en I have not come across this particular case yet. However, if you select a C# file in Unity, you can see the DLL name under 'Assembly Information'.
I gave it a try to manually compile assemblies from Visual Studio and also I had to use Editor script, which was monitoring files for changes to make Unity reload. It was faster than auto compile in Unity but I give up because you had to disable asset reload done by Unity and there was a chance that you forget about it and spend hours, searching for a bug, while all problems was caused by cached assembly. As for now, 1-3 sec delay seems to be the best way. Also, I am thinking to split code between logic and UI. The first one can be tested within Visual Studio using test. Oh and tried JetBrains which allows you to test Unity within its own editor but it has way too much bugs, critical for my workflow.
Jason Storey! You've grown so much. Perfect voice, look and skill to be a UA-cam dev! nice camera and lighting too.
Great work pal! This is an excellent supplement to the Assembly Definitions video I made, and goes into more technical detail about what's ACTUALLY happening and why. Love it. Will be sharing this on the Discord.
Using games built in Unity to demonstrate this topic is brilliant. Another great video, Jason! I'm on the edge of my seat waiting for the next one :D
not sure you will read this but I used to love your videos, always chill + concise and to the point. but then they became poorly acted telenovelas and that made me left. It truly felt like you didn't care at all about the viewer's time but rather the view time and you were just looking for ways to pad out your video length. total opposite of old school infallible code
Its been a year... Well.. We're waiting!
@@googleuser4720 yup, still waiting ;)
I can't believe you left it on a cliff-hanger! I sat through this going "yes, yea the pain, yup." and I thought you was going to show the magical solution, but nope instead "catch you on the next one" lmao. Over all great video, and I'm so looking forward to the next video :)
Guess there won't be a next video ahahah
feels familiar oh yes unity promises
@@Morphexe his next videos were completely unrelated.. :/
@@Meithighs sadly it seems it was all empty promises. Had potencial.
same lol.
You forgot to do the next video!
ua-cam.com/video/eovjb5xn8y0/v-deo.html
While I already knew how to do this, I don't know why I didn't understand the significance of it until Jason explains it in such a clear way. Keep this content coming Jason, it is pure gold.
Great video
The explanation was great, but combining it with some simple worked examples really helped cement it in my brain. Thank you!
Loading bar is almost as slow as your upload schedule! 🙃
Looking forward to the next tutorial! 🍿
I admit, I should be looking under the hood more than I do. I treat Unity like a tool, don't care what engine it has, as long as it gets me to my goal. However, I know if I learned more on how it works, I would improve my overall results.
Also, thanks again Storey! Love what you're adding to the community.
Great content: explaining perfectly, in 5 minutes, a simple but extremely helpful concept/tip. Thank you.
OMG and you have never created a video explaining how to compile it and put it in Unity directory. I am using separate assemblies but your solution seems to be even faster than that. At least you mentioned few keywords and I know in which direction to continue research! THANK YOU!
Great explanations! Love that you finally have your channel and are uploading content!!
Still waiting for that next video :) :) :)
We need the next video!
Think you said it once in other Jasons stream a while back how to make your own dll the proper way.
Though it was just my computer being old, but even on my new NVME SSD unity is slow to build even when usng assembly defenition
This seems really cool. If I understand correctly, creating assembly definitions allows you to compile scripts into separate DLLs so that when a change is made to a script only the associated DLL needs to be recompiled instead of the entire Unity project. If that is the case, I'm confused as to why you would need to build the DLLs manually instead of letting Unity handle it. Does Unity rebuild all DLLs in the project by default each time? That seems like it would defeat the purpose of assembly definitions.
Good question.
Depends on what is the default assembly definition, it seams to automaticly create a new unique assembly so nothing breaks, most likely with a hash as name and afterwards links it in.
If you write you own it is fixed as well so it should partly resolve the issue. (Plugins will not adhere and still clutter it up over time)
But if you build external you can make shure all changes are covered in this newway with no leftovers cluttering it up :)
Where is the promised video on automation of unity dll building and attaching?
Look at you casually optimizing EVERYTHING!!!
Thank you and looking forward to your next video 😄
you are the best. I was talking to a friend the other day complaining about my slow computer needing to refresh the assemblies everytime before testing my games. I had no idea this was possible. thank you so much for being a god at what you do :D
Awesome content Jason! When the part 2 of this video will be available?
Coming right before the important part and not actually doing it even almost a whole year later, great.. super helpful...
Sorry, had some life stuff come up. Have a full refund.
@@JasonStorey 😂
Tbf I'm frustrated at the script change iteration time nothing more :(
Jason Great video , I saw you on the stream of Jason Weimann , and we met inside the arena Giveaway as well that day haha Thx again for great tutos and advises.
next video on this please jason!
great video. been using C# and VS for 20 years, so separate DLLs, references, namespaces, etc. are second nature to me. but when I got into Unity, it seemed confusing and limited. this is a strange little method to make separate DLLs but this practice should be much more common. Example: if you need to patch the network code in your game. If your network logic is in its own assembly, your patch might only need to distribute that one small DLL.
I definitely need to re-arrange some things in my project. This tutorial was awesome. I think this is why it takes my game so long to compile itself.
I'll be waiting for the next one! This may help all newbs(myself included) out there save hours and hours of waiting to recompile, cheers for this! Much appreciated.
for some reason I just feel like this knowledge just instantly made my unity skills go up significantly.. This adds so much flexibility and actually the fact I know what really goes on behind my scripts.
You save our time! I am a newbie dev, I don't know doing this could break unity or not, but I will try it. You are such an amazing developer.
Edit: Looking for the next video.
This is SUCH good content. Thank you, thank you, thank you!
This is exactly what I didn't know I needed.
Been searching for something like this for a long time.
From the depths of my brackets, I.Thank(You);
Great info, keep it coming! This hits home as Unity inefficiencies have always been a big nightmare.
Where is the second part? D=
Hype! Can we expect that if we do it ourselves, it can be much faster than the Unity way?
Things I didn't know I needed to know after 6 years using Unity. You got my sub.
Great info, can't wait for next video!
Thank you!!
Thanks Json. I'll hold my breath for next video.
Short and sweet tutorial, thank you! I would love to see that "next video" though ;D
Excellent content and production quality thanks
I never would have known this. I wouldn't have known it was a problem, nor how to look online for a solution. Thank you!
Awesome video; I've always used assembly definition assets, but this video reinforces my motivation to use them and gained a deeper understanding. Very cool :D
it's sad he just stopped this channel had crazy good potential and he had a really good view count too. I don't know why you'd dump a channel doing so well
because he does not want to share his secret of building the game, because someone else may finish a video game before him.
Oh man the cliff hanger... good stuff waiting on next video. @Jason Storey keep the content coming this is great.
Great video! Looking forward to the next one.
Stoked to see you've got your own channel!
Pretty short but useful. Keep that good work 😃
This is a long loading time for the next video ... :)
This one is a cool topic scratcher video! Looking forward to check out the next one!
Very useful , Short and sweet. Keep the coming please.
Just found this gem of a channell! Nice job covering some real pain points of unity! When is the next video coming ? :) I find that topic quite interesting and would love to see how you do it!
Good Job!
The issue is when you place you code in external DLL (not the assembly definition way), you lost the stacktrace line number information. I used this approach before and when an error occurs inside a function from the DLL, I could not know the exact line that raise the exception. The time to to track the issue in this case could exceed the compile time. ( My project is not huge so my compile time is not very long so I simply prefer to put my code in the project). It doesn't mean its not worth putting code in external dll. Some hard to change stable codes could be extracted to DLL to help a bit.
Did you delete the PDB file that was included with your debug build? That is what it is for. It maintains stack trace information for debugging into dlls. It also wont be created for you if you build in release mode as it assumes... you are releasing.
@@JasonStorey I did copy paste the PDB alongside the debug DLL but don't know why the stacktrace show line 0 for all stack frames. It was so frustrating and I gave up. Anyway, thanks for the reply. Really didn't expect that. Looking forward to your next video.
Where is the next video? This has been up for 6 months but no next video..?
Best channel on UA-cam for this kind of content!
Agreed. I have been making a huge game for a few years. Assembly Def's are a life saver. It takes to long to recompile everything every time. More time coding, less time waiting.
We’re waiting for the next video!
Did he never make the follow-up video to this? Talk about bait-n-switch!
Where is the next video?
I love assembly definitions. I've been using them since IC covered them and I find it to be a really pleasing way to organize things. I haven't yet built a project that is big enough to really have a noticeable change in compile times, but I'm glad to know that I'll be easily taking advantage of the shorter compile times when I *do* make a big project, because I'm already in the habit of making assembly definitions.
It's kinda cool that we can pretty easily identify what games were built in Unity because of the Assembly-CSharp thing! I always love learning that a game has been made in Unity because that means I can look at it and say 'I can make something like this happen if I put my mind to it.'
man here explaining how this issue hurts iteration processes and you come up with compile times 💀💀💀
Wheres part 2?
Thanks for covering that! Fantastic video! Every time I see one of your videos I learn something new :).
Great Video. You have an amazing style to explain concepts so even I as a beginner don't feel lost. Great Timing and thank you for not hurrying along. I'm hoping to see many more Videos :)
Scientific json with mind-blowing video after a long time! Thanks
Actually as a general tip to everyone dump your external packages in to a separate folder add an assembly definition so that unity won't rebuild those all the time aswell!.
Subscribed and excited for the implementation in the next video!
Your next video talks about Software Architecture. Did you ever end up making the assembly video, as you mentioned at the end of this video?
Beautiful video. Explanations are great. Keeping it short helps with attention span. Great content man keep it up :)
Very good stuff! Keep it up Jason.
Looking forward to the next video!
Was there a follow up on this video?
Soo looking forward to what you have to say on the DLL thing!:))
That's a pretty clear explanation, thank you
This was incredibly educational
Thank you for the content, you do a great job covering such topics. I hope you will make more similar videos (medium level)
Where's the next video? i'm going crazy.
what a phenomenal video
Thank you for this informative video Jason.
I'm looking forward for the next video, my game go crazy 20 seconds after pressing play
i also noticed that versions 2019 + seem to show the compile loading bar twice.
Thanks very informative, waiting for next video
I installed unity 2 days ago and it takes 10+ minutes to load a core 2D project, anyway to speed it up? My pc is i5, 8gb ram, 2gb nvidia 820m any suggestions?
I finished that dll process months ago, but CAN"T wait to see how you do it. Great series of videos so far. I don't remember if I saw you anywhere else, but your solo videos are working out soo much better.
I would LOVE a video on Marvin, and that other project manager one. Obsidian. I think I get obsidian, since its free'ish. BUt 'amazing' Marvin, the one I found was paid. So WOULD love a break down and more real life how you do it vs their help project. AND how you setup windows desktops. I think I could do the desktops, but a quick overview would rock!
AND do you have a better work flow for your tags, html, mark up code for Obsidian. LIKE how you built that, HOW to replace default unity scripts. I need that level of documentation, but easy to look up. Was looking like a nice html webpage, but was in Obsidian I gather.
Jason, this channel has a lot of potential. Come back!
I really hope you do the next step in the next video to learn how to do it
This is Expert Info Great Video
Is the next video still coming?
Where is that next video? Where is the link?
Awesome video, Jason, I'm following your videos. I am trying to work similar, decoupling the business logic from the technologies like unity. I would appreciate a video explaining how to separate this layers correctly. For example, when we are programming a Mario game, the Mario model can't have vectors or use the engine tools like physics checks. Also, are x and y coordinates part of the business part? If they are used to calculate things, maybe yes. But if it's just for rendering in the screen, maybe not. How do you decide it?. My approach would be having a unity class (MarioUnity) and then the Model (that is testable, etc). Works fine, but the logic is split into the infrastructure layer and the business layer. It has benefits, but it's not perfect. It would mean the world if you could answer this. Thank you. :)
wheres this next video lol
Lmao, never thought of this. Thanks for this sneak peek behind the scenes.
Really like this. Thank you.
still looking for the next video :(
Very informative! Thank you!
Had a bit of trouble with with importing Cinemachine but that's easily fixable by adding an Assembly Definition Reference for `com.unity.cinemachine`.
if you finish a vid with a teaser for next video about the external compilation, please link some where (in video or in vid description) so we can find it ;)
when!!???
great stuff mate! keep it up!
Thanks to Tarodev I found another expert channel which steps into unique contents.
I tried adding assembly definitions to my game and got a ton of "type or namespace missing errors." For example, it no longer liked the TMPro using statements.
You have to select your assembly and add in section 'Assembly Definition References' your dependecies, for example your TextMeshPro should be named like unity.TextMeshPro.dll. Don't forget to hit apply on the bottom. Afterwards the change is active and the compiler errors should disappear.
@@cognos23 What about finding the name of an assembly definition that isn't named the same as it's namespace, like StarterAssets?
@@FileTh1rt3en I have not come across this particular case yet. However, if you select a C# file in Unity, you can see the DLL name under 'Assembly Information'.
cant wait for next video ;p
Literally waiting for my Unity to finish importing stuff for the 3rd time, while watching this. 😂🧡
Where that next video, waiting for that with intent :P
Will we ever get the second half? Kinda hard to utilize at my level of inexperience only with part 1. 😅
I agree
I gave it a try to manually compile assemblies from Visual Studio and also I had to use Editor script, which was monitoring files for changes to make Unity reload. It was faster than auto compile in Unity but I give up because you had to disable asset reload done by Unity and there was a chance that you forget about it and spend hours, searching for a bug, while all problems was caused by cached assembly. As for now, 1-3 sec delay seems to be the best way.
Also, I am thinking to split code between logic and UI. The first one can be tested within Visual Studio using test. Oh and tried JetBrains which allows you to test Unity within its own editor but it has way too much bugs, critical for my workflow.