Night Train Code - разработка игр
1.48K subscribers
62 photos
1 video
1 file
67 links
🖤 Разработка игр на Unity
🖤 Программирование на C#

Наш форум: @ntc_forum
Наш легаси-чат: @ntc_chat
Download Telegram
А вот и три фотки ДО и три ПОСЛЕ к посту выше :)

Отдельно, потому что по количеству символов у постов с фото ограничение больше и всё не влезло.
🔥79👍31🤯7🤩4😱3
Только что пересел с Zenject (Extenject) на VContainer

Почему решил пересесть?

1. В использовании он, как по мне, проще (после Zenject'а тут всё интуитивно понятно, но лучше всегда внимательно читать документацию).

2. Весит меньше и не имеет настолько много лишнего (для большинства пользователей) функционала. В общем и целом, не перегружен.

3. По производительности он быстрее хотя бы потому, что здесь мы сами определяем какие GameObject'ы нам нужно заинжектить на старте, а не все сразу, что есть на сцене.

Ещё в документации есть очень полезная страница со сравнением VContainer и Zenject
👍47
У меня есть проект на GitHub под названием Finite State Machine.

Это обычная машина состояний, но на ней ещё можно очень удобно писать искусственный интеллект, ибо в ней можно биндить переходы из одного состояния в другое, а затем она опционально в Update (вызов контролируете как вам захочется) сама будет устанавливать нужное в зависимости от условий, которые вы зададите.

Например, у нас есть вражеский юнит, у которого есть два состояния: «Ожидание» и «Атака». Мы просто задаём переходы из «Ожидания» в «Атаку» и из «Атаки» в «Ожидание», а условием может быть, например, наличие или отсутствие цели соответственно.

Подробная документация есть на GitHub. Также по этой StateMachine я планирую записать видео.
🔥32👍11❤1😁1
К посту выше

Вот так легко можно биндить переходы в этой машине состояний :)
👍20🔥10
Офигеть, уже лето...
Получается, всем хорошо отдохнуть и хорошо поработать 🔥

🚄 А я готовлю очень полезное видео по всем основным типам атак в Unity: Raycast, Overlap и Projectile. Будет очень интересно)
👍55🔥36
Пока видос озвучиваю, расскажу про интересный способ оптимизации. Принцип работы такой, что Update как бы "делится" на два (это не многопоток). Половина компонентов с Update вызывается в первом кадре, вторая половина в втором. В теории это увеличит FPS.

Обращаю ваше внимание, что при таком подходе нужно помнить про deltaTime. Ибо пройдёт два кадра, а deltaTime получим только за один. Но можно кэшировать время между кадрами в какие-нибудь deltaTimeA и deltaTimeB, а затем складывать и получать totalDeltaTime.

На практике пока не пробовал, поэтому не могу сказать, есть ли ещё какие-то подводные камни или баги, но способ достаточно интересный.

https://thegamedev.guru/unity-performance/cpu-slicing-secrets/
🤔13👍8🥰1
Как вам Unity 2022 LTS? Уже успели заценить?
🔥13🤔2
Нет, я не потерялся)

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

Тем временем, это заявочка на очередной самый длинный ролик на канале. Похоже на то, что он будет минут на 40+, новый рекорд. Осталось смонтировать и выжить :D
🔥68👍7
Сижу, ищу, читаю различные сайты с информацией о распространённых соглашениях по написанию кода C#.

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

https://www.elma-bpm.ru/KB/article-6651.html
👍21🔥7❤3
Финишная прямая! Уже 42 минуты смонтировал)

Много чего переснимал (перфекционизм, привет. Ну или ОКР, хе-хе), много чего добавлял. В общем и целом, думаю, много полезного узнаете.

Если всё пойдёт по плану, то видео выйдет в пятницу / субботу
👍37🔥18🤯2👎1
🚄 Айоу! Новое видео уже на канале 🔥

👀 Материалы из видео:

1. Скрипты
2. Библиотека OverlapSugar
3. Полезные атрибуты

👀 Само видео:

https://youtu.be/iLa1mF_PaEs
https://youtu.be/iLa1mF_PaEs
https://youtu.be/iLa1mF_PaEs

Надеюсь на вашу максимальную поддержку, очень много времени и сил потратил на этот ролик. Получился самый длинный на канале! Много чего переснимал, чтобы улучшить качество материала, а также много фишечек доснимал в процессе. Думаю, узнаете что-то новое 😉
🔥75👍13❤6🤩2👏1
Больше 3К просмотров на новом видео за выходные, что вы за львы?! 😎

Планирую сделать ремейки нескольких своих старых видео по некоторым причинам, одна из которых - это новые знания и новый (трезвый) взгляд на старое.

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

Кстати, если есть кто из ЕКб, друг анонсировал встречу разработчиков игр, может кому интересно будет.
👍35🥰2👎1🤬1
Я всё ещё пилю крупную обнову для NightPool, мне пришлось также доработать свой NightList для того, чтобы избавиться от аллокаций или свести их к минимуму в работе пула, а ещё, чтобы в некоторых местах можно было передавать структуры по ссылке, а не каждый раз их копировать.

Так вот, чтобы можно было использовать лист вот таким образом:

private NightList<T> _nightList = new();

var firstElement = _nightList[0];

То есть, чтобы писать сразу _nightList[i] вместо _nightList.Components[i], нужно написать следующее (обведено на скрине красным)
👍28🔥6❤3👎1😱1
Примерно так выглядит «лютый угар по оптимизации» или один день из написания апдейта для NightPool
🔥21👍7👎3🤔3🤯3
Внутри кода вы можете написать условную компиляцию

#if UNITY_EDITOR 
...
#endif

Код между директивами #if и #endif будет выполняться только в Unity, но ни в одном из ваших билдов (даже в Development Build).

Но что делать, если вам нужно выполнять некоторый код не только в редакторе, но ещё и в Development билдах, а затем, после всех тестов на ошибки, убирать лишний код (например, некоторые проверки на null и прочее) на релизе?

Для этого достаточно поменять препроцессорное выражение UNITY_EDITOR на DEBUG
👍33❤6🔥6👎1🤔1