Как сделать стартовое меню и миникарту

    Всем доброго дня


    В этой небольшой статье я расскажу как сделал стартовое меню и миникарту с помощью ассетов из Unreal Engine Marketplace.


    Стартовое меню


    Стандартный путь для создания меню — виджеты с кнопками, списками и текстовыми полями. Однако их стандартный внешний вид уж слишком прост, а чтобы сделать его симпатичнее нужно приложить немало дизайнерских умений (для создания и расстановки картинок), коими не обладаю. Конечно, не обязательно рисовать всё самому и можно взять из интернета… но надо знать все лицензии, нюансы и маркетплейсы (и сайты со свободными материалами) или сесть это изучать. А лень. Поэтому я решил склепать стартовый мини-уровень с функциональностью меню из доступных (и бесплатных) ассетов из UEM. Получилось так:



    в «сырцах»:



    • Недостаточное освещение сделало приятный эффект запуска игры (за счёт автоэкспозиции/Eye Adaptation)
    • Грузовичок взят из Vehicle Variety Pack, ничего не делает пока
    • Основание — плоский landscape минимального размера покрытый M_Ground_Gravel из StarterContent
    • Здание — Factory_03_01_closed из [SCANS] Abandoned Factory Buildings — Day/Night Scene, просто задний фон ака гараж
    • Туалетная кабинка — BP_Portapotty_01 из Construction Site VOL. 1 — Supply and Material Props, при наведении мышкой открывается дверца, при клике — выход из игры. К слову, чтобы дверца не мешала обрабатывать Mouse Hover на самой кабинке, дверце надо сделать Collision Preset: NoCollision
    • MissionMapView — «стартовый» вид на уровень, выставляется в Level Blueprint > Event BeginPlay


    • Висящая на стене карта (ака меню выбора миссий) — комбинация из SpotLight (который зажигается при наведении мышки на карту) и StaticMesh (SM_Tarp_05 из того же Construction Site VOL. 1 в материале которого базовую картинку поменял на снятый референс из Яндекс.Карт, который до этого на ландшафт основного уровня «натягивал»)
    • При клике на карту происходит переключение вида на MissionMapView



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


    Миникарта в игре



    Миникарту сделал стандартным виджетом на весь экран, где расположен немного прозрачный Image всё с той же картой-референсом. Когда уровень будет готов, надо будет сделать его «фотографию» сверху и поставить на миникарту. В Event Construct этого виджета поверх карты отрисовывается маркер позиции и направления игрока. Обновляется его положение каждый Event Tick, что мне кажется неоптимальным с точки зрения производительности. Хочется переделать и обновлять положение только когда Игрок движется, но вот тут подумал — это ж и так почти всегда для автосимулятора ;)


    Так же на миникарте отображаются маркеры, связанные с заданиями и на этом шаге я столкнулся с задачей, текущее решение которой («просто добавь Delay!») кажется мне ужасно некрасивым. Проблема в следующем: размер миникарты может быть любым (в пропорциях от общего размера экрана), поэтому, при добавления маркера на миникарту, надо учесть её размер при пересчёте относительно положения объекта на уровне в положение на миникарте. Однако Widget > GetDesiredSize возвращает нули пока не начнётся Tick! С маркером Игрока эта проблема нивелировалась постоянным пересчётом его положения (он отрисовывался в 0,0, правда через деление на 0, но при первом же Tick вставал на место), а вот положение маркеров статичных объектов я каждый Tick пересчитывать не планировал. На текущий момент это решается путём добавления маркера на миникарту с Delay > Duration=0,4 из BeginPlay (к этому моменту все уже «тикают» и у карты есть размер), но как же это некрасиво!


    На этом пока всё. Если кто знает отдельный Event когда все виджеты уже имеют размеры (GetDesiredSize) — буду признателен за помощь. В планах рассказать про все WTF, на которые было потрачено по 4+ часов и про созданную базовую систему миссий. Спасибо.

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      0
      Напомнило, как нарисовать сову.
        +1
        статья как не нужно делать.
        в современных играх миникарта это не текстура ландшафта это помощь игроку:
        — фильтры для отображения обьектов по их типам
        — направление к обьекту-квесту-…
        — информация о преградах-поворотах-непроходимых участках.
        — возможность масштабировать миникарту для подгонки онной под стиль игры (скажем снайпер в шутере хочет видеть максимальное количество целей, а штурмовику нужно не столько видеть всё как оценивать количество врагов и ему важно, чтоб маркеры ни в коем случае не сливались в один изза масштаба)
        скажем в ваших гоночках-шутерах игроку лучше не вращать направление игрока на миникарте, а вращать миникарту относительно направления игрока: игрок получает информация поворот налево или направо, для того, чтоб определить своё положение на карте… хм… есть карта.
        репостатья имхо
          0
          Про вращение карты, а не маркера игрока — спасибо, «положу в бэклог» (надеюсь, знаний в UE когда-нибудь хватит для реализации).
          0
          ну и главное… миникарта камерой это в юнити так можно(там есть человеческие слои) миникарта в анриале или через виджеты(для новичка сложно, мало уроков) или через материал(в материалах анриала которые супер пупер нет массива векторов потому придётся потанцевать с бубном)
          +1 проход рендера сцены ради миникарты это меганубское решение скорее это даже пример как НЕЛЬЗЯ делать(ни единая ааа игра так не делает на моей памяти)
            0
            Миникарта камерой, к слову, только в «стартовом меню», где FPS просесть от такого решения не должен. Зато она выглядит живенько и красиво, что важно вблизи.
              0
              так о чём статья то? о миникарте нет(вы даже не очертили для СЕБЯ область проблемы), о виджетной реализации миникарты? тоже нет

              фармим репу?
            +1
            Почему эти текстуры кричат от боли? Я через экран слышу их крик. Нет, ну серьезно, так сложно скачать обычные 2-4k pbr материалы? Тоже самое касательно ассетов, автор зачем ты вернул 2008 год? Где нормали? Я молчу про ао и тд.

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

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