Светокопи классик характеристики: Бумага «Светокопи»: характеристики и плотность

Содержание

основных практик Blueprint | Unreal Engine Community Wiki

Вы просматриваете определенную версию страницы. Чтобы просмотреть текущую версию этой страницы, нажмите здесь.

Blueprint как язык программирования Лучшая особенность blueprints: она позволяет нам начать программировать логику видеоигр без каких-либо знаний в области программирования. Худшая особенность чертежей: она позволяет нам …

Лучшая особенность чертежей: она позволяет нам начать программировать логику видеоигр без каких-либо знаний в области программирования.
Худшая особенность чертежей: она позволяет нам начать кодировать логику видеоигр без каких-либо знаний в области программирования.
Нет случайного копирования текста выше. Визуальные скрипты — это огромный шаг вперед, дающий людям свободу творчества.
Сегодня каждый может создать новый проект и начать с прототипирования своей идеи. Изучение движка и программирование на ходу.
Единственная проблема заключается в том, что официальная документация не объясняет ничего, кроме того, «как щелкнуть в чертежах».

Если вам повезет, вы уже можете встретить людей или видеоролики на YouTube, объясняющие вам несколько основных концепций «инженерного мышления».

  • Как не убить свой фреймрейт и не начать спрашивать себя «во сколько нам обходятся эти скрипты производительности»?
  • Как избежать создания «гигабайтных чертежей» — скриптов, которые ссылаются на половину игры, а вы даже не знаете об этом, так что в итоге вы загружаете половину игры, открывая чертеж игрока.
  • Концепции архитектуры кода и объектно-ориентированного программирования. Это то, к чему вы прикасаетесь каждый день, но, вероятно, вы не знали, как это называется.

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

И пусть вас никто не обманывает. Ваша должность может и не называться «программист геймплея», и вы, возможно, еще не умеете пользоваться классическими языками программирования, но визуальные сценарии чертежей — это все равно программирование.

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

  • План балансировки и C++



Использовать таймеры вместо Tick и Delay

  • Использование таймеров в чертежах

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

Расчеты сетей узлов схемы не кэшируются волшебным образом

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

нужно правильное изображение

Избегайте приведения к классам чертежей

Как говорится в официальной документации Balancing Blueprint and C++

Избегайте приведения к дорогим чертежам: Всякий раз, когда вы выполняете приведение к классу Blueprint BP_A (или объявляете его как тип переменной в функции или другом Blueprint) из BP_B, создается зависимость загрузки от этого Blueprint. Затем, если BP_A ссылается на четыре больших Static Meshes и 20 звуков, каждый раз, когда вы загружаете BP_B, ему придется загружать четыре больших Static Meshes и 20 звуков, даже если приведение не удастся. Это одна из основных причин, по которой важно иметь либо нативные базовые классы, либо минимальные базовые классы Blueprint, определяющие важные функции и переменные. Затем вы должны сделать свои дорогие Blueprints как дочерние классы.

Как этого избежать?

  • Попробуйте выполнить приведение к чертежам, которые, как вы знаете, уже загружены в память
  • Использовать диспетчер событий вместо вызова функции в целевом проекте
  • Использовать интерфейсы
  • Используйте компоненты, содержащие определенные функции, например, компонент инвентаризации, вместо того, чтобы помещать этот код в схему MyShopkeeper
  • Используйте системы, идентифицирующие экземпляры актеров по чему-то другому, кроме класса, например по тегам игрового процесса
  • Создавайте собственные базовые классы C++ — это может быть безумно полезно, если вы пишете большую часть своей логики в виде чертежей

Узнайте об жестких ссылках, программных ссылках и цепочке ссылок

  • Жесткие ссылки — это ссылка на объект типа по умолчанию в схеме, поэтому вы уже используете ее все время. Если чертеж A ссылается на чертеж B, открытие A в редакторе или загрузка его в игре автоматически загружает чертеж B.
  • Эталонная цепочка. Если схема A загружает схему B автоматически, это также означает, что схема B автоматически загружает все связанные с ней схемы и все активы, используемые этими схемами. Вот почему его очень легко испортить. Если ваш Player Blueprint напрямую ссылается на все игровые системы, при загрузке этого плана будут загружены все игровые системы и активы, используемые этими системами. Таким образом, вы загружаете гигабайты данных и ждете минуту, чтобы открыть Player Blueprint. Не беспокойтесь, дизайнеры в профессиональных студиях часто допускают эту ошибку.

Чтобы решить эту проблему, нужно постоянно использовать 2 «решения».

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

Вам нужно подумать о том, как разделить вещи: изолировать системы, функции, классы и активы. Поначалу может быть трудно понять, какой способ ведения дел является чистым. Это придет с практикой и постоянным размышлением: «Правильно ли это делать? Можно ли это улучшить?».

В правильно реализованной игре Player Blueprint никогда не узнает о существовании двери или владельца магазина. Взаимодействие игрока с дверью или продавцом осуществляется компонентом взаимодействия. Этот компонент не знает о существовании использующего его класса акторов, т.е. Player, Door, Shopkeeper. В конечном итоге вы можете создать перечисления или теги игрового процесса для определения типов взаимодействия.

M

Обновлено назад

Фундаментальные практики проектирования | Сообщество Unreal Engine Wiki

Изучите несколько основных вещей, которые значительно улучшат ваши визуальные сценарии

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

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

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

Единственная проблема заключается в том, что официальная документация не может объяснить ничего, кроме того, «как щелкнуть в чертежах». Если вам повезет, вы уже можете встретить людей или видеоролики на YouTube, объясняющие вам несколько основных концепций «инженерного мышления».

  • Как не убить свой фреймрейт и начать спрашивать себя «во сколько нам обходятся производительности эти скрипты»?

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

  • Концепции архитектуры кода и объектно-ориентированного программирования. Это то, к чему вы прикасаетесь каждый день, но, вероятно, вы не знали, как это называется.

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

И пусть вас никто не обманывает. Ваша должность может и не называться «программист геймплея», и вы, возможно, еще не умеете пользоваться классическими языками программирования, но визуальные сценарии чертежей — это все равно программирование.

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

  • План балансировки и C++



Использовать таймеры вместо Tick и Delay

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

  • Руководство: Использование таймеров в чертежах

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

Расчеты сетей узлов схемы не кэшируются волшебным образом

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

нужно правильное изображение

Избегайте использования «Получить всех актеров класса»

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

Чтобы получить необходимых актеров, просто зарегистрируйте своего актера у какого-нибудь менеджера, когда актер появится в мире. В чертежах вы бы чаще всего вызывали его в Begin Play. Для этой цели используйте свой собственный класс менеджера или класс расширения, такой как Game Mode.

Если у вас уже есть проект C++, рассмотрите возможность определения своего менеджера на C++. Тем более, что подсистемы программирования идеально подходят для этой цели.

Избегайте приведения к классам чертежей

Как говорится в официальной документации Balancing Blueprint and C++

Избегайте приведения к дорогим чертежам: Всякий раз, когда вы выполняете приведение к классу Blueprint BP\\_A (или объявляете его как тип переменной в функции или другом Blueprint) из BP\\_B, создается зависимость загрузки от этого Blueprint. Затем, если BP\\_A ссылается на четыре больших Static Meshes и 20 звуков, каждый раз, когда вы загружаете BP\\_B, ему придется загружать четыре больших Static Meshes и 20 звуков, даже если приведение не удастся. Это одна из основных причин, по которой важно иметь либо нативные базовые классы, либо минимальные базовые классы Blueprint, определяющие важные функции и переменные. Затем вы должны сделать свои дорогие Blueprints как дочерние классы.

Как этого избежать?

  • Попробуйте выполнить приведение к чертежам, которые, как вы знаете, уже загружены в память.

  • Используйте диспетчер событий вместо вызова функции в целевом проекте.

  • Использовать интерфейсы.

  • Используйте компоненты, содержащие определенные функции, например, компонент инвентаризации, вместо того, чтобы помещать этот код в план MyShopkeeper.

  • Используйте системы, идентифицирующие экземпляры акторов не по классу, т. е. по тегам игрового процесса.

  • Создавайте нативные базовые классы C++ — это может быть безумно полезно, если вы пишете большую часть своей логики в виде чертежей.

Узнайте об жестких ссылках, программных ссылках и цепочке ссылок

  • Жесткие ссылки — это ссылка на объект типа по умолчанию в схеме, поэтому вы уже используете ее все время. Если чертеж A ссылается на чертеж B, открытие A в редакторе или загрузка его в игре автоматически загружает чертеж B.

  • Эталонная цепочка. Если схема A загружает схему B автоматически, это также означает, что схема B автоматически загружает все связанные с ней схемы и все активы, используемые этими схемами. Вот почему его очень легко испортить. Если ваш Player Blueprint напрямую ссылается на все игровые системы, при загрузке этого плана будут загружены все игровые системы и активы, используемые этими системами. Таким образом, вы загружаете гигабайты данных и ждете минуту, чтобы открыть Player Blueprint. Не беспокойтесь, дизайнеры в профессиональных студиях часто допускают эту ошибку.

Чтобы решить эту проблему, нужно постоянно использовать 2 «решения».

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

  • Чистая архитектура кода. Это большая тема, но фундаментальная часть работы программиста.

Вам нужно подумать о том, как разделить вещи: изолировать системы, функции, классы и активы. Поначалу может быть трудно понять, какой способ ведения дел является чистым. Это придет с практикой и постоянным размышлением: «Правильно ли это делать? Можно ли это улучшить?».

В правильно реализованной игре Player Blueprint никогда не узнает о существовании двери или владельца магазина. Взаимодействие игрока с дверью или продавцом осуществляется компонентом взаимодействия. Этот компонент не знает о существовании использующего его класса акторов, т.е. Player, Door, Shopkeeper. В конечном итоге вы можете создать перечисления или теги игрового процесса для определения типов взаимодействия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *