• Базовые концепции Unity для программистов
    +6

    "Моноповедения" — спасибо, докинул в копилку лучших переводов надмозгов.

  • Шпионы в быту: робот-пылесос вас подслушивает
    +8
    Ученые видоизменили электрическую цепь в блоке прибора

    Дальше можно было не читать — таким образом можно пофиксить все, что мешает нужному кривому "исследованию".

  • Практические рекомендации по повышению производительности вашей игры на Unity. Часть 1
    0

    Смысл в том, что сейчас уже нет смысла упарываться в динамик-батчинг на плотной сцене с повторяющимися объектами (как вот елки на картинке из статьи) — он никогда не вытянет скорость инстансинга. Динамик-батчинг уже по дефолту отключен на новых проектах и скорее всего будет выпилен через пару мажорных релизов в угоду инстансингу и urp batching-у, который работает совершенно не так.

  • Украденное резюме, человек, который ушел в Кемерово, призыв кандидата и другие истории трэш-собеседований
    0

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

  • Украденное резюме, человек, который ушел в Кемерово, призыв кандидата и другие истории трэш-собеседований
    0

    Мне одно время приходили предложения типа "мы проверили ваш гитхаб — все, вы нам подходите. Вот тут у вас ECS, вот тут у вас Unity". При этом им абсолютно пофик, что ECS в моем случае ничего общего с облаками амазона не имеет, а Unity — это не ORM для баз данных от MS.

  • Практические рекомендации по повышению производительности вашей игры на Unity. Часть 1
    +1

    Дерьмовая статья и дерьмовый перевод (что намекает на общее качество курса).
    Начнем с перевода.


    Для систем частиц, линий рендеринга и рендеринга трейлов…
    … с помощью окклюзии Unity…
    У Legacy Deferred (предварительный проход света) пути рендеринга

    И так по всему тексту. Гуглопереводчик на марше.


    По исходной статье. Практически везде фейл.


    Чтобы подключить Remote Profiler, перейдите в меню Edit > Project Settings > Editor и в разделе Device выберите Any Android Device.

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


    Батчинг (Batching, или пакетная обработка) — очень хороший метод повышения производительности за счет сокращения количества вызовов Draw, который представляет из себя группирование рендеринга нескольких похожих GameObject-ов в одном вызове draw.

    Не GameObject-ов, а мешей, висящих на них с MeshFilter / MeshRenderer. Рендерить меши можно и без GameObject — через Graphics.XXX, что тоже может батчиться.


    Если ваши GameObject-ы не взаимодействует с вашим Player или если вы не меняете Transform, то лучше всего использовать статический батчинг для большинства вариантов среды в вашей игре, таких как здания, дороги и т. д.

    Лучше никогда не использовать статик-батчинг, т.к он неконтролируем от слова "совсем" — можно получить меш из десятка треугольников на одном крае локации и десятка треугольников на другом, а т.к юнити определяет видимость меша для камеры через попадания баунда (габаритного AxisAlignedBox) в область видимости камеры, то такой меш будет всегда рендериться, даже если его не видно. К тому же такой меш всегда лежит как жирный меш в ресурсах самого билда, сильно раздувая его. Ну и копия статик-меша всегда лежит в оперативной памяти. Как неплохую замену следует использовать Mesh.CombineMeshes (о чем было указано ниже по тексту).


    Пакетная обработка динамических GameObject-ов имеет определенные накладные расходы на каждую вершину, поэтому пакетная обработка применяется только к сеткам, содержащим не более 300 вершин и не более 900 атрибутов вершин.

    Меш собирается каждый фрейм в буфер, что при большом количестве мелких мешей может наоборот — начать тормозить рендеринг из-за большой нагрузки на цпу при подготовке данных. Цифра 900 скорее всего никогда не поменяется, скорее динамический батчинг полностью будет выпилен из движка в угоду инстансингу и urp batching.
    Ничего не сказано про "render queue", что очень важно и тоже ломает батчинг даже если все остальные условия были выполнены.


    GameObject-ы не обрабатываются пакетно, если они содержит зеркальное отражение в transform (например, GameObject A со скейлом +1 и GameObject B со скейлом –1 не могут быть объединены вместе).

    Любые отрицательные скейлы ломают батчинг, а не только идеальное зеркалирование.


    Использование разных экземпляров Material приводит к тому, что GameObject-ы не объединяется в пакет, даже если они по сути одинаковы. Исключение составляет рендеринг Shadow Caster.

    Если в тенях включена поддержка каскадов — они тоже ломают батчинг + дальность тени (не будет батчиться то что с тенями и то, что без).


    Игровые объекты с картами освещения имеют дополнительные параметры рендеринга: индекс карты освещения и смещение/скейл в карте освещения. Как правило для пакетной обработки, GameObject-ы с динамической картой освещения должны указывать на одно и то же местоположение карты освещения.

    Тут возникает 2 проблемы:


    1. лайтмапы в юнити могут быть запечены только от статики, которую не стоит использовать.
    2. попадание в нужную лайтмапу сложно контролировать.
      Как решение — или сторонние плагины-запекалки или запекание во внешнем редакторе как надо и импортом мешей в юнити с сохранением UV2, содержащим координаты в лайтмапе.
      В целом Occlusion Culling подразумевает, что Unity не будет отображать GameObject-ы, которые полностью скрыты с точки зрения камеры (окклюдированны) другими GameObject-ами.

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


    Ни слова не было сказано про instancing, что является на сегодняшний момент предпочтительным способом оптимизации рендера без значительной перегрузки цпу даже на мобильных платформах (доля gles2 устройств меньше 8% и будет все сильнее падать к 2022). Ни слова не было сказано про освещение скинмешей (лайтпробы — тоже статика, но можно переливать в динамике).

  • Как защитить данные игры на Unity в оперативной памяти?
    +1

    Советую сравнить производительность — она будет далеко не "такой же". :)

  • Как защитить данные игры на Unity в оперативной памяти?
    0

    А можно вообще не страдать и сделать вот так.

  • Инди-проект Tenebris, или геймдев без бюджета
    +1

    На самом деле движок 4-ой части, 5-ая была по сути контент-паком и продолжением истории, обе части потом были выпущены как "World of Xeen".

  • Исследователи замерили потери энергии беспроводной зарядки
    0

    Так и делал, но в итоге перестал использовать.

  • Исследователи замерили потери энергии беспроводной зарядки
    0

    Разговор был про lighting.

  • Исследователи замерили потери энергии беспроводной зарядки
    0

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

  • Исследователи замерили потери энергии беспроводной зарядки
    0

    Убил магнитным кабелем батарею в iPhone6s+ — через какое-то время пропадает четкий контакт части, вставляемой в телефон, с контактами внутри телефона + второй частью провода. Выглядит как втыкание-вытыкание кабеля раз в секунду, помогало вытаскивание "штырька" из телефона и втыкание обратно. На 3-4 недели, чем дальше, тем чаще приходилось вытаскивать. Месяца через 4 емкость аккумулятора упала на 10% (по внутренней статистике iOS). После возврата на штатный lighting-кабель деградация прекратилась.

  • Новости Blender3d и около него
    0

    Причем здесь старожил. Твиттер-теги до сих пор с "3д", локальные коммунити-сайты с "3д" — это все пошло с тех пор, но живо и сейчас.

  • Новости Blender3d и около него
    +2

    Потому что раньше он так и назывался, по крайней мере новости вели на 3д-домен:
    https://www.opennet.ru/prog/info/45.shtml
    https://3dnews.ru/220672
    Этот домен https://blender3d.org жив до сих пор, хотя и редиректит уже на новый.


    В википедии в разделе "Использование в кино" есть линк про человека-паука, который ведет на 3д-домен. Линк после редиректа уже мертвый.
    Ну и в твиттере тег #blender3d идет наравне с #b3d и #blender.


    P.S. вот новость о переезде на новый домен: https://web.archive.org/web/20021124122712/http://www.blender3d.org/

  • Основные принципы использования ECS в разработке игр
    –1

    Вот конкретный пример разработки игры с нуля от одного из выступавших на митапе:


  • Apple открыла бесплатный 90-дневный период для Final Cut Pro X и Logic Pro X
    0

    Стоит уточнить, что 90 дней отображаются на сайте пока не выберешь страну. Для России, например, остались те же самые 30 дней.

  • Мотор! или Что такое игровая физика
    +2

    Можно стрелять в любой момент, главное — следить за флагом рядом с целью. Флаг опадает, ветер минимальный, можно стрелять по прямой.

  • Мне 14 и я решил разработать игру
    +17

    Вижу рекламу, не вижу технических подробностей.

  • Создание бота Дискорд на основе discord.js
    0

    С npm 5.x (не помню точно какой версии) больше не нужно указывать ключ -S — оно само сохраняет. Для записи в devDependencies ключ -D по-прежнему нужен.

  • Создание бота Дискорд на основе discord.js
    0

    Смысл был в том, что перепутана последовательность — сначала делается npm init -y и только потом npm install discord.js, который запишет пакет в dependencies секцию.

  • Создание бота Дискорд на основе discord.js
    0

    Если автор сам попробует выполнить свою инструкцию пошагово, то узнает, что первые 2 команды упадут с ошибками.

  • Почему Discord переходит с Go на Rust
    +7

    Но ведь это отключение автоматической сборки, руками-то все-равно придется звать
    runtime.GC()

  • Почему Discord переходит с Go на Rust
    +7

    Так ночным он был на момент начала портирования, в статье указано, что теперь нужный функционал в стейбле. По поводу трехлетнего голанга — самый свежий получил возможность отключения GC? Статья как раз про особенности работы с памятью и сборку мусора.

  • Вывод внутриигровых сообщений с помощью Particle System
    0

    Ну можно же вынести в отдельный канвас именно динамику для всплывающих надписей.
    Высокополигональная геометрия — это тоже странное утверждение, ректы же, как и в партиклах.
    Мусор есть и тут, при сборке самих надписей, если их надо собирать динамически.

  • Непрерывная интеграция в Unity: как сократить время сборок и сэкономить ресурсы + пайплайн в подарок
    0

    Что делаете с внешними плагинами, которые через баш-скрипты пытаются править xcode-проект в постбилде? Настраиваете окружение для перла и тп штук или у вас таких проблемных ассетов уже нет и все нужные работают через юнити-апи для патчей xcode-проекта? Просто раньше с этим была большая проблема и на винде не все можно было собрать, чтобы потом унести на тот же macmini одной папкой.

  • Проверка б/у макбука перед покупкой — чек-лист
    0

    А так же заменен hdd 5400rpm на ssd и установлена catalina — все работает на ура.

  • Свой CI/CD для Unity
    0

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


    /build имя-проекта имя-ветки

    например


    /build supergame feature/new-ui

    В ту же группу сообщает о пройденных стадиях (скачивание репа, билд юнити, билд xcode, подпись, закачка на хостинг) и конечные линки для скачивания.

  • Свой CI/CD для Unity
    0

    Канешн, выбор бранча через через чат-бота (т.е можно прямо через него запрашивать билд нужного проекта с нужного бранча), автопрошивка хеша коммита с версией в сам билд и т.д и т.п :)


    Реализация через gitlab-runner неудобна тем, что фиче-бранчей может быть много и надо мочь собирать каждую из них отдельно — приходится их мерджить в билд-бранч, либо вешать теги, что очень не удобно. Поэтому вот такой автобилд по запросу оказался довольно удобным решением.

  • Свой CI/CD для Unity
    +1
    • Скачивать последние изменения с GIT репозитория


    И где все это? :)


    • Про options.plist — TeamId не нужен, он берется из архива, а вот


      <key>compileBitcode</key>
      <false/>

      сильно ускоряет подпись для dev-билдов.


    • Еще бы неплохо указать, что для сборки все-равно потребуется macos с xcode и установленными cli tools, а так же sshpass (через homebrew) если на sftp используются не ключи, а доступ по паролю.


    • Если используются нейтивные сдк, которые напрямую лезут к java и прочим штукам — скачиваемый jdk через unityhub не подойдет, т.к не прописаны в $PATH. Решение — прописывать их в $PATH перед запуском, либо поставить отдельно openjdk через homebrew. Второй способ удобнее, т.к юнити можно обновлять без проблем, а системный jdk останется и сам будет прописан в переменные окружения.


  • Яндекс запустил народное голосование за ретроигры. Финалисты Retro Games Battle 2019
    0

    Чувствуешь как уходит потенциальный приз? :) Поздравляю с проходом в финал.

  • Apple представила долгожданный MacBook Pro 16”
    0

    3072×1920, 226ppi

  • Cоздание визуальных компонентов в Unity UI. Система частиц
    0

    Вот класс из UIExtensions использовать нельзя, как и пример из статьи. Быстрее, чем сделано в нейтиве и через вызов одного метода в managed-коде нельзя, тем более с ручным перекидыванием меша в жирный и медленный uGui. Вот это https://github.com/mob-sakai/ParticleEffectForUGUI — обертка поверх нейтивного бейка партиклов в меш и самый быстрый вариант из всех, несмотря на такое себе качество кода в плане скорости.

  • Cоздание визуальных компонентов в Unity UI. Система частиц
    0

    А можно перестать наркоманить и использовать ParticleSystemRenderer.BakeMesh + внешнюю камеру для гуя.

  • Презентация как код, или Почему я больше не пользуюсь Powerpoint-ом
    0

    https://yhatt.github.io/marp/
    https://gitpitch.com/
    https://remarkjs.com/


    Миллион их, почему именно AsciiDoctor?

  • Извините, но на работу я не приду, потому что сейчас зима
    0

    Там перекрытие в несколько лет между 1 и 2 картинкой (1981-1984).

  • О проектировании гибкой системы способностей персонажей в играх
    0

    Для начала можно пройтись по ссылкам, там есть тесты производительности. Ну и можно зайти с другой стороны — когда unity-ecs позволит передавать без адского бойлерплейта, занимающего треть кода, инстансы классов дальше для работы (после джобов и т.п) — вот тогда можно будет рассматривать ихнее поделие как рабочий вариант. Сейчас это — исключительно one-task-performance-only решение для ускорения одной задачи, из-за которой потом приходится страдать и выковыривать данные обратно из NativeArray и т.п. Все коммунити-проекты (тот же Entitas) являются multipurpose-решениями и позволяют строить всю архитектуру приложения на них.

  • О проектировании гибкой системы способностей персонажей в играх
    0
    Все реализации кроме нативной не дадут того прироста производительности, и по факту являются надстройкой над монобехом.

    Очень смелое и абсолютно голословное утверждение. Мое поделие как и Entitas не имеет никаких зависимостей от юнити и может использоваться в .net core безо всяких монобехов, например, в серверной реализации или вообще сторонних проектах (например, мод кастомных ранений для gta5). И да, джобы делаются через штатный мультитред без проблем.

  • О проектировании гибкой системы способностей персонажей в играх
    0

    Есть много реализаций, в том числе и моя. Есть Entitas, Svelto, EgoEcs и т.п. Смысл в том, что в случае ecs размазывание обработки последовательно с пре/пост-процессингом получается просто и непринужденно, без использования ООП.

  • О проектировании гибкой системы способностей персонажей в играх
    0

    А можно посмотреть в сторону ECS (не обязательно штатной реализации) и понять, что там это все реализуется даже проще.