Devlog без QA | Розробка ігор – Telegram
Devlog без QA | Розробка ігор
640 subscribers
204 photos
61 videos
402 links
Unity/Новини/Ідеї/Натхнення й інший якісний (а можливо і не дуже) контент тут!

Зв’язок: @DevAndrew

Анти-скам бот: @IndieSafeBot
Download Telegram
Фінальний мем тижня!

Зв'язок з автором: @DevAndrew

Підтримати канал тут: [Клац] 🙈

📌 І пам'ятаємо про #теги, що вони тут не просто так (детальніше в самому першому закріпі)

✈️ Gamedev | #меми
Please open Telegram to view this post
VIEW IN TELEGRAM
😁91🥰1
🧵 Практичне використання async/await в Unity

У Unity часто потрібно дочекатися дії користувача: підтвердження, введення тексту чи завершення анімації. Раніше для цього використовували корутини або колбеки, але такий код швидко стає незрозумілим.

З async/await усе стає простіше — цей підхід дозволяє зручно обробляти будь-які асинхронні події, навіть взаємодію з UI.

🔁 Колбеки VS async/await
Варіант із колбеками:
public void Save(int slotIndex)
{
if (SaveExists(slotIndex))
{
popupConfirm.Open("Перезаписати файл?", () => SaveCommentsRequest(slotIndex));
}
else
{
SaveCommentsRequest(slotIndex);
}
}

void SaveCommentsRequest(int slotIndex)
{
popupInput.Open("Введіть коментар", comments => SaveWithComments(slotIndex, comments));
}

void SaveWithComments(int slotIndex, string comments)
{
// Зберігаємо дані
}

Те саме через async/await:
public async void Save(int slotIndex)
{
if (SaveExists(slotIndex) && !await popupConfirm.Open("Перезаписати файл?"))
return;

var comments = await popupInput.Open("Введіть коментар");

// Зберігаємо дані
}

Код стає компактним, послідовним і без "пекла колбеків".

🧠 Як це працює?
Щоб await працював не тільки з Task, але й з власними подіями в UI (наприклад, вікном підтвердження), потрібно реалізувати дві речі:

🔧 Інтерфейс очікуваного компонента:
public interface IAwaitable<TResult>
{
event Action<TResult> OnComplete;
Awaiter<TResult> GetAwaiter();
}

🔹 Цей інтерфейс визначає, як компонент повідомляє про завершення дії (наприклад, натискання кнопки).
🔹 Його потрібно реалізувати у своєму класі, наприклад, у PopupConfirm.

🛠 Awaiter:
public class Awaiter<TResult> : INotifyCompletion
{
TResult result;
Action continuation;
public bool IsCompleted { get; private set; }

public Awaiter(IAwaitable<TResult> awaitable)
{
awaitable.OnComplete += setResult;

void setResult(TResult res)
{
awaitable.OnComplete -= setResult;
IsCompleted = true;
result = res;
continuation?.Invoke();
}
}

public void OnCompleted(Action continuation)
{
if (IsCompleted) continuation();
else this.continuation += continuation;
}

public TResult GetResult() => result;
}

🔹 Awaiter — це обгортка, яка дозволяє використовувати await з вашим класом.
🔹 Інтерфейс INotifyCompletion тут потрібен, щоб компілятор знав, як викликати продовження після завершення події.

📌 Де корисно застосовувати:
• Підтвердження дій
• Введення даних
• Завантаження/збереження
• Туторіали, меню, діалоги
• Заміна вкладених колбеків

🔚 Висновок
async/await дозволяє спростити логіку в UI, уникнути вкладених делегатів і покращити структуру коду. Після невеликої підготовки ви зможете очікувати будь-яку взаємодію так само просто, як Task.

🔁 Поділись, якщо було корисно!

💻 | GAMEDEV UA | #уроки #csharp #Unity #code #async #await #AsyncAwait #CleanCode
👍7🔥2🥰1
🛠 Як організувати робочий процес у команді?

Коли у вас багато задач, нотаток, дедлайнів і файлів то без системи легко все заплутати. Ось пару класних інструментів, які реально допомагають тримати все під контролем і не втрачати час на пошуки.

📌 Notion — це як твій робочий простір «все в одному»: нотатки, таски, бази даних, плани. Усе разом і зручно! Можна створити круті шаблони, вести документацію, розставляти пріоритети і працювати з командою в реальному часі.

⚙️ Coda — робочі документи нового рівня. Тут можна поєднати нотатки, таблиці, формули і навіть автоматизації. Круто, якщо хочеш, щоб документи самі рахували, відслідковували статуси і допомагали рухатися далі без зайвих мануалів.

А ви чим користуєтесь для організації роботи? Поділіться досвідом👇

💻 | GAMEDEV UA | #інструменти #організація #команда #notion #coda
4
🧠 OpenAI Horizon Alpha — GPT-5 на горизонті? [Інфа]
📢 Наступний великий крок у розвитку штучного інтелекту!

OpenAI представила Horizon Alpha — нову потужну AI-модель з розширеним контекстним вікном до 256 000 токенів і можливістю генерувати відповіді довжиною до 128 000 токенів. Ця модель блискуче справляється з довготривалим мисленням, складним аналізом і довгими текстами, роблячи її ідеальним інструментом для:

💻 Швидкої розробки ПЗ: low-code, front-end, генерація SVG
🎨 Креативних задач: анімації, дизайн, реклама
📊 Стратегічного планування: фінанси, проекти, симуляції

Horizon Alpha вже демонструє продуктивність, що конкурує з такими топ-моделями, як Gemini 2.5 Pro.

🔓 Модель відкрито доступна для безкоштовного тестування через Open Router API, а активна спільнота користувачів допомагає її постійно вдосконалювати.

👀 А тепер про те, що всі чекали — GPT-5?

CEO OpenAI Сем Альтман 2 серпня натякнув, що найближчими місяцями компанія випустить «тонну нового»: моделі, фічі та несподіванки. Він поділився скріншотом розмови з AI, яка, ймовірно, демонструє можливості GPT-5 — модель розуміє контекст, емоції та навіть філософські теми (наприклад, серіал "Pantheon").

⚠️ Альтман попереджає про можливі тимчасові збої та навантаження на сервери під час запуску. Очікується інтеграція з Microsoft і широке застосування в бізнесі.

📈 Чи є Horizon Alpha ранньою версією GPT-5, чи це окремий проєкт? Поки невідомо, але ясно одне, ми стоїмо на порозі революції у світі штучного інтелекту.

💻 | GAMEDEV UA | #новини #AI #OpenAI #HorizonAlpha #GPT5 #ChatGPT #OpenSourceAI #TechNews
4🔥1
🎨 Painterly Normals Shader — простий шейдер для мультяшних нормалей

Хочеш швидко надати своїм моделям унікальний мультяшний вигляд?

[Завантажити - тут] 👈

Ідеально для ігор у стилі «hand-painted»

💻 | GAMEDEV UA | #корисне #Shaders #StylizedGraphics #шейдер
🔥811
🧠 Unity: Оптимізація фізики без магії

Фізика в Unity — це круто, але дуже швидко може зжерти FPS. Особливо на мобілках.

Тримайте 7 практичних порад, які реально працюють ⬇️

1️⃣ Вимикай зайві взаємодії
У Project Settings → Physics вимикай непотрібні Layer-to-Layer взаємодії.
Менше перевірок → менше навантаження.
🧩 Профі-порада: для складних сцен створюй спеціальні шари для об'єктів, які взагалі не повинні взаємодіяти з фізикою (UI, FX, дальній фон тощо).


2️⃣ Неактивний об'єкт ≠ активна фізика
Якщо об'єкт за кадром або ще не використовується:
rb.simulated = false;
collider.enabled = false;

Це реально економить ресурси.

3️⃣ Не рухай об'єкт через transform.position
Якщо він має Rigidbody — використовуй:
rb.MovePosition(...);

Інакше багаючі колізії й головний біль.
🧩 Профі-порада: якщо тобі потрібен "жорсткий" телепорт (наприклад, для швидкого переміщення на спауні) — спочатку зроби rb.simulated = false, потім position, потім знову simulated = true.


4️⃣ Усе, що пов’язано з фізикою роби в FixedUpdate()
AddForce, MovePosition, velocity — тільки туди.
Input читається в Update(), а дії в FixedUpdate().

5️⃣ Статичний об'єкт? Забудь про Rigidbody
Колайдер без Rigidbody = норм.
Rigidbody потрібен тільки тим, що рухаються.

6️⃣ Interpolate не для всіх
Вмикай Interpolation тільки на об'єктах, де треба згладжений рух (типу гравця).
Інакше просто даремно навантажуєш CPU.

7️⃣ Триґери й колізії не лагують самі по собі
Але якщо в OnTriggerEnter() чи OnCollisionEnter() багато логіки — буде біда.
У деяких випадках краще перевіряти вручну:
Physics2D.OverlapCircle(...)

🧩 Профі-порада: якщо використовуєш великі області виявлення — заміни колайдери на Collider2D.OverlapPoint/Box/Circle з кешованими масивами. Це зменшить кількість об'єктів у сцені.


📌 Це базовий набір, який дає хороший приріст на мобілках.

💻 | GAMEDEV UA | #оптимізація #Unity #PhysicsOptimization
9👍3🔥2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
🧩 Як зробити систему розміщення на гекс-сітці в Unity за 60 секунд

Хочеш реалізувати розміщення об’єктів на шестикутній сітці в Unity? Тоді це для тебе :)

💻 | GAMEDEV UA | #туторіал #HexGrid #grid #сітка
🔥9❤‍🔥2
🚀 DOTween – хороший інструмент для анімацій

🔍 Що таке DOTween?
DOTween — це безкоштовна бібліотека для Unity, яка дозволяє створювати плавні анімації будь-яких значень у коді.

Це не візуальний інструмент (як Animator), а програмний спосіб керувати анімаціями.

Це щось на кшталт:
"Я хочу, щоб об'єкт з координати A перемістився в точку B за 1 секунду" і DOTween робить це за тебе.

🤖 Як працює анімація без DOTween?
Без tween-фреймворків тобі доведеться:
• Самому обчислювати зміни значень у Update()
• Писати Lerp, Time.deltaTime, Mathf.MoveTowards
• Створювати логіку початку/кінця/паузи
• Відслідковувати стан анімації

🎯 Наприклад:
// вручну в Update() змінюєш позицію
void Update() {
transform.position = Vector3.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);
}

А з DOTween:
transform.DOMove(targetPos, 1f);

💡 Просто. Зрозуміло. І читається як "людське" речення.

Чому не Animator для простих анімацій?
Animator — крутий для складних анімацій персонажів і 3D-моделей. Але для простих ефектів, як рух об’єкта, зміна прозорості або тряска камери, він надто складний і незручний.

Вимагає багато налаштувань, важко контролювати і майже неможливо змінювати анімацію в реальному часі.

DOTween — це:
🔹 Плавні анімації у 1 стрічку
🔹 Працює з усім: Transform, UI, Material, Text, числові значення
🔹 Підтримка секвенцій; кілька анімацій підряд
🔹 Можна зупинити, перезапустити, зробити петлю
🔹 Відмінно працює на мобільних пристроях

🛠 Приклад: Анімація UI-кнопки
public void OnPointerEnter() {
// При наведенні курсора на кнопку плавно збільшуємо її розмір до 120% за 0.2 секунди з ефектом "видавлювання" (OutBack)
button.transform.DOScale(1.2f, 0.2f).SetEase(Ease.OutBack);
}

public void OnPointerExit() {
// Коли курсор знімається з кнопки, плавно повертаємо її розмір до початкового (100%) за 0.2 секунди з ефектом "підтягування назад" (InBack)
button.transform.DOScale(1f, 0.2f).SetEase(Ease.InBack);
}

🤯 Без аніматора. Без купи станів. Без мороки.

▶️ [Детальніше тут] 👈

Якщо хочеш робити плавні ефекти в UI, плавні рухи об'єктів, зміну значень, не витрачаючи вечори на код то це для тебе 😉

💻 | GAMEDEV UA | #інструменти #DOTween #Tweening #анімації #код #оптимізація
🔥9🥰1
🔥 Super Robot Wars Y — перший консольний SRW на Unity!

Bandai Namco оголосили, що нова частина легендарної серії, SRW Y, вперше в історії вийде на рушії Unity! До цього команда понад 20 років використовувала унікальний рушій, створений ще для SRW Alpha.

Продюсер Кота Тома розповів, що це рішення допоможе уникнути критичних багів і забезпечить стабільне майбутнє для франшизи. Звикати до нового рушія було складно, але це важливий крок вперед.

Ще у грі повернеться функція Tactical Area Selection з SRW 30, але з адаптованим балансом — перші розділи будуть більш лінійними, а свобода вибору з’явиться трохи пізніше.

Також чекаємо:
• 6 нових Spirit Commands
• Секретних помічників, яких можна отримати за приховані умови
• Підтримку кастомних MP3 (PS5 і PC, але не Switch) 🎵

SRW Y готує новий рівень для фанатів серії, слідкуйте за оновленнями!

💻 | GAMEDEV UA | #новини #факти #SuperRobotWars #SRWY #BandaiNamco #Unity
51
🎯 Чому навіть крута гра може провалитися

Ми вже говорили про ранній фідбек - показувати гру потрібно ще на етапі сирих прототипів. Чому?

Чекати до релізу, це як відкрити магазин без вивіски й сподіватися, що хтось випадково зайде.

І це стосується не тільки ігор. У музиці, книгах, фільмах, стартапах працює те саме правило:

ніхто не купить, не завантажить і не полюбить те, про що не знають.

💡 У геймдеві проблема особливо гостра:
Конкуренція шалена. У Steam щодня виходить понад 50 ігор. Якщо ви не заявите про себе, вас просто «поховає» стрічка новинок.

Ігнорування ком’юніті. Форум, Discord, TikTok, Twitter — це місця, де народжуються перші фанати. Якщо вас там немає, ви втрачаєте найцінніший актив.

🛠 Що робити, щоб не залишитись непоміченим?

У нас вже був пост із лайфхаками від Кріса Зуковського [Клац], а тепер поговоримо про головні та ефективні стратегії, що реально працюють у боротьбі за увагу гравців:

1️⃣ Не ховайте свою гру. Не чекайте ідеальності. Діліться процесом, помилками та класними моментами, бо це робить проект живим і близьким.

2️⃣ Спілкуйтесь з аудиторією, а не просто говоріть. Ком’юніті не просто фанати, а ваші союзники, критики і амбасадори. Слухайте їх і відповідайте.

3️⃣ Різноманітність у соцмережах. Не публікуйте одне й те саме. Використовуйте меми, скріншоти, закулісні кадри, опитування.

4️⃣ Випробовуйте різні платформи і формати. TikTok може здаватися загадковим, але там теж ваша аудиторія. Discord теж не просто чат, а маленьке містечко фанатів.

5️⃣ Маркетинг — це марафон, а не спринт. Публікувати поодинокі пости раз на тиждень недостатньо. Важливо бути послідовним і відповідальним.

І не забуваємо найголовніше — створювати цікаві ігри, які захоплюють! 😁

💻 | GAMEDEV UA | #запитання #маркетинг #steam
🔥62🥰1
🚀 Чому не варто постійно юзати gameObject.transform в Unity

В Unity є одна "тиха" річ, яка може непомітно красти продуктивність, особливо коли ваш проєкт росте. Це виклик gameObject.transform у кожному кадрі. Здається дрібницею, але на великих сценах і мобільних пристроях вона може відкусити шмат FPS.

📌 Як працює transform насправді
У C# в Unity transform — це властивість (property), а не звичайна змінна.
Коли ви пишете:
gameObject.transform.position = new Vector3(0, 0, 0);

Unity не просто бере готовий Transform. Вона під капотом викликає метод, який:
Викликається геттер get_transform з C# коду.
• Цей геттер — не чистий C# метод, а перехід у нативний C++ код движка.
• У C++ знаходиться вказівник на Transform, прив’язаний до цього об’єкта.
• Повертається посилання у C#.

Кожен такий перехід між керованим (C#) та нативним (C++) кодом називається managed–native boundary і має свою ціну. Це не страшно, якщо робити це раз на кадр, але якщо сотні чи тисячі — продуктивність починає падати.

🧠 Чому це проблема в Update()
Багато хто пише так:
void Update()
{
gameObject.transform.position += Vector3.forward * Time.deltaTime;
gameObject.transform.Rotate(0, 90 * Time.deltaTime, 0);
}


Проблема:
• Кожен виклик gameObject.transform — це новий виклик геттера.
• У цьому прикладі ми вже двічі звернулися до transform за один кадр.
• У масштабах сцени з десятками або сотнями об’єктів це дуже помітно.

Як оптимізувати
Кешуйте посилання на Transform один раз і використовуйте змінну.
private Transform _transform;

void Awake()
{
_transform = transform; // або gameObject.transform
}

void Update()
{
_transform.position += Vector3.forward * Time.deltaTime;
_transform.Rotate(0, 90 * Time.deltaTime, 0);
}

Тепер посилання на Transform зберігається в змінній _transform, тож жодних повторних пошуків більше не відбувається, бо доступ іде напряму в пам’ять, без зайвих викликів. Це зменшує навантаження на процесор, знижує кількість зайвих викликів збирача сміття (GC) і в результаті дає більше стабільних кадрів за секунду.

📌 Кешування transform можна пропустити, якщо звернення до нього відбувається лише один раз на кадр або рідше, а також у випадках, коли код виконується тільки під час ініціалізації чи в подіях на кшталт OnEnable, Start або Awake. Також кешування не є критичним для невеликих скриптів, які не працюють постійно.

💡 Висновок:
gameObject.transform — це не просто змінна. Це міст між C# і C++, який має свою вартість. Чим частіше ви його перетинаєте тим більший рахунок платите у мілісекундах. Тримайте те, до чого звертаєтесь часто, у своєму кеші і FPS подякує.

💻 | GAMEDEV UA | #уроки #CSharp #Оптимізація #РозробкаІгор #Unity
1🔥202🥱1
💡 Цікавий факт про Unity

Ще до того, як стати гігантом індустрії, Unity мав іншу назву — Over the Edge Entertainment. У 2004 році в Копенгагені троє друзів David Helgason, Nicholas Francis та Joachim Ante, вирішили створити інструмент, який дозволить робити ігри навіть маленьким командам.

Але першим їхнім релізом була зовсім не платформа, а гра GooBall (2005); яскрава 3D-головоломка, де ти керуєш липкою кулею, проходячи фізичні лабіринти. Комерційно вона провалилась, зате дала життя головному продукту — рушію Unity 1.0, що вийшов у червні 2005 року.

Так невдала гра стала початком однієї з найуспішніших історій у світі геймдеву.


💻 | GAMEDEV UA | #факти #Unity #UnityFacts
🔥19🥰2
Фінальний мем тижня!

Зв'язок з автором: @DevAndrew 👈

Бот з блек-лістом: @IndieSafeBot

Підтримати канал тут: [Клац] 🙈

📌 І пам'ятаємо про #теги, що вони тут не просто так (детальніше в самому першому закріпі)

✈️ Gamedev | #меми
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣8😁4🥰3👍1💯1
🏁 Awake, OnEnable і Start в Unity — у чому різниця і коли що використовувати

Unity дає кілька методів для ініціалізації скриптів: Awake(), OnEnable() і Start(). Вони схожі за призначенням, але працюють по-різному.

📌 Awake()

• Викликається один раз за життя об’єкта.
• Виконується ще до того, як об’єкт стане активним.
• Використовуйте для ініціалізації змінних та кешування посилань.
void Awake()
{
_rb = GetComponent<Rigidbody>();
}


📌 OnEnable()
• Викликається кожного разу, коли об’єкт стає активним (SetActive(true) або при завантаженні сцени).
• Зручно для підписки на події або запуску анімацій при активації.
void OnEnable()
{
EventManager.OnScoreChanged += UpdateUI;
}


📌 Start()
• Викликається один раз, але тільки після всіх Awake() і коли об’єкт вже активний.
• Використовуйте для роботи з іншими об’єктами, які вже ініціалізовані.
void Start()
{
targetPosition = player.transform.position;
}


Але ви можете подумати: «Та яка різниця між Awake() і Start()? Можна ж просто використовувати один із них».

Насправді різниця є! Awake() виконується одразу, коли об’єкт з’являється у сцені, навіть якщо він вимкнений. Це момент, коли об’єкт ще ні з ким не «спілкується», бо він просто готує себе до роботи, створює змінні, кешує компоненти.
А от Start() запускається тільки тоді, коли об’єкт активний і всі інші об’єкти вже встигли виконати свій Awake().

Тому в Start() можна сміливо звертатися до інших елементів сцени, знаючи, що вони вже готові до взаємодії.

🧠 Приклад:
Уявіть, що ви робите сцену з гравцем і камерою, яка повинна слідкувати за ним.

У Awake() гравець ще тільки створюється і налаштовує свої дані. Якщо камера спробує підключитися до нього в Awake(), може статися так, що гравець ще не готовий.

А ось у Start() гравець уже точно ініціалізований, тому камера може безпечно підчепитися і почати рухатись за ним!

📌 Отже, пам’ятайте:
• Використовуйте Awake() для підготовки об’єкта, а саме кешування компонентів та налаштувань.
OnEnable() для логіки, яка має запускатися щоразу при активації об’єкта.
• А Start() коли треба працювати з іншими вже готовими об’єктами в сцені.

💻 | GAMEDEV UA | #уроки #unity #CSharp #ініціалізація
🔥102👍1🥰1
🖍️ Harmony Palette для Aseprite 1.3.x

Обираєш базовий відтінок і насиченість через колорпікер
Одразу бачиш 4 варіанти з різною яскравістю (70%, 50%, 30%, 15%) у режимі реального часу
Лівий клік — встановити колір як передній, правий — як фоновий без закриття вікна

Доступно через File > Scripts > Harmony Palette в Aseprite 1.3.x

Ідеально для швидкої роботи з палітрами у піксель-арті!


💻 | GAMEDEV UA | #інструменти #PixelArt #Aseprite
👍7🔥41
🤖 Ігри майбутнього: чи готові ми до світу, де все створює AI?

Заздалегідь прописані сюжети і шаблонні вороги вже не є межею. Сьогодні ігри можуть жити і змінюватися разом із тобою.

AI і машинне навчання стали справжніми партнерами розробників, які відкривають нові можливості та переосмислюють те, як ми граємо.

🔷 Історії що народжуються прямо на твоїх очах
AI Dungeon — це не просто гра а живий розповідач який генерує унікальні квести і діалоги у реальному часі.

🔷 Вороги які вчаться на твоїх помилках
У Halo штучний інтелект не просто атакує він адаптується вороги аналізують твої тактики і змінюють стратегію щоб зробити бій дійсно викликом.

🔷 NPC які поводяться як справжні люди

У The Last of Us Part II вороги діють як команда ховаються обстрілюють з флангів і використовують звук щоб відстежувати тебе. Це новий рівень реалізму!

🔷 Автоматизація креативу
Штучний інтелект допомагає автоматизувати багато процесів у розробці ігор.

Він може створювати анімації персонажів без складної ручної роботи, генерувати музику та звукові ефекти, адаптовані під атмосферу гри.

💡 З розвитком AI з’являються неймовірні можливості, але разом із ними й виклики.

Чи зможемо ми зберегти унікальність ігрових світів, коли машини зможуть створювати величезну кількість контенту? Чи буде AI лише інструментом у руках творців, чи почне диктувати правила гри?

І найголовніше: де проходить межа, коли технології перестають служити креативності і починають її обмежувати?

⚡️ Пиши в коментарях, буде цікаво почути твою думку!

💻 | GAMEDEV UA | #запитання #ШтучнийІнтелект #AI #ШІ
🔥7👍1
💥 Unity-розробники тепер можуть продавати без комісії 30%! [Інфа]

Xsolla випустила новий SDK для Unity, який дозволяє приймати платежі та продавати контент напряму гравцям, минаючи Google Play та App Store.

📌 Різниця з Unity IAP:
Unity IAP → прив’язка до магазинів, комісія до 30%, обмеження правил платформ.
Xsolla SDK → ваш власний магазин, прямі платежі, повний контроль над цінами, офферами та даними гравців.

🔥 Що всередині:
• Кросплатформа: iOS, Android, ПК, веб.
• 1000+ способів оплати у 200+ країнах 🌍
• Підписки, бандли, персональні пропозиції.
• Автоматичні податки, захист від шахрайства, обробка повернень.

🎯 Ідеально для інді та студій, які хочуть заробляти більше та працювати на своїх умовах.

💻 | GAMEDEV UA | #новини #Unity #монетизація #Xsolla
🔥8👍61
🔥 Як рендерити 2 мільйони об’єктів на 120 FPS в Unity?

Один Update() замість сотень
Не використовуй тисячі MonoBehaviour з Update(). Один менеджер керує всім.

Кешуй transform

transform.position у кожному кадрі це дорого. Збережи посилання один раз. [Детальніше]

GPU Instancing
Один Draw Call для сотень моделей і FPS росте.

Jobs + Burst
Важкі обчислення переносяться в багатопотоковість. Burst робить код блискавичним.

ECS (Entity Component System)
Дані компактні та оновлюються пачками. Мінімальне навантаження на CPU.

DrawMeshInstancedIndirect + ComputeBuffers
Робота переноситься на GPU, CPU відпочиває, сцена літає.

Кешуй Camera.main
Camera.main кожного разу шукає об’єкт у сцені. Знайди один раз і збережи.

▶️ [Детальніше тут] 👈

💡 Як це працює разом:
ECS зберігає дані щільно в пам’яті → Jobs + Burst обчислюють оновлення у багатопотоковості → ComputeBuffers передають дані на GPUDrawMeshInstancedIndirect малює всі об’єкти одним викликом.

💻 | GAMEDEV UA | #оптимізація #рендер #render #GPU
🔥8❤‍🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Хочете рухатися по похилих поверхнях у 2D в Unity? 😍

Тепер це легко з Rigidbody2D.Slide() — обробляє кути, ковзання та визначення поверхонь!

💻 | GAMEDEV UA | #туторіал #Ковзання #Рух #RigidBody2D
👍14❤‍🔥1