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

Зв’язок: @DevAndrew

Анти-скам бот: @IndieSafeBot
Download Telegram
🚀 Unity 6.3 доступна! [Детальніше тут]

Ще не відійшли від 6.2, а тут ще одне оновлення. Спробуйте нову Unity 6.3 з покращеною стабільністю, продуктивністю та підтримкою платформ.

🔹 Головні новинки:

• UI Toolkit: налаштовувані шейдери та SVG.
Render 3D як 2D з підтримкою сортування та освітлення.
Shader Graph: нові інструменти для шейдерів та террейнів.
Render Graph: швидше і гнучкіше, переглядач на пристрої.
Multiplayer: HTTP/2 та міграція хоста.
• Аудіо: Scriptable Audio Pipeline та Enhanced Audio Foundation.
Профілювання та оптимізація: покращені Lightmaps, 2D Animation та Sprite Atlas Analyzer.

💡 Бета відкрита для всіх через Unity Hub!

Не забудь зробити резервну копію проекту 😉

💻 | GAMEDEV UA | #новини #Unity #unitynews
🔥7👍2💯1
💡 Скільки гра має бути в Early Access, щоб не втратити гравців?

Аналітики Newzoo у своєму «Глобальному звіті про ігровий ринок 2025» поділилися статистикою про дочасний доступ у Steam.

🔍 Вони дослідили, як термін раннього доступу впливає на кількість гравців після релізу версії 1.0.

📌 Головний висновок: оптимальний період до 6 місяців.


Найкращі результати отримали ігри, що перебували в ранньому доступі 4–6 місяців? у середньому ~1,8 млн користувачів за перші 3 місяці після релізу.

📉 Чим довше гра залишається в EA, тим важче повернути аудиторію на виході.

💻 | GAMEDEV UA | #запитання #ринок #earlyaccess #доступ #раннійдоступ
👍6🔥21
🕹 1-Bit Platformer Pack

Понад 400 1-бітних спрайтів: персонажі, вороги, предмети, блоки та тайли.

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

Ліцензія: CC0 – можна використовувати у будь-яких проектах, навіть комерційних, атрибуція не обов’язкова.

💻 | GAMEDEV UA | #корисне #текстурки #1bit #піксельарт
1👍103
💨 Сила тертя і гальмування

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

v(t) = v₀ ⋅ e^(−μt)

v(t) — швидкість через час t
v₀ — початкова швидкість
• μ — коефіцієнт тертя (чим більше, тим швидше об’єкт зупиняється)

💡 Інтуїтивно: при великому терті об’єкт зупиняється швидко, при малому довго ковзає.

Для чого це потрібне в іграх?

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

Як реалізувати в Unity

Рух об’єкта оновлюється по кадрах, тому формулу дискретизують:

v_new = v_old ⋅ e^(−μ Δt), де Δt = Time.deltaTime


Приклад коду:
using UnityEngine;

public class FrictionExample : MonoBehaviour
{
[SerializeField] private float speed = 5f; // початкова швидкість
[SerializeField] private float friction = 1f; // коефіцієнт тертя

private Vector3 velocity;

void Start()
{
velocity = transform.forward * speed; // рух уперед
}

void Update()
{
// Експоненційне гальмування
velocity *= Mathf.Exp(-friction * Time.deltaTime);

// Рух об'єкта
transform.position += velocity * Time.deltaTime;

// Зупинка, коли швидкість дуже мала
if (velocity.magnitude < 0.01f)
velocity = Vector3.zero;
}
}


Пояснення коду:


Mathf.Exp(-friction * Time.deltaTime) точно реалізує експоненційне зменшення швидкості.
friction контролює, наскільки швидко об’єкт зупиняється.
• Маленькі швидкості можна обнуляти, щоб уникнути дрібних "дрейфів".

‼️ Але виникає інше запитання. Як визначити friction?

Є декілька методів. Самий простий - "експерименталний". Просто підібрати вручну, поки не буде виглядати природньо.

Ще один варіант - за формолую. У класичній фізиці: сила тертя F = μ * N

μ — коефіцієнт тертя (в реальному житті: 0…1 для більшості поверхонь)
N — нормальна сила (вага об’єкта)

💡Хоча краще всього робити по відчуттям. Але якщо ви екстремал, який хоче, щоб все було точно то ваш вибір 😉

📦 Готовий варіант у Unity без коду

Якщо ви не хочете писати код вручну, можна використати Rigidbody (3D) або Rigidbody2D і задати Drag (Linear Drag). Unity автоматично буде зменшувати швидкість об’єкта:

Rigidbody.drag або Rigidbody2D.drag — відповідає за “тертя повітря/середовища”
Простий спосіб отримати плавне гальмування, без написання власних формул.

📌 Цей варіант зручний, якщо потрібен швидкий результат і взаємодія з фізикою Unity.

💻 | GAMEDEV UA | #математика #тертя #рух #силатертя
🔥7
🔨Як Маріо став Маріо

Маріо вперше з'явився як персонаж на ім'я Jumpman у грі Donkey Kong, яка вийшла 9 липня 1981 року, де він був теслею, що рятував свою дівчину від горили.

Пізніше, у 1983 році, в грі Mario Bros. він став сантехніком, а своє ім'я "Маріо" отримав на честь Маріо Сегале, власника складу американського офісу Nintendo.

💻 | GAMEDEV UA |
#факти #game #gamedev #маріо #mario
🔥95👍2
Фінальний мем тижня!

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

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

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

✈️ Gamedev | #меми
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12👍2
😅 Unity знову сипле новинами! [Детальніше]

Щойно ми встигли ознайомитися з Unity 6.2, уже тестується 6.3, а тим часом команда підготувала перший список breaking changes для Unity 6.4.

Що планують змінити 👇

🔹 UI Toolkit:
UxmlFactory/UxmlTraits остаточно йдуть у минуле. Нові елементи треба створювати через [UxmlElement] та [UxmlAttribute].

🔹 SRP Volumes:
Тепер Physics не обов’язкова залежність для SRP Core, URP і HDRP. Зміни торкнуться Local Volumes, а інтерфейс IVolume прибрали — використовуйте VolumeGizmoDrawer.

🔹 OnDisable для всієї ієрархії:
Object.Destroy() тепер викликає OnDisable() навіть для «внуків» об’єкта, а не лише для нього й прямих дітей.

🔹 SRP Compatibility Mode:
Його вирішили прибрати назавжди. Кастомні рендер-паси доведеться переводити на Render Graph.

👉 Це ще не весь список, бо Unity обіцяє оновлювати його до старту бети 6.4. Будемо слідкувати 🫡

💻 Gamedev | #новини #Unity #Gamedev #Unitynews
7🤔3
This media is not supported in your browser
VIEW IN TELEGRAM
Як відключити колізії гравця зі своїми кулями 💥

💻 Gamedev | #туторіал #collider #зіткнення
6🔥3👍2
📊 Відгуки і рейтинги = продажі ігор

Дані за 2024–2025 роки показують: чим вищий рейтинг та більше позитивних відгуків – тим вищі продажі ігор на всіх платформах (А буває інакше?)

🔹Steam [Джерело]

На Steam кількість і зміст відгуків прямо впливають на конверсії та видимість. За даними GameDiscoverCo з травня 2024 року, середні ігри з високим рейтингом суттєво краще конвертують свій лист очікування у фактичні продаж

Ігри з рейтингом «Overwhelmingly Positive» (> 95%) продаються в рази краще: зі 100 тис. вішлістів виходить близько 51 тис. продажів. Натомість «змішані» (< 70%) відгуки різко знижують конверсію, тоді як «Mostly Positive» і вище дають сигнал гравцям, що гра безпечна для покупки.

🔹Google Play (Android) [Джерело]

На Google Play рейтинг напряму впливає на рішення: близько 79% користувачів перевіряють його перед завантаженням, а 77% узагалі не встановлюють ігор із оцінкою нижче трьох зірок. Високі ж рейтинги значно підвищують довіру і конверсію.

А як щодо алгоритмів? Алгоритм Google Play враховує рейтинги й відгуки поряд з іншими сигналами, тож високий середній бал (особливо 4.5–5★) покращує позиції в пошуку та підвищує конверсію. Одночасно Google відсіює спам і фейкові коментарі, тому розробники мають просити оцінки лише «етично» — через вбудовані запити, без винагород.

🔹App Store (iOS)

В App Store ситуація подібна до Google Play: більшість користувачів орієнтуються на відгуки й рейтинг, і оцінка нижче 4★ різко знижує шанси на встановлення.

Apple також враховує ці показники в пошуковому ранжуванні, але при цьому суворо забороняє будь-які винагороди за відгуки, дозволені лише нативні запити оцінки у нейтральній формі.

📌 І підсумовувати не потрібно, бо і так всім зрозуміло, що відгуки/рейтинг = продаж. А ось алгоритми вже цікавіше 🧐

💻 Gamedev | #запитання #статистика #маркетинг #оцінка #рейтинг
4👍2🔥1
🌀 State Machine: що це і як працює

State Machine – це шаблон проектування, який описує поведінку об’єкта через набір станів та переходів між ними.

Простіше кажучи, у будь-який момент об’єкт перебуває лише в одному стані, а події чи умови визначають перехід в інший стан (Аніматор? 😅)

Навіщо потрібна FSM у геймдеві

Без FSM доводиться писати безліч if-else та тримати купу булевих прапорців. Результат? Код стає заплутаним і важко підтримуваним. FSM дозволяє:
Чітко розділити логіку по станах.
Легко додавати нові стани та переходи.
Зменшити дублювання коду.
Робити поведінку персонажів і систем прозорою.

🔹 Де використовується?

1. AI ворогів та NPC: стани «патрулювання», «переслідування», «атака». Перехід між ними відбувається за подіями (наприклад, гравець з’явився в полі зору).

2. Ігрова логіка (Game State): меню, гра, пауза, завершення рівня. Перехід відбувається за подіями (кнопки, завершення рівня).

3. Анімації: Animator Controller – це стейт-машина для анімацій. Через StateMachineBehaviour можна запускати код при вході/виході з анімаційного стану.

4. UI: перемикання між меню, налаштуваннями, екраном гри. Кожен стан відповідає певному екрану або панелі.

🔹 Приклад базової FSM у Unity (C#)
using UnityEngine;

// Базовий клас стану як ScriptableObject
public abstract class State : ScriptableObject
{
public virtual void Enter(GameObject owner) { }
public virtual void Update(GameObject owner) { }
public virtual void Exit(GameObject owner) { }
}

// Приклад стану: Idle
[CreateAssetMenu(menuName = "FSM/States/IdleState")]
public class IdleState : State
{
public override void Enter(GameObject owner) => Debug.Log("Idle: Enter");

public override void Update(GameObject owner)
{
// Тут можна перевіряти умови переходу
// Наприклад, якщо бачимо гравця — переходь в Patrol
var fsm = owner.GetComponent<StateMachine>();
if (fsm.SeePlayer())
{
fsm.ChangeState(fsm.patrolState);
}
}

public override void Exit(GameObject owner) => Debug.Log("Idle: Exit");
}

// Приклад стану: Patrol
[CreateAssetMenu(menuName = "FSM/States/PatrolState")]
public class PatrolState : State
{
public override void Enter(GameObject owner) => Debug.Log("Patrol: Enter");

public override void Update(GameObject owner)
{
// Логіка патрулювання
}

public override void Exit(GameObject owner) => Debug.Log("Patrol: Exit");
}

// Контролер FSM
public class StateMachine : MonoBehaviour
{
[Header("States (ScriptableObjects)")]
public State initialState;
public State patrolState; // задаємо через інспектор

private State currentState;

void Start()
{
if (initialState != null)
{
currentState = initialState;
currentState.Enter(gameObject);
}
}

void Update()
{
// Виклик логіки стану
currentState?.Update(gameObject);
}

void FixedUpdate()
{
// Якщо стан пов'язаний з фізикою, тут можна викликати додаткові методи
// Наприклад: currentState?.FixedUpdate(gameObject);
}

public void ChangeState(State newState)
{
currentState?.Exit(gameObject);
currentState = newState;
currentState?.Enter(gameObject);
}

// Приклад умови переходу
public bool SeePlayer()
{
// Тут простий приклад перевірки
}
}
//ScriptableObject станів не зберігає локальні дані для конкретного об'єкта

Кожен стан має методи Enter, Update, Exit. Контролер викликає їх у міру зміни стану.

📌 Best Practices

Щоб FSM працювала ефективно і сучасно, рекомендується розділяти дані та поведінку, наприклад, використовувати ScriptableObject для опису станів і переходів.

Спільні методи та повторювану логіку краще винести в базовий клас, а кожен стан повинен відповідати лише за власну поведінку – це принцип єдиної відповідальності.

💻 Gamedev | #уроки #Unity #csharp #State #StateMachine #FSM
🔥62❤‍🔥11🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
🧩 SpriteShape. Що це таке?

Це інструмент, який дозволяє малювати дороги, річки, гори чи будь-які криві форми не вручну, а буквально «натягувати» спрайти на лінію.

Ти ставиш точки, а Unity сама будує форму з кутів і прямих сегментів.

🔹 Як працює?
1.
Додаєш SpriteShape Profile — набір спрайтів для різних частин:
Corner (кути),
Edge (прямі частини).
2. У сцені створюєш SpriteShape Controller і малюєш криву.
3. Unity сам "натягує" спрайти по цій кривій, комбінуючи кути й прямі сегменти.

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

💻 Gamedev | #інструменти #SpriteShape #туторіал #leveldesign
👍11🔥2🥰1
🚨 У Steam верифікована гра вкрала $150 000 у геймерів

Майже два місяці на платформі Steam продавалась безплатна гра Block Blasters — ретро-платформер із сотнями позитивних відгуків. Насправді у коді був троян, який викрадав криптовалюту з гаманців гравців.

❗️ Жертвами стали сотні користувачів. Серед них стрімер із Латвії RastalandTV, який під час благодійного стріму втратив $32 000, зібрані на лікування від саркоми.


Дослідники з’ясували, що шкідливе ПЗ крало дані входу в Steam, IP-адреси та доступ до криптогаманців. Загалом втрати склали понад $150 000.

🔒 Якщо ви встановлювали Block Blasters то терміново:
змініть паролі Steam;
перенесіть криптовалюту на нові гаманці.

Valve поки офіційно не прокоментувала інцидент.

💻 Gamedev | #новини #valve #Steam #криптовалюта #шахрайство
🤯10👀3❤‍🔥11👍1
Retro synth - 80/90's / Три безкоштовних трека 💿

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

Особисто мені подобається такий стиль. А що ви думаєте 👇

💻 Gamedev | #корисне #аудіо #retrowave #synthwave #audio
👍6🔥2🥰2
🎯 Чи працює реклама через інфлюенсерів для інді-ігор?

Так! І часто навіть ефективніше, ніж класична реклама.

Наприклад, у кейсі Kickstarter-кампанії інді-гри Infinity Heroes маркетинг через інфлюенсерів забезпечив 245% повернення інвестицій [Джерело]

📊 ROI (Return on Investment — окупність інвестицій) у рекламі через інфлюенсерів може бути значно вищим: у середньому бренди отримують у кілька разів більшу віддачу, ніж від банерів чи звичайних оголошень. Для інді-ігор це особливо важливо, бо бюджети обмежені.

Навіть невеликі канали з аудиторією у 10–100 тисяч підписників (хіба це невеликі?) часто показують кращу залученість, ніж великі «зірки».

Загалом 70% брендів визнають, що найвищий ROI вони отримують від співпраці з творцями контенту [Джерело]

🔥 Де це працює найкраще:

Twitch — прямий контакт із геймерською аудиторією.
YouTube Gaming — довготривалі відео, які продовжують приносити гравців навіть через місяці.
TikTok — всі ж бачили відео з історіями з reddit-а, а на фоні була якась гра?

‼️АЛЕ...
Якщо говорити про небезпеки, то дуже багато «інфлюенсерів» мають накручену аудиторію, тому виходить ви платите за цифри.

Наприклад, у 2019 році бренди втратили близько $1,3 млрд через фейкові підписки [Джерело]

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

💻 Gamedev | #запитання #реклама #інфлюенсери #marketing #маркетинг
7👍2🔥21
💾 Коротке нагадування що до Texture Compression

Хоча зараз не 90-ті, коли для одного грибочка в Mario доводилося відзеркалювати ту саму текстуру, аби зекономити пам’ять, все ж не забуваємо про стиснення текстур 🍄

🔹Max Size — завжди підбирайте під реальну потребу. Іконці не треба 4K, 256×256 вистачить.
🔹Compression (Low / Normal / High) — впливає лише на вигляд текстури, а не на пам’ять. Low = швидше компресія, High = краще виглядає.

Не забувайте про Filter Mode:
Point — для піксель-арту.
Bilinear / Trilinear — для плавності, але вони трішки більше навантажують GPU.

📌А якщо вже зовсім скрутно — використовуйте відзеркалення, як у Mario, але в основному важливо просто міняти Max Size🍄

💻 Gamedev | #оптимізація #текстури #стиснення #compression
🔥10😁321
Всім привіт! 👋

Давніше хотів запустити цю рубрику — SCREENSHOT SATURDAY

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

Хочу, щоб це стало маленьким місцем для натхнення, підтримки та обміну ідеями. 🚀

Ну що, хто покаже перший скрін? 👀🔥

💻 Gamedev | #ScreenshotSaturday
11👍3🤝1
💭 Observer: як об’єкт може шепотіти всім іншим

Уяви: один об’єкт щось робить, а інші автоматично реагують. І при цьому ніхто ні на кого не прив’язаний прямо. Це і є Observer (Спостерігач).

🧩 Що це?
Observer дозволяє одному об’єкту (subject) “повідомляти” інших про зміни стану без жорстких залежностей.

Наприклад:
Гравець отримав очки → UI оновлює рахунок
Машина перетнула фініш → спрацьовує анімація та звук
Хтось натиснув кнопку → активуються всі підписані елементи

Головна ідея: предмет знає тільки про подію, а не про тих, хто слухає.

⚡️ Як це працює в Unity/C#
В C# це реалізується через делегати та події (event / Action):
public class Subject : MonoBehaviour {
// подія з делегатом Action
public event Action OnSomethingHappened;

public void DoSomething() {
// безпечний виклик (якщо немає підписників, нічого не станеться)
OnSomethingHappened?.Invoke();
}
}

public class Observer : MonoBehaviour {
[SerializeField] private Subject subject;

void OnEnable() {
if (subject == null) {
Debug.LogWarning($"{name}: subject не встановлено, підписка пропущена.");
return;
}
subject.OnSomethingHappened += HandleEvent;
}

void OnDisable() {
if (subject == null) return;
subject.OnSomethingHappened -= HandleEvent;
}

private void HandleEvent() {
// реакція спостерігача
}
}


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

Це додає гнучкості для UI та архітектури. Крім того, таку систему легко тестувати окремими компонентами.

⚠️ Мінуси: доводиться вручну налаштовувати підписку та відписку, і спостерігачі все одно потребують посилання на джерело події.

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

📌 Якщо доволі багато подій то краще профілювати їх

✈️ Gamedev | #уроки #observed #слухач #ObserverPattern #csharp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍2❤‍🔥1
🚀 ШІ для піксель-арту / PixelLab

Це сервіс, який допомагає створювати та редагувати піксельну графіку. PixelLab можна використовувати в браузері або інтегрувати з програмами для піксель-арту (наприклад, через офіційне розширення для Aseprite).

🔹 Можливості PixelLab:
Генерація спрайтів із текстового опису
Редагування готових картинок
Створення тайлсетів, сцен і анімацій
Підтримка API для автоматизації

▶️ [Переглянути] 👈

📌 Є безкоштовна версія. Хоча є обмеження по розміру зображень та кількості запитів, але її цілком вистачає для тестування та перших проєктів.

✈️ Gamedev | #інструменти #PixelArt #Aseprite #ArtTools #SpriteArt
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👍3👎2