Ответы пользователя по тегу Разработка игр
  • Что быстрее рендерится-спрайты или модели?

    DanceM
    @DanceM Куратор тега Unity
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Зависит от шейдеров, света и конкретной ситуации. Может быть и тот и другой исход.
    Сделайте тестовую сцену и профайлером проверьте, в какую сторону разница в вашем случае.
    Ответ написан
  • Ошибки при открытии Shader Forge. Как решить?

    DanceM
    @DanceM Куратор тега Unity
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Как верно заметили в комментариях, версия 1.32 (что по ссылке, хотя подобные ссылки лучше не публиковать) не работает с 2017.х.
    Либо ищите посвежей (SF 1.37) либо используйте Unity 5.5/5.6.

    Про изменения в версиях SF можно прочесть здесь:
    acegikmo.com/shaderforge/changelog
    Ответ написан
  • Шейдеры, реагирующие на объекты. Как такое создаётся?

    DanceM
    @DanceM Куратор тега Unity
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Как верно написал GavriKos , обычно передаются координаты точки в шейдер.

    Но также у шейдера есть доступ к World Position, Object Position, Camera Position, Object UV (понятное дело), Screen UV, Light Direction (и еще может несколько пропустил). Вот комбинируя эти данные иногда получается обойтись без дополнительных данных извне.

    Рекомендую начать изучение шейдеров юнити с ассета Shader Forge. Код шейдера он выдает не сильно "читабельный", но позволяет прекрастно понять принципы работы тех или иных методов а так же легко и быстро конструировать практически любые шейдеры (т.е., можно вообще ручками шейдеры не писать, в большинстве случаев).
    Минус у SF, на мой взгляд, один - нет поддержки multi-pass шейдеров. Но в таких случаях можно и ручками написать, используя SF для подсказок.
    Ответ написан
  • Что лучше Unity vs UE4 (для 3D приложений)?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Для VR и смартфонов однозначно Unity.
    А производительность будет зависеть в любом случае от ваших талантов.

    PS: я как раз работаю в серьезном проекте, анатомический атлас, с VR, мильтиплатформенный, и с прочими плюшками. Думали о переходе UE, но там оказалось плюшек меньше а трудностей больше. Особенно когда речь заходит о VR.
    Ответ написан
  • Как смоделировать поле для телефонной игры?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Сами себе и ответили. Любые методы хороши, если приводят к желаемому результату.
    Ответ написан
  • Как называются такие модели?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Это надо у автора спрашивать, как он их "назвал". Лет двадцать назад помню такое рисовалось попиксельно, либо в векторных пакетах, псевдо-3д изометрия.

    В остальном - это просто 3д-модели созданные для отпределенного проекта и с определенной стилистикой.

    Вот похожий вопрос был:
    Как называются такие 3D модели?
    Ответ написан
  • Что определяет качество 3D картинки в играх?

    DanceM
    @DanceM
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Итоговую картинку определяет художник (ну или программист), который делает графику. То, сколько времени и усилий художник потратит на подготовку (желаемой) картинки, определяет движок. Ну и дальше уже вопрос к движку, какие технологии он поддерживает, и насколько быстро рендерит графику.

    Итого:
    - имея кучу времени, можно и на "слабых" движках получить весьма красивую картинку;
    - на более "быстрых" движках или оборудовании можно получить более красивую картинку при меньших временных затратах.

    И OpenGL можно выжать что угодно, хоть картинку уровня UE4. Всё упирается в технологии и библиотеки. Т.е., можете написать свой bloom, dof blur, occlusion, hdr, AA, parallax mapping, tessellation, и т.д (именно эти технологии и делают картинку "красивой"). Либо взять готовые решения. Но чтобы всё работало быстро надо будет еще потратить время на оптимизацию, совместить выбранные технологические решения.
    Либо взять UE4, где всё включено и оптимизировано "по умолчанию".

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

    Но это лишь одна точка зрения и я уверен, что найдутся другие ;)
    Ответ написан
  • Растр в большом разрешении или вектор для казуальной игры?

    DanceM
    @DanceM
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Рисуйте так, как удобно. Умеете вектором - супер! Требуется растр - пускай будет 4096 или даже 8192, с заделом на будущее ;)

    А можно использовать комбинированный способ - контуры и четкие грани в фотошопе векторными масками определять, а остальное наполнение растром - мягкой кистью и градиентами, как обычно. Я так и делаю. Тогда если надо масштабировать, контуры всегда четкие, при любом размере, а наполнение растягивается практически без пикселизации, т.к. четких деталей там не будет изначально.
    Да, это не полноценный "вектор", но лично мне так работать нравиться больше, быстрее.

    Например:
    c484e46fb169459f9413124a8a4495bc.pngb0c9411e4f944ced98c78f56e7066a1f.png
    Ответ написан
  • Операция, обратная запеканию нормалей?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Ищите Vector Displacement.

    Суть в том, чтобы получить в редакторе displacement модели именно с normal map, а не черно-белой bump map (результат будет совершенно иной). А это просто не каждый displace инструмент умеет/поддерживает.

    Я делал данную операцию, насколько помню, в 3ds MAX + Vray (у врея была карта, что позволяла преобразовать текстру c нормалями именно в векторную текстру/карту). Но подозреваю, что можно и в других 3д редакторах (Maya, Blender, Zbrush, Mudbox).

    PS: освежил воспоминания - 3dsmax + Vray позволяют рендерить объект с vector displacement, но не получать саму геометрию напрямую. Так что возможно вам стоит сразу поковыряться в других графических пакетах.

    PS2: а вот Blender справился без вопросов:
    93deaffe85b140b0ad77f56fb1b85313.png
    Ответ написан
  • Кто занимается разработкой анимаций?

    DanceM
    @DanceM
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Дополню Даниил Басманов

    Аниматор это можно сказать тот же художник/дизайнер, который прокачивал по большей части навыки анимирования, а не графики. Т.е., рисовать/моделировать будет уметь, то не так быстро и качественно, как человек специализирующийся сугубо на графике. Возможно вы найдете художника который "согласится" сделать анимацию, и у него на анимацию среднего качества уйдет день. Но опытный аниматор сможет сделать более красивую анимацию, высокого качества, за час, а за день сделает десяток анимаций.

    Скажем, аниматор изучает скелет и анатомию человека для анимирования человекоподобных персонажей. Надо ведь представлять и понимать, какие кости двигаются и какие мышцы при этом работают. Художники тоже изучают анатомию, но с слегка с другой стороны, для рисования/моделирования человекоподобных существ. При этом, владея базовыми навыками работы с анимационным инструментом, художники могут в принципе создавать анимации.

    А вот программисты тут совсем не при чем. Даже со знанием инструментов у программиста если и получится анимация, то весьма посредственная, и с большими временными затратами. И это никому не надо, ведь программисты пишут код, а не делают анимации.

    Не вспомню, чьи слова, но повторю "Чтобы стать профессионалом в каком либо деле, надо потратить на изучение этого дела 10000 часов". Так что если у вас будет человек, универсал (скажем вроде меня), который умеет делать 3д-графику, писать код, и делать анимации, то ничего из этого он не сможет делать хорошо (ну или быстро). Либо этот человек "потратил 30000 часов" на освоение данных навыков, и сможет все делать отлично. Но тогда работать он сможет в любом случае за одного, а платить придется за троих. Надеюсь вы идею уловили :)

    Так что художник рисует все, что надо аниматору, дальше аниматор создает все анимации, которые нужны программисту, а программист настраивает управление ими. При этом, профессия может быть смежной, "художник-аниматор", но никогда "программист-аниматор".
    Ответ написан
  • Как называются такие 3D модели?

    DanceM
    @DanceM
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Первое - low-poly стиль. Т.е., это не просто низко полигональные модели, где модель делается максимально красивой но с минимальным количеством треугольников, а именно модели, которые стилизованны для отображения в виде треугольников.

    Второе - обычные модели без текстур. Одного, серого цвета. Не знаю, низко полигональные они или нет, на картинке не разобрать. Но если учесть, что там нет текстур, то сетка ограждения и другие мелкие детали исполнены моделированием, а не текстурой, и значит треугольников там уже не мало "лишних", и low-poly я бы их уже не назвал.
    Ответ написан
  • Unreal Engine, или Unty3D?

    DanceM
    @DanceM Куратор тега Unity
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Мульти-платформенность забыли и поддержку VR, в Unity это лучше работает.
    Пробовал Unreal, очень понравился. Но в Unity все быстрее и проще делается, особенно если еще учишься.
    Что до графики и требований - все зависит по большей части от разработчика. Если голова не на плечах, то движок не спасет.
    Ответ написан
  • Как правильно называется сфера-окружающий мир в 3D?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Environment sphere, но это не обязательно будет сфера, часто применяют куб (environment cube), соответственно, текстурная развертка тогда отличается - spherical mapping VS cube environment mapping
    Ответ написан
  • Что почитать про программирование 3D графики?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Мне очень помогло это в свое время:
    http.developer.nvidia.com/CgTutorial/cg_tutorial_c...
    Ответ написан
  • Cервер для целого класса по 3D?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Собрал дома рендер-ферму с бездисковой загрузкой через CCBoot, на 7 машин.

    Рендерят все компы, причем, заранее можно выделить/настроить под рендер определенное кол-во ядер процессора, и тогда это совсем не мешает работе за ПК в процессе рендера (но конечно, можно рендерить и на любом выбранном ПК).

    Суть в том, что рендер быстрый, бездисковые машины могут быть слабыми, но все равно участвовать в расчетах. Работать с 3д графикой при этом можно вполне комфортно, т.к. не тонкий клиент, а полноценный ПК.

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

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

    PS: На гигабитном свиче и роутере экономить не рекомендую, будет глючить.
    Ответ написан
  • Делить или нет текстуры по разным атласам?

    DanceM
    @DanceM Куратор тега 3D
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Конечно создавайте атласы. Атлас быстрее грузится, чем такая же куча мелких текстур. Да, для батчинга важно, меньше отрисовок будет.

    В современном мире даже у слабых компьютеров есть на борту 512-1024МБ видео памяти (как в прочем и у многих современных телефонов). Текстура RGBA 4096x4096 c DXT5 или ETC2 сжатием занимает целых 21.3МБ (если верить Юнити). Так что вполне возможно все ваши текстуры могут быть упакованы в пять-десять таких атласов, загруженны все в память, и еще место останется.

    Ну а в каком порядке групировать, и какой размер выбирать для атласа это вам решать.

    Еще могу предложить вариант использовать ассеты, типа Simple LOD или Mesh Baker для запекания моделей и/или создания атласов уже в самой сцене Юнити (я предпочитаю Mesh Baker). Тогда можно собирать билды с атласами и без, не рискуя исправлением всех текстур и разверток.
    Ответ написан
  • 2D игра.Связь скриптов. Как вызвать bool из другого скрипта?

    DanceM
    @DanceM Куратор тега Unity
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Ваш код в работает, т.е. если переменная не изменяется, то причина где-то в другом месте.

    Как вызвать bool из другого скрипта

    В скрипте есть directionInput и он всегда равен 1, как мне его менять?

    В случае C#, все просто, прямо как у вас в скрипте c CharacterController1:
    var moveScript = GetComponent<MoveScript>();
    moveScript.LeftRight = true;
    //можно сразу переменную
    moveScript.directionInput = 1;

    Или менять через вызов метода:
    var moveScript = GetComponent<MoveScript>();
    moveScript.WalkLeft(); // всё, как у вас, только метод WalkLeft() должен быть public


    PS:
    И я бы не рекомендовал мешать int и float в расчетах (у меня часто изза такого смешивания бывают проблемы).
    Например:
    theScale.x *= -1; // не лучший вариант
    theScale.x *= -1f; // правильно
    
    //или если переменная int
    int directionInput = 1;
    theScale.x *= (float)directionInput;
    
    //тоже с векторами
    var speed = new Vector2(10f, 10f);
    Ответ написан