Everyday Unity
1.15K subscribers
163 photos
59 videos
42 files
2.37K 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
UNITY NATIVE: ANDROID ASYNCHRONOUS OPERATIONS AND THREADING

Discover common pitfalls and best practices for threading in Unity when working with native Android plugins in this great post. Learn from examples of typical mistakes and how to implement threading correctly.

https://medium.com/@playtika-tech-ai/unity-native-android-asynchronous-operations-and-threading-9eb07488b5cc

#native #thread #android
πŸ”₯5πŸ‘2
DOTS-Manual

Right now, it only contains information about sync points, which are crucial for performance in an archetype ECS implementation. Therefore, it's important to understand what leads to sync points in Entities. The manual is planned to be extended, so stay tuned for more later.

Update: Info about System dependencies was added

https://github.com/bustedbunny/DOTS-Manual

#dots #ecs
πŸ”₯5πŸ‘1
UNITY NATIVE: ANDROID STUDIO TOOLS

How to analyze the contents of .apk, .aab, .arr, or .jar archive files and to check Android dependencies.

https://medium.com/@playtika-tech-ai/unity-native-android-studio-tools-b3eb4509a263

#native #profiling #analyze
πŸ”₯5
animation.gif
21.9 MB
πŸ”₯2πŸ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
AnnulusGames/UGUIAnimationSamples: A sample project that includes implementation examples of UI animation for Unity UI (uGUI) using LitMotion and UniTask.

The repo with samples how to use LitMotion tweener, but can be used as an inspo and easily ported to any other tweener.

https://github.com/AnnulusGames/UGUIAnimationSamples

#tween #sample
πŸ‘6πŸ”₯6
AnnulusGames/Alchemy: Provides a rich set of editor extensions and serialization extensions for Unity

Another great package by Annulus Games - open source Odin alternative.

https://github.com/AnnulusGames/Alchemy

#inspector
πŸ”₯7πŸ‘1
LWGUI: A Lightweight, Flexible, Powerful Shader GUI System for Unity.

https://github.com/JasonMa0012/LWGUI

#inspector #shader
πŸ‘6πŸ”₯2
UnityDomainReloadHelper

A couple of attributes that help when Domain Reloading is disabled, which significantly decreases the time it takes for Unity to play a scene. By default, Unity provides the RuntimeInitializeOnLoadMethod attribute to assist, but it can be a little cumbersome.

I encourage you to write code in a way that allows you to turn off the domain reload upon entering play mode. It greatly speeds up the workflow even for my small pet projects. I have also worked on projects in production that have more than 1k assembly definitions, and reloading takes ages, so entering play mode was painfully slow and without this option turned off it was really hard to work.

https://github.com/joshcamas/unity-domain-reload-helper

#domainreload #attribute #editortools
πŸ‘6πŸ”₯4
How to implement multi-threaded frustum culling in Unity C#

Unity does this process under the hood already, but for some special cases with a custom renderer it might be needed.

https://www.pinwheelstud.io/post/frustum-culling-in-unity-csharp

#jobsystem #culling
πŸ”₯6πŸ‘2
How To Fix Deep Link/Push Notifications Crashes On Unity iOS after Apple Privacy Manifests update (and Why Software Design Matters)

A nasty crash appeared after the update from Unity 2021.3.31f1 to 2021.3.36f1, and the update was required due to the Apple privacy update and the introduction of Privacy manifest files since the support for it was added relatively recently. So you either have already encountered this crash or would encounter it soon if you publish your games to the App Store and use Facebook SDK and deep links as the deadline for this update is really close.
Strangely it was reproduced only on iOS 15 and 16, while iOS 17 was okay.
It turned out to be an interesting investigation, so I wanted to share the details with you.

It's funny how the regex to replace the generated UnityAppController.mm in FB SDK has been sitting there since 2015 and only now fired so badly causing a crash on a subset of devices. And it happened due to the UnityAppController.mm template being updated in one of the newer Unity versions.

And it's a perfect example of "Unknown Unknowns" discussed in "A Philosophy of Software Design" by John Ousterhout. Unknown unknowns increase the complexity of your system, but when it happens between 2 third parties it becomes multitudes times harder to track and resolve.
I definitely recommend the book.

According to the issue tracker, it also happens in 2022 and 2023, so now you know what to do if your app starts crashing on iOS after Unity update.

https://gamedev.center/how-to-fix-deep-link-push-notifications-crashes-on-unity-ios-and-why-software-design-matters/

#crash #ios
πŸ”₯6πŸ‘3
Noisy Nodes: Adds various noise generation nodes to Unity Shader Graph, including 3D noise nodes.

https://github.com/JimmyCushnie/Noisy-Nodes

#shadergraph #noise
πŸ‘6πŸ”₯2
mixandjam/balatro-feel: Recreating the basic Game Feel from Balatro

I've played Balatro a lot, and one of the reasons it's so satisfying is its animations and card behavior. Despite being pretty simple, the attention to detail is crazy. Once, I even caught myself staring at the card iteration animation, which is a plain white texture fade-out, but it blends so nicely with the overall flow.

https://github.com/mixandjam/balatro-feel

#feature #feel #balatro
πŸ‘4πŸ”₯3
Enableable Components Generated Code

How do enableable components work under the hood with the job system? There is actually the same code generated for both regular and enableable components, and multiple ifs decide how the components are processed.

https://gametorrahod.com/enableable-generated-code/

#ecs #dots
πŸ‘2πŸ”₯1
When, where, and why to put [BurstCompile], with mild under-the-hood explanation

A while ago, I was reviewing the burst inspector and noticed that only static methods were being bursted while others that I thought should qualify were not (no reference types, structs passed as ref args, etc.). After I had made these methods static, they were bursted right away. I was wondering why this was the case because I haven't seen that requirement in the docs (I probably just missed it). Anyway, I have recently found this thread which directly answers this question.

The first two things to know, from which all else flows, but seems a bit surprising at first:
1. Burst can only ever burst static methods, period, end of story. If you want this to happen outside of the special cases outlined below, just put [BurstCompile] on a static method and on its declaring type.* When you call this method, it will call the bursted version automatically, assuming burst compilation didn't fail.
2. Unless you try really hard, all C# called from bursted code is bursted.


https://forum.unity.com/threads/when-where-and-why-to-put-burstcompile-with-mild-under-the-hood-explanation.1344539/

#dots #ecs
πŸ‘6πŸ”₯1
Master Realtime VFX in Unity and Substance Designer! Learn How to Create a Fire AOE Orb!

I used this tutorial to create a fire orb for my game. It's 1 hour long, but covers everything in detail. If you are new to the shader graph, then I definitely recommend it.

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

#vfx #shadergraph
πŸ‘5πŸ”₯1
Unity UI Toolkit documentation code examples

We are actively adopting UI Toolkit for our editor tools. And it turns out to be pretty convenient.
Still a lot of concerns regarding using it in the runtime tho. Do you have any experience with it for in-game UI? How is it going? Would you recommend it? Would be happy to discuss in the comments.

Editor UI examples
Get started with UI Toolkit
Relative and absolute positioning C# example
Create a Custom Inspector

Runtime UI examples
Get started with runtime UI
And many more other examples how to do different stuff with it. Check the full list in the repo.

https://github.com/Unity-Technologies/ui-toolkit-manual-code-examples

#uitoolkit #sample
πŸ‘5πŸ”₯3
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 didn't expect the venue to be completely packed. I was pleasantly surprised to see so many people interested in the architecture at the event.

And of course, thanks to all the engineers who participated in developing the framework.
It helps us to build and grow multiple of the biggest mobile games.
We hope to release the Controllers Tree package as an open-source solution soon, so stay tuned. I also hope the video of the talk will be posted by the organizers on YouTube soon, so I can share it here. Drop a comment if you happened to attend this conference too.
πŸ”₯20