How to optimize your Unity game for Mobile, PC & WebGL: from 230MB to 3.7MB

Sdílet
Vložit
  • čas přidán 30. 05. 2024
  • How to optimize Unity Mobile, PC & WebGL to reduce build size? Is your Unity build as small as possible? Information about optimizing a Unity Mobile, PC & WebGL build is very limited, but not anymore! In this tutorial we take a look at optimizing the textures of a Unity build with incredible results. I started at 230MB and brought it back all the way to just 3.7MB.
    0:00 Intro
    1:34 Finding Bottlenecks
    2:46 Import Settings
    7:31 Sprite Atlas
    12:20 Repeatable Sprites
    14:17 Outro
    Support GameDevLuuk on Patreon!
    / gamedevluuk
    ♥ Subscribe: bit.ly/3gIbu7W
    BE PART OF THE COMMUNITY
    -------------------------------------
    ● Join the Discord: / discord
    ● Instagram: / gamedevluuk
    ● Twitter: / gamedevluuk

Komentáře • 140

  • @CROXoDyLE
    @CROXoDyLE Před 3 lety +36

    alright boys we gotta gas his channel up. This man is wayyyy too underrated. best game dev out there by far.

  • @5q11
    @5q11 Před 3 lety +44

    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).

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety +4

      Hi there, this is very true, thanks for pointing it out!

    • @CyberAngel67
      @CyberAngel67 Před 3 lety +2

      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.

    • @marshmallow_fellow
      @marshmallow_fellow Před 3 lety +3

      @@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
      @CyberAngel67 Před 3 lety

      @@marshmallow_fellow I understand, but upscaling you still only have two colors, do you not.

    • @marshmallow_fellow
      @marshmallow_fellow Před 3 lety +9

      @@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

  • @DiegoSLTS
    @DiegoSLTS Před 3 lety +37

    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.

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety +7

      Thanks for your in-depth feedback, I totally agree with the points mentioned, keep it up!

    • @EveryoneFknSucks
      @EveryoneFknSucks Před 9 měsíci

      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

  • @ConcreteJungleGames
    @ConcreteJungleGames Před 3 lety +1

    great video Luuk - definitely going to refer to this in my next project, cheers!

  • @xdeathknight72x
    @xdeathknight72x Před 3 lety +4

    I just got my project down from 107mb to 14.9mb! This video is great, thank you!

  • @aljosaskorjanc1475
    @aljosaskorjanc1475 Před 3 lety +1

    Wow man i really hope your channel succeeds! It is so awesome, keep up the good work!

  • @tpaslou
    @tpaslou Před 2 lety +6

    This is gold. Great video, saved my team in the final build stages. Thank you

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety +1

      Awesome, thanks and gl with the release🙏

  • @GarageCreativity
    @GarageCreativity Před 2 lety +2

    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!

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety +2

      Thanks for the kind words, glad it helped you and keep making (optimized 😂 ) games!

  • @thepolygonpilgrimage
    @thepolygonpilgrimage Před 2 lety +2

    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!

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety +1

      Thanks for the kind words Matt! And keep going too :D

  • @vivienlynn2585
    @vivienlynn2585 Před 3 lety +7

    @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 ;)

  • @PyroPhysicsGames
    @PyroPhysicsGames Před 3 lety

    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!

  • @yurinativo
    @yurinativo Před 9 měsíci +2

    Really impressive!
    I just reduced my build from 46mb to 12mb and still have more assets to change.

  • @attenurmi936
    @attenurmi936 Před 3 měsíci

    Super nice tips! Thank you!

  • @NevRS32
    @NevRS32 Před rokem

    Duude! That was awesome! Thank you!

  • @r3mus89
    @r3mus89 Před 3 lety +1

    This is awesome! Thank you very much!

  • @LaCreArthur
    @LaCreArthur Před 2 lety +1

    Nice and simple tips to apply in your game, took me 5 minutes to halve the build size!!! Thanks

  • @versystudio822
    @versystudio822 Před 3 lety

    Thanks for the video. Very informative.

  • @Luffydaman91
    @Luffydaman91 Před 3 lety +4

    This was so helpful! Thank you!

  • @mke344
    @mke344 Před 10 měsíci

    amazing!!! appreciate it man!

  • @orwell235
    @orwell235 Před rokem

    My Lord, this man just got another subscriber

  • @GokdenizCetin
    @GokdenizCetin Před rokem

    Best texture size optimization video ever

  • @samyam
    @samyam Před 3 lety +3

    Great video!

  • @aurelianobuendia24
    @aurelianobuendia24 Před 2 lety +2

    Actually very usefull , thanks for the tips

  • @darkkinght6677
    @darkkinght6677 Před 7 měsíci +1

    very appreciated your hard work and understandable tutorial thank you so much

  • @my_temporary_name
    @my_temporary_name Před 3 lety

    Great video, thank you!

  • @mingjyunhung6651
    @mingjyunhung6651 Před 11 měsíci

    this is really helpful thank you !

  • @DiegoCastares
    @DiegoCastares Před 2 lety

    This is gold. Thank you mate!

  • @equalique1
    @equalique1 Před 2 lety +1

    Thanks a lot for sharing!

  • @GeniusK
    @GeniusK Před 10 měsíci

    This is amazing. Thank you

  • @thevirtunaut1856
    @thevirtunaut1856 Před rokem

    Thank you! You're a god. Super helpful!

  • @PandemoniumGameDev
    @PandemoniumGameDev Před 3 lety +1

    Great tip, thanks!

  • @PolycarbonGames
    @PolycarbonGames Před 2 lety +1

    Great job!

  • @aliazzam7248
    @aliazzam7248 Před 3 lety

    I got great results
    Thank you so much ❤

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      Great to hear man! Glad my tips could help 😍

  • @MDweller
    @MDweller Před 3 lety

    Thankyou man. Those are some realy pro level tips! 👍

  • @syedfiazshah8821
    @syedfiazshah8821 Před 3 lety

    Good Job Mate.

  • @ha123461
    @ha123461 Před 3 lety

    ur doing gods work

  • @USBEN.
    @USBEN. Před 2 lety +1

    Thankyou ,was a good video.

  • @elp95
    @elp95 Před 2 lety +1

    Thank you for this video

  • @jayrome9946
    @jayrome9946 Před 11 měsíci

    Thanks bro!

  • @rajdeepdas86
    @rajdeepdas86 Před rokem

    amazing tutorial

  • @Finnigan28
    @Finnigan28 Před 3 lety +3

    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.

  • @lln6123
    @lln6123 Před rokem

    Great tutorial

  • @eriknastesjo843
    @eriknastesjo843 Před 3 lety

    Holy crap. Wish I had this info before my texture size went up to 3.4 gb but thanks!!!

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety

      That's nothing compared to Warzone, right? 😅

  • @rafaelskiarteportfolio1098

    Thank you!

  • @yojasmagic
    @yojasmagic Před 3 lety +1

    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
      @GameDevLuuk  Před 3 lety +2

      128 MB is plenty ;) I am sure you will do it easily with these tips 🔥

  • @457Deniz457
    @457Deniz457 Před 7 měsíci

    Wow NICE !

  • @Primu
    @Primu Před 4 měsíci

    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.

  • @Reikha1987
    @Reikha1987 Před 3 lety

    Fantastic video!

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      Thanks man :)

    • @Reikha1987
      @Reikha1987 Před 3 lety

      @@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

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      @@Reikha1987 great to hear, amazing results, keep it up!

  • @coderserabutan
    @coderserabutan Před 3 lety

    very helpful

  • @MohammadFaizanKhanJ
    @MohammadFaizanKhanJ Před 3 lety

    One thing you must do after watching the video! The Thumbs up! Geate thing

  • @moritahcol2810
    @moritahcol2810 Před 3 lety

    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!

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      Thanks! Nothing new yet on the audio one, it was a lot less promising then the textures.

  • @flyinwind8996
    @flyinwind8996 Před 2 lety +1

    great!

  • @BrammudaDepeSekali
    @BrammudaDepeSekali Před 3 lety

    awesome !

  • @markoviitanen4441
    @markoviitanen4441 Před 2 měsíci

    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?

  • @maabed1022
    @maabed1022 Před 3 lety +1

    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.

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety +1

      Haha still working on the accent :D Right now it is only available on the Switch. Thanks for interest though!

  • @rafaelbarbosa9347
    @rafaelbarbosa9347 Před 3 lety +2

    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?

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      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

  • @HefesTBunker
    @HefesTBunker Před 3 lety +3

    Very cool and helpful video, man! :)
    Also, could you make the same video but about 3d game?

  • @JonelKingas
    @JonelKingas Před 4 měsíci +1

    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?

  • @sadiqabbaszade4789
    @sadiqabbaszade4789 Před 3 lety

    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

  • @CROXoDyLE
    @CROXoDyLE Před 3 lety +1

    upcoming brackeys for sure

  • @MartinMcDermot
    @MartinMcDermot Před 3 lety

    amazing video,

  • @yuguojiang9408
    @yuguojiang9408 Před rokem

    Hello, can this optimization be used only on Ui, can it be used on model mapping?

  • @Koaalla
    @Koaalla Před 2 lety +1

    Спасибо. Очень полезно

  • @user-bf7xm5bo1d
    @user-bf7xm5bo1d Před 6 měsíci

    how to make Unity display the texture weight like yours?

  • @TALLISVENOMXD
    @TALLISVENOMXD Před 3 lety

    How can I use webgl in arc welder?

  • @battou2501
    @battou2501 Před rokem

    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!

  • @manuelberaha3435
    @manuelberaha3435 Před 2 lety

    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!

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety +2

      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!

    • @manuelberaha3435
      @manuelberaha3435 Před 2 lety

      @@GameDevLuuk Sry I think I got confused and it seems that my audio files are the problem. Thank you very much! Subscribed :)

  • @twibby6625
    @twibby6625 Před 3 lety +1

    New Brackeys here ? ;p
    Thanks for this very interesting video (and thanks to all guys that comment with some more details and tips)

  • @krzysztofpaszkiewicz1274
    @krzysztofpaszkiewicz1274 Před 8 měsíci

    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)

  • @Alex-op2kc
    @Alex-op2kc Před rokem

    Nice

  • @user-ee6yx5qn4d
    @user-ee6yx5qn4d Před rokem

    Mipmap will occupy memory, webgl lack of memory,Is this ok?

  • @bashirmia599
    @bashirmia599 Před 3 lety

    How to reduce the include DLL file size. You skip this option

  • @vmmi8215
    @vmmi8215 Před 3 lety +1

    This is really really cool, may i have some of your advice if i want to optimize a 3d game game instead of 2d?

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety

      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.

  • @digitalsketchguy
    @digitalsketchguy Před 3 lety

    Great tips thanks. But i still don't know how those guys optimized those vast watercolor textures for their game Gris.

  • @SkorpionYassine
    @SkorpionYassine Před 7 měsíci

    When is the optimizing audio video :(

  • @crystalape2195
    @crystalape2195 Před 2 lety

    great video, have you figured this out for 3d as well?

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety

      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.

  • @mickmickymick6927
    @mickmickymick6927 Před 3 lety

    DLLs are 50% of my build, 13MB. Anyone know how to optimise them?

  • @Pub_Squash
    @Pub_Squash Před 3 lety

    Do you have any tips for player setting optimisation?

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      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!

  • @sadiqabbaszade4789
    @sadiqabbaszade4789 Před 3 lety

    So unity automatically adds sprite atlas into the build instead of separate sprites?

  • @miguelayora8627
    @miguelayora8627 Před 2 lety

    The build report does not appear in my log editor, why? how can i find it?

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety

      It only shows up AFTER you made a build.

  • @eschewary367
    @eschewary367 Před 2 lety +1

    What are some ways to optimize performance once the size is optimized?

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety +1

      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.

    • @eschewary367
      @eschewary367 Před 2 lety

      @@GameDevLuuk Cool, thank you!

  • @apnadekhtu
    @apnadekhtu Před 3 lety

    one question please is webgl and HTML5 are same? how can i get HTML5 game off unity??

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      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.

  • @shihmeng91
    @shihmeng91 Před 3 lety

    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.

    • @GameDevLuuk
      @GameDevLuuk  Před 3 lety

      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

  • @nitinthewonderer
    @nitinthewonderer Před 8 měsíci +1

    How can we optimise it without diminishing the quality?

  • @ManojChauhan-kl3dh
    @ManojChauhan-kl3dh Před 3 lety

    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

  • @edwardsmith535
    @edwardsmith535 Před 3 lety +2

    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

  • @what-a-save
    @what-a-save Před 8 měsíci +1

    im using only UI elements
    IDK why even im using unity

  • @goldenpiece7087
    @goldenpiece7087 Před 3 lety

    +1 like from me

  • @violentgamer5910
    @violentgamer5910 Před 3 lety +1

    { [ [SUBSCRIBED] ] }

  • @David-gu8hv
    @David-gu8hv Před 2 lety

    Unity's sprite atlas system? What!!

    • @GameDevLuuk
      @GameDevLuuk  Před 2 lety

      SpriteAtlas, the new Sprite Packer, Find it here:
      docs.unity3d.com/Manual/class-SpriteAtlas.html

    • @David-gu8hv
      @David-gu8hv Před 2 lety

      @@GameDevLuuk Is it true that it doesn't work for 3D?

  • @richardbennett5022
    @richardbennett5022 Před 2 lety

    Its megabytes...

  • @asandax6
    @asandax6 Před 3 lety

    "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.

  • @ElmoLovesYou2
    @ElmoLovesYou2 Před 19 dny

    what about sounds? .s3m .xm .it .mod = are not playble in webGL=((( it's huge problem=(