Jagerente / VRisingAcademySite

VRising Database
https://vrising-academy.info
0 stars 1 forks source link

Таблица локаций сервантов #52

Open Bobrokrot opened 2 years ago

Bobrokrot commented 2 years ago

Для гайда нужна таблица с доступными в игре экспидициями (Hunt) сервантов.

Выглядит она вот так (лист List of Hunts).

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

Bobrokrot commented 2 years ago

image Добавил количество лута для каждого ресурса в таблицу. Там у каждого лута есть "класс" того, как количество лута (мин. значение и макс. значение) увеличивается с длительностью Охоты. (id, min1, max1, min2, max2, min3, max3, min4, max4, min5, max5).

К сожалению, пришлось задокументировать отдельно каждый класс. Прослеживается общая тенденция, что среднее количество увеличивается x1, x1.5, x2.0, x2.5, x3.0 и разброс min-max +-10%, но, к сожалению, для низких значений это не выполняется. :(

Из этого можно рисовать таблички: по X длительность Охоты, по Y количество слуг и есть ли бонус +20% к ресурсами, в ячейках количество ресурсов min-max.

Bobrokrot commented 2 years ago

Hunt (servant location) — Name — Region — Class — Difficulty (число) — Slots (макс. число сервантов, которые можно отправить на Hunt) — {список до 5 шт. id ресурсов} — {у каждого ресурса hunt reward id

Также в таблице можно указать для 2/4/8/16/23 часов мелким шрифтом image

Hunt Reward: — id — min1 (мин. число ресурсов на 2ч миссии) — max1 (макс. число ресурсов на 2ч миссии) — min2 (4ч) — max2 (4ч) — min3 (8ч) — max3 (8ч) — min4 (16ч) — max4 (16ч) — min5 (23ч) — max5 (23ч)

Вариации формул расчёта: — умножить все числа на количество сервантов — умножить все числа на x1.2 при True/False галочке для правильного региона. Умноженное округлять вверх (НАДО ПРОВЕРИТЬ)

Формула для Difficulty: — минус 25 при 2 сервантах, минус 50 при 3 сервантах — минус 100 при правильном классе серванта (добавить галочку под это)

Раз уж пошли калькуляторы, то вот на отдельной странице можно вот такой сделать: Сервант: — Expertise (слайдер от 0% до 26%) — слоты под броню, оружие и ювелирку. Выбор экипировки, оттуда для расчётов нужен только Gear Level.

Выводить суммарный Gear Level и Power = Gear Level 9 (1 + Expertise %)

Bobrokrot commented 2 years ago

image Ну и заодно можно сделать такую табличку. В ней просто показано, какие ресурсы могут/выгоднее всего собирать слугам в зависимости от их типа и региона.

aelariane commented 2 years ago

@Jagerente В каком формате тебе это присылать нужно, хоть примерно?

aelariane commented 2 years ago

Бэкенд часть в теории сделана.

@Bobrokrot касательно структуры базы данных. Было добавлено 4 новых таблицы.

  1. Основная таблица самих хантов

    hunts
    id | regionid | location | maxservants | difficulty | classbonus

    Где regionid - id региона location - Название локации (можно сказать что это имя ханта) maxservants - Максимальное кол - во сервантов difficulty - Сложность (Целое число) classbonus - id типа крови (bloodtype) который является бонусным для экспедиции.

  2. Классификатор с возможными длительностями экспедиций (В часах)

    hunttimes
    id | time

    Где time - Количество часов. (Целое число)

  3. Классификатор модификаторов (1 сервант без бонусов, 1 сервант с бонусом, итд...)

    huntmodifiers
    id | servantsamount | bonus

    Где servantsamount - Кол - во сервантов (Целое число) bonus - Бонус (Строка). Имеется в виду в процентах

Эта таблица содержит возможные модификаторы экспедиций. Например, 1 сервант с бонусом, 1 сервант с 20% бонусом, 2 серванта, бонусный только один итд...

  1. Значения получаемых предметов
    huntrewardvalues
    huntid | itemid | time | modifier | minamount | maxamount

    Где huntid - id экспедиции itemid - id получаемого предмета time - id классификатора времени (hunttimes) modifier - id классификатора модификаторов (huntmodifiers) minamount - Минимальное количество предмета которое можно получить с экспедиции maxamount - Максимальное количество предмета которое можно получить с экспедиции

Первичным ключом в этой таблице являются сразу 4 первых столбца. Поэтому только одна строка с каждой возможной комибанацией из них возможна В чём идея последней таблицы. С huntid всё понятно, остальное на примере. Допустим мы имеем следующие данные: (Допустим что у нас есть hunt с id 33)

Следущие возможные часы для экспедиций:

hunttimes
1 | 2
2 | 4
3 | 8

Далее имеем следующие модификаторы:

huntmodifiers
1 | 1 | 'No bonus'
2 | 1 | `20% bonus`
3 | 2 | `No bonus`
4 | 2 | '20 % bonus'
5 | 2 | '40% bonus' 

Представлены возможные комбинации, например первое это отправили 1 серванта без бонусов типа крови. Строка с id 2 представляет собой случай, когда мы отправили одного серванта и у него есть бонус по типу крови.

Далее. Вот примеры записи в таблицу huntrewardvalues

huntrewardvalues
33 | 98  | 1 | 2 | 10 | 15

Что значит запись: Для экспедиции с id 33, мы можем получить предмет с id 98, при отправке на 2 часа (id 1 на hunttimes),с условием чтоо у него есть бонус типа крови (id 2 на huntmodifiers), минимальное количество 10, максимальное 15

aelariane commented 2 years ago

@Jagerente для фронтенда. Добавлен следующий эндпоинт:

/api/hunt/list

Ответ является обычным массивом объектов hunt, структура следующая:

{
  "id": 1,
  "region": "Farbane",
  "location": "Bandit Logging Camp",
  "maxservants": 1,
  "difficulty": 200,
  "bonusBlood": 1,
  "rewards": [
    {
      "itemId": 98,
      "time": 23,
      "servantsAmount": 1
      "bonus": "No bonus",
      "minimalAmount": 10,
      "maximumAmount": 15
    },
    {
      "itemId": 98,
      "time": 23,
      "servantsAmount": 1
      "bonus": "20% bonus",
      "minimalAmount": 17,
      "maximumAmount": 23
    }
  ]
}

rewards Это массив объектов наград, которые возможно получить с данной экспедиции. Про бонусы итд читай комментарий выше. Если непонятно просьба спрашивать.

Bobrokrot commented 2 years ago

@Jagerente SQL в отдельно таблице. https://docs.google.com/spreadsheets/d/1YAMSUdtcrsG-mNUE8sqeDZMyww9yjaZ2kHGg6CavXxY/edit?usp=sharing

Bobrokrot commented 2 years ago

@aelariane таблицу можно упростить. Вместо огромный таблицы у каждого ресурса есть base_value.

Формула для расчёта всех значений в таблице: floor(base_value time_modifier N_of_servants servant_bonus 0.9/1.1)