🎮 TinyGames
2.09K subscribers
90 photos
10 videos
15 files
58 links
🎮 Учим Unity с нуля: просто о сложном. Пишем первый код и создаем миры вместе.

💬 Чат - https://t.me/tinygameschat

🧑‍💻 Вопросы и предложения @ddpotapov
Download Telegram
GetComponent vs [SerializeField] — битва подходов 🔥

Раньше я всегда считал: если Rigidbody2D висит на том же объекте, что и скрипт, надо брать его через GetComponent в Awake. Зачем захламлять инспектор, если компонент и так рядом?

Но копнув глубже в архитектуру и оптимизацию, я понял, почему в серьезных проектах (и в AAA) часто предпочитают ручной проброс ссылок через [SerializeField].

Давайте разберем неочевидные нюансы👇


1️⃣ Проблема архитектуры (Parent/Child)
В простых играх у нас "все в одном": скрипт, спрайт и физика на одном объекте. Но в сложных проектах структуру разделяют:
--> Root: Логика, AI, Здоровье.
--> Visual: Спрайты, Аниматор (чтобы модельку можно было крутить/скейлить отдельно от коллайдера).
--> Physics: Rigidbody, Коллайдеры.

Если вы используете GetComponent, ваш скрипт на Root просто не найдет физику, так как она на дочернем объекте.
С [SerializeField] вы просто перетаскиваете ссылку на дочерний объект Physics в поле скрипта. Код менять не нужно, архитектура остается чистой.

2️⃣ Микро-оптимизация (Пример с пулей)
GetComponent — это поиск. Unity пробегает по списку компонентов, сравнивает типы и возвращает результат. Представьте, что у вас пулемет. Вы спавните 1000 пуль в минуту.

Вариант А: Каждая пуля при рождении тратит процессорное время на поиск своего Rigidbody. В момент интенсивной стрельбы это может вызвать микро-фриз (GC Alloc и нагрузка на CPU).

Вариант Б (SerializeField): Ссылка на Rigidbody уже "запечена" в префабе пули. При спавне Unity просто копирует готовые данные. Ноль затрат на поиск.

💡 Решение Best Practice

1️⃣ Магия OnValidate (Лучшее из двух миров)
Если вам лень перетаскивать ссылки руками, но вы хотите производительность SerializeField, используйте этот лайфхак:
[SerializeField] private Rigidbody2D _rb;

// Вызывается ТОЛЬКО в редакторе Unity, когда вы что-то меняете
private void OnValidate() {
// Если ссылка пустая — найди её сама!
if (_rb == null) _rb = GetComponent<Rigidbody2D>();
}

Как это работает: Вы вешаете скрипт на объект — Unity сама мгновенно находит компонент и прописывает его в поле _rb прямо в инспекторе. В игре (Runtime) этот метод даже не запускается, у вас сразу есть готовая ссылка.

Для любителей GetComponent тоже есть лайфхак - используйте [RequireComponent]:
[RequireComponent(typeof(Rigidbody2D))]
public class Player : MonoBehaviour {
private Rigidbody2D _rb;

void Awake() => _rb = GetComponent<Rigidbody2D>();
}

Этот атрибут заставит Unity автоматически добавить нужный компонент на объект и не даст вам его удалить случайно.

🤔 Вывод: Для прототипов GetComponent — ок. Для продакшена, сложных префабов и высоконагруженных объектов — лучше [SerializeField].

А какой подход используете вы?
1. Только [SerializeField], люблю полный контроль! 👌
2. Всегда GetComponent, лень двигать мышкой 🥱
3. Использую GetComponent, но с [RequireComponent] 🏆
4. OnValidate — наше всё 👾

И накидайте 🔥, чтобы я понял, интересны вам такие посты или нет.
P.S. Спасибо @koiiiapik за идею поста.
1🔥839👌8🤯3👍1🥱1
Как у вас конец года? Держитесь? 😬
🔥27👌11😢4👻32👍1💩1🍌1💋1
Друзья, поздравляю вас с новым годом!

Новый год это всегда начало чего-то нового, новых надежд и свершений!

Желаю, чтобы в следующем году вы достигли того, чего бы вам самим хочется!

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

С новым годом! 🎄🦌🚗🎁
Please open Telegram to view this post
VIEW IN TELEGRAM
375🎉17🎄53
This media is not supported in your browser
VIEW IN TELEGRAM
Как праздники?
Все салаты доели?
Пилите игру своей мечты или полный релакс?
120😁1
Помните, я планировал сделать инструмент, который берет размытую картинку из нейросети и превращает её в настоящий, четкий Pixel Art?

Я сел кодить эту штуку на выходных и понял: а зачем вам бегать между двумя окнами? В одном генерить, в другом чистить... Неудобно.

🧠 Короче, концепция поменялась. Я объединил всё в одного бота.
👉 @indiemate_bot

Теперь это полноценный конвейер для создания ассетов.
Бот делает всё сам:
1. Генерирует изображение по вашему описанию.
2. Сам удаляет фон (получаете PNG с прозрачностью).
3. Прогоняет картинку через постобработку. На выходе — Pixel Perfect, готовый к импорту в Unity в разных размерах.

🔥 Бонус-фича: Поскольку я контролирую и генерацию тоже, я добавил Inpainting (Режим правки). Сгенерировал персонажа, но забыл меч? Пишешь «дай ему меч в руки», и бот дорисовывает. Нужно ответить на изображение и написать, что добавить (смотри GIF к посту).

Проект находится в ранней бете, поэтому возможны ошибки и падения. Если такое произойдет - пишите мне.

💸 Про условия: Сервера с GPU дорогие, поэтому полная халява невозможна. Сделал символические тарифы (дешевле кофе), чтобы проект не ушел в минус. Оплата пока переводом на Тинькофф (автоматику прикручу позже, сейчас лень). Всё на доверии.

Скидывайте в комментарии, что у вас получилось!
🔥17❤‍🔥31👍1
👍24🔥3😁1
Обновил бота: теперь вы управляете детализацией

Не спал, докручивал алгоритмы.

Что нового:

1️⃣ Режимы детализации (Low / Mid / High)
Раньше бот сам решал, насколько сложным будет рисунок.
Теперь решаете вы:
Low: Минимализм, чистый 8-bit, крупные пиксели. Идеально для ретро-игр или массовки.
Mid: Золотая середина (уровень SNES/Sega).
High: Высокая детализация, много мелких элементов. Для главных героев и портретов.
Изменить можно в меню бота. По умолчанию High.

2️⃣ Качество генерации 2.0
Перебрал промпты под капотом. Теперь спрайты выходят чище, сетка ровнее, а мусора меньше — во всех режимах.

🔜 Что дальше?
Начинаю работать над базовыми анимациями (Idle, Run, Attack). Задача сложная, но план уже есть.

👇 Заходите тестить новые режимы:
@indiemate_bot
🔥456👍3🥰2❤‍🔥1
Всем привет!
Давно не писал.
В комментариях спрашивают, когда новые видео.
После нового года меня сразу захлестнула работа. Наверное, у вас также. Очень много работы.
Поэтому пока не было времени заниматься созданием видео.

Я продолжаю делать бота, но совсем по чуть-чуть, когда появляется свободная минута. Планирую выкатить первую версию анимаций и улучшить генерацию спрайтов.
Такие дела.
Скоро увидимся 🙋‍♂️
🔥36👍2👨‍💻21😢1
Channel photo removed
Channel photo updated
Еле нашел старую аватарку)
Новый год кончился!

Пора претворять в жизнь все обещания, которые давали себе под бой курантов 😁
2👍34😁5💯52💩1💅1
У меня сегодня день рождения, кстати 😊🎂
3🎉24336🍾27🏆5💩2🍓2❤‍🔥1
Всем привет!
Давно не писал.
Все думал, надо написать что-нибудь... А потом думаю, а что я писать буду, что вообще не занимаюсь каналом?
Когда новые видео будут не знаю. Тяжело это видео такие снимать. На работе завал, наверное, как и у многих из вас. Вот так и получается - в будни работа, вечером тренировка. Если минута найдется, то сидишь свой проект пилишь. В выходные все распланирован, да они и проходят очень быстро.

Но, я надеюсь, что у вас все хорошо, и вы в меру своих сил делаете игру своей мечты или может пока отдыхаете от разработки.
В любом случае, желаю вам удачи. Пока могу только так помочь вам, добрым словом 😉
👍7545🕊5👏2❤‍🔥1🔥1🤝1
#промо
⚡️ГЕЙМДЕВ В 2026.  АРХИТЕКТУРА ИГР, ПОИСК РАБОТЫ, СВОИ ПРОЕКТЫ ⚡️

Всем привет! Давно не виделись!) Я - Илья Яковлев, разработчик игр со стажем 7+ лет, веду проекты в студии и обучаю Unity-разработчиков) Возможно многие из вас видели мои ролики на ютубе:) И сегодня я хочу пригласить вас на открытый вебинар!

🔜 Когда? 
17, 18 и 19 марта, в 19:00 по МСК на прямой трансляции (вебинар пройдет в 3 дня - полезной инфы будет очень много)

🖥 Как попасть? 
Для регистрации на вебинар нужно просто перейти к боту ТЫКНУВ СЮДА и нажать кнопочку "зарегистрироваться". Ссылка на трансляцию автоматически придет в день вебинара

👀 Что будет?
Впереди нас ждет 3 дня инструкций, разборов, практических примеров, следуя которым ты поймешь:

👉 Почему разработка игр становится сложнее и как не отставать от этого поезда
👉 Что не дает выйти на уровень выше, чем создание гиперказуальных/одноразовых игр
👉 Основу архитектуры игр. То, что должен знать каждый разработчик
👉 Из каких главных модулей состоит любая игра
👉 Как происходит поиск работы. Важность резюме и проектов
👉 Почему кажется, что ты много всего знаешь, но твои проекты/решения тестовых заданий не проходят собесы
👉 Как разрабатывать игры самому и развиваться в этом направлении. Площадки и гиблые пути
👉 Основные ментальные ошибки, которые стопорят вас на пути к становлению разработчику

Это далеко не все, чего мы коснемся.
Я хочу осветить множество важных моментов геймдева на сегодняшний день, необходимых для становления разработчиком игр, разработки своих проектов и поиска работы в этой области. В том числе я поделюсь кейсами из наших проектов, чтобы на РЕАЛЬНЫХ примерах вы могли понимать в какую сторону стоит двигаться и каких ошибок можно избежать (получится своего рода инструкция по миру разработки игр)

😇 Ну и конечно же, по традиции будут подарки:
👉 Ссылки на все озвученные в ходе вебинаров обучающие материалы
👉 Ссылка на дорожную карту нашего вебинара
👉 Розыгрыш нескольких личных консультаций 

Буду всех ждать🥰

#текстприслан
👍157
Всем привет!

У меня на работе есть необходимость регулярно говорить на английском на созвонах с коллегами. Я учу его уже много лет, но понимаю, что без постоянной практики прогресс идёт медленно.

Хожу на занятия раз в неделю, но этого недостаточно. В какой-то момент не нашёл подходящий инструмент и сделал свой — под себя. Почему бы и нет 🙂
Сейчас постепенно улучшаю его в процессе использования.

В нём можно:

- добавлять слова и фразы в личный словарь
- тренировать их через упражнения разной сложности
- отслеживать прогресс
- сохранять проблемные предложения и прорабатывать их отдельно

Всё работает на нейросетях.

Если есть желание попробовать — напишите в личку. Дам доступ нескольким людям.

🎈НА ДАННЫЙ МОМЕНТ МЕСТА ЗАКОНЧИЛИСЬ.

Это бесплатно (будете сжигать мои токены 😄)
@ddpotapov
28👍10🤬1