https://thegamedev.guru/unity-gpu-performance/overdraw-optimization/
Unity Overdraw: Improving the GPU Performance of Your Game
#optimization #gpu #overdraw
Unity Overdraw: Improving the GPU Performance of Your Game
#optimization #gpu #overdraw
TheGamedev.Guru
Unity Overdraw: Improving the GPU Performance of Your Game
A single thing has killed the GPU performance of thousands of mobile games: the famous Unity Overdraw. Do you know what overdraw is doing to you?
https://markheath.net/post/async-antipatterns
Async await antipatterns:
1. Forgotten await
2. Ignoring tasks - The danger with this approach is that nothing is going to catch any exceptions thrown. At best, that means you didn't know it failed to complete. At worst, it can terminate your process. So use this approach with caution, and make sure the method has good exception handling.
3. Using async void methods - The trouble is, that the caller of the method has no way to await the outcome of this method. They have no access to the Task that awaited method returned. So you're essentially ignoring a task again.
4. Blocking on tasks with .Result or .Wait - there are some problems here. The first is that using blocking calls like Result ties up a thread that could be doing other useful work. More seriously, mixing async code with calls to .Result (or .Wait()) opens the door to some really nasty deadlock problems.
5. Mixing ForEach with async methods
6. Excessive parallelization
7. Non-thread-safe side-effects - prefer pure functions instead of relying on the calling method to run on the main thread.
8. Missing ConfigureAwait(false) - not so useful for Unity since its api is not thread safe
9. Ignoring the async version
10. try catch without await - dont return Task inside try-catch since the catch will not be triggered if exception happens inside task. It can only be triggered on task creation.
#async #patterns
Async await antipatterns:
1. Forgotten await
2. Ignoring tasks - The danger with this approach is that nothing is going to catch any exceptions thrown. At best, that means you didn't know it failed to complete. At worst, it can terminate your process. So use this approach with caution, and make sure the method has good exception handling.
3. Using async void methods - The trouble is, that the caller of the method has no way to await the outcome of this method. They have no access to the Task that awaited method returned. So you're essentially ignoring a task again.
4. Blocking on tasks with .Result or .Wait - there are some problems here. The first is that using blocking calls like Result ties up a thread that could be doing other useful work. More seriously, mixing async code with calls to .Result (or .Wait()) opens the door to some really nasty deadlock problems.
5. Mixing ForEach with async methods
6. Excessive parallelization
7. Non-thread-safe side-effects - prefer pure functions instead of relying on the calling method to run on the main thread.
8. Missing ConfigureAwait(false) - not so useful for Unity since its api is not thread safe
9. Ignoring the async version
10. try catch without await - dont return Task inside try-catch since the catch will not be triggered if exception happens inside task. It can only be triggered on task creation.
#async #patterns
SoundCode
C# Async Antipatterns
The async and await keywords have done a great job of simplifying writing asynchronous code in C#, but unfortunately they can't magically protect you from getting things wrong. In this article, I want to highlight a bunch of the most common async coding mistakes…
https://m.habr.com/ru/company/pixonic/blog/499642/comments/
Pixockets: как мы написали собственную сетевую библиотеку для игрового сервера
#netcode #network #socket
Pixockets: как мы написали собственную сетевую библиотеку для игрового сервера
#netcode #network #socket
Habr
Pixockets: как мы написали собственную сетевую библиотеку для игрового сервера
Привет! На связи Станислав Яблонский, Lead Server Developer из Pixonic. Когда я только пришел в Pixonic, наши игровые сервера представляли собой приложения на...
https://secret.club/2020/04/16/mono-integrity.html
How Escape from Tarkov ensures game integrity
#anticheat #integrity
How Escape from Tarkov ensures game integrity
#anticheat #integrity
secret club
How Escape from Tarkov ensures game integrity
Game-hacking is an always-changing landscape, and this requires anti-cheat developers to innovate and implement unique, unidentified detection mechanisms. In this article I will shed some light on the mysterious routines that are getting hundreds of cheaters…
Unity “Long exposure” VFX
https://fishtrone.wordpress.com/2020/04/16/unity-long-exposure-vfx/
#shader #vfx #longexposure
https://fishtrone.wordpress.com/2020/04/16/unity-long-exposure-vfx/
#shader #vfx #longexposure
Ondrej Paska Blog
Unity “Long exposure” VFX
I wanted to make an effect like what you get when you take a long exposure picture of a the night sky – the stars get stretched because of Earth’s rotation. I first created about 500 st…
Understanding Audio Compression Settings in Unity
https://medium.com/double-shot-audio/understanding-audio-compression-settings-in-unity-e879a821023f
Vorbis requires significantly higher CPU resources to decompress the audio for playback.
One major difference between MP3 and Vorbis is that MP3 cannot loop seamlessly.
PCM is lossless compression and, while light on the CPU, has a much larger file size
ADPCM has a fixed compression ratio of about 3.5 and, while a good compromise between PCM and Vorbis/MP3, can sometimes cause unwanted noise (quantitative distortion) in audio files with lots of high-frequency content
Vorbis is a very efficient audio codec that offers high-quality lossy compression but requires more CPU resources for decompression
MP3 also offers high-quality lossy compression but causes problems for audio assets that should loop
#audio #settings #compression
https://medium.com/double-shot-audio/understanding-audio-compression-settings-in-unity-e879a821023f
Vorbis requires significantly higher CPU resources to decompress the audio for playback.
One major difference between MP3 and Vorbis is that MP3 cannot loop seamlessly.
PCM is lossless compression and, while light on the CPU, has a much larger file size
ADPCM has a fixed compression ratio of about 3.5 and, while a good compromise between PCM and Vorbis/MP3, can sometimes cause unwanted noise (quantitative distortion) in audio files with lots of high-frequency content
Vorbis is a very efficient audio codec that offers high-quality lossy compression but requires more CPU resources for decompression
MP3 also offers high-quality lossy compression but causes problems for audio assets that should loop
#audio #settings #compression
Medium
Understanding Audio Compression Settings in Unity
Understanding audio compression formats in Unity and why setting the right compression type is important for your game.
How to Create a Cross-Platform Mobile (iOS and Android) Plugin For Unity
https://medium.com/swlh/how-to-create-a-cross-platform-mobile-ios-and-android-plugin-for-unity-847b532615cc
#native #plugin #android #ios
https://medium.com/swlh/how-to-create-a-cross-platform-mobile-ios-and-android-plugin-for-unity-847b532615cc
#native #plugin #android #ios
Medium
How to Create a Cross-Platform Mobile (iOS and Android) Plugin For Unity
Unity is a great platform for developing VR and AR applications. When developing a cross-platform application there are often native…
https://www.youtube.com/watch?v=SlAL5HGmB1E
Use Grayscale to Optimize your Game Performance and Workflow
#optimization #sprites #grayscale
Use Grayscale to Optimize your Game Performance and Workflow
#optimization #sprites #grayscale
YouTube
Use Grayscale to Optimize your Game Performance and Workflow - Unity Tips and Tricks
In this game dev tutorial I will show how to to easily optimize your unity sprites by shifting colour instead of creating new assets. It's a useful technique that will make creating game objects faster, and also increase performance by reducing memory usage.…
10 Extraordinary GitHub Repos for All Developers - Better Programming
https://medium.com/better-programming/10-extraordinary-github-repos-for-all-developers-939cdeb28ad0
#education #github #repos #interview
https://medium.com/better-programming/10-extraordinary-github-repos-for-all-developers-939cdeb28ad0
#education #github #repos #interview
Medium
10 Extraordinary GitHub Repos for All Developers
Interview resources, build your own X, a list of great public APIs, and more
https://blogs.unity3d.com/ru/2020/05/06/faster-builds-with-the-new-caching-shader-preprocessor-experimental/
Faster builds with the new Caching Shader Preprocessor (Experimental)
#unity #shader #preprocessor
Faster builds with the new Caching Shader Preprocessor (Experimental)
#unity #shader #preprocessor
Unity Technologies Blog
Faster builds with the new Caching Shader Preprocessor (Experimental)새로운 Caching Shader Preprocessor를 통한 빌드 속도 단축(실험 기능)新しい実験版機能…
Shader compilation is a lengthy process that involves several steps. One of the first steps is preprocessing the shader source. Unity 2020.1 beta introduces the Caching Shader Preprocessor, a new custom solution to perform this compilation step. It is up…
Managing Complexity in Game Code — A Case Study - Timo Heinäpurola - Medium
https://medium.com/@heinapurola/managing-complexity-in-game-code-a-case-study-6ee681f755a9
#architecture #ui #test #assets #management
https://medium.com/@heinapurola/managing-complexity-in-game-code-a-case-study-6ee681f755a9
#architecture #ui #test #assets #management
Medium
Managing Complexity in Game Code — A Case Study
In this article I present an approach for game code architecture that we built for an unannounced Unity project.
Улучшаем стандартную графику Unity за несколько минут
https://dtf.ru/s/unity/134107-uluchshaem-standartnuyu-grafiku-unity-za-neskolko-minut?from=rss
#postprocessing
https://dtf.ru/s/unity/134107-uluchshaem-standartnuyu-grafiku-unity-za-neskolko-minut?from=rss
#postprocessing
DTF
Улучшаем стандартную графику Unity за несколько минут
Сейчас можно видеть, как выглядит сцена без настройки: Для того, чтобы настроить плагин, добавляем на объект с основной камерой компонент Post-Processing Layer, в нём задаём Layer на Everything (и заодно сглаживание, которое уберёт лесенки с краёв моделей).…