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

Наш форум: @ntc_forum
Наш легаси-чат: @ntc_chat
Download Telegram
Хочу рассказать свою историю превращения в другого человека, почему бы и нет? Может кого-нибудь это мотивирует 🙃

С 4 до 16 лет я всегда страдал ожирением. Ну знаете там: кость широкая, «от одной конфетки не потолстеешь», метаболизм плохой, «не жирный, а просто тебя хорошо видно» и всё в таком духе :)

И когда в школе на медосмотре спидометр на весах разогнался до 122 кг быстрее, чем тесла до сотки, я понял, что явно в этой жизни я делаю что-то не так 🤣

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

Тактика у нас была простая: ставим себе ограничение по калориям на день. Я придерживался 1400 ккал в день, но для моего роста (187 см) и веса (122 кг) это было черезвычайно мало (если решите худеть, то советуйтесь с врачом и бла-бла-бла, ну вы поняли, иначе всё на свой страх и риск), но в итоге всё прошло без происшествий 😉. Далее я начал изучать матчасть (чем лучше питаться, какие упражнения делать и т.д.) и подключил спортзал.

В таком темпе я продержался 8 месяцев и скинул ровно 50 кг (!)

Труднее всего далась первая неделя. А затем похудение вошло в привычку и никак не мешало комфортной жизни. А ещё меня очень сильно мотивировал результат. Уже за первую неделю я скинул пару кг.

Таким образом, в начале своего 16ти летия я весил 122 кг, а к концу уже 72 кг. Такой маленький вес это тоже не норма (как мне кажется) и сейчас я держу свой вес в районе 85 кг последние несколько лет и прекрасно себя чувствую 😄

Как эта, казалось бы, несвязная вещь с моей сферой деятельности, помогла мне стать программистом?

Я понял, что чем больше ты работаешь, тем больше тебе везёт. Если хочешь чего-то добиться, то тебе нужно что-то делать и делать это регулярно.

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

Вот и реальные примеры принципа «хочу, делаю, получаю»:

Что я хочу? Похудеть.

Что нужно делать? Ограничивать потребление калорий и ходить в зал (опционально).

Что я получу? Здоровье, возможность подтянуться на турнике хотя бы раз :D, внимание от девчонок и первые отношения. А ещё на вахте тебя не пустят в школу в 11 классе из-за того, что не узнают 😂

Что я хочу? Стать программистом.

Что нужно делать? Регулярно изучать язык программирования и практиковаться.

Что я получу? Возможность делать продукты (приложения) и финансовую независимость.

Поэтому всем я желаю удачи в своих начинаниях, увлечениях, которые пока не получаются или получаются плохо. Не опускайте руки, всё придёт с опытом, со временем. Нет ничего невозможного.

В следующем посте будут фото ДО и ПОСЛЕ :)

P.S. Метаболизм то, оказывается, в порядке! 🤣
🔥58👍15
А вот и три фотки ДО и три ПОСЛЕ к посту выше :)

Отдельно, потому что по количеству символов у постов с фото ограничение больше и всё не влезло.
🔥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