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

Зв’язок: @DevAndrew

Анти-скам бот: @IndieSafeBot
Download Telegram
💾 Чому 8-бітні ігри досі захоплюють?

Ностальгія як геймдизайн — більше, ніж просто стиль

У час, коли геймери очікують фотореалізму, гіперреалістичної фізики й AI-NPC, інді-гри в піксель-арті досі займають топи. Чому?

🔹 Бо 8-біт — це емоційний код. Не графіка визначає гру, а те, що вона викликає в гравця.

🧠 Ностальгія — це не слабкість. Це інструмент
Коли ми бачимо піксельну графіку, відчуваємо:
• Знайоме. Спокійне. Рідне.
• Ті самі емоції, що були з нами в дитинстві
• Відчуття часу, коли все було простіше: залипнути в Mario після школи, без інтернету, без оновлень.

🕹 Як геймдев використовує це у дизайні?

📌 Візуальний стиль
– Пікселі, спрайти, обмежена палітра — все навмисно "низькоякісне", але впізнаване
CRT-ефекти, шум, «мерехтіння» — імітація старих екранів додає шарму

📌 Аудіо
– Звуки у стилі GameBoy або NES — чіптюн, синтезовані ефекти
– 8-бітна музика одразу переносить в іншу епоху

📌 Геймплей
– Прості правила, але висока глибина
– Часто повна відсутність туторіалу. Розумієш механіку через спроби й помилки, як раніше

📌 UI/UX
– В стилі старих RPG, меню-іконки у формі піксельних кнопок
– Іноді навіть обмеження типу «4:3 екран» чи «затримка збереження» як данина минулому

📈 Приклади, які доводять — це працює
Undertale — мінімалістичний стиль, глибока емоційна історія
Stardew Valley — сільське життя у стилі SNES, в яке поринаєш на сотні годин
Katana ZERO — піксельна естетика + синтвейв + психологічний екшн
The Messenger — гра починається в 8-бітах, а потім несподівано переходить у 16-біт

Ці ігри не просто нагадують "як було", вони переосмислюють стиль, додаючи сучасні фішки

🧩 Тому якщо тобі здається, що 8-біт — це лише "старе" — подумай ще раз. Це стиль, який вміє чіпляти за серце.

А яка гра вперше пробудила у тобі відчуття «оце воно»? З якої гри почалась твоя історія?👇

💻 | GAMEDEV UA | #запитання #8bitgame #retro #ретро
5
This media is not supported in your browser
VIEW IN TELEGRAM
Ripple Shader Pack – Real-Time Water Ripples

💧 Водяна система ряби для Unity з чотирма типами хвиль 👇

➡️ Завантажити 🗂

💻 | GAMEDEV UA | #корисне #shader #water #ripple
5🐳1
🗃 Що таке Prefab в Unity?

📦 Префаб (Prefab) - це шаблон об'єкта.
Уяви, що ти зробив машину один раз, а тепер хочеш спавнити її сотні разів, а не копіювати вручну, просто "викликати" з шаблону.

🔧 Як працює префаб:
• Створюєш об'єкт у сцені (наприклад, ворога або кулю)
• Перетягуєш його в папку Prefabs - тепер це префаб
• Видаляєш зі сцени (або залишаєш)
• Використовуєш Instantiate(prefab) для створення копій у грі

📜 Приклад коду:
[SerializeField] GameObject enemyPrefab;

void SpawnEnemy() {
Instantiate(enemyPrefab, transform.position, Quaternion.identity);
}

⏱️ Переваги префабів:
Масове створення об’єктів
Легке редагування: змінюєш префаб, і зміни видно всюди
Використання з об’єктним пулом (для оптимізації)

🎯 Префаб = шаблон для тиражування об’єктів. Must have у кожній грі.

📼 [Відео з детальнішим поясненням] 👈

💻 | GAMEDEV UA | #уроки #prefab #префаб
5
🚀 R3 = Observer Pattern на стероїдах

Reactive Programming більше не тільки для "хардкорних" девелоперів. Зустрічайте R3 - сучасну та легку альтернативу UniRx, яка дозволяє працювати з подіями у вашій грі декларативно, реактивно і задоволенням!

Що таке R3?

🔄 Це реактивна бібліотека для C#, яка дозволяє:
– Працювати з Observable Streams
– Створювати Subjects для кастомних подій
– Використовувати Operators на кшталт .Select(), .Where() і багато інших
– Реагувати на події за допомогою підписок (subnoscriptions)

Навіщо це?
Замість того щоб писати купу Update і if-ів, ти просто:
InputStream
.Where(_ => Input.GetKeyDown(KeyCode.Space))
.Subscribe(_ => Jump());

🔥 Мінімум коду — максимум контролю над логікою.

У чому сила R3?
Простота. Якщо ти знаєш патерн Observer і extension-методи в C#, ти вже готовий працювати з R3
Заміна UniRx, без болю, без зайвого коду
Працює будь-де, де є C#

🧠 Хочеш спробувати? Почни з цього відео 👉 Observer Pattern on Steroids

💻 | GAMEDEV UA | #r3 #csharp #code #інструменти
6
Unity 6.2 Beta вже доступна! 🕹

Ми рухаємося до ще швидшого, стабільнішого та надійнішого рушія.

У бета-версії Unity 6.2 представлено низку нових функцій, які значно покращують діагностику продуктивності та спостереження за помилками в реальному часі.

🛠 Нові діагностичні можливості:
• Покращене виявлення збоїв та аналітика продуктивності на мобільних і десктопних пристроях.
• Моніторинг ANR (Application Not Responding) з деталізацією по пристроях і сесіях для Android.
• Нова візуалізація даних — зручніше переглядати тренди та знаходити проблеми.
• Без потреби встановлювати додаткові пакети — усе вже інтегровано.
• Доступно безкоштовно всім розробникам.

🔐 Developer Data Framework — новий підхід Unity до збору та використання даних. Ви маєте повний контроль над тим, які дані збираються, як і де вони застосовуються. Unity не використовує вашу інформацію без вашої згоди. Усі налаштування доступні централізовано в Unity Dashboard і поширюються на всі проєкти. Framework також забезпечує прозорість і захист приватності, зокрема під час роботи з Unity AI.

🧪 Unity 6.2 Beta вже доступна через Unity Hub
Це чудова нагода спробувати нові функції раніше й залишити фідбек, який допоможе сформувати майбутнє Unity.

⚠️ Не рекомендується використовувати бета-версію для проєктів у продакшені. Обов’язково створіть резервну копію проєкту перед відкриттям у новій версії.


📣 Більше інформації, документація та обговорення — у Unity Discussions.

💻 | GAMEDEV UA | #новини #unity
6👍1
Привіт народ!

Орієнтуватися зручно за тегами в закріпленому повідомленні, тож не лінуйтесь зазирнути.

А якщо маєте бажання подякувати автору, то в закріпі або в описі каналу знайдете Monobank банку — будь-яка підтримка дуже цінна! 💛

І щоб це повідомлення не було повністю даремним тримайте крутий пак 👇

Завнтажити 👈

💻 | GAMEDEV UA | #корисне #аудіо
4
Доброго ранку геймдевелопери

💻 | GAMEDEV UA | #memes #unitymemes #меми
😁7🎉3
🖍 Найпростіший спосіб додати контур в Unity

Знайшов дуже простий і ефективний спосіб відображення контуру в Unity. Сподіваюсь пригодиться 😎

🔗 [Сюди] 👈

💻 | GAMEDEV UA | #туторіал #outline #контур
5👍1
🔗 Dependency Injection (DI) у Unity: що це і навіщо воно потрібно?

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

Саме тут у гру вступає патерн Dependency Injection (впровадження залежностей).

🔧 Що таке Dependency Injection?
Це підхід, при якому об'єкти не створюють свої залежності самостійно, а отримують їх "ззовні" — через конструктор, метод або властивість.

📦 Переваги DI у Unity:
• Спрощує тестування (можна підставити мок-залежність)
• Менше жорстких зв'язків між класами
• Краща масштабованість проєкту
• Легше міняти реалізацію залежності без зміни основного класу

🧰 А як це реалізується в Unity?
У Unity є кілька способів реалізувати Dependency Injection, і серед найпоширеніших — це DI-контейнер або Service Locator.

🔄 1. DI-контейнер: автоматичне впровадження залежностей
Це система, яка зберігає сервіси проєкту (наприклад, менеджери звуку, UI, збережень) і впроваджує їх у потрібні скрипти. У Unity це можна реалізувати вручну (через конструктори чи методи) або з допомогою сторонніх рішень, як-от Zenject. Перевага — централізоване керування залежностями без жорстких посилань в інспекторі, що робить код чистішим і легшим у підтримці.

📍 2. Service Locator: глобальний доступ до сервісів
Service Locator патерн, який дозволяє будь-якому скрипту отримати потрібний сервіс через єдиний доступний "локатор".

🔧 Приклад:
public class ServiceLocator {
private static Dictionary<Type, object> services = new();

public static void Register<T>(T service) => services[typeof(T)] = service;
public static T Get<T>() => (T)services[typeof(T)];
}

І в будь-якому місці гри:
var audio = ServiceLocator.Get<AudioManager>();

🔹 Це трохи схоже на глобальну змінну, але контрольовану.

📉 Недолік Service Locator — важче тестувати й відстежувати залежності (бо вони приховані). Але в невеликих або середніх проєктах це дуже зручно.

📌 У згаданому відео це пояснено дуже доступно, із прикладами коду та застосуванням у грі:
[🎥 Переглянути відео 👈]

💻 | GAMEDEV UA | #уроки #sevicelocation #dependency #DI #Залежності
5
Як механіка народжує жанр
Деякі жанри не були придумані «згори» - вони виросли з однієї ключової механіки, яка виявилася настільки потужною, що стала основою десятків ігор. Ось приклади:

🎲 Роґлайк (roguelike)
Механіка: процедурна генерація + перманентна смерть
🔁 Основна ідея: кожен забіг унікальний, гравець починає з нуля, але знання гри ключ до перемоги.
👉 Гра Rogue (1980) задала шаблон. Пізніше механіку адаптували у Dead Cells, Hades, Slay the Spire.

🗺 Метроїдванія (Metroidvania)
Механіка: обмежений доступ до областей через прогрес (ability gating)
🧩 Гравець досліджує великий світ, але дістатися до певних зон можна лише після здобуття нових здібностей.
👉 Назва жанру походить від Metroid і Castlevania: Symphony of the Night.

Автобатлер (Auto Battler)
Механіка: автоматичні бої + стратегічне формування команди
🤖 Гравець розміщує юнітів на полі бою, а потім дивиться, як ті б’ються самостійно. Тактика у виборі, а не в керуванні.
👉 Auto Chess, Teamfight Tactics, Dota Underlords - усе почалось зі звичайного модифікатора.

📌 Висновок:
Одної механіки іноді достатньо, щоб створити цілий жанр. Але для цього вона має бути:
🔹 достатньо цікавою
🔹 гнучкою для варіацій
🔹 і викликати в гравця глибокий цикл задоволення

💻 | GAMEDEV UA | #запитання #жанр #механіка #gamedev
3🔥2
💨 Хочеш додати в гру дим, який виглядає просто вау і ще й взаємодіє з об’єктами?

Це симуляція на базі роботи Йоса Стама, легенди в темі ріалтайм-флюїдів для ігор.
🔬 Дим не просто гарно виглядає, а ще й фізично взаємодіє з середовищем! 🔥

📼 [Переглянути відеоролик] ▶️

💡 Підійде для VFX, вибухів чи просто атмосфери в грі.

💻 | GAMEDEV UA | #туторіал #дим #smoke
5👍2
Як дрібниці роблять гру цікавішою?

Деталі не просто доповнюють гру вони можуть вивести її на новий рівень. Це ті маленькі штуки, які гравець може й не помітити свідомо, але які створюють відчуття "ця гра кайф".

Ось як саме це працює:

🎵 Звук дії = відчуття контролю
Клікнув — почув клац. Стрибнув — почув вжух. Звуковий фідбек миттєво посилює відчуття “я щось зробив”.

🌀 Анімації створюють живий світ
Навіть просте збільшення кнопки при наведенні або хитання дерев у фоні змушує гру здаватися об’ємною та “живою”.

🧠 Мікро-реакції персонажа = емпатія
Персонаж чухає потилицю, позіхає, озирається… і ти вже відчуваєш, що це не просто модель, а хтось "справжній".

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

🌈 Атмосфера народжується з дрібниць
Пил у світлі, дрібний дощ, звуки далекого міста, відлуння кроків — усе це створює емоцію, навіть якщо геймплей простий.

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

🔍 А які деталі найбільше запам’ятались тобі в улюбленій грі? Пиши у коментарях 👇

💻 | GAMEDEV UA | #запитання #геймдизайн #дрібниці #деталі
8🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
GBCamera for Unity

Пакет Unity, що містить налаштування камери для імітації візуальних ефектів у стилі GameBoy.

Завантажити 👈

💻 | GAMEDEV UA | #корисне #GBCamera #інструменти
5
🎮 Unlocking C# 10 in Unity: Як використовувати record та record struct

Unity 6 підтримує можливості C# 10, як-от record, record struct, with-вирази та global using, але їх потрібно ввімкнути вручну.

🧠 Навіщо це потрібно?
C# 10 додає зручний синтаксис для record та record struct, ідеальних типів для зберігання ігрових даних:
- record — це референсний тип з value-поведінкою (порівнюються за значенням, а не за посиланням)
- record struct — це значимий тип (struct), але з тією ж приємною поведінкою та компактністю

Обидва надають:
• Автоматичне Equals() / GetHashCode()
• Зручне копіювання через with:
var newConfig = oldConfig with { Speed = 10 };


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

📦 Коли використовувати?

record/record struct особливо корисні в тих випадках, коли потрібно працювати з даними, що не змінюються після створення. Вони чудово підходять для зберігання налаштувань рівня, конфігурацій гравця або UI. Також їх зручно використовувати для передачі станів між системами, де важлива простота, передбачуваність і відсутність зайвої логіки в самих об'єктах.

🚀 Також можна скористатися global using, щоб прибрати дублювання using-директив у кожному файлі:
global using UnityEngine;
global using System.Collections.Generic;

Це спрощує архітектуру проєкту та підвищує читабельність коду.

💻 | GAMEDEV UA | #уроки #CSharp #RecordStruct #CleanCode #GlobalUsing
🔥31
🎯 Як зробити вказівник напрямку до цілі в Unity (із відстанню та орієнтацією)

📍 Ідеально для квестів, цілей, скринь або будь-яких об’єктів, до яких гравець має дійти.

У цьому уроці розглянуто, як створити UI-індикатор, що:
• Завжди вказує у напрямку до цілі
• Показує відстань до неї в реальному часі
• Розміщується поверх усього іншого, щоб бути завжди видимим

📌 Підходить для квестів і цілей на великій мапі, прихованих або недосяжних об’єктів, а також для орієнтації гравця у відкритому світі.

📼 [Переглянути туторіал] ▶️

💡 Такий підхід значно покращує орієнтацію в грі та полегшує навігацію для гравця.

💻 | GAMEDEV UA | #туторіал #вказівник #Навігація
5👍1
🔍 [SerializedField], [Header], #region, event в Unity — не просто декорації!

Ці “маленькі речі” можуть значно поліпшити якість коду, зручність роботи в інспекторі та структуру проєкту. Якщо пишеш скрипти в Unity — без них як без кави зранку ☕️.

🧠 Що таке [SerializedField]?
Це атрибут, який дозволяє бачити приватні змінні в інспекторі.
Тобто змінна залишається закритою для інших класів, але її можна налаштувати в Unity.
[SerializeField] private float speed = 10f;

Перевага: інкапсуляція + гнучкість у редакторі.

📌 [Header("Твій заголовок")]
Додає зручні підписи до блоків змінних в інспекторі.
[Header("Налаштування руху")]
[SerializeField] private float speed;

Перевага: чистіший і зрозуміліший інспектор.

📦 #region ... #endregion
#region Рух гравця
void Move() { }
#endregion

Перевага: менше хаосу в редакторі.

🔄 OnEnable, OnDisable, OnDestroy — ключі до контролю життєвого циклу!
Ці методи допомагають керувати поведінкою компонентів у потрібний момент:

private void OnEnable() { }  // Коли об'єкт або скрипт активуються  

private void OnDisable() { } // Коли об'єкт або скрипт деактивуються

private void OnDestroy() { } // Перед остаточним знищенням об'єкта


Переваги: ідеально підходять для підписки та відписки від івентів, запуску та зупинки корутин або очищення ресурсів, що запобігає помилкам і витокам пам’яті.

💡 Висновок:
Ці прості інструменти як порядок у шафі: не обов'язкові, але неймовірно спрощують життя.


💻 | GAMEDEV UA | #уроки #SerializedField #CodeQuality
5👍1
Sc-Fi pack

Можливо комусь пригодиться 👇

Завантажити ▶️

💻 | GAMEDEV UA | #корисне #аудіо
25
💥 ТОП-7 помилок початківців у розробці ігор

Розробка ігор це кайф, але на старті багато хто залітає в ті самі пастки.
Хочеш зробити свою першу гру? Тоді читай, як не зламатися ще до релізу 👇

🎯 1. Починають з “своєї мрії” — одразу AAA
"Мій перший проєкт — це відкритий світ, сюжет, мультиплеєр, RTX, 100 годин контенту…"
Звучить круто, але це прямий шлях до вигорання.
Почни з малого. Навіть простий клон гри уже досвід, особливо на початку шляху.

🧱 2. Відсутність базового плану
Пишуть код “на ходу”, без прототипів і етапів.
Потім самі не розуміють, що роблять.
Навіть простий список задач у блокноті/word-і вже рятує.

🚫 3. Ігнорують прототипування
Тижнями малюють меню, а геймплей ще не працює.
Спочатку: "А чи цікаво це грати?"
Графіка почекає.

👾 4. Занадто складна механіка на старті
Роблять інвентар, систему прокачки, онлайн-магазин усе одразу.
80% не доходять навіть до ігрової петлі.
Спочатку зроби базову ідею, а потім навішуй функції.

🧠 5. Не тестують на реальних людях
"Я сам знаю, що це круто". Але грати ніхто не хоче.
Дай гру друзям, геймдев-спільноті головне, фідбек.

🐌 6. Не думають про оптимізацію (Таке буває?)
Навіть 2D-гру можна змусити лагати, якщо ігнорити продуктивність.
Мінімальна увага до ресурсів = максимум шансів на стабільний проєкт.

📦 7. Відсутність порядку в проєкті
Код без коментарів, активи без структури, хаос у назвах.
Порядок сьогодні — спокій завтра.

💡 Висновок:
Усі помиляються. Але краще на чужих помилках, ніж на своїх нервах.
Не починай з “мега-гри”. Почни з гри, яку реально завершити. Окремо виділити хотілось би другий пункт.

Навіть простий список типу:

меню → геймплей → рівні → перемога/поразка - вже вирівнює фокус, економить час і зменшує стрес.

А розкажіть про свій досвід у розробці перших ігор. Як це відбувалось? Пишіть нижче 👇

💻 | GAMEDEV UA | #запитання #першагра #помилки
8👍4💩1