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

Наш форум: @ntc_forum
Наш легаси-чат: @ntc_chat
Download Telegram
Офигеть, уже лето...
Получается, всем хорошо отдохнуть и хорошо поработать 🔥

🚄 А я готовлю очень полезное видео по всем основным типам атак в 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
Безархетипные ECS фреймворки

Соскучился я по ECS + очень хотел изучить Jobs и внедрить в свою игру. Сначала, недолго думая, внедрил LeoECS Lite для некоторых систем в игре. Меня всегда привлекали ECS от Leo своей простотой и максимальным абстрагированием от движка (до этого я работал только с LeoECS Classic). Lite версия оказалась ещё более производительной, но тоже не без проблем, об этом расскажу прямо сейчас.

После внедрения LeoECS Lite в проект, я начал подробнее изучать фреймворки и наткнулся на Morpeh, на который по итогу и перешёл. Проблема была в том, что, увеличивая количество фильтров, сущностей и компонентов, производительность в безархетипных ECS, таких как LeoECS (Classic и Lite), неявно ухудшалась. Это чревато тем, что время выполнения кода, написанного годом ранее, могло занимать 1 условную миллисекунду, а сейчас на него могут уходить уже и 3, и 5 мс, и все 10 мс. Время выполнения кода будет расти неявным образом по мере роста проекта, что звучит не очень то и приятно. Если я ничего не путаю, эту проблему можно решить (частично) разбиением окружения на несколько ECS World, но такой подход, вероятно, может загонять некоторых людей в какие-то рамки.

В Morpeh нет такой проблемы, поэтому мой текущий выбор и пал на этот фреймворк. Вроде бы эту проблему Leo уже решил в новом LeoECS Proto, но этот фреймворк пока что свежий и платный, опробую его в деле спустя некоторое время.

Если вы пишите большой проект целиком и полностью на ECS, где в мир отправляется куча событий и запросов, а сущности постоянно добавляются, удаляются и/или меняются, то лично я бы не смотрел в сторону безархетипных ECS, хоть и считаю LeoECS Lite одним из лучших и самых простых ECS фреймворков и по сей день.

А какой ECS фреймворк вы используете в своём проекте? Ответ "никакой" тоже подходит 😄.
👍24
Forwarded from Болтовня
Дневничок разработчика 1
Часть 1:

Пост из разряда TIL (Today i learned):
Мне тут подкинули такую штуку как Tuple, или - "Кортежи", это такой сахар для System.ValueTuple<...> который позволяет передавать несколько разнотипных данных сразу одной структурой

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

var tuple = (11, 12, 13);

это я сейчас создал кортеж на 3 Int, обращаться к ним можно через item1, 2, 3, но можно и индивидуально им задать имя.

var tuple = (first: 1, second: 2);
var foo = tuple.second
; // = 2

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

public static (int first, string second) GetData() {...}

var data = GetData();
data.first // выведет какое то число

#unity #code #TIL #разработка
👍18🔥5👎4
Forwarded from Болтовня
Дневничок разработчика 1
Часть 2:

Сначала это просто показалось мне прикольной фичей, но когда я попробовал - это оказалось супер удобно, супер красиво и лаконично.

Сразу полезли идеи для реализации всяких хелперов:

Например для ботов идеально подойдет какой-нибудь метод измеритель, который сразу выведет все позиции, дистанции, направления для взгляда и разворот бота относительно игрока одним методом, без огромного списка out'ов в скобках.

Или еще вот скриншот, так я для бота сократил в квантуме получение некоторых параметров, что урезало несколько классов для ботов на десятки строк.

Вот статья на хабре с чуть более детальным описанием что это и с чем едят. есть конечно какие то подводные их использования наверное, но не думаю что это превратит код в адовую сатану, можно юзать.

Подсказал штуку NightTrainCode, спасибо ему за это)
#unity #code #TIL #разработка
👍19👎2
Не знаю почему дизы налетели на предыдущие месседжи, про прикольную фичу решил поведать, тем более админ нашего чата уже сам нарыл инфу и сэкономил мне время на пост. Сам я Tuple на практике не юзаю, предпочитаю под это дело структуры писать с необходимыми полями, но в некоторых кейсах эта фича может быть очень удобной.

Тем временем, апдейт для NightPool уже на финишной прямой. Завёз кучу новых функций, кучу проверок (для защиты от чайника), файлик package json и с гордостью можно будет назвать эту версию NightPool 3.0.

Какой производительности получилось добиться по сравнению с конкурентом (в лице LeanPool)?

Первичный Instantiate клона в пул:
Разброс 3% в пользу то одного, то другого 👌

Spawn(GameObject prefab):
NightPool на 19% быстрее ✅

Spawn(GameObject prefab, Transform parent):
NightPool на 25% быстрее ✅

Spawn(T component):
NightPool на 20% быстрее ✅

Spawn(T component, Transform parent):
NightPool на 28% быстрее ✅

Despawn(GameObject clone):
NightPool на 15% быстрее ✅

Despawn(T clone):
NightPool на 17% быстрее ✅

Spawn(T component, Transform parent) с опцией Recycle:
NightPool на 80% быстрее 🔥

Осталось самое душное - проверка на баги и обновление документации :D

P.S. Тесты проводил на префабе в виде примитива (куба) с одним рандомным компонентом. В качестве замеров производил по 1000 итераций за раз, был включён Deep Profiling. С другими, более тяжелыми префабами, картина может меняться, но не кардинально
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥5🤔3👎1
Сегодня я отмечаю свой 21й день рождения! 🎁

А начинать этот день с игры в GTA Vice City и заканчивать поеданием любимого торта в кругу семьи уже стало моей традицией. 🥳

Всем успехов!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉116🔥19👍2
Всем привет, я не пропал, просто сейчас нахожусь в Екатеринбурге, а таких чудес как ноутбук и свободное время от изучения города у меня пока нет 😄

Сейчас у меня сложились только положительные впечатления от города. Здесь много крутых арт-объектов и музеев, а также много различных заведений, магазинов и сервисов, которых в моём родном Красноярске, к сожалению, нет. Зато есть Енисей и Столбы 😉

Ещё нас с подругой забавно и оригинально встретил в аэропорту мой друг и коллега по цеху Коля 🤣

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

Ещё, кстати, мы на VR арене зарубилсь 3 на 3, не думал, что будет настолько круто и что мы вынесем оппонентов со счётом 5:0, несмотря на то, что мы с подругой играли впервые.
❤25🔥13👍5👎1🤬1