Структура данных по магическим качествам предмета для игры

Итак, проблема в том, что я пытаюсь создать плагин для игры, которая имеет несколько типов элементов, аналогично тому, как в Diablo 2 есть элементы. Теперь, как и в Diablo 2, этот предмет может появиться как магический или редкий.

Если элемент выбран магическим или редким, он может иметь префиксы и суффиксы.

Теперь он выбирает префикс / суффикс следующим образом: для определения доступных аффиксов используйте столбец уровня в файлах magicprefix.txt и magicsuffix.txt в качестве минимально необходимого affixlvl(alvl). Затем он фильтрует элементы по максимальному уровню (некоторые из них не могут отображаться на более высоких элементах alvl), а также соответствующие типы элементов и исключенные типы (исключенные типы элементов).

Мне также нужно исключить все аффиксы, которые имеют тот же номер группы, что и уже выбранный аффикс. Затем, чтобы определить вероятность получения аффикса, мне нужно суммировать частоты для этого конкретного типа (префикс / суффикс) и получить шанс этого конкретного аффикса с помощью affix_frequency/ interval_sum.

Это описание взято из: http://diablo2.diablowiki.net/index.php?title=Item_Generation_v1.09&action=edit§ion=18

И ссылка на различные текстовые файлы, которые содержат данные префикса / суффикса: https://code.google.com/p/d2spe/source/browse/trunk/data/global/excel/MagicSuffix.txt https://code.google.com / р / d2spe / источник / просмотр / багажник / данные / глобальный / Excel / MagicPrefix.txt

Что такое хорошая структура данных для эффективного доступа к группе префиксов / суффиксов на основе уровня аффиксов?

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

1 ответ

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

Например:

List<String> prefixes = Arrays.asList("Sturdy", "Strong", "Glorious", "Blessed", "Saintly");
List<String> suffixes = Arrays.asList("of Health", "of Protection", "of Absorption", "of Life", "of Warding");

List<Integer> prefixMinLevel = Arrays.asList(1,3,7,22,59);
List<Integer> suffixMinLevel = Arrays.asList(10,4,8,3,11);

List<Integer> prefixType = Arrays.asList(1,1,1,2,2);
List<Integer> suffixType = Arrays.asList(1,2,3,3,3);

А затем просто создайте пользовательский метод для получения действительного списка префиксов / суффиксов на основе элемента:

public List<String> getPrefixList(List<String> prevPrefixes, int itemLevel, int itemType){
    List<String> newPrefixes = new ArrayList<String>();

    for(int i = 0; i < prefixes.size(); i++){
        if(!prevPrefixes.contains(prefixes.get(i)))//Filtering out previous prefixes
        if(itemLevel >= prefixMinLevel.get(i))//Checking item level
        if(itemType == prefixType.get(i)){//Checking item type
            newPrefixes.add(prefixes.get(i));
        }
    }

    return newPrefixes;
}

Возможно, вы могли бы создать аналогичную функцию для суффиксов.

Вы также можете добавить множество различных критериев, таких как редкость предмета и стоимость предмета. Затем просто добавьте эти критерии в списки, как в примере выше, а также добавьте их в функцию getPrefixList().

Другие вопросы по тегам