Под капотом Graveyard Keeper: Как реализованы графические эффекты

    Всем привет! Целых 4 года я не писал на Хабр. Последняя моя серия постов была о различных инструментах и приемах, которые мы применяли на нашей прошлой игре (разрабатывая ее на Unity). С тех пор игру ту мы благополучно выпустили, а также выпустили и новую. Так что теперь можно немного выдохнуть и написать несколько новых статей, которые могут быть кому-то полезны.


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

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

    Для начала, кратко перечислю из чего собирается картинка в нашей игре:

    1. Изменяемый ambient light — банальное изменение освещенности в зависимости от времени дня.
    2. LUT-цветокоррекция — отвечает за изменение тона картинки в зависимости от времени суток (или типа зоны).
    3. Динамические источники света — факела, печки, лампы.
    4. Карты нормалей — отвечают за придание объема объектами, особенно при движении источников света.
    5. Математика 3D-распределения света — отвечает за то, чтобы источник света по центру экрана корректно освещал объект, который находится выше, но не освещал объект, который находится ниже (т.е. повернут к камере неосвещенной стороной).
    6. Тени — сделаны спрайтами, вращаются и реагируют на положение источников света.
    7. Имитация высоты объектов — для корректного отображения тумана.
    8. Прочие украшалки: дождь, ветер, анимации (в т.ч. шейдерныая анимация листвы и травы) и т.п.

    Теперь — подробнее.

    Изменяемый ambient light


    Тут, в принципе, ничего особенного. Ночью — темнее, днем — светлее. Цвет света задан градиентом по времени суток. К ночи источник света не просто становится темнее, а приобретает синий оттенок.

    Выглядит это вот так:


    LUT-цветокоррекция


    LUT (Look-up table) — таблицы замены цветов. Грубо говоря, это трехмерный массив RGB где в каждом узле находится значение цвета, на которое следует заменить соответствующий. То есть если по координатам (1, 1, 1) находится красная точка, это значит что весь белый цвет на картинке будет заменен на красный. Если же по координатам (1, 1, 1) находится белый цвет (R=1, G=1, B=1), то изменения не происходит. Соответственно, LUT без изменений имеет по каждым координатам цвет, соответствующий этим самым координатам. Т.е. в точке (0.4, 0.5, 0.8) находится цвет (R=0.4, G=0.5, B=0.8).

    Ну и стоит отметить, что для удобства представляют 3D текстуру в качестве двумерной. Например, вот так выглядит «дефолтный» LUT (никак не изменяющий цветопередачу):



    Реализуется элементарно, работает быстро и удобно.

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

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


    В результате в зависимости от времени суток одна и та же локация выглядит по-разному:



    Здесь еще изменяется прозрачность спрайтов света из окон в зависимости от времени суток.

    Динамические источники света и карты нормалей


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


    Рисуются такие нормали довольно просто. Художник грубо кисточкой прорисовывает свет с 4х сторон:


    А потом это скриптом собирается уже в карту нормалей:


    Если ищете шейдер (да и софт), который это делает, можете посмотреть в сторону Sprite Lamp.

    3D-имитация света


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

    Обратите внимание на эту картинку:


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

    Эту проблему я решил довольно просто. Шейдер высчитывает расстояние по вертикальной оси y между источником света и спрайтом. И если оно положительное (источник света перед спрайтом), то мы освещаем спрайт как обычно, а вот если отрицательное (спрайт перекрывает источник света), но интенсивность освещения очень затухает от расстояния с очень большим коэффициентом. Сделан именно коэффициент, а не просто «не освещать», чтобы когда источник света двигается и оказывается вдруг за спрайтом, то спрайт не моментально становился черным, а постепенно. Но все-таки довольно быстро.


    Тени


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

    Всего каждый объект может иметь максимум 4 тени. Одна — от Солнца, и три — от динамических источников света. На картинке ниже показан принцип:



    Задачу «найти ближайшие 3 источника света и рассчитать расстояние/угол теней до них» решает скрипт, который крутится в Update'е. Да, получается не очень быстро, т.к. приходится выполнять много математики. Если бы писал сейчас, то воспользовался бы новомодными системами параллельных job'ов в Unity. Но тогда этого еще не было, так что просто максимально оптимизировал обычные скрипты.

    Единственное что важно — я сделал вращение спрайтов не transform'ом, а внутри вершинного шейдера. Т.е. rotation не трогается. Просто в спрайт выставляется параметр (я использовал для этого цвет, т.к. все равно все тени черные), а за поворот спрайта ответственнен уже шейдер. Так получается быстрее, т.к. не приходится дергать геометрию в Unity.

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

    Второй недостаток в том, что иногда трудно сделать тень для объекта, у которого пятно контакта с землей очень вытянуто. Например, посмотрите тень от забора:


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


    Тут, правда, стоит отметить, что спрайт еще очень сильно деформирован по вертикали (оригинал теневого спрайта выглядит почти что как круг). Именно по-этому его поворот выглядит не столько как поворот, сколько как искажение.

    Туман и имитация высоты


    Еще в игре есть туман. Выглядит он вот так (сверху — нормальный вариант, снизу — экстремальный 100% туман, для демонстрации эффекта).



    Как видите, верхушки домов и деревьев торчат из тумана. На самом деле, добиться этого эффекта было довольно просто. Туман состоит из множества горизониальных облачков, которые распределены по всей глубине сцены. И в результате получается, что верхняя часть всех спрайтов перекрыта меньшим количеством спрайтов тумана:



    Ветер


    Ветер в пиксель-арте — отдельная история. Вариантов тут не много. Либо анимировать руками (что при нашем количестве арта почти невозможно), либо писать деформирующий шейдер, но тогда придется терпеть иногда некрасивые искажения. Можно, конечно, вообще не анимировать, но тогда картинка выглядит неживой.

    Мы выбрали вариант искажений с помощью шейдера. Выглядит это так:


    Если применить этот шейдер к текстуре с шашечками, становится понятно, что происходит:


    Стоит также отметить, что анимируем мы не всю крону, а только отдельные листики:


    Еще мы шатаем на ветру пшеницу, но тут все просто — вертексный шейдер деформирует x-координаты, при чем учитывает y-составляющую. Чем выше точка, тем сильнее шатать. Это сделано, чтобы шаталась только верхушка, а корень — нет. Плюс — фаза шатания меняется от x/y координат, чтобы разные спрайты на экране качались вразнобой.


    Этот же шейдер применяется и для создания эффекта качания пшеницы и травы при проходе через них игрока.


    Наверное, на этом пока все. Я намерено не затрагивал вопрос построения сцены и ее геометрии, т.к. это материал для отдельной статьи. В остальном — рассказал об основных решениях, которые применяли в разработке.

    PS: Если кому-то интересны какие-то технические аспекты, пишите в комментах. Возможно, расскажу в отдельной статье. Если, конечно, нужно.

    PPS: Пользуясь случаем скажу, что сейчас мы хотим найти в команду несколько грамотных людей (программист, ПМ, КМ, художник). Подробности — на сайте студии. Надеюсь, этой фразой не нарушил правила.
    Поделиться публикацией
    Комментарии 85
      +1
      Спасибо за интересную статью
        +18
        Не перестаёт поражать технологичность и проработка графики в играх с олдскульным пиксельартом, хотя казалось бы налепил спрайтов и радуйся.
          +2
          Желательно прикрепить сайт студии). Статья божественна — фанат вашего творчества после pinch club
            +1
            Помнится, раньше за такое банили… :)
              0
              Ссылки в комментах как воркэраунд никто не отменял
              +6
              Ну, учитывая то, что в названии статьи есть сама игра, найти сайт студии не составит труда ни у кого) Поэтому почему бы не упростить людям жизнь? lazybeargames.com
              0
              это восхитительно… в свое время на Flash делал подобную физику для веток деревьев и понимаю насколько сложно сделать что бы выглядело более менее гармонично.
              Кстати по самому персонажу ни слова не написано, а ведь где то здесь на Хабре была статья о том как одеть анимированного персонажа через карты нормалей. Если затрагивать природные явления, хотелось бы посмотреть на снег/дождь… Вобщем хотел бы увидеть вторую часть
                +1
                Эх, не хотелось сейчас опять влезать в Юнити, но пару упомянутых моментов не опробовать просто грех )))
                  +1
                  Да, смотрится прикольно, хотя технически ничего сложного нет.
                    +4
                    Таки, тем оно и прекрасно…
                      +11
                      Тут еще дело в том, что некоторые решения очевидны когда уже применены, а когда ты их пытаешься придумать/найти — это может оказаться не всегда тривиально ;)
                        +4
                        Когда всё показали расписали, конечно «технически ничего сложного нет».
                          –3
                          Что показали расписали? Вы без этих текстов не знаете max(0, dot(-l,n)) для освещения или не можете вывести x=x+sin(t+y), чтобы получить ветер? Это стандартные приемы в игровой графики, которые всем известны, небольшая проблема только в принятии решений, где что и как использовать.
                            +1
                            С удовольствием бы прочитал статью про «стандартные приемы в игровой графики» желательно с реализацией в юнити.
                              –5
                              Я не вижу смысла этим заниматься:
                              1. Все давно написано в исчерпывающем количестве;
                              2. В продуктах, с которыми я сейчас работаю, используется несколько другая математика.
                              Однако, если вам интересна тема компьютерного зрения, то на следующей неделе запланирована публикация статьи.
                                +3
                                Для вас это элементарщина. Для тех же, кто графикой не занимается или только начинает «стандартные» решения будут совсем нестандартные и не элементарные. Так что не надо считать себя умнее всех, тем более, что от вас в этой статье не требовалось объяснять эти «стандартные» способы.
                                  –3
                                  Для тех же, кто графикой не занимается или только начинает «стандартные» решения будут совсем нестандартные и не элементарные
                                  Сложность решений не зависит ни от чьего скилла. Есть общепринятые понятия о том, что в какой области сложно, а что нет. Давайте теперь операцию сложения называть нестандартным и неэлементарным решением, потому что младшая группа детского сада не может в ней разобраться.
                                    +4
                                    Вас никто не заставлял читать эту статью и высказываться тут. Если ваш программистский гений настолько крут, просто пройдите мимо.
                                    А автору статьи огромное спасибо.
                                      –4
                                      Я думал, что одна из целей написания статей, это получение компетентного мнения коллег.
                                        +2
                                        Вы получили компетентное мнение коллег в виде минусов. На сим считаю бессмысленным продолжать данную дискуссию.
                                          +4
                                          Ты вообще толком никакого мнения не высказал, кроме мнения о низком качестве людей, которым нравится эта статья.

                                          Именно из-за таких «мнений» много людей вообще не пишет на Хабр, т.к. всегда найдётся неводольный хрен, который обговнякает не изложенный в статье подход к решению задачи, а сам факт необходимости объяснения «таких элементарных вещей».

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

                                          Я не наезжаю на тебя и не минусовал. Я просто говорю, как это со стороны выглядит.
                                            –3
                                            найдётся неводольный хрен, который обговнякает не изложенный в статье подход к решению задачи, а сам факт необходимости объяснения «таких элементарных вещей"
                                            Ты сам понял что написал, и как это вяжется с действительностью? По твоей логике, ты и есть тот самый хрен, который думает, что от меня нужны объяснения элементарных вещей.
                                            Когда тебя попросили изложить список элементарных проблем и решений, которые должен знать каждый
                                            Ты дурачок? Я прямо сказал, что это уже 100500 раз обжовано в интернете, зачем об это писать 100501-ю статью? Компьютерное зрение не сложнее, но оно вообще из другой области. Там алгоритмы не завязаны на шейдеры, и там совсем другие подходы, которые имеют мало общего с геймдевом.
                                              +1
                                              Ты дурачок? Я прямо сказал, что это уже 100500 раз обжовано в интернете, зачем об это писать 100501-ю статью?
                                              Так давай ссылки на эти 100500 статей. Или ты только языком умеешь чесать?
                                              Пока что все твои высказывания смахивают на идею «Я д`артаньян, а все пидорасы».
                                              Ещё раз спрашиваю, тебя кто-то заставлял читать статью с «элементарщиной», кто-то заставлял агриться на комментарий ULTRAWEN? Ты как маленький мальчик, который забежал в дом и сходу начал кидаться во всех какахами, хотя тебя никто не звал и к тебе не приставал.

                                              Очень не люблю следующую фразу, но тут реально ситуация «Сперва добейся». Сделай хотя-бы пару статей с суперсложными вещами, а не элементарщиной, которая уже 100500 раз разобрана. Тогда тебя будут воспринимать хоть как-то всерьёз.
                                                –3
                                                Alozar, если ты думаешь, что я тебе что-то должен, то ты ошибаешься. Хочу заметить, у тебя в голове каша в отношении того, что я якобы должен доказать и сделать, но это твое право составить обо мне мнение. В общем, я ничего никому доказывать не собираюсь и не понимаю зачем ты сюда вернулся — чтобы еще раз громко хлопнуть дверью? )
                                                  +1
                                                  В такой случае и тебе никто ничего не должен, а следовательно сокрушаться, что в 100500 раз объяснили элементарщину, ты не имеешь права. У нас же свобода слова, так?
                                                    –2
                                                    Я нормально отношусь к элементарщине (см. мой топовый комментарий, он очень точен, + там есть адекватное дополнение от разработчика).
                                                    У нас же свобода слова
                                                    ты не имеешь права
                                                    Это лучшая интерпретация свободы слова, которую я когда-либо видел! У меня есть право сокрушаться, у тебя — поставить минус сокрушаться в ответ.
                                                      +1
                                                      Да, смотрится прикольно, хотя технически ничего сложного нет.

                                                      Пока вроде нормально.
                                                      Что показали расписали? Вы без этих текстов не знаете max(0, dot(-l,n)) для освещения или не можете вывести x=x+sin(t+y), чтобы получить ветер? Это стандартные приемы в игровой графики, которые всем известны, небольшая проблема только в принятии решений, где что и как использовать.

                                                      По вашему мнению это нормальное отношение и нормальная реакция на безобидный комментарий, который по сути очень похож на комментарий разработчика?
                                                        –1
                                                        Божечки, и что теперь? От overreacted комментария еще никто не умирал. ULTRAWEN спокойно ответил с намеком. Совсем не похоже, что он рыдает под душем. Что ненормально — это перескакивать с «вы» на «ты» и обратно.
                          +2
                          Не перестаёт поражать технологичность и проработка графики в играх с олдскульным пиксельартом, хотя казалось бы налепил спрайтов и радуйся.


                          Хорошо же, что в большинстве случаев имеет место именно последнее. Освободившаяся энергия дает возможность появления таких шедевров. Помню отзыв про Settlers II в каком-то игровом журнале: «Трехмерить и рендерить нынче научен каждый, а попробуйте высококачественную анимацию рисовать». Вот это, пожалуй, можно и к вам отнести.
                            +4
                            Если бы в статье не обратили внимание на «неидеальную» тень от забора, никогда бы не догадался, что она неидеальна =)
                            На самом деле сделано здорово — меньшими средствами, больший результат.
                              0
                              не знал, что игру наши делали. когда смотрел трансляцию игры, удивил качественный «графон», и при этом спорный геймплей (рытье могил, расчлененка трупов). игры на более «традиционную» тему будут?
                                +2

                                У них уже есть.
                                Например http://lazybeargames.com/game/punch-club/ — очень аддиктивный проект с крутой концепцией и интересным геймплеем.

                                –4
                                Есть пара моментов которые бы хотелось узнать о RTX, расскажите если знаете.
                                Насколько сложно это будет добавить разработчикам в свои игры?
                                Так же непонятно вот что. На презентации показывали демки и говорили что максимум что сможет 2080ti дать — 60 кадров в 1080p. Так вот, возможно ли градации использования ресурсов, типа: вот вам расчет теней для 1 дерева в 60 кадро в 4к или весь парк деревьев будет с тенями, но тогда 60 кадров в 1080p.
                                Короче говоря, будет ли rtx иметь разную производительность в разных играх с разными настройками?
                                  +1
                                  Насколько сложно это будет добавить разработчикам в свои игры?

                                  Относительно просто
                                  Короче говоря, будет ли rtx иметь разную производительность в разных играх с разными настройками?

                                  Да
                                  +1
                                  С туманом конечно просто но FPS падает. Если бы у спрайтов присутствовал канал «высоты» можно было бы все одним слоем тумана сделать как то так.
                                    +1
                                    Да, но для этого пришлось бы рисовать еще высоту каждому спрайту. Но хороший вариант, да. Честно говоря, даже не рассматривал.
                                      +1
                                      Есть вариант использовать в качестве высоты координаты текстуры или брать интерполированную позицию вершины уже в пиксельном шейдере. А сам туман делать также как и стандартный совсем без слоя, но добавить в каждый материал (спрайт) текстуру тумана.

                                      Конечно, если основная затея была сделать все эти эффекты стандартными шейдерами, то тут по другому сложно выкрутиться.
                                    0
                                    Спасибо, информативно!
                                      +3
                                      Гифки божественны. Даже жаль что я не фанат «выживалок» и «песочниц» :/
                                        –1
                                        К сожалению, из божественного в игре только картинка. Все остальное, мягко говоря, весьма посредственно.
                                        +2
                                        Спасибо за статью и за игру в отдельности.

                                        п.с. Когда добавите телеги для перевозки ресурсов? Это боль — нести бревно и ещё одно толкать перед собой.
                                          +1
                                          В разработке пока не анонсированный патч ;) Там будет много вкусного.

                                          А пока — только инструкция из нашей коллекции фанарта:
                                          image
                                          +1
                                          Какая здоровская графика и эффекты, сколько деталей. Вот к таким играм у меня не возникает вопросов, почему столько места занимает, не жалко. Но жаль, что для детей такого не вижу. В смысле, графика сказочная, но тема-то вообще не детская. Вот бы для детей бы что-то. У вас нету такого же, но с перламутровыми пуговицами?
                                            +1
                                            А чем вам не угодил Stardew Valley? Создатели же как раз на него ориентировались, но как раз чтобы «не для детей»
                                              0
                                              Спасибо. Не знал про такую, надо глянуть.
                                            –3
                                            качания пшеницы и травы при проходе через них игрока.
                                            — всё-таки персонажа, игрок — это тот, кто сидит, уставившись в экран, и ни по какой пшенице не ходит.

                                            И кстати, когда по траве ходят NPC — тоже ведь качание работает?
                                              0
                                              Качание работает там, где есть коллайдеры. На кого нацепишь коллайдер, тот и будет качать ;)
                                                –1
                                                Ну вот, значит, оно привязывается к некоей игровой сущности, будь то персонаж (как игроцкий, так и NPC), или вообще не персонажный движущийся предмет.
                                              0
                                              Спасибо, очень интересная статья!
                                                +1
                                                Спасибо за статью.
                                                Теперь я понимаю, почему на не самом слабом железе за недолгое знакомство с данной пиксель-арт игрой была столь низкая производительность на экране с пшеницей и туманом/дождем.
                                                  0
                                                  Обычно несерьезно воспринимаю пиксельную 2D-графику, максимум из того во что играл это to the moon, но и там графика и игровой процесс скорее мешали восприятию истории. Но тут все реализовано просто невероятно, не думал что буду восхищаться подобным. Автору удачи в работе, вдохновил меня своей статьей, игру надо будет купить.
                                                    0
                                                    Отличное внимание к деталям! Это всегда делает игры по-настоящему клёвыми. Хотя отзывы на стиме говорят об обратном…
                                                      +2
                                                      Ну, у игры есть определенные проблемы где-то на 40-м часу игры. Но мы работаем над улучшениями :)
                                                        0
                                                        Лучший ответ на отзыв об игре эвер
                                                          +1
                                                          Желаю успехов и довести игру до сбалансированной детализации во всех аспектах (или хотя бы учесть на будущее).
                                                            0
                                                            Спасибо. Основной вывод, который мы сделали — «надо релизить, когда готово, а не когда надо по срокам» :)
                                                            –1
                                                            Мне кажется, вы свою игру переоцениваете. Очень переоцениваете. Но графика, несомненно, выше всяких похвал.
                                                              0
                                                              Где вы, простите, увидели «очень переоценивание»? Я прекрасно знаю о проблемах в игре и в отличии, вероятно, от вас — прочитал почти все негативные отзывы. Подавляющее большинство можно свести к нескольким моментам. Один из которых можно сформулировать как «начало бодрое и веселое, но ближе к концу начинается гринд и скука».

                                                              Ну, и как минимум 2000 пользователей в Стиме написала положительный отзыв ;)
                                                              0
                                                              а какая часть аудитории доходит до 40 часа?
                                                                0
                                                                До 40-го не скажу, в Стиме нет такой отметки. До 20-го — 40%, до 50-го 15%.
                                                              –1
                                                              Просто в игру завезли всё кроме геймдизайна
                                                                +3
                                                                У нас в стране постоянно это сквозит… Все и всегда считают, что свершения свершаются только крутыми людьми с бесконечным умением и безграничным финансированием.
                                                                И всё, что нужно — просто затребовать чего-то от начальства, правительства или матрицы, и оно вдруг упадёт готовое. Ну или на облаке спустится кто-то, кто будет этим заниматься.

                                                                Так вот нет.

                                                                Полтора землекопа два года без выходных тащат какой-нибудь проект на своём горбу. И если его светят на западе, то отзывы в духе «вы молодцы, копайте дальше». Если в СНГ — то это всегда «ваш проект не идеален, а значит дерьмо».

                                                                Это следствие менталитета жителей страны без социальных лифтов. У нас доволно долго было так, что вырваться в нормальную жизнь можно только случайно, не зависимо от умений и навыков. На западе же все знают, что чем больше ты пытался — тем больше опыта получил. И чем больше говна ты наделал, тем слаще оно становится. И через 10 лет ты выдаёшь уже не какашки, а конфеты.

                                                                У нас считается что любая деятельность должна сразу иметь продуманную архитектуру, прекрасный дизайн, отточенный баланс и всё это на стадии проекта и без фидбека. И заниматься всем должна идеальная команда профессионалов. И желательно совершенно бесплатно, они же не продажные какие-то там.

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

                                                                Но это замкнутый круг. Давайте уже перестанем наступать на грабли в своём мышлении, ладно?
                                                              +1
                                                              Очень круто сбалансированное визуальное решение!
                                                                0
                                                                Офигенно! Спасибо за материал!
                                                                  0
                                                                  Статья очень впечатляет. Жалко, что я в этом ничего не понимаю. Правда, недавно начал осваивать Blender в надежде нарисовать снельсоновские электроны. Но чувствую, что поздно пить боржоми. Нужно обращаться к специалистам. Поэтому буду признателен за любые советы.
                                                                  В прошлом году выложил здесь (на Хабре) статью под названием «Химия Кеннета Снельсона» с описание теории кольцегранного строения электронных оболочек атомов и молекул. Теперь нужно описать тонкую структуру электронов, а показать её на модельках уже невозможно. Нужно рисовать. А в перспективе — сделать игру, позволяющую собирать молекулы из стандартных блоков и демонстрировать их электронное строение. Причём с хорошей подсветкой, тенями и прочими заморочками, обеспечивающими высокую наглядность картинки. Кажется, здесь это называется сбалансированным визуальным решением.
                                                                  Отсюда — вопрос: что делать? Точнее — к кому обращаться? Похоже, лучше всего к разработчикам игр. И где их лучше всего искать?
                                                                    0
                                                                    Посмотрите libcinder.org
                                                                    Вроде близкое к тому что вам надо на нем делают.
                                                                      0
                                                                      Спасибо!
                                                                      Похоже, это то, что нужно (для программистов) — полезная библиотека для С++. Сможет пригодиться, если найду программиста.
                                                                        0
                                                                        Я промахнулся комментом. Нижний мой коммент хотел вам написать.
                                                                        0
                                                                        Я бы не стал советовать узкий инструмент/библиотеку, который потом замучаешься поддерживать. Лучше взять Unity / Unreal и иметь полную универсальность (в т.ч. поиска исполнителя). Лучше даже Unity, т.к. людей с ним знакомых больше и они дешевле.
                                                                          0
                                                                          Спасибо! Похоже, нужно ориентироваться на Unity3D. Буду искать разработчиков. Тем более, что за картинки они берут не дорого. А под молекулярное макетирование придётся искать спонсора или затевать crowdfunding.
                                                                      0
                                                                      Примеры восхитительны, но наберусь наглости и скажу: было бы очень хорошо, если бы вы данные примеры, выложили как исходник проекта Unity, с простым набором сцен. Возможно в каких от местах упрощенные, урезанные. Уверен, это очень бы помогло начинающим, и не только. Очевидные вещи, не всегда очевидны для тех, кто их никогда не реализовывал.
                                                                        0
                                                                        Боюсь, отрезать и упрощать — очень уж большая работа. Тем более, все равно оно потянет очень много зависимостей. Например, для того, чтобы картинка работала, нужен еще довольно объемный движок, отвечающий за сортировку и построение сцены, различные менеджеры отвечающие за перерасчет теней, пересортировку объектов. Кастомный camera culling сюда же. А оно потянет за собой движок многопотоковости и черт знает что еще. Ну и не говоря о том, что на практике в коде накопилась куча архитектурно-неверных решений, которые еще больше препятствуют отделению различных систем.

                                                                        В результате, так пол проекта получится :)
                                                                          0
                                                                          То есть, я правильно понял, что вся эта изображенная красота не является результатом, исключительно только описанного в статье?
                                                                          В любом случае, спасибо. Особенно интересная тема с освещением.
                                                                            0
                                                                            Не совсем так. Но все-таки, есть еще куча воспомогательных систем — сортировка объектов, culling, движок многопоточности и т.п.
                                                                        0
                                                                        С туманом беда, с пшеничным полем тоже (спрайтбатчи!?). В целом изумительный проект, особенно был удивлен, когда восхитила играбельность на очень маломощном железе.
                                                                          +1
                                                                          Отличная статья!
                                                                          Очень приятно удивлен что разработчики этой шикарной игры не только земляки, так еще и на хабр пишут. Спасибо!
                                                                            +2
                                                                            Хочу, но не могу плюсануть статью, т.к. «срок голосования истёк». Статья вышла 11 октября в 13:58, сейчас 14 октября 15:52. Мне кажется, что это неправильно. Что думаешь, habrahabr?
                                                                              0
                                                                              Мимо проходил:
                                                                              Ну, время на редактирование комментария просили увеличить года три (по ощущениям) — может еще через лет пять таки и этого дождемся.
                                                                              0
                                                                              Игра смотрится очень круто!
                                                                              Рассматривали ли изометрию, почему решили делать так?
                                                                                0
                                                                                Ну, у нас тоже изометрия. А почему прямая, а не косая — тут много причин. Рисовать проще, воспринимать проще, управлять проще, больше похоже на Stardew Valley (аудиторию которой мы хотели зацепить и удачно зацепили). Вообще, не вижу этот проект в косой изометрии. Было бы чистокровное РПГ — тогда да.
                                                                                0
                                                                                Спасибо, очень интересная статья!

                                                                                И за игру отдельно спасибо. Игра шикарна, но, ради всего святого, такие баги в релизе не допустимы. У вас же был длинный альфа-доступ, а такие штуки как постоянные вылеты на 32-битной винде не отловили. Это я уже про серебряную ювелирку не говорю.
                                                                                  0
                                                                                  Можно узнать, сколько у вас получилось Draw Call и Tris?
                                                                                  0
                                                                                  Очень интересно и полезно!
                                                                                    0
                                                                                    Судя по первой гифке дело происходит где-то в Австралии.

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                    Самое читаемое