DOT Defense

타워 업그레이드 시스템 만들기

simplidevelo 2025. 6. 10. 22:29

디펜스 게임은 기본적으로 적이 점점 강해지므로, 플레이어도 그에 맞춰 강화할 수 있는 시스템이 필요하다.
기본 스탯 업그레이드부터 구성했다.

 

  • 공격력 증가
  • 공격속도 증가
  • 사거리 증가

세 가지 중 어떤 걸 먼저 올릴지는 플레이어가 선택할 수 있도록 하고, 밸런스를 맞추는 것이 중요하다.

UI 구성과 비용 로직

버튼 3개를 만들고, 각각의 스탯을 강화할 수 있게 연결했다.
강화에는 골드가 필요하고, 업그레이드할수록 비용이 점점 늘어나도록 한다.

ChatGPT에게 “업그레이드마다 비용이 증가하는 로직”을 요청하여 간단히 작성했다.
비용이 늘어나는 방식은 baseCost에 일정 계수를 곱하는 방식을 제안 받았으나
난 조금 더 직관적으로, +10씩 증가하는 방식을 채택했다.

public void UpgradeDamage()
{
    int cost = GetEffectiveCost(damageUpgradeCost);
    if (gold >= cost)
    {
        gold -= cost;
        attackDamage += 1;
        damageUpgradeCost += 10;
        UpdateUI();
    }
}
 

 

비용은 GetEffectiveCost()로 계산되는데,
향후 게임 컨셉인 스킬트리를 고려하여 스킬 효과에 따라 할인율이 적용되도록 만들었다.

(여기서 만들었다는건 GPT에게 향후 이런 스킬도 적용할 수 있도록 만들어 놓으라고 하는 것이다..ㅎㅎ)

 

 

타워 스탯을 볼 수 있도록 화면 아래에 현스탯을 표시하고, 업그레이드를 하면 스탯 숫자가 UI에 즉시 반영되도록 한다.
공격력은 “기본 + 보너스” 형태로 표시했는데, 보너스는 향후 만들 스킬트리를 고려한 것이다.
사거리는 범위 원으로 표시되는데, 업그레이드 시 바로 갱신되도록 했다.

 

 

ChatGPT와 작업하면서 “설계는 직접하고, GPT를 코딩 어시스턴트로 쓰는 방식”에 대한 감각이 생기기 시작했던 것 같다.