Hey, I have some comments: - You mention using POT textures is the most important part, but that's only true in some setups. At some point you had a warning saying that it couldn't compress the texture because it's width or height we're not a multiple of 4, so that's also an option too in some cases. - Related to that and atlases, you don't need to worry about POT or multiples of 4 if you put sprites in an atlas. You kind of mentioned that, but then at the end you added a new sprite and made it POT while you could have made it of any size and put it inside an atlas. Those 2 points are really important for artists, it's better to let Unity do the annoying work and remove that step from the artists' task. Also, this is REALLY usefull whey using sprites for UI, since you usually want sprites to stretch and stuff like that. Having extra invisible space makes it harder to place them consistently. - When you created the atlas you mentioned that since you had some big images, they took all the space and some other images didn't fit in. You don't need to remove them, when you create an atlas it'll automatically create multiple textures to fit everything. You can see these other textures if you press the "#1" button in the preview header. I'd suggest you keep everything in the atlas to save more space. - The 40MB atlas can be imported as individual images and let Unity put them in an atlas. May seem redundant, but if you compare your handmade atlas with Unity's you'll see they pack sprites a lot tighter, you might save some more space if Unity's packaging removes enough empty space to use a smaller POT size But anyway, this was a really good video, lots of people don't know about this stuff and it's nice to see real world examples of the benefits of using good import settings.
What is this about? > Also, this is REALLY usefull whey using sprites for UI, since you usually want sprites to stretch and stuff like that. Having extra invisible space makes it harder to place them consistently. I don;t understand what you mean here. Sprites can be tiled and 9-sliced all the same regardless of whether they're in an atlas or alone or NPOT texture
You can actually create something like two pixel image to use as gradient to save even more memory. Top pixel would be lighter green, bottom one darker green in this case. If you apply it to an image component stretched across your screen Unity will blend these colors (filtering mode needs to be set to bilinear or trilinear).
Two colors don't make a gradient though, as gradients have many variants of those two colors. On very small screens you might get away with a 2 pixel image for this, but not in a webgl screen.
@@CyberAngel67 I think you miss understand. you aren't using the 2 pixels as the gradient. you're generating a gradient by up scaling the image. then sampling the up scaled version
@@CyberAngel67 nope. Most upscale algorithms try to make a gradient between pixels to make them appear to have more information than they do. Unity by default uses nearest neighbour upscale which creates a pixel which is the average of the surrounding neighbours. If you do this with 2 pixels, 1 you will get a linear gradient between the two initial colours as it tries to add detail. This is also the reason pixel art is blurry when you first put it into unity
@12:20 this is a nice tip! You can go even more crazy and have the sprite only consist of 2 pixels (1 wide, 2 high). Unity will then create a gradient for you. I think that leaves you with a file size of 8 Byte ;)
Your lesson about unity optimization is the most usefull I have ever watched on youtube ! I have been looking for such video for a long time. Thank you so much, liked and subscribed to your channel. You made my day!
Thank you so much for this great information! I really hope you keep making great videos like this one. Subbed and I've told all my subs (currently 9,700+) about it. Well done sir!
Never thought about sprite sizes since i had all the power of pc. This info will deffinately be worth a while exporting for webgl and mobile. Thanks! Subscribed!
is it even posible to make low mb game like 5 MB etc, cause from what I see in my build editor log my small game that's pixel art takes Total User Assets 8.6 MB but it says Complete build size 71.6 MB? what are those other 63 mb?
This is great. I'm currently trying to get our project running on iOS, but it won't assign more than 128MB so optimisation is absolutely vital. Looking forward to that audio optimisation guide!
@@GameDevLuuk Tried it out in a prototype ive been working on and got it down from 20 mb to 5 mb following your workflow! Looking forward to the video about sound files
Sprite atlas WILL FIT ALL! Do not mislead people! There is #1 in the top right over the atlas previre - this is the number of atlas it generated. It will generate as much atlases as needed to fit all!
Great advices. Do you have any advice on how to reduce the size of the sounds? Which are the other heavy resources. If you had to optimize the sound weight for Tied Together, I'd love to know how did you do it.
Can you optimize files directly from asset folders with other app. So that when you save the file, lets say using photoshop, then the next time you start Unity, it automatically loads that (newly modified) file on startup?
Hey Luuk, thanks a lot for the tips! I hear a dutch accent :D I may be wrong. You've made a wonderful game, congrats! Have you considered launching on other platforms? I'd like to get the game to support you and because the game seems fun, but I don't own a switch.
Hey! I'm wondering if there is some way of optimizing the "Imported DLLs" part, I can never get it below 13 MB, I'm fairly sure that it's the actual engine code, but even removing internal packages such as AI or Video doesn't change this value at all. Do you happen to know how to reduce this value even further? Are there also tips on how to optimize RAM usage?
Hi Rafael, thanks for your questions. Optimizing is a very broad topic with lots of different and specific tricks for each game. From the top of my head an empty Unity project is about 6MB in total. My guess would be is that you are using certain packages. RAM usage would be your textures, models, sprites you use. You can check de Frame Debugger to get a step by step overview of exactly what is being sent to the RAM and how costly it is. Consider static batching, dynamic batching, light baking, texture atlases. Luuk
The change to the power of 2 seems to have a reverse effect in my project. While I had to reduce the width of my sprites slightly I also had to increase the height (added transparency) on most of them and after the changes the project is slightly bigger. Has anyone got any ideas about this? Not a big problem though I still reduced the size of the project significantly by: * lower the quality of sounds and music. * change compression from gzip to brotli (my new server supports it, it works well) * change texture format from DXT to ASTC * strip unused code (high)
FPS ofcourse is one of the biggest things to tackle when talking about optimization. Hit that sweet 60 FPS on target devices, optimized scripts, reduce drawcalls. But my golden rule is always; optimize what needs to be optimized, don't optimize for the sake of optimizing.
I had to come back to this video, because even after crucnh compressing all the textures, removing unnecessary packages, and all sorts of stuff, the build still consist mostly of included DLLs. Even DLLs in my empty project takes more space than those in your build. How can I solve this issue? I really have no idea which dlls are necessary and which arent, so i dont reall wanna manually do something without technical help
Thanks for the tutorial! I packed all my sprites into a couple of Sprite Atlases (a lot of sprites and none of them POT) but my webgl build size stays the same (>70mb) and I really need to get it way down. Do I have to do anything else to let Unity know to use the sprite atlases or is it doing this automatically? Thanks!
Yes it will use it automatically. You can check changes in build size in the build report as shown in the video. Perhaps your sprite packer settings are not correct? Good luck!
2D or 3D doesn't matter that much, models are very cheap in general, only a few KB. So focus on the textures of your models. You can apply the same tricks on them.
Check out Resource Checker on the asset store. It will give you a report on texture usage in your project without having to do a build. It's much faster for iteration if you don't have to do a build to get the build report. assetstore.unity.com/packages/tools/utilities/resource-checker-3224
The principles work for 3D too. Models are actually very small in terms of file size. The textures though are not, you can optimize them with the same techniques shown in the video.
Hey :) This is a very general question, I don't much with player settings optimization. One thing is setting the Exceptions to none, this should make the build a little bit smaller. Apart from that I don't do much in the player settings. Good luck!
Your video really help me project file size. Many thanks to you. @GameDevLuuk. If possible could you cover the topic of WebGL build with compression format of "Gzip" or "Brotli" how to get it work after unity 2020.1? It does not seem working for me, and it does not sound like a bug, and require do more manual setting(script) to get it works.
hi Isaac, thanks for the kind words and glad they helped you in your game dev journey! I am afraid I didn't touch upon WebGL in Unity 2020 yet. Hope it is solved by now
Sorry for this super late reply. WebGL and HTML5 are not the same but both run in a browser. It is currently not possible to make HTML5 games in Unity. You will have to use Unity WebGL for this.
"Ha Ha Ha you only have 200 subs". I am laughing at you because I find that when people laugh at you, one tends to be more successful so I hope that 200 subs turns to 200K soon and than to 2 million and beyond.
alright boys we gotta gas his channel up. This man is wayyyy too underrated. best game dev out there by far.
ik
Took my game from 2.6 GB to 0.7GB, loads about 4 times as fast now and of course is much smaller. Very great and informative video actually.
Thanks for the comment and very happy for your result :)
I just got my project down from 107mb to 14.9mb! This video is great, thank you!
Hey, I have some comments:
- You mention using POT textures is the most important part, but that's only true in some setups. At some point you had a warning saying that it couldn't compress the texture because it's width or height we're not a multiple of 4, so that's also an option too in some cases.
- Related to that and atlases, you don't need to worry about POT or multiples of 4 if you put sprites in an atlas. You kind of mentioned that, but then at the end you added a new sprite and made it POT while you could have made it of any size and put it inside an atlas.
Those 2 points are really important for artists, it's better to let Unity do the annoying work and remove that step from the artists' task. Also, this is REALLY usefull whey using sprites for UI, since you usually want sprites to stretch and stuff like that. Having extra invisible space makes it harder to place them consistently.
- When you created the atlas you mentioned that since you had some big images, they took all the space and some other images didn't fit in. You don't need to remove them, when you create an atlas it'll automatically create multiple textures to fit everything. You can see these other textures if you press the "#1" button in the preview header. I'd suggest you keep everything in the atlas to save more space.
- The 40MB atlas can be imported as individual images and let Unity put them in an atlas. May seem redundant, but if you compare your handmade atlas with Unity's you'll see they pack sprites a lot tighter, you might save some more space if Unity's packaging removes enough empty space to use a smaller POT size
But anyway, this was a really good video, lots of people don't know about this stuff and it's nice to see real world examples of the benefits of using good import settings.
Thanks for your in-depth feedback, I totally agree with the points mentioned, keep it up!
What is this about?
> Also, this is REALLY usefull whey using sprites for UI, since you usually want sprites to stretch and stuff like that. Having extra invisible space makes it harder to place them consistently.
I don;t understand what you mean here. Sprites can be tiled and 9-sliced all the same regardless of whether they're in an atlas or alone or NPOT texture
This is gold. Great video, saved my team in the final build stages. Thank you
Awesome, thanks and gl with the release🙏
You can actually create something like two pixel image to use as gradient to save even more memory. Top pixel would be lighter green, bottom one darker green in this case. If you apply it to an image component stretched across your screen Unity will blend these colors (filtering mode needs to be set to bilinear or trilinear).
Hi there, this is very true, thanks for pointing it out!
Two colors don't make a gradient though, as gradients have many variants of those two colors. On very small screens you might get away with a 2 pixel image for this, but not in a webgl screen.
@@CyberAngel67 I think you miss understand. you aren't using the 2 pixels as the gradient. you're generating a gradient by up scaling the image. then sampling the up scaled version
@@marshmallow_fellow I understand, but upscaling you still only have two colors, do you not.
@@CyberAngel67 nope. Most upscale algorithms try to make a gradient between pixels to make them appear to have more information than they do. Unity by default uses nearest neighbour upscale which creates a pixel which is the average of the surrounding neighbours. If you do this with 2 pixels, 1 you will get a linear gradient between the two initial colours as it tries to add detail. This is also the reason pixel art is blurry when you first put it into unity
Really impressive!
I just reduced my build from 46mb to 12mb and still have more assets to change.
@12:20 this is a nice tip! You can go even more crazy and have the sprite only consist of 2 pixels (1 wide, 2 high). Unity will then create a gradient for you. I think that leaves you with a file size of 8 Byte ;)
Your lesson about unity optimization is the most usefull I have ever watched on youtube ! I have been looking for such video for a long time. Thank you so much, liked and subscribed to your channel. You made my day!
Thanks for the kind words, glad it helped you and keep making (optimized 😂 ) games!
Wow man i really hope your channel succeeds! It is so awesome, keep up the good work!
Thank you so much for this great information! I really hope you keep making great videos like this one. Subbed and I've told all my subs (currently 9,700+) about it. Well done sir!
Thanks for the kind words Matt! And keep going too :D
great video Luuk - definitely going to refer to this in my next project, cheers!
Never thought about sprite sizes since i had all the power of pc. This info will deffinately be worth a while exporting for webgl and mobile. Thanks! Subscribed!
Good to have you :D
Great video!
6:00 You should increase the game preview scale to 1.0 to get an actual representation of what your assets will look like in the specified resolution.
Nice and simple tips to apply in your game, took me 5 minutes to halve the build size!!! Thanks
Amazing result!
My Lord, this man just got another subscriber
This was so helpful! Thank you!
Glad to hear this!
Best texture size optimization video ever
Duude! That was awesome! Thank you!
very appreciated your hard work and understandable tutorial thank you so much
Actually very usefull , thanks for the tips
Holy crap. Wish I had this info before my texture size went up to 3.4 gb but thanks!!!
That's nothing compared to Warzone, right? 😅
This is awesome! Thank you very much!
is it even posible to make low mb game like 5 MB etc, cause from what I see in my build editor log my small game that's pixel art takes Total User Assets 8.6 MB but it says Complete build size 71.6 MB? what are those other 63 mb?
One thing you must do after watching the video! The Thumbs up! Geate thing
This is gold. Thank you mate!
Thanks Diego, have fun coding 😎
Great tip, thanks!
I got great results
Thank you so much ❤
Great to hear man! Glad my tips could help 😍
Yoo Thank you so much you are the best!!
Thanks for the video. Very informative.
Thanks a lot for sharing!
Thankyou man. Those are some realy pro level tips! 👍
Glad they helped :)
Great job!
Thank you! You're a god. Super helpful!
amazing!!! appreciate it man!
Thankyou ,was a good video.
This is great. I'm currently trying to get our project running on iOS, but it won't assign more than 128MB so optimisation is absolutely vital. Looking forward to that audio optimisation guide!
128 MB is plenty ;) I am sure you will do it easily with these tips 🔥
Still waiting for that audio optimization video ;)
Fantastic video!
Thanks man :)
@@GameDevLuuk Tried it out in a prototype ive been working on and got it down from 20 mb to 5 mb following your workflow! Looking forward to the video about sound files
@@Reikha1987 great to hear, amazing results, keep it up!
Sprite atlas WILL FIT ALL! Do not mislead people! There is #1 in the top right over the atlas previre - this is the number of atlas it generated. It will generate as much atlases as needed to fit all!
this is really helpful thank you !
This is amazing. Thank you
Great advices. Do you have any advice on how to reduce the size of the sounds? Which are the other heavy resources. If you had to optimize the sound weight for Tied Together, I'd love to know how did you do it.
Thank you for this video
Can you optimize files directly from asset folders with other app. So that when you save the file, lets say using photoshop, then the next time you start Unity, it automatically loads that (newly modified) file on startup?
Great video, thank you!
how you get all this good qyality. when i create a cricle on scene, and play on my phone (in unity remote)my quality is low and my fps is down why ??
upcoming brackeys for sure
Good Job Mate.
Hey Luuk, thanks a lot for the tips! I hear a dutch accent :D I may be wrong. You've made a wonderful game, congrats! Have you considered launching on other platforms? I'd like to get the game to support you and because the game seems fun, but I don't own a switch.
Haha still working on the accent :D Right now it is only available on the Switch. Thanks for interest though!
amazing tutorial
Very cool and helpful video, man! :)
Also, could you make the same video but about 3d game?
+1
Hey! I'm wondering if there is some way of optimizing the "Imported DLLs" part, I can never get it below 13 MB, I'm fairly sure that it's the actual engine code, but even removing internal packages such as AI or Video doesn't change this value at all. Do you happen to know how to reduce this value even further?
Are there also tips on how to optimize RAM usage?
Hi Rafael, thanks for your questions. Optimizing is a very broad topic with lots of different and specific tricks for each game. From the top of my head an empty Unity project is about 6MB in total. My guess would be is that you are using certain packages.
RAM usage would be your textures, models, sprites you use. You can check de Frame Debugger to get a step by step overview of exactly what is being sent to the RAM and how costly it is. Consider static batching, dynamic batching, light baking, texture atlases.
Luuk
When is the optimizing audio video :(
Great tutorial
The change to the power of 2 seems to have a reverse effect in my project. While I had to reduce the width of my sprites slightly I also had to increase the height (added transparency) on most of them and after the changes the project is slightly bigger. Has anyone got any ideas about this? Not a big problem though I still reduced the size of the project significantly by:
* lower the quality of sounds and music.
* change compression from gzip to brotli (my new server supports it, it works well)
* change texture format from DXT to ASTC
* strip unused code (high)
ur doing gods work
how to make Unity display the texture weight like yours?
What are some ways to optimize performance once the size is optimized?
FPS ofcourse is one of the biggest things to tackle when talking about optimization. Hit that sweet 60 FPS on target devices, optimized scripts, reduce drawcalls. But my golden rule is always; optimize what needs to be optimized, don't optimize for the sake of optimizing.
@@GameDevLuuk Cool, thank you!
I had to come back to this video, because even after crucnh compressing all the textures, removing unnecessary packages, and all sorts of stuff, the build still consist mostly of included DLLs. Even DLLs in my empty project takes more space than those in your build. How can I solve this issue? I really have no idea which dlls are necessary and which arent, so i dont reall wanna manually do something without technical help
the best! thanks!
Great job with this video. Thank you very much. Did you finally made the video with audio compression? That would be really helpful too. Thanks again!
Thanks! Nothing new yet on the audio one, it was a lot less promising then the textures.
Hello, can this optimization be used only on Ui, can it be used on model mapping?
Thanks bro!
Thanks for the tutorial! I packed all my sprites into a couple of Sprite Atlases (a lot of sprites and none of them POT) but my webgl build size stays the same (>70mb) and I really need to get it way down. Do I have to do anything else to let Unity know to use the sprite atlases or is it doing this automatically? Thanks!
Yes it will use it automatically. You can check changes in build size in the build report as shown in the video. Perhaps your sprite packer settings are not correct? Good luck!
@@GameDevLuuk Sry I think I got confused and it seems that my audio files are the problem. Thank you very much! Subscribed :)
This is really really cool, may i have some of your advice if i want to optimize a 3d game game instead of 2d?
2D or 3D doesn't matter that much, models are very cheap in general, only a few KB. So focus on the textures of your models. You can apply the same tricks on them.
How to reduce the include DLL file size. You skip this option
amazing video,
thanks for the kind words!
Check out Resource Checker on the asset store. It will give you a report on texture usage in your project without having to do a build. It's much faster for iteration if you don't have to do a build to get the build report.
assetstore.unity.com/packages/tools/utilities/resource-checker-3224
great video, have you figured this out for 3d as well?
The principles work for 3D too. Models are actually very small in terms of file size. The textures though are not, you can optimize them with the same techniques shown in the video.
Mipmap will occupy memory, webgl lack of memory,Is this ok?
How can we optimise it without diminishing the quality?
Lower it just enough
The build report does not appear in my log editor, why? how can i find it?
It only shows up AFTER you made a build.
Great tips thanks. But i still don't know how those guys optimized those vast watercolor textures for their game Gris.
Do you have any tips for player setting optimisation?
Hey :) This is a very general question, I don't much with player settings optimization. One thing is setting the Exceptions to none, this should make the build a little bit smaller. Apart from that I don't do much in the player settings. Good luck!
Your video really help me project file size. Many thanks to you. @GameDevLuuk. If possible could you cover the topic of WebGL build with compression format of "Gzip" or "Brotli" how to get it work after unity 2020.1? It does not seem working for me, and it does not sound like a bug, and require do more manual setting(script) to get it works.
hi Isaac, thanks for the kind words and glad they helped you in your game dev journey! I am afraid I didn't touch upon WebGL in Unity 2020 yet. Hope it is solved by now
Wow NICE !
Thank you!
How can I use webgl in arc welder?
DLLs are 50% of my build, 13MB. Anyone know how to optimise them?
one question please is webgl and HTML5 are same? how can i get HTML5 game off unity??
Sorry for this super late reply. WebGL and HTML5 are not the same but both run in a browser. It is currently not possible to make HTML5 games in Unity. You will have to use Unity WebGL for this.
Спасибо. Очень полезно
So unity automatically adds sprite atlas into the build instead of separate sprites?
Yes fully automatic 👍
@@GameDevLuuk cool. Thanks for the amazing video tutorial
very helpful
nice tut sir but also make tutorial for Unreal engine 4 ,How to optimize your Unreal engine 4 for WebGL : from 230MB to 3.7MB
New Brackeys here ? ;p
Thanks for this very interesting video (and thanks to all guys that comment with some more details and tips)
im using only UI elements
IDK why even im using unity
Unity can be very versatile ;)
great!
awesome !
Unity's sprite atlas system? What!!
SpriteAtlas, the new Sprite Packer, Find it here:
docs.unity3d.com/Manual/class-SpriteAtlas.html
@@GameDevLuuk Is it true that it doesn't work for 3D?
Nice
Its megabytes...
cool
{ [ [SUBSCRIBED] ] }
+1 like from me
"Ha Ha Ha you only have 200 subs".
I am laughing at you because I find that when people laugh at you, one tends to be more successful so I hope that 200 subs turns to 200K soon and than to 2 million and beyond.
what about sounds? .s3m .xm .it .mod = are not playble in webGL=((( it's huge problem=(
Super nice tips! Thank you!
very helpful thanks for sharing!