Ребзи, с Новым годом!!! ☃️
Желаю всем крепкого здоровья и успехов в ваших айтишных делах и начинаниях!
Кто как отметил? Как дела у вас?❄️
Желаю всем крепкого здоровья и успехов в ваших айтишных делах и начинаниях!
Кто как отметил? Как дела у вас?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54👍10❤4🥰2👏2
Хотел на этих выходных сделать пост про канал и новые видео после очередного застоя. Пост переносится.
Приношу глубокие соболезнования семьям погибших и желаю скорейшего выздоровления пострадавшим...
Приношу глубокие соболезнования семьям погибших и желаю скорейшего выздоровления пострадавшим...
😢55❤11🔥3😁2🤩2
Для тех, кто не в теме...
https://telegra.ph/Unity-6-proshchaetsya-s-C-i-obyavlyaet-o-perehode-na-C-04-01
https://telegra.ph/Unity-6-proshchaetsya-s-C-i-obyavlyaet-o-perehode-na-C-04-01
Telegraph
Unity 6 прощается с C# и объявляет о переходе на C++!
Вчерашний день ознаменовался шокирующим объявлением от разработчиков популярного игрового движка Unity. Начиная с 6-й версии, движок решил попрощаться с давним другом и партнером - языком программирования C# и перейти на более "взрослого" и "надежного" партнера…
😁45🤯11🤔6🎉5🤩1
Всем спасибо за 8К на YouTube! ❤️
Как думаете, уже пора потихоньку возвращаться с новым контентом? 😏
Вдохновение снова начинает появляться, а я как раз про Night Pool новое видео ещё не записывал, но сюжет писать начинал аж несколько месяцев назад. 🫠
Думаю, начнём с него, а там я уже и расчехлю другой интересный материал из запылившегося контент плана!)
Как думаете, уже пора потихоньку возвращаться с новым контентом? 😏
Вдохновение снова начинает появляться, а я как раз про Night Pool новое видео ещё не записывал, но сюжет писать начинал аж несколько месяцев назад. 🫠
Думаю, начнём с него, а там я уже и расчехлю другой интересный материал из запылившегося контент плана!)
🎉52👍9❤4🔥4😱2
Всем привет! Сегодня мне исполняется 22 года 🎂
И, по традиции, делаю пост в свой день рождения 🙃
Прошу прощения за то, что снова пропал после одного из последних постов. Честно сказать, у меня не было сильной мотивации делать контент как раньше, хочется больше свободного времени проводить с близкими после работы
За 22 года жизни я понял, что лучше ничего, никому и никогда не обещать, но я всё же рискну и пообещаю, что выпущу новый ролик до конца этого лета. Мне очень некомфортно на душе из-за очередного длительного перерыва. Всех обнял! ❤️
И, по традиции, делаю пост в свой день рождения 🙃
Прошу прощения за то, что снова пропал после одного из последних постов. Честно сказать, у меня не было сильной мотивации делать контент как раньше, хочется больше свободного времени проводить с близкими после работы
За 22 года жизни я понял, что лучше ничего, никому и никогда не обещать, но я всё же рискну и пообещаю, что выпущу новый ролик до конца этого лета. Мне очень некомфортно на душе из-за очередного длительного перерыва. Всех обнял! ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉104👍16🔥7👎4❤3
Сдерживаю обещание 😎🔥
Новое видео уже на канале!
Материалы из ролика вы сможете найти здесь.
https://www.youtube.com/watch?v=VPfqGRlyoFU
Новое видео уже на канале!
Материалы из ролика вы сможете найти здесь.
https://www.youtube.com/watch?v=VPfqGRlyoFU
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Убирай Instantiate и Destroy в Unity! Что такое Object Pooling?
На что можно заменить Instantiate и Destroy в Unity? Что такое Object Pooling и как с помощью него можно оптимизировать игру? Об этом подробнее в новом видео!
• 🖤 Telegram канал: https://t.me/nighttraincode
• 🖤 Telegram форум: https://t.me/ntc_forum
• 🖤…
• 🖤 Telegram канал: https://t.me/nighttraincode
• 🖤 Telegram форум: https://t.me/ntc_forum
• 🖤…
100❤35🔥14👍7⚡6🤩6
Недавно я обновил библиотеку OverlapSugar из видео про реализацию атак в Unity. Произвёл оптимизацию методов
Кстати, поздно рассказываю, но в Unity успели отменить Runtime Fee, что было очень даже ожидаемо
https://github.com/MeeXaSiK/OverlapSugar
TryFind
и немного улучшил удобство использованияКстати, поздно рассказываю, но в Unity успели отменить Runtime Fee, что было очень даже ожидаемо
https://github.com/MeeXaSiK/OverlapSugar
GitHub
GitHub - MeeXaSiK/OverlapSugar: Short cuts for Physics.Overlap in Unity
Short cuts for Physics.Overlap in Unity. Contribute to MeeXaSiK/OverlapSugar development by creating an account on GitHub.
26👍26⚡4
Всех с наступающим Новым годом! 🎄 ☃️
Желаю всем хорошо встретить 2025 и отдохнуть🥛
А своими ёлками хвастаться можно здесь🏡
Желаю всем хорошо встретить 2025 и отдохнуть
А своими ёлками хвастаться можно здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤34🔥12👍6🎉4
Опробовал я и ООП, и ECS, и реактивное программирование. Как итог, давно уже использую последнее на постоянной основе. Сначала пользовался своим решением, а популярный UniRx не зацепил меня в своё время и я благополучно его пропустил. Затем я решил не вставать на путь скуфа и начал отстаивать свои зумерские права, пробуя что-то новое, в чём мне успешно помогла новая библиотека R3. Вот небольшой кусок кода из документации, демонстрирующий её мощь (обратите внимание на формирование свойства IsDead в конструкторе):
Здесь точно есть, где разгуляться, а использовать все фишки этой библиотеки вместе с MVVM (и другими паттернами этого семейства) одно удовольствие. Так сказать, UniRx на стероидах.
❔ По какой причине я перешёл на реактивное программирование помимо разных фишек R3?
Из-за банальной экономии времени, ибо здесь можно легко повторно использовать ранее написанные механики, так как здесь идёт работа именно с данными, а не с конкретными сущностями. Ещё и меньше кода получится, в отличие от того же ECS. Рекомендую попробовать этот подход тем, кто ещё не попробовал. Возможно, это то, что вы ищете.
public class Enemy
{
public ReactiveProperty<long> CurrentHp { get; private set; }
public ReactiveProperty<bool> IsDead { get; private set; }
public Enemy(int initialHp)
{
CurrentHp = new ReactiveProperty<long>(initialHp);
IsDead = CurrentHp.Select(health => health <= 0).ToReactiveProperty();
}
}
Здесь точно есть, где разгуляться, а использовать все фишки этой библиотеки вместе с MVVM (и другими паттернами этого семейства) одно удовольствие. Так сказать, UniRx на стероидах.
Из-за банальной экономии времени, ибо здесь можно легко повторно использовать ранее написанные механики, так как здесь идёт работа именно с данными, а не с конкретными сущностями. Ещё и меньше кода получится, в отличие от того же ECS. Рекомендую попробовать этот подход тем, кто ещё не попробовал. Возможно, это то, что вы ищете.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍49🔥13⚡6👎1😢1
Писать методы расширения в C# можно и к кортежам
Например, можно легко узнать прогресс пройденного времени с результатом от 0 до 1. То есть если пройдёт одна секунда из двух, то мы получим значение 0.5
Само расширение:
На ноль делить нельзя, поэтому я написал метод PreventZero(), который принимает в себя float и, при необходимости, заменит 0 на float.Epsilon с сохранением знака числа (плюса или минуса)
Night Train Code
Например, можно легко узнать прогресс пройденного времени с результатом от 0 до 1. То есть если пройдёт одна секунда из двух, то мы получим значение 0.5
private void CalculateProgress()
{
_progress.Value = (_elapsedTime, _settings.Duration).Progress01();
}
Само расширение:
public static float Progress01(this (float a, float b) tuple)
{
return Mathf.Clamp01(tuple.a / PreventZero(tuple.b));
}
На ноль делить нельзя, поэтому я написал метод PreventZero(), который принимает в себя float и, при необходимости, заменит 0 на float.Epsilon с сохранением знака числа (плюса или минуса)
public static float PreventZero(this float value)
{
return Mathf.Approximately(value, 0)
? Mathf.Sign(value) * float.Epsilon
: value;
}
Night Train Code
👍34🤔9❤4🔥2
🎯 Ищем игры на релиз и маркетинг!
Мы ищем партнеров, чьи проекты находятся на стадии активной разработки. Нас вдохновляют игры, которые не только развлекают, но и заставляют задуматься.
Идеальный кандидат:
📌 Сформированная команда (1-30 человек) с доказанным опытом или сильным прототипом.
📌 Проект с четкой дорожной картой, ведущей к релизу в ~2026 году.
📌 Игра, сочетающая сильную тематику (техно/этика/история), новаторский геймплей и выразительный визуал.
✅ На данный момент из под нашего крыла к выходу в 2026 готовятся две первые игры от Hanuman Games https://store.steampowered.com/app/3480920/Crimson_Frontier/ и https://store.steampowered.com/app/3724300/Totos_Journey/
Мы предлагаем:
✅ Поддержку,
🤝Партнерство,
💥Издательство,
🔥МАРКЕТИНГ
Присылайте свой проект👉 @CyberRomGamesBot или @Goldvert
📩 https://gamecyber.ru
Мы ищем партнеров, чьи проекты находятся на стадии активной разработки. Нас вдохновляют игры, которые не только развлекают, но и заставляют задуматься.
Идеальный кандидат:
📌 Сформированная команда (1-30 человек) с доказанным опытом или сильным прототипом.
📌 Проект с четкой дорожной картой, ведущей к релизу в ~2026 году.
📌 Игра, сочетающая сильную тематику (техно/этика/история), новаторский геймплей и выразительный визуал.
✅ На данный момент из под нашего крыла к выходу в 2026 готовятся две первые игры от Hanuman Games https://store.steampowered.com/app/3480920/Crimson_Frontier/ и https://store.steampowered.com/app/3724300/Totos_Journey/
Мы предлагаем:
✅ Поддержку,
🤝Партнерство,
💥Издательство,
🔥МАРКЕТИНГ
Присылайте свой проект👉 @CyberRomGamesBot или @Goldvert
📩 https://gamecyber.ru
🤯4👍1😁1🤔1
В Unity есть удобный метод Vector3.Distance, которым мы все так часто пользуемся, но почему не всегда он — лучший выбор?
Дело в том, что Vector3.Distance вычисляет корень из квадрата евклидова расстояния между двумя векторами для вычисления реального значения, а это относительно дорогая операция. В некоторых случаях мы можем избежать излишнего извлечения корня, воспользовавшись следующим методом:
Мы поняли, что получение квадрата расстояния — это более дешевая операция, чем получение обычного. Но где нам это может пригодиться? Например, мы можем использовать квадрат расстояния там, где важно сравнение расстояний, а не само значение:
Этот метод проверяет, находится ли один объект внутри определённого радиуса другого. Как видите, здесь нет необходимости в использовании обычного метода Vector3.Distance и мы можем легко оптимизировать этот процесс.
В качестве бонуса покажу ещё один пример. Для того, чтобы найти ближайший к точке объект из коллекции, нам тоже будет достаточно использовать метод SqrDistance вместо Vector3.Distance:
Night Train Code
Дело в том, что Vector3.Distance вычисляет корень из квадрата евклидова расстояния между двумя векторами для вычисления реального значения, а это относительно дорогая операция. В некоторых случаях мы можем избежать излишнего извлечения корня, воспользовавшись следующим методом:
public static float SqrDistance(Vector3 first, Vector3 second)
{
float deltaX = first.x - second.x;
float deltaY = first.y - second.y;
float deltaZ = first.z - second.z;
return deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ;
}
Мы поняли, что получение квадрата расстояния — это более дешевая операция, чем получение обычного. Но где нам это может пригодиться? Например, мы можем использовать квадрат расстояния там, где важно сравнение расстояний, а не само значение:
public static bool WithinRadius(Vector3 first, Vector3 second, float distance)
{
return SqrDistance(first, second) < distance * distance;
}
Этот метод проверяет, находится ли один объект внутри определённого радиуса другого. Как видите, здесь нет необходимости в использовании обычного метода Vector3.Distance и мы можем легко оптимизировать этот процесс.
В качестве бонуса покажу ещё один пример. Для того, чтобы найти ближайший к точке объект из коллекции, нам тоже будет достаточно использовать метод SqrDistance вместо Vector3.Distance:
public static T GetClosest<T>(this IEnumerable<T> components, Vector3 position) where T : Component
{
T closest = null;
var minSqrDistance = float.MaxValue;
foreach (T component in components)
{
Transform transform = component.transform;
float sqrDistance = SqrDistance(transform.position, position);
if (sqrDistance < minSqrDistance)
{
closest = component;
minSqrDistance = sqrDistance;
}
}
return closest;
}
Night Train Code
2🔥32👍13❤3😁1🤔1