[진행중]프로젝트 3D_Idle

4일차 - 아이템 및 골드 획득률 시스템 구현 (Part1)

네,가능합니다 2025. 1. 25. 03:02

1. 스탯 시스템 확장

 

1.1 새로운 스탯 추가

 

StatSystem에 GoldGain과 ItemGain 스탯을 추가. 이 스탯들은 강화는 불가하지만 VIP레벨 혹은 장비 또는 서버 이벤트를 통해 증가시킬 수 있습니다.

 

stats[StatType.GoldGain] = new StatData
{
    baseValue = 100,  // 기본 100% (1배)
    currentValue = 100,
    maxValue = -1,
    maxLevel = 0,     // 강화 불가
    upgradePrice = 0
};

stats[StatType.ItemGain] = new StatData
{
    baseValue = 100,  // 기본 100% (1배)
    currentValue = 100,
    maxValue = -1,
    maxLevel = 0,     // 강화 불가
    upgradePrice = 0
};

 

2. 드롭 시스템 개선

 

2.1 드롭 테이블 가중치 조정

 

DropTableData의 GetDrop 메서드를 수정하여 아이템 획득률에 따라 아이템의 드롭 가중치가 조정 되도록 구현했습니다. 

 

public List<ItemDrop> GetDrops(float itemMultiplier = 1f)
{
    var drops = new List<ItemDrop>();
    float totalWeight = 0f;

    // 아이템 획득률에 따라 아이템의 가중치 조정
    foreach (var entry in dropEntries)
    {
        float adjustedWeight = entry.weight;
        if (entry.dropType == DropType.Item)
        {
            // 아이템의 경우 itemMultiplier에 따라 가중치 증가
            adjustedWeight *= itemMultiplier;
        }
        totalWeight += adjustedWeight;
    }
    // ... 드롭 처리 로직
}

 

2.2 몬스터 드롭처리 

 

Monster 클래스의 DropItems 메서드에서 아이템과 골드 획득률을 적용하도록 수정했습니다.

 

private void DropItems()
{
    if (data.dropTable == null) return;

    float goldMultiplier = (float)Managers.Character.Player.Stats.GetStatValue(StatType.GoldGain) / 100f;
    float itemMultiplier = (float)Managers.Character.Player.Stats.GetStatValue(StatType.ItemGain) / 100f;

    var drops = data.dropTable.GetDrops(itemMultiplier);
    foreach (var drop in drops)
    {
        if (drop.IsCurrency && drop.CurrencyType == EnumTypes.CurrencyType.Gold)
        {
            // 골드 획득량 증가 적용
            BigInteger modifiedAmount = (BigInteger)(drop.Amount * goldMultiplier);
            Managers.Currency.AddCurrency(drop.CurrencyType, modifiedAmount);
        }
        // ... 아이템 드롭 처리
    }
}

 

3. 작동방식

 

1. 골드 획득량 (GoldGain)

 

  • 기본값: 100% (1배)
  • 드롭된 골드량에 배수로 적용
  • 예: 150%일 경우 골드 1.5배 획득

 

2. 아이템 획득률 (ItemGain)

 

  • 기본값: 100% (1배)
  • 드롭테이블의 아이템 가중치에 곱해져서 적용
  • 예시:
    • 기본 상태 (100%): 골드(60) vs 아이템(40) → 60% vs 40%
    • 아이템 획득률 150%: 골드(60) vs 아이템(60) → 50% vs 50%
    • 아이템 획득률 200%: 골드(60) vs 아이템(80) → 43% vs 57%

 

4. 향후 개선 사항

 

1. VIP 시스템 및 장비 시스템 연동

2. UI에서 현재 획득률 표시

3. 특별 이벤트 혹은 버프를 통한 일시적 획득률 증가 기능 (광고연동 등)