⚡️ Unity для инди: ПК, Мобилки или Веб?
Однозначного ответа нет — но есть чёткие плюсы и минусы для каждого.
📱 Мобилки (Android/iOS)
✅ Плюсы:
• Огромная аудитория — проще набрать первые установки
• Hyper-casual и mid-core — инди-хиты рождаются здесь
• Быстрая публикация в сторах
❌ Минусы:
• Жёсткая конкуренция за видимость
• Сложная монетизация ( кроме рекламы )
• Вечная борьба с оптимизацией
💻 ПК (Steam, Itch.io)
✅ Плюсы:
• Лояльная аудитория — ценят уникальные инди-игры
• Выше цена продажи ( $5-20 против бесплатных мобилок )
• Полная творческая свобода — любые механики и стили
❌ Минусы:
• Нужен маркетинг — просто выложить на Steam мало
• Выше ожидания от качества геймплея и графики
🌐 Веб (WebGL, Itch.io)
✅ Плюсы:
• Идеально для демо, джемов, прототипов
• Игроки запускают в один клик — максимум вовлечённости
• Быстрая обратная связь от комьюнити
❌ Минусы:
• Практически нет монетизации
• Жёсткие ограничения по размеру билда и производительности
💡 Инди-вердикт:
• Хочешь быстрый старт и тестирование идеи → Веб
• Делаешь уникальный геймдизайн под ценителей → ПК
• Целишь в массовый гипер-кэжуал → Мобилки
📌 Главное — выбирай платформу под тип игры, а не под моду.
💬 А ты под какую платформу сейчас разрабатываешь?
🔔 Подпишись — скоро расскажу как правильно тестировать инди-идеи с минимальным бюджетом
👉Akrus Games | 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
Обо всем рассказываю в своем тг канале)
https://t.me/World_of_Immortals_Game
❤5
⚡️ Почему казуальные игры — хит? Просто о главном
Казуалки захватили мобилки и стим не просто так. Вот 2 ключевые причины, которые бьют точно в цель:
🎯 1. Ноль барьеров для входа
• Правила понятны за 10 секунд.
• Не нужны гайды или обучение.
• Игрок чувствует себя уверенно сразу.
📱 2. Идеально подстроены под ритм жизни
• Играется урывками: в метро, в очереди, на перерыве.
• Можно отложить в любой момент без потери прогресса.
• Не требует 100% погружения — идеально для расслабления.
💡 Вывод: они решают главную задачу — дают мгновенное удовольствие без усилий. Мозг получает дофамин за первые 30 секунд геймплея — и это привыкание.
🚀 Хочешь сделать свою?
• Фокус на одном простом механике
• Ясные цели с быстрым вознаграждением
• Минимум элементов управления
💬 А ты чаще в казуалки или хардкорные проекты играешь? Пиши в комментах!
🔔 Подпишись — скоро разберем как собрать прототип казуалки за 1 день
👉Akrus Games | Unity
Казуалки захватили мобилки и стим не просто так. Вот 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
Сохрани, чтобы не путаться в настройках 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🎄2 2
✅ Unity Animator: Any State — гибкие переходы
Что это?
Состояние, из которого можно перейти в другое состояние *в любой момент*, независимо от текущей анимации.
Зачем?
• Реагировать на критические события мгновенно (смерть, получение урона)
• Прерывать любую анимацию (например, атаку — если игрока отбросило)
• Упрощать логику переходов между несвязанными состояниями
Как настроить?
1. В окне Animator Controller правой кнопкой → Create State → Any State
2. Создай переход из Any State в целевое состояние (например, "Death")
3. Добавь условие перехода (Bool, Trigger и т.д.)
4. В коде активируй параметр при событии:
Важные нюансы:
• ⚠️ Приоритет: Если к
• Order Matters: Измени порядок переходов в списке (верхний = выше приоритет).
• Exit Time не работает: Переход мгновенный, тайминг игнорируется.
Пример:
💡 Где использовать:
• Смерть/возрождение
• Стан/оглушение
• Резкая смена действия (телепорт, трансформация)
Используй Any State для критических событий — сделай игру отзывчивой!
#Unity #gamedev #Animator #Unity3D
Что это?
Состояние, из которого можно перейти в другое состояние *в любой момент*, независимо от текущей анимации.
Зачем?
• Реагировать на критические события мгновенно (смерть, получение урона)
• Прерывать любую анимацию (например, атаку — если игрока отбросило)
• Упрощать логику переходов между несвязанными состояниями
Как настроить?
1. В окне Animator Controller правой кнопкой → Create State → Any 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
🔥5❤2😱1
🚀 5 приёмов C# и Unity, которые отличают джуна от мидла
📌 Сохрани — это шаг в сторону масштабируемого и профессионального кода
1️⃣ Action и Func — универсальные делегаты
📌 Упрощают объявления и колбэки. Подходят для:
• UI-событий
• игровых триггеров
• асинхронных проверок
Вместо создания собственного делегата — просто:
2️⃣ LINQ + лямбды — фильтрация без циклов
📌 Сокращает код и улучшает читаемость.
Идеально для выбора целей, фильтрации объектов и логики на старте.
⚠️ Внутри Update() не злоупотребляй — может создать GC.
3️⃣ Extension Methods — пиши C#, будто это твой движок
📌 transform.position = pos.WithY(0); — читается, как родной синтаксис.
Абстрагируй повторы, работай с Transform, GameObject, string, float и т.д.
4️⃣ ScriptableObject — переменные и сигналы между сценами
📌 Используется как:
• runtime переменная (настройки, состояния)
• Event-центр (через UnityEvent или кастомные Raise())
• конфигурация апгрейдов / миссий
Поддерживает инспекторную настройку и разделение логики от данных.
5️⃣ Editor-инструменты — экономь себе часы
📌 Один клик — и готово.
Создавай себе:
• дебаг-кнопки
• редакторы данных
• инструменты генерации
Хочешь больше — используй EditorWindow, PropertyDrawer, AssetPostprocessor.
💬 Хочешь идти в senior — думай об удобстве других, переиспользуемости и времени команды.
🔔 Подписывайся — впереди про архитектуру, DI, UI-системы и async паттерны
👉 Akrus Games | Unity
public Action OnFinished;
public Func<bool> IsConditionMet;
📌 Упрощают объявления и колбэки. Подходят для:
• UI-событий
• игровых триггеров
• асинхронных проверок
Вместо создания собственного делегата — просто:
OnFinished?.Invoke();
var enemies = allUnits.Where(u => u.IsEnemy && u.HP > 0).ToList();
📌 Сокращает код и улучшает читаемость.
Идеально для выбора целей, фильтрации объектов и логики на старте.
⚠️ Внутри Update() не злоупотребляй — может создать GC.
public static Vector3 WithY(this Vector3 v, float y) => new(v.x, y, v.z);
📌 transform.position = pos.WithY(0); — читается, как родной синтаксис.
Абстрагируй повторы, работай с Transform, GameObject, string, float и т.д.
[CreateAssetMenu]
public class FloatVariable : ScriptableObject {
public float Value;
}
📌 Используется как:
• runtime переменная (настройки, состояния)
• Event-центр (через UnityEvent или кастомные Raise())
• конфигурация апгрейдов / миссий
Поддерживает инспекторную настройку и разделение логики от данных.
[MenuItem("Tools/Clear PlayerPrefs")]
private static void ClearPrefs() => PlayerPrefs.DeleteAll();📌 Один клик — и готово.
Создавай себе:
• дебаг-кнопки
• редакторы данных
• инструменты генерации
Хочешь больше — используй EditorWindow, PropertyDrawer, AssetPostprocessor.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✅ RigidBody в Unity: основа физики
Что это?
Компонент, который делает объект подчинённым физике Unity: гравитация, столкновения, сила.
Зачем?
• Реалистичное движение предметов
• Реакция на удары и падения
• Управление через силы и импульсы
• Настройка массы, трения, упругости
Как использовать?
1. Добавь компонент Rigidbody (или Rigidbody2D для 2D)
2. Включи/отключи Use Gravity при необходимости
3. Управляй движением через код
Пример:
Важно!
• ForceMode.Force — плавное ускорение
• ForceMode.Impulse — резкий толчок
• Масса влияет на физику
• Для статичных объектов Rigidbody не нужен
💡 Используй Rigidbody, если хочешь, чтобы объект вёл себя как в реальном мире.
Классный плейлист по физике https://youtube.com/playlist?list=PL8C4SmiVZY0wUFQrUXKQCS3BhRk2MIs8v&si=rkiHtIe4BN_GY0gX
#Unity #Physics #Rigidbody
Что это?
Компонент, который делает объект подчинённым физике 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🔥4 1 1
⚡️ 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
Сохраняй, чтобы игра не превратилась в визуальную кашу. Чёткие правила = сильный стиль.
🎨 ЦВЕТ
•Ограничь палитру 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🔥6 3 1
⚡️ Топ-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
Выбираешь, в каком жанре делать свою следующую игру? Держи актуальную подборку — эти направления стабильно находят свою аудиторию.
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# не принято делать реализацию функций, свойств, только объявление.
🔥 Зачем это в играх?
Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из
Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов.
Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса
🎯 Реальный пример: взаимодействие с объектами
💡 Два главных плюса:
🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent
🚀 Где ещё использовать?
•
•
•
💬 Используешь интерфейсы в своих проектах? Делися в комментах!
🔔 Подпишись — ещё больше C# фишек для геймдева
Пост помог написать @Nokskiy
👉Akrus Games | Unity
Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в 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
🔥8❤2🎄1 1 1
Как вам идея поиграть в hollow knight по мультиплееру?
Anonymous Poll
44%
Да, давай
31%
не хочу
26%
Что это?
❤5🔥3😁1 1
⚡️ Unity: Инкапсуляция — твой код под контролем
Инкапсуляция — это не скучная теория, а твой главный инструмент для чистого и защищённого кода. Суть: прячем данные, открываем только нужные методы.
🎯 Зачем в играх?
• Предотвращаем случайные баги (другой скрипт не сломает твои переменные)
• Делаем код понятнее — чёткие границы ответственности
• Упрощаем изменения — меняем внутреннюю логику без поломки других систем
🛡 Практика в Unity:
1️⃣ private + [SerializeField]
Доступ только внутри этого класса. Для настройки в инспекторе используем:
2️⃣ public свойства с контролем
Читать можно откуда угодно, менять — только внутри класса.
3️⃣ protected — для семейного доступа
Доступ в этом классе И во всех наследниках. Идеально для базовых классов!
💥 Живой пример с protected:
✅ Вывод:
• private — только для своего класса
• protected — для семьи (родитель + наследники)
• public — для всех
💬 Как ты организуешь доступ к данным в своих скриптах?
🔔 Подпишись — впереди ещё больше про архитектуру игр без факапов
👉Akrus Games | 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😱1 1
По итогам голосования поиграем с вами в пвп в следующие выходные.
Чтобы не засорять канал, вся инфа будет здесь https://t.me/AkrusDnevnik
Чтобы не засорять канал, вся инфа будет здесь https://t.me/AkrusDnevnik
❤2🔥2😁1
⚡️ Unity: шпаргалка по C# LINQ
Сохраняй — эти методы ускорят твой код в разы. LINQ — это мощь для фильтрации, сортировки и выборки данных.
🔸 Основные методы:
Where — фильтрация.
Select — преобразование.
First / FirstOrDefault — первый элемент.
OrderBy / OrderByDescending — сортировка.
Any / All — проверка условий.
Count — количество.
💥 Важно в Unity:
• ToArray() / ToList() — если результат нужен многократно, материализуй запрос. Иначе он будет вычисляться заново.
• Избегай в Update — LINQ создает аллокации. В циклах это приводит к сборкам мусора (GC).
• Single() / SingleOrDefault() — строгий поиск одного элемента. Выбросит исключение, если элементов нет или их несколько.
🚀 Пример в деле:
📌 Сохрани шпаргалку — LINQ сэкономит часы рутины.
💬 Как часто используешь LINQ в проектах?
🔔Подпишись — еще больше шпаргалок и фишек по C# и Unity уже готовы!
👉Akrus Games | Unity
Сохраняй — эти методы ускорят твой код в разы. LINQ — это мощь для фильтрации, сортировки и выборки данных.
🔸 Основные методы:
Where — фильтрация.
var enemies = allUnits.Where(unit => unit.IsEnemy);
Select — преобразование.
var names = players.Select(player => player.Name);
First / FirstOrDefault — первый элемент.
var target = enemies.First(e => e.Health < 10); // FirstOrDefault вернёт null, если ничего не найдено.
OrderBy / OrderByDescending — сортировка.
var sortedByScore = players.OrderByDescending(p => p.Score);
Any / All — проверка условий.
bool isAnyAlive = enemies.Any(e => e.IsAlive);
bool allReady = players.All(p => p.IsReady);
Count — количество.
int aliveCount = enemies.Count(e => e.IsAlive);
💥 Важно в Unity:
• ToArray() / ToList() — если результат нужен многократно, материализуй запрос. Иначе он будет вычисляться заново.
var list = enemies.Where(e => e.IsVisible).ToList();
• Избегай в Update — LINQ создает аллокации. В циклах это приводит к сборкам мусора (GC).
• Single() / SingleOrDefault() — строгий поиск одного элемента. Выбросит исключение, если элементов нет или их несколько.
🚀 Пример в деле:
// Найти ближайшего живого врага
var nearestEnemy = enemies
.Where(e => e.IsAlive)
.OrderBy(e => Vector3.Distance(transform.position, e.Position))
.FirstOrDefault();
📌 Сохрани шпаргалку — LINQ сэкономит часы рутины.
💬 Как часто используешь LINQ в проектах?
🔔Подпишись — еще больше шпаргалок и фишек по C# и Unity уже готовы!
👉Akrus Games | Unity
🔥8❤6🎄1 1
⚡️ Pattern Matching в C# — твой чит-код для чистого кода
Устал от горы
🎯 2 способа использовать Pattern Matching уже сегодня:
1️⃣ Type Patterns — замена громоздким проверкам типа
2️⃣ Property Patterns — проверяй свойства объектов
💡 Запомни:
-
-
-
🚀 Результат: Меньше кода, меньше ошибок, лучше читаемость. Особенно в игровой логике!
🔔 Подпишись — каждый день полезные фишки по Unity и C#
Устал от горы
if-else и switch? Pattern Matching — это как «умный» switch на стероидах. Проверяй тип, структуру и значения в одной строке.🎯 2 способа использовать Pattern Matching уже сегодня:
1️⃣ Type Patterns — замена громоздким проверкам типа
// Было:
if (enemy is Boss)
{
((Boss)enemy).SpecialAttack();
}
// Стало:
if (enemy is Boss boss)
{
boss.SpecialAttack(); // Без кастов!
}
// Идеально для обработки разных типов врагов:
void ProcessEnemy(Enemy enemy)
{
switch (enemy)
{
case Boss b:
b.StartBossFight();
break;
case FlyingEnemy f when f.IsFlying:
f.DiveAttack();
break;
default:
enemy.Patrol();
break;
}
}
2️⃣ Property Patterns — проверяй свойства объектов
// Мощная фильтрация прямо в switch:
string GetAttackType(Weapon weapon) => weapon switch
{
{ Damage: > 100, Type: "Fire" } => "Критическая огненная атака!",
{ Ammo: 0 } => "Оружие пусто!",
_ => "Обычный удар"
};
// Отлично для системы диалогов:
var reaction = npc switch
{
{ Mood: "Angry", Level: > 5 } => "Гневная реплика",
{ QuestCompleted: true } => "Благодарность",
_ => "Стандартный диалог"
};
💡 Запомни:
-
is с деконструкцией — убирает касты-
switch с паттернами — заменяет гигантские if-else-
when добавляет условия🚀 Результат: Меньше кода, меньше ошибок, лучше читаемость. Особенно в игровой логике!
#️⃣ P.S. Используешь уже? Делись кейсами в комментах!🔔 Подпишись — каждый день полезные фишки по Unity и C#
🔥7❤4🎄1 1
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ C# Records в Unity: данные без головной боли
Records — это иммутабельные данные «в одну строчку». Идеально для конфигов, событий, DTO.
Базовый пример:
✅ Сам генерирует конструктор, свойства, Equals, GetHashCode, ToString()
✅ Неизменяемый — защита от случайных багов
Records с методами:
💡 Ключевое слово
Где использовать в Unity:
• Настройки оружия, персонажей, предметов
• События (например,
• Данные для сохранений
⚠️ Важно: Records — ссылочные типы, но с value-семантикой. Отлично работают в Unity 2020.3+
Плюсы:
• Меньше кода
• Безопасность данных
• Читаемость
Используешь Records? Пиши в комментах! 🔥
👉Akrus Games | Unity
Records — это иммутабельные данные «в одну строчку». Идеально для конфигов, событий, DTO.
Базовый пример:
public record WeaponData(int Damage, float FireRate, string Name);
✅ Сам генерирует конструктор, свойства, Equals, GetHashCode, ToString()
✅ Неизменяемый — защита от случайных багов
Records с методами:
public record EnemyData(int Health, int Speed)
{
public bool IsAlive => Health > 0;
public EnemyData WithDoubleSpeed() => this with { Speed = Speed * 2 };
}
💡 Ключевое слово
with создает копию с изменениями — супер для модификаций!Где использовать в Unity:
• Настройки оружия, персонажей, предметов
• События (например,
record DamageEvent(int Amount, GameObject Target))• Данные для сохранений
⚠️ Важно: Records — ссылочные типы, но с value-семантикой. Отлично работают в Unity 2020.3+
Плюсы:
• Меньше кода
• Безопасность данных
• Читаемость
Используешь Records? Пиши в комментах! 🔥
👉Akrus Games | Unity
🎄4❤3 2
⚡️ Unity: C# Data-Oriented Design для максимальной производительности
Устал от медленного foreach по тысячам объектов? Struct of Arrays — это подход, который ускоряет обработку данных, как в настоящем ECS.
❌ Проблема стандартного подхода:
• Кэш-промахи процессора
• Разбросанные в памяти объекты
• Виртуальные вызовы
✅ Решение: Struct of Arrays (основа ECS)
1️⃣ Правильная структура данных:
Данные хранятся в плотных массивах — процессор обрабатывает их последовательно, без промахов кэша.
2️⃣ Оптимизированная итерация:
• Нет виртуальных вызовов
• Данные последовательны в кэше
• Автоматическая векторизация
• Параллелизация
💡 Реальный результат:
Обработка 10 000 юнитов ускоряется в 2-5 раз по сравнению с GameObject/GetComponent в цикле. Даже против готового списка MonoBehaviour выигрыш за счет кэш-дружественности.
🚀 Следующий уровень:
Unity.Entities (DOTS) — автоматическое управление чанками, параллельная обработка и Burst компиляция.
💬 Используешь плотные массивы для данных? Делитесь опытом в комментариях!
🔔 Подпишись — больше фишек для инди-оптимизации впереди.
👉Akrus Games | Unity
#Unity3D #UnityOptimization #ECS #DOTS #CSharp
Устал от медленного foreach по тысячам объектов? Struct of Arrays — это подход, который ускоряет обработку данных, как в настоящем ECS.
❌ Проблема стандартного подхода:
foreach (var enemy in enemies) {
enemy.Update(); // Кэш-промахи, разбросанные объекты в памяти
}• Кэш-промахи процессора
• Разбросанные в памяти объекты
• Виртуальные вызовы
✅ Решение: Struct of Arrays (основа ECS)
1️⃣ Правильная структура данных:
public struct EnemyChunk {
public Vector3[] positions;
public float[] healths;
public int count;
}Данные хранятся в плотных массивах — процессор обрабатывает их последовательно, без промахов кэша.
2️⃣ Оптимизированная итерация:
for (int i = 0; i < chunk.count; i++) {
chunk.positions[i] += Vector3.forward * speed;
chunk.healths[i] -= Time.deltaTime;
}• Нет виртуальных вызовов
• Данные последовательны в кэше
• Автоматическая векторизация
• Параллелизация
💡 Реальный результат:
Обработка 10 000 юнитов ускоряется в 2-5 раз по сравнению с GameObject/GetComponent в цикле. Даже против готового списка MonoBehaviour выигрыш за счет кэш-дружественности.
🚀 Следующий уровень:
Unity.Entities (DOTS) — автоматическое управление чанками, параллельная обработка и Burst компиляция.
💬 Используешь плотные массивы для данных? Делитесь опытом в комментариях!
🔔 Подпишись — больше фишек для инди-оптимизации впереди.
👉Akrus Games | Unity
#Unity3D #UnityOptimization #ECS #DOTS #CSharp
❤7 1