[진행중]프로젝트 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. 특별 이벤트 혹은 버프를 통한 일시적 획득률 증가 기능 (광고연동 등)