This media is not supported in your browser
VIEW IN TELEGRAM
Думаю, всі бачили готові інструменти типу Ease-In, Ease-Out, Ease-In-Out, або, наприклад, як кнопка плавно збільшується при натисканні, а потім так само плавно повертається у свій розмір.
Але чи знаєте ви, що стоїть за цими термінами з точки зору математики?
🧮 Easing Functions (функції згладжування руху) — це математичні формули, які визначають як змінюється швидкість руху об’єкта протягом часу.
Замість рівномірного руху, ми отримуємо:
• повільний старт і прискорення (Ease-In)
• швидкий старт і плавне гальмування (Ease-Out)
• або поєднання обох ефектів (Ease-In-Out)
Це дозволяє анімаціям виглядати плавно, природно і живо, імітуючи закони фізики: інерцію, прискорення, гальмування.
🔹 Easing Functions через математичні формули
Всі ці формули працюють за принципом: беремо час t від 0 до 1 і отримуємо значення від 0 до 1, яке потім можна застосувати до будь-якої шкали: 2D-векторів, 3D-векторів, розмірів UI, обертів тощо.
Тобто
t = 0 → початок, t = 1 → кінець, а значення, що повертає функція, показує позицію об’єкта в анімації.1️⃣ Quadratic (квадратичне easing)
Цей тип easing часто використовують, коли хочеться плавний старт і плавне закінчення руху.
Рух поділений на дві частини за часом
t ∈ [0,1]:Перша половина (t ≤ 0.5) – прискорення (Ease-In)
f(t) = 2⋅t²
• Коли t мале, об’єкт рухається дуже повільно.
• Чим ближче t до 0.5, тим швидше прискорення.
• Це створює ефект легкого старту для об’єкта.
Друга половина (t > 0.5) – уповільнення (Ease-Out)
f(t) = 2⋅t⋅(1−t) + 0.5
• На початку другої половини рух ще швидкий.
• Чим ближче t до 1, тим плавніше об’єкт зупиняється.
• Це створює природне гальмування, без різких кінців.
C# приклад використання:
float InOutQuadBlend(float t)
{
if(t <= 0.5f)
return 2.0f * t * t; // прискорення (ease-in)
t -= 0.5f;
return 2.0f * t * (1.0f - t) + 0.5f; // уповільнення (ease-out)
}
2️⃣ Bézier Blend (Бейзерове згладжування)
Ця формула дає дуже плавний рух без умовних операторів.
f(t) = t²⋅(3 − 2⋅t)
C# приклад:
float BezierBlend(float t)
{
return t * t * (3.0f - 2.0f * t);
}
Початок руху повільний, середина швидка, кінець – плавне гальмування.
Цього поки достатньо для базового розуміння, але насправді у Easing Functions є ще багато цікавого. Кожна функція має свій крутий і складний графік, який показує, як змінюється швидкість об’єкта протягом часу.
[Практично все можете знайти тут]
Easing-функція
f(t) показує позицію об’єкта на інтервалі часу t ∈ [0,1].Щоб дізнатися швидкість, потрібно взяти похідну цієї функції:
v(t) = f′(t). Тобто v(t) показує, наскільки швидко об’єкт рухається в кожний момент часу.1. Для квадратичного easing похідна лінійна, тому об’єкт прискорюється і гальмує рівномірно.
2. Для smoothstep (Bézier Blend) похідна поліноміальна (квадратична форма), що дає більш «м’який» старт і кінець руху.
Не знаю насправді, навіщо вам це може знадобитися
Please open Telegram to view this post
VIEW IN TELEGRAM
👌12🔥6❤3👀2👍1
Якщо ви працюєте в Unity, ці інструменти реально спрощують життя і економлять час. Серед них є класні штуки для роботи з анімацією, даними та дебагом.
1️⃣ NotyAttributes — зручні атрибути для інспектора2️⃣
DOTween — твінінг, анімації, плавні переходи [Клац]3️⃣
Serialized Dictionary — серіалізація словників із пошуком, перевіркою ключів та швидким заповненням4️⃣
Cast Visualizer — показує рейкасти та overlap-тести у сцені для швидкого дебагу5️⃣
PlayerPrefs Editor — перегляд та редагування PlayerPrefs через простий UI6️⃣
Scriptable Object Table View — перегляд і редагування ScriptableObjects у вигляді таблиці7️⃣
Timescale Toolbar — змінює швидкість часу під час гри8️⃣
Sticky Notes — нотатки прямо у сцені9️⃣
Bezier Path Creator — дозволяє створювати криві та траєкторії для руху об’єктівА хіба ми не говорили про це вчора?
🔟
Vector Visualizer — візуалізація векторів для дебагу фізики та напрямків.Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3👀2
This media is not supported in your browser
VIEW IN TELEGRAM
Готове рішення:
PolygonCollider2D.CreateFromSprite() Please open Telegram to view this post
VIEW IN TELEGRAM
⚡10👍3❤2✍1
This media is not supported in your browser
VIEW IN TELEGRAM
Різниця між «до» і «після» вражає!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35💯4❤🔥2✍1
Всім привіт 👋
📌 Тепер до діла: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?👀 🔥
✈️ Gamedev | #ScreenshotSaturday
📌 Тепер до діла: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍3💯1
📌 Підсумок публікацій за тиждень:
Привіт! Як завжди підсумок у одному пості! Зберігайте😁
🎓 Навчальні матеріали:
• 🎯 Gizmos. Tвої очі в Scene View
•📉 Easing Functions: що це таке?
•🌀 Потрібно обновити 2D-колайдер в runtime?
📰 Новини та цікаві теми:
•📱 У Unity знайшли критичну діру безпеки (CVE-2025-59489)
• 🪧 Ігровий маркетинг без бюджету: що справді працює
•😮 Ваші треш випадки! Можете ділитися і далі :)
🔨Корисне:
•📱 Toп 10 безкоштовних інструментів, які спростять життя розробнику
•👀 Як зміни в ефектах, рухах камери та UI змінюють відчуття гри!
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
✈️ Gamedev | [Підтримати канал тут]
Привіт! Як завжди підсумок у одному пості! Зберігайте
🎓 Навчальні матеріали:
• 🎯 Gizmos. Tвої очі в Scene View
•
•
📰 Новини та цікаві теми:
•
• 🪧 Ігровий маркетинг без бюджету: що справді працює
•
🔨Корисне:
•
•
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
# тут не просто так!Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤4👍2
Ну що ж. Почнемо тиждень з "лайтових" новин
Звучить божевільно, але Valve реально подвоїла свій пік користувачів за 5 років.
У 2020-му, коли всі сиділи вдома через COVID, пік був
19 млн.Сьогодні — 41 666 455 одночасно!
Steam виріс майже на 10 млн користувачів. І, схоже, їхній секрет простий: зроби платформу зручною і люди самі прийдуть.І поки інші платформи сперечаються про ексклюзиви, Steam спокійно росте, запускає
Steam Deck, і перетворюється з просто магазину на повноцінну екосистему.‼️ Схоже, у Valve все стабільно: гравці ростуть, продажі летять.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥19🤯5👀2❤1👍1
1️⃣
[Header("Назва секції")]Додає заголовок у інспекторі над полем. Зручно групувати змінні.
[Header("Налаштування гравітації")]
public float gravity = 9.8f;2️⃣
[Tooltip("Підказка")]Показує опис при наведенні на поле.
[Tooltip("Швидкість руху персонажа")]
public float speed;3️⃣
[Space(Бажана кількість пікселів)]Додає вертикальний відступ між полями.
[Space(25)]
public int health;
4️⃣
[HideInInspector]Ховає public-змінну в інспекторі.
[HideInInspector]
public int secretValue;
5️⃣
[ContextMenu("Назва методу")]Дозволяє викликати метод з контекстного меню скрипта.
[ContextMenu("Reset Values")]
void ResetValues() {
health = 100;
speed = 5;
}6️⃣
[ContextMenuItem("Назва", "Метод")]При натисненні правою клавішою миші на поле, можна буде викликати метод.
[ContextMenuItem("Reset Speed", "ResetSpeedMethod")]
public float speed;
void ResetSpeed() {
speed = 5;
}7️⃣
[HelpURL("https://link.com")]При натисканні
URL.[HelpURL("https://docs.unity3d.com/Manual/class-Rigidbody.html")]
public class PlayerController : MonoBehaviour { }8️⃣
[RequireComponent(typeof(Rigidbody))]Автоматично додає потрібний компонент на об’єкт.
[RequireComponent(typeof(Rigidbody))]
public class PlayerController : MonoBehaviour { }
Як на мене,
[ContextMenu] найюзабельніший Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥18👍3🔥2✍1
Аналіз AAA-релізів
2021–2024 показує цікаву тенденцію: майже 70% великих ігор виходять між серпнем та листопадом, і ще 23% у лютому–березні.А от весняний період (квітень–червень) майже порожній, лише
14% релізів. [Джерело]💡 Що з цього випливає:
• Восени ви боретеся за увагу. Ринок переповнений релізами та святковими акціями. Гравці обирають лише кілька головних тайтлів, і менші проєкти ризикують залишитися непоміченими.
• Весна – шанс виділитися. Менше конкуренції = більше уваги для вашої гри. Гравці ще не втомилися від новинок, а маркетинг працює ефективніше. Для інді-проєктів це особливо цінно: можна збирати фідбек і формувати спільноту без шуму “великих релізів”.
• Січень–лютий і липень — тихі місяці. Активність гравців падає, рекламні кампанії працюють слабше, і немає масового попиту на нові ігри.
❓ Що станом на 2025 рік?
Ситуація ще більш показова. За даними
Newzoo, ігри, що виходять у перевантажений період серпень-листопад, отримують у середньому на 30–35% менше гравців за перші три місяці, ніж ті, що вийшли у квітні–червні.А весняний період залишається майже порожнім, але показує таку ж або навіть вищу залученість аудиторії. Менше конкуренції дозволяє ефективніше просувати гру та привертати увагу гравців без зайвих витрат на маркетинг.
А що ви думаєте про це? Чи варто ігнорувати всю цю статистику і випускати тоді, коли самі готові?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤2👍1🤔1👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯16❤🔥6👀3❤1
У цьому відео показано, як написати код для виявлення об’єкта, підйому та кидання предметів у грі всього за 10 хвилин!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11👍2🔥2
Якщо підсумувати оновлення, які Unity отримала за останні версії (читайте попередні пости за тегами #новини), то головний фокус розробників став очевидним — продуктивність і комфорт роботи.
Unity додала
Awaitable class — тепер асинхронний код можна писати через async/await без корутин і без зайвих алокацій. Менше лагів, більше контролю Не забуваємо за
[SerializeField], [Tooltip], [Header], [RequireComponent] та інші атрибути, які дозволяють підтримувати порядок у скриптах.UI? Тепер можна створювати інструменти прямо в редакторі через
UI Toolkit, а також робити з ним runtime UI, все в єдиному стилі.• Вимикайте
Domain Reload і Scene Reload, бо Play Mode запускається майже миттєво.• Додавайте власні меню через
[MenuItem] і працюйте швидше.• Розділяйте дані та логіку через
ScriptableObjects, оптимізуйте пам’ять із Addressables.• А
.asmdef файли помітно скорочують час компіляції.Unity 6.1 отримала Project Auditor — знаходить важкі місця в коді, невикористані ресурси та проблеми з продуктивністю.
Плюс класика: Memory Profiler, ProfilerMarker,
Debug.DrawRay() для візуалізації та кольорові Debug.Log() із тегами <color> і <b> для зручності.В принципі все те саме і більше є тут [Детальніше]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤🔥2
🔄 Interpolate vs Extrapolate
Помічали, як іноді рух об’єктів виглядає рваним через різницю між
Але яка між ними різниця?
1️⃣ Interpolate (Інтерполяція)
Використовує попередні позиції об’єкта, щоб обчислити його положення на поточному кадрі. Рух виглядає точним і плавним, навіть якщо фізика оновлюється рідше, ніж кадри на екрані.
Мінус: невелика затримка в відображенні, бо об’єкт трохи “тягнеться” з минулого кадру.
2️⃣ Extrapolate (Екстраполяція)
Прогнозує майбутню позицію об’єкта на основі його поточної швидкості та напрямку. Добре працює для об’єктів з передбачуваним рухом — вони одразу показуються у новій позиції.
Мінус: якщо об’єкт різко змінює напрямок або швидкість, прогноз може трохи “промахнутись”.
Один вчиться на минулому, інший прогнозує майбутнє і сподівається, що вгадає😉
✈️ Gamedev | #факти #Interpolation #Extrapolation #SmoothMovement
Помічали, як іноді рух об’єктів виглядає рваним через різницю між
FPS та фізикою? Це джитер! Interpolate та Extrapolate допомагають зробити рух плавним і природним.Але яка між ними різниця?
Використовує попередні позиції об’єкта, щоб обчислити його положення на поточному кадрі. Рух виглядає точним і плавним, навіть якщо фізика оновлюється рідше, ніж кадри на екрані.
Мінус: невелика затримка в відображенні, бо об’єкт трохи “тягнеться” з минулого кадру.
Прогнозує майбутню позицію об’єкта на основі його поточної швидкості та напрямку. Добре працює для об’єктів з передбачуваним рухом — вони одразу показуються у новій позиції.
Мінус: якщо об’єкт різко змінює напрямок або швидкість, прогноз може трохи “промахнутись”.
Один вчиться на минулому, інший прогнозує майбутнє і сподівається, що вгадає
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥10🔥3❤2👍1
Всім привіт 👋
📌 Тепер до діла: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?👀 🔥
✈️ Gamedev | #ScreenshotSaturday
📌 Тепер до діла: щосуботи ділимося своїми іграми, артами, скріншотами чи результатами роботи. Це може бути як концепт, так і вже готовий проєкт.
Ну що, хто покаже перший скрін?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥4🎉2
📌 Підсумок публікацій за тиждень:
Як завжди підсумок у одному пості! Зберігайте😁
🎓 Навчальні матеріали:
•🔥 8 атрибутів, які спрощують життя розробнику
•🚀 Підйом пердметів за 10 хвилин
• 🔄 Interpolate vs Extrapolate
🔨Корисне:
•🎵 Pixel RPG Music
•📱 Коротка стаття про оптимізацію в Unity 6
📰 Новини та цікаві теми:
•📱 Steam знову зламав власний рекорд!
•⬇️ Коли краще випускати гру: весна чи осінь?
•🤯 Імпровізована системи захоплення руху!
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
✈️ Gamedev | [Підтримати канал тут]
Як завжди підсумок у одному пості! Зберігайте
🎓 Навчальні матеріали:
•
•
• 🔄 Interpolate vs Extrapolate
🔨Корисне:
•
•
📰 Новини та цікаві теми:
•
•
•
Не забуваємо, що у першому закріпленому повідомленні є вся потрібна інформація. Що
# тут не просто так!Та також, переглядайте та діліться своїми результатами у SCREENSHOT SATURDAY!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4😁4🔥2
☕️ Добрий ранок, геймдевелопери!
Сьогодні короткий лайфхак для тих, хто прокидається, відкриває Unity і замість коду бачить спам у консолі на кшталт:
🧩 У чому суть проблеми
Ця помилка з’являється в останніх версіях
В деяких випадках він «ламається», особливо коли є
🛠 Як це можна виправити
На форумах я знайшов декілька способів, в надійності яких я сумніваюсь, але мені допоміг один з них.
Якщо я правильно зрозумів, ця галочка повертає стару систему відображення інспектора, яка працює без UI Toolkit, а значить без багів👌
Виправіть, якщо у чомусь помилився. А хто ще знає методи, щоб уникнути цього?
✈️ Gamedev | #баги #фікси #Unity #UIToolkit #TMP
Сьогодні короткий лайфхак для тих, хто прокидається, відкриває Unity і замість коду бачить спам у консолі на кшталт:
ArgumentException: The state of the provided MeshGenerationNode is invalid (entry is null).
або
MeshGenerationContext is assigned to a VisualElement after calling ‘UnityEngine.UIElements.UIR.MeshGenerationCallback’. Did you forget to call ‘End’?
🧩 У чому суть проблеми
Ця помилка з’являється в останніх версіях
Unity 6000.x і пов’язана з тим, як Unity малює інспектор через UI Toolkit. В деяких випадках він «ламається», особливо коли є
List<GameObject> або складні посилання. Після цього інспектор може показувати порожні поля і без запуску видавати ось такі от помилки...🛠 Як це можна виправити
На форумах я знайшов декілька способів, в надійності яких я сумніваюсь, але мені допоміг один з них.
Edit → Project Settings → Editor → Inspector → Use IMGUI Default InspectorЯкщо я правильно зрозумів, ця галочка повертає стару систему відображення інспектора, яка працює без UI Toolkit, а значить без багів
Виправіть, якщо у чомусь помилився. А хто ще знає методи, щоб уникнути цього?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤3👍1
🌎 Масштабний збій AWS паралізував сервіси по всьому світу
Думаю, багато вже чули, але все ж скажу😅
Признавайтесь: хто сьогодні заходив у Clash Royale або Roblox і подумав, що вас забанили? А ні!
Все це через масштабний збій у роботі
Через проблему з DNS у регіоні US-EAST-1 тисячі людей не могли зайти у свої улюблені додатки: від Snapchat, Zoom, Duolingo та Canva до Fortnite і навіть британської податкової
ℹ️ За даними AWS, інженери вже усунули проблему, і більшість сервісів працює нормально, але ще можливі затримки та невеликі помилки під час відновлення.
✈️ Gamedev | #новини #AWS #Amazon #Cloud
Думаю, багато вже чули, але все ж скажу
Признавайтесь: хто сьогодні заходив у Clash Royale або Roblox і подумав, що вас забанили? А ні!
Все це через масштабний збій у роботі
Amazon Web Services (AWS) — хмарної інфраструктури, на якій працює купа сервісів по всьому світу. Через проблему з DNS у регіоні US-EAST-1 тисячі людей не могли зайти у свої улюблені додатки: від Snapchat, Zoom, Duolingo та Canva до Fortnite і навіть британської податкової
HMRC!Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8😢1👀1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥4❤🔥2👍1
У сучасних системах здібностей (abilities) зручніше працювати не з конкретними класами, а з інтерфейсами.
Generic Interfaces (IEffect<TTarget>) дозволяють створювати універсальні ефекти, які можна застосовувати до будь-якого типу об’єктів без дублювання коду.1️⃣ IEffect. Універсальний ефект
Визначає логіку будь-якого ефекту (шкода, лікування, бафи).
Має
Apply, Cancel і подію OnCompleted.public interface IEffect<T> {
IEffect<T> CreateInstance();
void Apply(T target);
void Cancel();
event Action<IEffect<T>> OnCompleted;
}🔹 Використання generics гарантує типобезпеку. Наприклад,
IEffect<IDamageable> можна застосувати лише до цілей, які реалізують IDamageable.2️⃣ IDamageable. Будь-який об’єкт, що може отримати шкоду
Це базовий інтерфейс для всіх «пошкоджених» об’єктів.
public interface IDamageable {
void TakeDamage(int amount);
}Будь-який клас, який реалізує цей інтерфейс, автоматично сумісний з ефектами, не змінюючи їх код.
Так,
Enemy реалізує IDamageable, тому може приймати ефекти без додаткової логіки.3️⃣ Миттєві та довготривалі ефекти
DamageEffect одразу наносить шкоду.DamageOverTimeEffect працює з таймером і завдає шкоду з інтервалом.public void Apply(IDamageable t) {
t.TakeDamage(damageAmount);
OnCompleted?.Invoke(this);
}Таймер автоматично зупиняє ефект і викликає
OnCompleted.4️⃣ Ability. Набір ефектів
[Serializable]
public class Ability {
// Список ефектів, які складають цю здібність.
// [SerializeReference] дозволяє в інспекторі Unity змішувати різні типи ефектів (DamageEffect, DamageOverTimeEffect тощо)
[SerializeReference] public List<IEffect<IDamageable>> effects = new();
// Метод виконання здібності на конкретній цілі
public void Execute(IDamageable t) {
if (t == null) return; // захист від null-цілі
foreach (var e in effects) {
// Створюємо окрему інстанцію ефекту для цього застосування,
// щоб уникнути спільного стану (таймери, currentTarget) між цілями
var instance = e.CreateInstance();
if (instance == null) continue;
// Якщо ціль — Enemy, застосовуємо через ApplyEffect,
// який відслідковує активні ефекти та підписується на OnCompleted
if (t is Enemy enemy)
enemy.ApplyEffect(instance);
else
// Інакше застосовуємо ефект без додаткового трекінгу
instance.Apply(t);
}
}
}
🔹
[SerializeReference] дозволяє змішувати різні типи ефектів прямо в інспекторі. Одна здібність може містити кілька ефектів (наприклад, удар + отрута).5️⃣ Enemy. Керування ефектами
Enemy зберігає активні ефекти й очищає їх при смерті:
void Die() {
foreach (var e in activeEffects) e.Cancel();
activeEffects.Clear();
}🔹 Подія
OnCompleted прибирає завершені ефекти.🔹
Cancel() зупиняє активні (DoT) при смерті.6️⃣ PlayerAbilityCaster. Запуск здібностей
if (Input.GetKeyDown(KeyCode.Alpha1))
Cast(hotbar[0], FindFirstObjectByType<Enemy>());
Викликає здібності з клавіш, додає
VFX/SFX і керує виконанням.(Враховуючи, що цей код лише для прикладу, то [Детальніше тут])
Якщо говорити про плюси, така система дозволяє легко додавати нові ефекти без зміни основного коду і робить їх повністю повторно використовуваними.
Вона також забезпечує чітку архітектуру, що значно спрощує підтримку та масштабування ігрової механіки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤🔥2⚡1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4❤🔥3✍2