Akrus Games | Unity
2.95K subscribers
408 photos
89 videos
11 files
351 links
Самые годные лайфхаки по unity c#

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
Сегодня день рождения у бывшего второго админа канала @egor_uryvaev971. 🎉🎉🎉🎉🎉

Он внес большой вклад в канал: придумал образовательные посты, набрал 270 подписчиков.
Потом он перестал делать посты, ушел на фриланс. С тех пор он не админ.

НО, все же он внес вклад больше чем я.

Желаю Егору счастья, здоровья и успехов💃💃
Поздравьте
его в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥43
⚡️ Unity: на какое железо игроков стоит рассчитывать?

Сохрани этот гайд — чтобы твоя игра летала у большинства, а не только у 1% хардкорной аудитории.

🎯 Бюджетные ПК (Low-End)
Процессор: Intel i3 / Ryzen 3 (4 потока)
Видеокарта: Intel UHD Graphics / GT 1030 / RX 550
Память: 8 ГБ ОЗУ
Разрешение: 1280x720 (HD)

💡 Что делать: Отключай постобработку, снижай разрешение теней, используй LOD.

🎯 Средний сегмент (Mid-Range) — ЗОЛОТАЯ СЕРЕДИНА
Процессор: Intel i5 / Ryzen 5 (6+ потоков)
Видеокарта: GTX 1660 / RTX 3050 / RX 6600
Память: 16 ГБ ОЗУ
Разрешение: 1920x1080 (Full HD)

💡 Что делать: Включай лёгкую постобработку, средние тени, смело работай с частицами.

🎯 Игровые ноутбуки / Мощные ПК (High-End)
Процессор: Intel i7 / Ryzen 7 (8+ потоков)
Видеокарта: RTX 3060 / RX 6700 XT и выше
Память: 16-32 ГБ ОЗУ
Разрешение: 2560x1440 (2K) и выше

💡 Что делать: Можно включать HDRI-скайбокс, высокие настройки освещения, HDRP.

📌 Телефоны (Mobile):
Бюджетные: Snapdragon 4xx / 6xx, 4 ГБ ОЗУ
Средние: Snapdragon 7xx / 8xx, 6-8 ГБ ОЗУ
Флагманы: Snapdragon 8 Gen 2/3, Apple A15+

💡 Что делать: Для мобилок критично — батч-рендеринг, атласы текстур, минимум овердрава.

Вывод: Ориентируйся на Mid-Range + Low-End = охватишь 80% аудитории.

📌 Сохрани чек-лист по оптимизации!
🔔 Подпишись — скоро разберём как настроить Quality Settings под разные устройства.

💬 Под какое железо оптимизируешь свою игру? Пиши в комментах!

👉Akrus Games | Unity
8🔥2🎄21
⚡️ Как продумать игру: от идеи до структуры уровней

Не начинай с деталей! Сначала заложи фундамент — иначе переделывать придётся каждый уровень.

🎯 1. Сначала — ядро геймплея

Определи главную механику, вокруг которой всё строится:
• Прыжки и увороты? (Platformer)
• Стрельба и укрытия? (Shooter)
• Головоломки? (Puzzle)

📌 Совет: Опиши геймплей одним предложением: "Игра, где ты управляй призраком, который может проходить сквозь стены, но боится света". Если не получается — механик слишком много.

🔄 2. Спроектируй игровой цикл

Что игрок делает за один сеанс?
• Зашёл → выполнил задачу → получил награду → вернулся в хаб
• Прошёл уровень → открыл новую способность → испытал её в следующем уровне

📌 Пример для мобильной игры:
Запуск → сбор ресурсов → улучшение базы → бой с боссом → повтор

📌 Пример для платформера:
Уровень → сбор монеток → открытие двери ключом → босс → новая способность

🗺 3. Структура уровней: правило "3-х секций"

Дели уровень на части:
• Начало: знакомство с новой механикой (простая платформа)
• Середина: усложнение (платформа + враги)
• Кульминация: проверка навыков (прыжок через пропасть с врагами)

📌 Совет: Нарисуй схему на бумаге! Блок-схема связей лучше тысячи слов.

🌀 4. Композиция уровня = поток

Игрок не должен останавливаться и думать "куда идти". Веди его:
• Светом в темноте
• Цветом важных объектов
• Расположением врагов и платформ

💡 Тест: Запусти уровень и посмотри, где игрок теряется. Убрал точку остановки — улучшил поток.

🛠 5. Сначала серое, потом цветное

Создай все уровни в примитивах (кубы, сферы) и проверь геймплей. Только потом добавляй графику. 90% игр умирают на этапе "я хочу красивый уровень сразу".

Кратко:
1. Определи главную механику
2. Построй игровой цикл
3. Разбей уровень на 3 логические части
4. Тестируй поток
5. Сначала геймплей, потом графика

📌 Сохрани этот план — он сэкономит тебе месяцы разработки.

💬 По какому плану создаёшь игру ты?
🔔 Подпишись — скоро разберём геймдизайн-документы на практике.

👉Akrus Games | Unity
8521
Сегодня у меня день рождения.
За этот год я:
1. Научился работать с unity
2. Нашел много новых друзей как в чатах, так и в реальности
3. Создал канал
4. Заработал денег
5. Получил много опыта


Это был наверное самый продуктивный год моей жизни.
Вообщем админ сегодня отдыхает.
Если что, я тот самый чувак который вам пишет посты.
10🔥6🎄311
Также в честь такого крутого дня я делаю скидку на рекламу в этом канале на 50 РУБЛЕЙ.
12 часов - 50₽ 100₽
24 часа - 80₽ 130₽ ХИТ ПРОДАЖ
48 часов - 100₽ 150₽
1 месяц - 230₽ 280₽

Посты в среднем набирают 200 просмотров сутки.
Реклама очень дешевая. Это помогает маленьким каналам набрать подписчиков, прорекламировать свой продукт.
за все время мне доверилось более 50 человек. Иногда покупали несколько раз.
Если интересует пишите @Akrus001

Акция заканчивается через 3 дня.
😁65🤯4
Мы команда BillumGames. Мы работаем над уникальным проектом с интересной механикой, позволяющей вариативно изменять сюжет в процессе уровня.

Сейчас мы делаем игру на мобилки, но этим ни в коем случае не ограничимся. В планах после релиза начать работать над ПК версией игры, которая будет с большим функционалом, большим погружением и незабываемым игровым опытом.

Подпишись на нас, что бы следить за ходом разработки, а так же принимать участие в интерактивных постах.
https://t.me/BillumGames
7211
⚡️ Unity для инди: ПК, Мобилки или Веб?

Однозначного ответа нет — но есть чёткие плюсы и минусы для каждого.

📱 Мобилки (Android/iOS)
Плюсы:
• Огромная аудитория — проще набрать первые установки
• Hyper-casual и mid-core — инди-хиты рождаются здесь
• Быстрая публикация в сторах

Минусы:
• Жёсткая конкуренция за видимость
• Сложная монетизация ( кроме рекламы )
• Вечная борьба с оптимизацией

💻 ПК (Steam, Itch.io)
Плюсы:
• Лояльная аудитория — ценят уникальные инди-игры
• Выше цена продажи ( $5-20 против бесплатных мобилок )
• Полная творческая свобода — любые механики и стили

Минусы:
• Нужен маркетинг — просто выложить на Steam мало
• Выше ожидания от качества геймплея и графики

🌐 Веб (WebGL, Itch.io)
Плюсы:
• Идеально для демо, джемов, прототипов
• Игроки запускают в один клик — максимум вовлечённости
• Быстрая обратная связь от комьюнити

Минусы:
• Практически нет монетизации
• Жёсткие ограничения по размеру билда и производительности

💡 Инди-вердикт:
• Хочешь быстрый старт и тестирование идеи → Веб
• Делаешь уникальный геймдизайн под ценителей → ПК
• Целишь в массовый гипер-кэжуал → Мобилки

📌 Главное — выбирай платформу под тип игры, а не под моду.

💬 А ты под какую платформу сейчас разрабатываешь?
🔔 Подпишись — скоро расскажу как правильно тестировать инди-идеи с минимальным бюджетом

👉Akrus Games | Unity
10
Всем привет! Разрабатываю в соло, рпг игру с открытым миром) За основу взята Китайская мифология про Культиваторов. Вот что хочу реализовать: систему прокачки на основе медитации и пилюль, полёт, открытый бесшовный мир, алхимия, создание артефактов, глубокий сюжет с разными концовками, красивые динамичные бои и многое другое) Для ускорения разработки использую разные инструменты.
Обо всем рассказываю в своем тг канале)
https://t.me/World_of_Immortals_Game
5
⚡️ Почему казуальные игры — хит? Просто о главном

Казуалки захватили мобилки и стим не просто так. Вот 2 ключевые причины, которые бьют точно в цель:

🎯 1. Ноль барьеров для входа
• Правила понятны за 10 секунд.
• Не нужны гайды или обучение.
• Игрок чувствует себя уверенно сразу.

📱 2. Идеально подстроены под ритм жизни
• Играется урывками: в метро, в очереди, на перерыве.
• Можно отложить в любой момент без потери прогресса.
• Не требует 100% погружения — идеально для расслабления.

💡 Вывод: они решают главную задачу — дают мгновенное удовольствие без усилий. Мозг получает дофамин за первые 30 секунд геймплея — и это привыкание.

🚀 Хочешь сделать свою?
• Фокус на одном простом механике
• Ясные цели с быстрым вознаграждением
• Минимум элементов управления

💬 А ты чаще в казуалки или хардкорные проекты играешь? Пиши в комментах!

🔔 Подпишись — скоро разберем как собрать прототип казуалки за 1 день
👉Akrus Games | Unity
8
⚡️ Unity: шпаргалка по Тайлмапу

Сохрани, чтобы не путаться в настройках Tilemap — всё самое важное в одном месте.

1️⃣ Базовые компоненты

• Grid — разбивает сцену на клетки.
•Tilemap — рисует сетку тайлов на основе Grid.
•Tile Palette (Окно → 2D → Tile Palette) — палитра для рисования тайлов прямо в сцене.

2️⃣ Создание тайлов

📌 Обычный тайл (Sprite):
•Перетащи спрайт в палитру → создаётся Tile Asset.
•Можно настраивать Collider Type (None, Sprite, Grid).

📌 Анимированный тайл (Animation):
•Создай несколько спрайтов → в палитре выбери "Animated Tile".
•Укажи FPS и Min/Max количество кадров.

📌 Тайл по правилам (Rule Tile):
•Установи пакет "2D Tilemap Extras" через Package Manager.
•Rule Tile автоматически меняет вид исходя из соседей.

3️⃣ Слои Tilemap

• Создавай несколько Tilemap под разные слои (земля, декор, здания).
•Используй Sorting Order для управления отрисовкой.
•Для изометрии: в Grid выбери Isometric режим.

4️⃣ Colliders на тайлах

• Добавь компонент Tilemap Collider 2D.
•Для оптимизации объедини коллайдеры: Composite Collider 2D + Tilemap Collider 2D → выстави Used By Composite.

5️⃣ Частые проблемы

• Тайлы не рисуются? Проверь, выбран ли слой Tilemap в палитре.
•Коллайдеры не работают? Убедись, что у тайлов в импорте Collider Type ≠ "None".
•Артефакты между тайлами? В импорте спрайтов включи Pixel Perfect и выстави Pixels Per Unit одинаковым.

💡 Pro-совет: используй Rule Tile с разными правилами для автоматизации сложных участков (углы, склоны, переходы).

Теперь твой уровень будет выглядеть аккуратно и собираться в разы быстрее.

💬 Какие фишки по тайлмапу знаешь ты?
🔔Подпишись — впереди шпаргалки по Scriptable Objects и оптимизации!

👉Akrus Games | Unity
8🔥3🎄22
Unity Animator: Any State — гибкие переходы

Что это?
Состояние, из которого можно перейти в другое состояние *в любой момент*, независимо от текущей анимации.

Зачем?
• Реагировать на критические события мгновенно (смерть, получение урона)
• Прерывать любую анимацию (например, атаку — если игрока отбросило)
• Упрощать логику переходов между несвязанными состояниями

Как настроить?
1. В окне Animator Controller правой кнопкой → Create StateAny State
2. Создай переход из Any State в целевое состояние (например, "Death")
3. Добавь условие перехода (Bool, Trigger и т.д.)
4. В коде активируй параметр при событии:
animator.SetTrigger("Die"); // Прервёт ЛЮБУЮ анимацию

Важные нюансы:
⚠️ Приоритет: Если к Any State привязано несколько переходов, выполнится первый *валидный*.
Order Matters: Измени порядок переходов в списке (верхний = выше приоритет).
Exit Time не работает: Переход мгновенный, тайминг игнорируется.

Пример:
// При получении смертельного урона:
public void TakeDamage(int damage) {
health -= damage;
if (health <= 0) {
animator.SetTrigger("Die"); // Сработает из ЛЮБОГО состояния
}
}

💡 Где использовать:
• Смерть/возрождение
• Стан/оглушение
• Резкая смена действия (телепорт, трансформация)

Используй Any State для критических событий — сделай игру отзывчивой!
#Unity #gamedev #Animator #Unity3D
🔥52😱1
🚀 5 приёмов C# и Unity, которые отличают джуна от мидла

📌 Сохрани — это шаг в сторону масштабируемого и профессионального кода

1️⃣ Action и Func — универсальные делегаты

public Action OnFinished;
public Func<bool> IsConditionMet;


📌 Упрощают объявления и колбэки. Подходят для:
• UI-событий
• игровых триггеров
• асинхронных проверок

Вместо создания собственного делегата — просто:

OnFinished?.Invoke();


2️⃣ LINQ + лямбды — фильтрация без циклов

var enemies = allUnits.Where(u => u.IsEnemy && u.HP > 0).ToList();


📌 Сокращает код и улучшает читаемость.
Идеально для выбора целей, фильтрации объектов и логики на старте.

⚠️ Внутри Update() не злоупотребляй — может создать GC.

3️⃣ Extension Methods — пиши C#, будто это твой движок

public static Vector3 WithY(this Vector3 v, float y) => new(v.x, y, v.z);


📌 transform.position = pos.WithY(0); — читается, как родной синтаксис.
Абстрагируй повторы, работай с Transform, GameObject, string, float и т.д.

4️⃣ ScriptableObject — переменные и сигналы между сценами

[CreateAssetMenu]
public class FloatVariable : ScriptableObject {
public float Value;
}


📌 Используется как:
• runtime переменная (настройки, состояния)
• Event-центр (через UnityEvent или кастомные Raise())
• конфигурация апгрейдов / миссий

Поддерживает инспекторную настройку и разделение логики от данных.

5️⃣ Editor-инструменты — экономь себе часы

[MenuItem("Tools/Clear PlayerPrefs")]
private static void ClearPrefs() => PlayerPrefs.DeleteAll();


📌 Один клик — и готово.
Создавай себе:
• дебаг-кнопки
• редакторы данных
• инструменты генерации

Хочешь больше — используй EditorWindow, PropertyDrawer, AssetPostprocessor.

💬 Хочешь идти в senior — думай об удобстве других, переиспользуемости и времени команды.

🔔 Подписывайся — впереди про архитектуру, DI, UI-системы и async паттерны

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥432
🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
9😱3211
RigidBody в Unity: основа физики

Что это?
Компонент, который делает объект подчинённым физике Unity: гравитация, столкновения, сила.

Зачем?
• Реалистичное движение предметов
• Реакция на удары и падения
• Управление через силы и импульсы
• Настройка массы, трения, упругости

Как использовать?
1. Добавь компонент Rigidbody (или Rigidbody2D для 2D)
2. Включи/отключи Use Gravity при необходимости
3. Управляй движением через код

Пример:

Rigidbody rb;

void Start()
{
rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.forward * 10f, ForceMode.Impulse);
}


Важно!
• ForceMode.Force — плавное ускорение
• ForceMode.Impulse — резкий толчок
• Масса влияет на физику
• Для статичных объектов Rigidbody не нужен

💡 Используй Rigidbody, если хочешь, чтобы объект вёл себя как в реальном мире.

Классный плейлист по физике https://youtube.com/playlist?list=PL8C4SmiVZY0wUFQrUXKQCS3BhRk2MIs8v&si=rkiHtIe4BN_GY0gX

#Unity #Physics #Rigidbody
7🔥411
⚡️ Blender 5.0 ВЫШЕЛ

— Киношные цвета: новый HDR-пайплайн, ACES 1.3/2.0, широкие гаммы.
— Небо как в кино: суперреалистичный Sky Texture — один слайдер, и у тебя рассвет, закат или шторма как в «Валли».
— Новый рендер Cycles: чище, реалистичнее, без артефактов и радужка на металлах.
— Видео-монтаж переродился: обновлённый Sequencer, модификаторы, композинг прямо внутри.
— Geometry Nodes на стероидах: новый Array, Scatter, Repeat Zones — делай окружения как в больших студиях.
— Grease Pencil с motion blur: 2D-анимация теперь кинематографичная.


👉 Творим — здесь.
6🤯1😱1
⚡️ Unity: шпаргалка по стилю игры

Сохраняй, чтобы игра не превратилась в визуальную кашу. Чёткие правила = сильный стиль.

🎨 ЦВЕТ
•Ограничь палитру 3-4 основными цветами.
•Используй акцентный цвет для важных объектов (персонаж, интерактивы).
•Сайты для палитр: Lospec, Coolors, Adobe Color.

💡 СВЕТ
•Настрой Ambient Color под настроение (тёплый/холодный).
•Используй Directional Light как основной источник.
•Добавляй Point/Spot Lights для акцентов и атмосферы.

🔄 ЧАСТОТА КАДРОВ (FPS)
•60 FPS — стандарт для экшенов.
•30 FPS — для стилизованных или казуальных проектов.
•Фиксированный Timestep для физики (0.02 для 50 FPS).

🎵 ЗВУК
•Громкость фоновой музыки — 50-70% от звуков эффектов.
•Используй низкочастотные звуки (Low-Pass Filter) для эффекта "из другого помещения".
•Один источник музыки на сцену.

📐 МАСШТАБ И ПРОПОРЦИИ
•Придерживайся единого масштаба для всех объектов в сцене.
•Персонаж — 2 юнита в высоту, дверь — 3 юнита.
•Используй стандартные размеры для UI (шрифт 24-32 px, отступы 10-20 px).

🌀 ДВИЖЕНИЕ И АНИМАЦИЯ
•Все движения через Mathf.Lerp/SmoothDamp для плавности.
•Анимации UI через DOTween/LeanTween.
•Длительность анимации: 0.1-0.3 сек.

📌 ПРАВИЛО 3x
•3 основных цвета
•3 типа звуков (музыка, эффекты, окружение)
•3 уровня детализации (ближний, средний, дальний план)

💾 Сохрани шпаргалку — пересматривай перед началом нового проекта!

💬 А какие правила стиля используешь ты?
🔔Подпишись — будет ещё про композицию, шейдеры и работу с ассетами.

👉Akrus Games | Unity
6🔥631
⚡️ Топ-5 жанров для инди-игр в Unity

Выбираешь, в каком жанре делать свою следующую игру? Держи актуальную подборку — эти направления стабильно находят свою аудиторию.

1️⃣ Roguelike / Roguelite

🎯 Почему популярно: Высокая реиграбельность, процедурная генерация.
💡 Ключевые механики: Случайные предметы, перманентная смерть, прогресс между забегами.
📌 Примеры: Hades, The Binding of Isaac, Soul knight

2️⃣ Казуальные головоломки (Puzzle/Casual)

🎯 Почему популярно: Низкий порог входа, широкая аудитория.
💡 Ключевые механики: Простое управление, постепенное усложнение, система уровней.
📌 Примеры: Merge games, match-3, физические пазлы.

3️⃣ Хоррор от первого лица

🎯 Почему популярно: Сильное погружение, возможность создать атмосферу даже с простой графикой.
💡 Ключевые механики: Исследование, скрытые угрозы, ограниченные ресурсы.
📌 Примеры: Phasmophobia, Pulse of fear.

4️⃣ Симуляторы и менеджеры

🎯 Почему популярно: Глубокие системы, нишевая но преданная аудитория.
💡 Ключевые механики: Прокачка, экономика, стратегическое планирование.
📌 Примеры: Stardew Valley (ферма + RPG), Two Point Hospital.

5️⃣ Платформеры 2D/2.5D

🎯 Почему популярно: Классика жанра, отлично подходит для нарратива.
💡 Ключевые механики: Точный контроль, уникальные способности, исследование мира.
📌 Примеры: Hollow Knight, Celeste, Ori and the Blind Forest.

💡 Совет: Самый стабильный путь — взять проверенный жанр и добавить свою уникальную механику или стиль.

💬 А над каким жанром работаешь ты? Делись в комментах!
🔔 Подпишись — скоро разберем, как протестировать идею игры до начала разработки.

👉Akrus Games | Unity
4🔥2🎄1
⚡️ Unity: Интерфейсы в C# — сила контрактов

Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в c# не принято делать реализацию функций, свойств, только объявление.

🔥 Зачем это в играх?

Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из if (collider.GetComponent<Enemy>() != null)... С интерфейсами — чисто и гибко.

Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов.

Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса

🎯 Реальный пример: взаимодействие с объектами

public class Bullet : MonoBehaviour
{
private const int _damage = 10;

private void CheckHit()
{
//проверка столкновений с IHealth
hitObj.TakeDamage(_damage);
}
}

public class Player : MonoBehaviour, IHealth
{
// Реализация свойства
public int Health { get; private set; }
// Прочие поля
// Прочии свойства
// Прочии функции

// Реализация функции
public void TakeDamage(int damage) =>
Health -= damage;
}

public interface IHealth
{
// Обьявление свойства Health
int Health { get; }
// Обьявление функции TakeDamage
void TakeDamage(int damage);
}


💡 Два главных плюса:

🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent

🚀 Где ещё использовать?

IInteractable для взаимодействия с NPC, дверями, предметами
ICollectable для сбора монет, аптечек, боеприпасов
ISaveable для системы сохранений

💬 Используешь интерфейсы в своих проектах? Делися в комментах!

🔔 Подпишись — ещё больше C# фишек для геймдева

Пост помог написать @Nokskiy
👉Akrus Games | Unity
🔥82🎄111
Как вам идея поиграть в hollow knight по мультиплееру?
Anonymous Poll
44%
Да, давай
31%
не хочу
26%
Что это?
5🔥3😁11
⚡️ Unity: Инкапсуляция — твой код под контролем

Инкапсуляция — это не скучная теория, а твой главный инструмент для чистого и защищённого кода. Суть: прячем данные, открываем только нужные методы.

🎯 Зачем в играх?
• Предотвращаем случайные баги (другой скрипт не сломает твои переменные)
• Делаем код понятнее — чёткие границы ответственности
• Упрощаем изменения — меняем внутреннюю логику без поломки других систем

🛡 Практика в Unity:


1️⃣ private + [SerializeField]
private int _health = 100;

Доступ только внутри этого класса. Для настройки в инспекторе используем:
[SerializeField] private int _health = 100;


2️⃣ public свойства с контролем
public int Health { get; private set; }

Читать можно откуда угодно, менять — только внутри класса.

3️⃣ protected — для семейного доступа

protected int _mana;

Доступ в этом классе И во всех наследниках. Идеально для базовых классов!

💥 Живой пример с protected:
public class Character : MonoBehaviour
{
[SerializeField] protected int maxHealth = 100;
public int Health { get; protected set; }

protected virtual void Start() => Health = maxHealth;

public virtual void TakeDamage(int damage)
{
Health = Mathf.Max(0, Health - damage);
}
}

public class Player : Character
{
protected override void Start()
{
base.Start();
// Можем использовать Health и maxHealth - они protected
Health += 50; // Бонус здоровья для игрока
}
}


Вывод:
• private — только для своего класса
• protected — для семьи (родитель + наследники)
• public — для всех

💬 Как ты организуешь доступ к данным в своих скриптах?
🔔 Подпишись — впереди ещё больше про архитектуру игр без факапов

👉Akrus Games | Unity
5🔥2😱11