UE4. Лут. Часть 4. Теория вероятностей

Поделиться
HTML-код
  • Опубликовано: 17 ноя 2024

Комментарии • 22

  • @AlexKoltsov
    @AlexKoltsov 3 года назад

    О, очередной годный материал! Спасибо, Игорь!

    • @3D-Lesson
      @3D-Lesson  3 года назад

      Пожалуйста!

  • @AlexKoltsov
    @AlexKoltsov 2 года назад

    Игорь, заметил что уже *666* подписчиков ! :)

  • @raidgameru
    @raidgameru 3 года назад

    А почему нельзя просто использовать операторы сравнения?

    • @3D-Lesson
      @3D-Lesson  3 года назад

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

    • @raidgameru
      @raidgameru 3 года назад

      ​@@3D-Lesson простой пример :
      int chance = getRandom();
      if(chance >70){
      //получи обычное
      } else if (chance > 40) {
      //получи синее
      } else if(chance > 20) {
      //получи фиолетовое
      } else {
      //получи рыжее
      }
      Это самый простой пример что может прийти в голову, его можно чуток упростить или оптимизировать, порог можно задать константами или переменными, чтоб менять вероятность получения.
      Если размышлять вашим способом, то в UE4 можно использовать кривую (curve), ее редактировать гораздо удобнее чем массив - зашел, передвинул точку и все. Надо добавить новую градацию? Просто добавь точку. Может есть и более изящные методы, но это первое что приходит на ум

    • @3D-Lesson
      @3D-Lesson  3 года назад

      @@raidgameru Если getRandom() умеет выдавать нелинейное распределение, то такое возможно. В противном случае всех предметов будем получать примерно поровну. Или я что-то не понял? Надо поэкспериментировать. Но и в этом случае получаем более длинный, а, значит, и труднее обслуживаемый код. По поводу curve - наверно можно и так. Как-то вообще про это не думал. Надо изучить вопрос. Я просто не в курсе как там с получением дискретных значений. Округление в Blueprint - еще та задачка - лишние несколько узлов.

    • @3D-Lesson
      @3D-Lesson  3 года назад

      @@raidgameru Проверил, таки работает и с if. Но! При написании кода очень важно отделять данные от кода, т.е. данные от реализации. Можно цифры в условии заменить на заранее определенные константы. Но так придется менять сразу четыре значения, отвлечься и одно не заменить, потом долго и нудно искать причину дисбаланса. А вот такие вот данные - это первые кандидаты на изменение после альфа, бета-теста и релиза. В случае же массива все меняется в одном месте. Мне самому не нравится идея инициализировать это в коде. В идеале это должен быть внешний файл, изменения в котором не требуют перекомпиляции, по крайней мере на дорелизном этапе. Теперь еще один момент. Предположим, что есть разные уровни сложности и на одном из них надо исключить эпические предметы. В случае массива достаточно подсунуть другой массив в котором отсутствуют необходимые цифры. В случае с if - надо два варианта кода (если я опять ничего не напутал). Независимость кода от изменения данных очень важна в проектах, которые планируется поддерживать.

    • @raidgameru
      @raidgameru 3 года назад

      @@3D-Lesson по вашему лучше переписывать массив из 100 чисел?😂

  • @chelog548
    @chelog548 3 года назад

    как добавить звуки дыхания персонажу?не догоняю просто

    • @3D-Lesson
      @3D-Lesson  3 года назад

      Неизвестно какой именно результат нужен? Можно настроить на анимацию бега как звуки шагов, можно как рассказано тут: ruclips.net/video/aSf63vyK7Aw/видео.html

    • @chelog548
      @chelog548 3 года назад

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

    • @chelog548
      @chelog548 3 года назад

      @@3D-Lesson но спасибо за тутор

    • @3D-Lesson
      @3D-Lesson  3 года назад

      @@chelog548 Я не помню, чтобы встречал в игре такое. Но можно попробовать привязать к персонажу обычный wav. Но ведь при беге это другие звуки должны быть и т.д. Поэтому все равно надо писать какую-то логику. Не знаю, не сталкивался с таким.