Everyday Unity – Telegram
Everyday Unity
1.11K subscribers
157 photos
59 videos
42 files
2.36K links
A game developer and tech lead in a top grossing company posting Unity, programming, and gamedev related stuff that I find interesting
Website: https://gamedev.center

Most used tags are:
#performance
#shader
#interview

Author: @alexmtr
Download Telegram
🔥14👍1
The final talk of the conference, and the one I was most excited about: "Performance Tips & Tricks from a Unity Consultant."

I wanted to attend this session because one of my favorite talks ever at Unite was on the same topic by Ian Dundore. I learned a lot from it. I even wrote a post about all the tips from that session, which has helped me many times: https://news.1rj.ru/str/everydayUnity/1623

While I didn't learn a lot of new things this time, the talk was still very good overall.

Highlights:
- Use native profilers such as SuperLuminal. The Unity profiler shows a very limited call stack, and in deep profile mode, too much performance is consumed by capturing the call stack. Results become increasingly skewed the deeper the stack is.
- Prewarm your shaders and use shader variant collections (SVC). However, SVC is not supported by all graphics APIs.
- More improvements for graphics and shaders are coming in Unity 6, so they encourage updating.
- Use the SRP batcher and ensure your shaders are SRP batcher-compatible.
- Use instancing for more than 100 identical meshes. This is interesting because a few years ago it was suggested that instancing should be used from 1024 meshes. I suppose this should be tested in Unity 6 with specific use cases to confirm.
- I also asked during the Q&A which low-level API he recommends, and he suggested using BRG (I have written a blog post about this as well a long time ago when BRG was just released https://news.1rj.ru/str/everydayUnity/1716).
- Avoid quad overdraw. I shared a great post about this some time ago: https://news.1rj.ru/str/everydayUnity/1634.
- Basic shader advice: use half/int16 where possible, reduce the number of variables, and minimize texture samples.
- One particularly interesting point was about memory allocations: Boehm allocates memory in 4KB blocks, and a block isn't freed until all buckets within it are free. Because of this, you should allocate long-term memory together so it’s placed in the same block.
- Avoid multiple cameras, as each adds significant overhead. Use render features instead when possible.
- Mix UI and 3D with camera space UI.
- Use the resident drawer in Unity 6 for repeating meshes where draw calls are a bottleneck.
- Avoid duplicates in Addressables. Use the Addressables Analyzer, Build Reporter, and Memory Profiler's potential duplicates tool to find duplicated assets.
- Untracked memory in the Memory Profiler might not be an issue; native profilers can help determine that.
👍5🔥3
Controlling Unity's Rendering Order - Why and How

A detailed post packed with references to other posts, documentation, and even source code. Digging into source code is a crucial skill for software engineers.

I especially love the conclusion—something I’ve discussed extensively in my posts from Unite:
In closing, I’ll repeat that if your interest in this topic is to improve performance, make sure to profile before you decide that changing the rendering order is the right optimization to implement!
https://medium.com/toca-boca-tech-blog/controlling-unitys-rendering-order-why-and-how-3c2bb1da8e78

#rendering #sorting
🔥6👍2
Optimizing Texture Memory (VRAM) & Size

TL;DR
MEASURE TEXTURE VRAM USAGE AND DOWNLOAD SIZE using lox9973's Assetbundle Stat tool and Thry's VRAM estimator.
Reduce Resolution in the texture import settings! Not every texture needs to be 2k or 4k.
Don't disable mipmaps - Your materials will look and run better with them on!
Crunch doesn't change VRAM usage but can reduce download size. Not a magic bullet!
For Normal Maps, Use RG Compressed BC5 (From Platform overrides menu1). Normal Quality (DXT5nm) and High Quality (BC7) use the same VRAM but look worse.
For textures with Alpha, Use High Quality (BC7). Normal Quality (DXT5) uses the same VRAM but looks worse.
Don't use JPG (or other lossy formats) to store your source textures! Lower quality, with no benefit to VRAM/Download Size


https://www.poiyomi.com/blog/2022-10-17-texture-optimization

#optimization #vram
🔥7👍2
Connecting the DOTS: Let’s make a game with Entities | Unite 2024

If you still haven't tried Entities, this talk gives you a good overview of what it is, how to work with it, and what drawbacks it has.

https://www.youtube.com/watch?v=gqJlQJn0N2g

Repo: https://github.com/Unity-Technologies/Unite24ConnectingTheDOTS

The speaker, Daniel, is also a regular guest on the Hot Path Show, which I recommend watching if you already have any experience with Entities and would like to dive into the details.

#dots #entities
👍8🔥3
Everyday Unity
An unusual post for this channel and a note on why I haven't posted in a while. I had the pleasure of giving a talk at Digital Dragons about "The Controllers Tree," the architectural framework developed by some of the top-tier engineers at our company. I…
Architecture Behind Our Most Popular Games

The recording of my talk from May is finally available. It focuses on how multiple successful large-scale mobile games are developed and supported over an extended lifespan. I have already received feedback, and I realize I should have provided more detail on specific areas, such as the role of each component. If you'd like a post with a deeper dive into this architecture, drop a 🔥 reaction. Feel free to ask questions so I can cover them in that post.

https://www.youtube.com/watch?v=-TlQAm8IZp4

#architecture #mvc #hmvc
🔥30👍2
Classic 3D videogame shadow techniques

https://30fps.net/pages/videogame-shadows/

I found this denoscription of shadow techniques very interesting. It's a good starting point for learning shadowing by trying to implement some of these techniques. For example, I learned a lot about shadow cascades by implementing it while following an excellent tutorial on a noscriptable render pipeline: https://news.1rj.ru/str/everydayUnity/2276.

Cascades are briefly mentioned in this post as a technique used in modern games. However, it does not cover the radiance cascade technique, which you can read more about here: https://news.1rj.ru/str/everydayUnity/2423.

#rendering #shadow
👍8🔥2
Unity 6 "empty" web build file sizes

How to reduce the size of web builds:

https://gist.github.com/aras-p/740c2d4f9977ce92b7de72b1394dd365

It’s worth noting that many of these recommendations are included in the updated Unity 6 documentation. However, it’s convenient to bookmark this post to have all the advice on one page.

https://docs.unity3d.com/Manual/web-optimization.html

https://docs.unity3d.com/Manual/web-optimization-mobile.html

#web #buildsize
🔥14👍2
Memory Mastery: Comparing Unity and .NET Garbage Collection

Another frequently raised question in interviews involves the differences between Unity and .NET garbage collection, and this post provides a clear answer without diving way too deep into the topic. Additionally, it offers general advice on avoiding excessive garbage generation, which can help reduce potential spikes caused by garbage collection.

https://medium.com/my-games-company/memory-mastery-comparing-unity-and-net-garbage-collection-4c23e693d3a5

#gc #interview
👍9🔥4
Optimize your game performance for mobile, XR, and the web in Unity (Unity 6 edition)

https://unity.com/resources/mobile-xr-web-game-performance-optimization-unity-6

A solid book with many performance tips — some are well-known, while others are new, especially those shared at the latest Unite conference regarding Unity 6. I'd like to point out the absence of the well-known tip about avoiding the animator's usage on the UI. It is claimed to have been fixed for quite some time already, even though it still has some performance implications (smaller tho): https://discussions.unity.com/t/animators-and-dirtying-ui/769821/16

#optimization #tips
👍6🔥5