簡體   English   中英

游戲物品的神奇品質的數據結構

[英]Data structure for magical qualities of an item for a game

好的,所以問題是我正在嘗試為一款具有多種道具類型的游戲制作插件,類似於《暗黑破壞神2》的道具方式。 現在像《暗黑破壞神2》一樣,該物品也有可能以魔法或稀有形式生成。

如果選擇的項目是魔術或稀有物品,則它可以帶有前綴和后綴。

現在,它選擇前綴/后綴的方式是:要確定可用的綴,請使用magicprefix.txt和magicsuffix.txt文件中的level列作為所需的最小綴lvl(alvl)。 然后,它按maxlevel(較高級別的alvl項目中不會出現一些項目),適當的項目類型和排除的類型(排除的項目類型)過濾項目。

我還需要排除與已經選擇的詞綴具有相同組號的任何詞綴。 然后,要確定獲得詞綴的機會,我需要對特定類型(前綴/后綴)的頻率求和,並通過affix_frequency / frequency_sum獲得該詞綴的機會。

此描述摘自: http : //diablo2.diablowiki.net/index.php?title=Item_Generation_v1.09&action=edit&section=18

並鏈接到包含前綴/后綴數據的各種txt文件: https : //code.google.com/p/d2spe/source/browse/trunk/data/global/excel/MagicSuffix.txt https://code.google .com / p / d2spe / source / browse / trunk / data / global / excel / MagicPrefix.txt

有什么好的數據結構可以根據詞綴級別有效地訪問前綴/后綴組?

目前,我正在考慮僅靜態生成分組並擁有一個巨大的查找表,但是將它們存儲在一個數據結構中會更好得多,因為該數據結構需要輸入affixLevel,項目類型和該項目中已經存在的詞綴列表。 該函數本質上將返回一組可以選擇的有效詞綴。

查找所需前綴/后綴的最簡單方法可能是簡單地為要過濾的所有屬性創建前綴和后綴列表以及單獨的列表。

例如:

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()函數中即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM