🗓️ 오늘 하루 일정

✅ 오전

  • 09:00 ~ 11:30 : 텍스트 RPG 기능 개발 (던전 기능 설계 및 레벨업 시스템 구상)
  • 11:30 ~ 13:00 : C# 체크리스트 강의 Day 3 수강
    • 주제: 메서드
    • 주요 내용: 메서드 선언과 호출, 매개변수/반환값, 연산자 실습

🍽️ 점심시간

  • 13:00 ~ 14:00 : 점심시간

✅ 오후

  • 14:00 ~ 18:00 : 텍스트 RPG 기능 구현
    • 던전 시스템 완성 (난이도/보상/실패 확률 등)
    • 클리어 횟수 기반 레벨업 구현
    • 장착 아이템 능력치 반영 문제 해결
    • 저장/불러오기 시 능력치 정상 반영

🍽️ 저녁시간

  • 18:00 ~ 19:00 : 저녁시간

✅ 저녁

  • 19:00 ~ 20:30 : 오늘 작성한 코드 복습 및 구조 점검
  • 20:30 ~ 21:00 : TIL 내용 정리 및 작성

✅ 오늘 학습 키워드

  • 텍스트 RPG 던전 시스템 구현
  • 레벨업 시스템 설계 및 구현
  • 난이도에 따른 전투 결과 처리
  • 경험치 계산 및 능력치 반영
  • 아이템 능력치 저장/불러오기 버그 수정
  • C# 메서드 선언과 호출
  • 매개변수와 반환값
  • 산술/관계/논리 연산자 실습
  • 코드 구조 복습 및 정리

✅ 오늘 학습 한 내용을 나만의 언어로 정리하기

오늘은 텍스트 RPG의 핵심 기능인 던전 시스템과 레벨업 로직을 본격적으로 구현했다. 난이도에 따라 전투 결과가 달라지고, 클리어 여부에 따라 경험치와 보상을 획득할 수 있도록 설계했다.

레벨업 시스템을 만들었고, 능력치도 구현했다.

저장/불러오기 기능에서도 중요한 이슈가 하나 있었는데, 장착한 아이템의 능력치가 불러오기 후 반영되지 않는 문제였다. 꽤 골치 아픈 버그였지만, 결국 장비 장착 로직과 플레이어 능력치 반영 구조를 다시 살펴보며 해결할 수 있었다. 버그가 사라지는 순간, 굉장히 굉장히.. 뿌듯했다.

오전 강의에서는 메서드의 기본 구조와 개념을 다시 짚었고, 실습 문제를 통해 다양한 연산자를 복습했다. 실제 게임 시스템 안에서 메서드를 설계하고 나니 얼마나 중요한 기초인지 느낄 수 있었다.

저녁 시간에는 오늘 만든 코드를 차분히 복습하면서 구조적으로 더 깔끔하게 만들 수 있는 방법도 고민했다. 하루가 끝날 땐, 나의 실력이 1레벨 올라간 기분이었다. 😊


🧩 학습하며 겪었던 문제점 & 에러

1. 저장 후 불러올 때 장착 아이템 능력치가 반영되지 않음

  • 문제정의
  • 아이템을 장착한 상태로 저장하고 나서 불러오면, 장비는 잘 표시되는데 능력치(공격력/방어력)에 반영되지 않는 문제가 발생함.
  • 시도한 방법
    • LoadPlayer()에서 장착 상태만 복원하고, 능력치 재계산을 따로 하지 않은 상태였음.
    • 처음엔 장비가 잘 불러와졌기에 기능상 문제 없다고 착각했음.
  • 해결 방법 (코드 포함)
  • 장착 아이템의 능력치를 적용하는 메서드를 새로 만들어, 불러온 후 적용하도록 수정함.
public void LoadPlayer()
{
    // 저장된 값 로드
    player.Level = data.Level;
    player.Exp = data.Exp;
    // ...

    // 장비 복원
    foreach (var item in data.EquippedItems)
    {
        player.EquipItem(item); // 착용만 했고 능력치 반영이 안 됐었음
    }

    // ✅ 능력치 반영 추가
    player.ApplyEquippedStats();
}

// 새로 만든 메서드
public void ApplyEquippedStats()
{
    BaseAttack = originalBaseAttack;
    BaseDefense = originalBaseDefense;

    foreach (var item in EquippedItems)
    {
        BaseAttack += item.Attack;
        BaseDefense += item.Defense;
    }
}
  • 새롭게 알게 된 점
  • "장착"이라는 상태만 저장하는 것이 아니라, 그 상태가 게임 시스템에 어떤 영향을 주는지까지 고려한 로직이 필요하다는 걸 알게됨.
  • 다시 만나게 된다면
  • 불러온 데이터가 정상 동작하는지 확인할 때 단순히 UI만 보지 말고 값이 정확히 적용되는지 출력해보는 습관을 들이자.

2. 장비 장착 상태에서는 정상인데 +능력치만 사라진 현상

  • 문제정의
  • 저장된 캐릭터를 불러오면 장비창과 인벤토리엔 아이템이 정상적으로 표시되지만, 플레이어 능력치에 +Attack, +Defense 보정치가 반영되지 않음.
  • 시도한 방법
  • 장비가 눈에 보이는 걸로 착용 완료라고 생각했지만, 능력치 수치가 기본값으로만 출력되었고, 로그 찍어보며 확인.
  • 해결 방법 (코드 포함)
  • EquipItem()과 LoadPlayer() 호출 흐름을 점검하여, 장착 상태를 적용한 직후 능력치를 반영하도록 수정함.
public void EquipItem(Item item)
{
    if (!EquippedItems.Contains(item))
        EquippedItems.Add(item);

    // 능력치 반영
    BaseAttack += item.Attack;
    BaseDefense += item.Defense;
}

또는 LoadPlayer()에서 일괄 계산하는 방식으로 ApplyEquippedStats()처럼 구성함.

  • 새롭게 알게 된 점
  • 장비 시스템은 UI와 데이터, 기능(능력치 반영)이 완전히 분리되어 있으면 버그가 생기기 쉽다는 걸 느낌.
  • 다시 만나게 된다면
  • 장비 착용 → 능력치 반영 → 화면 출력까지의 흐름을 항상 하나의 덩어리로 인식하자.

📝 메모

오늘은 하루 종일 텍스트 RPG의 구조를 다지고 기능을 쌓아가는 데 집중했다. 특히 던전과 레벨업 시스템을 직접 설계하고 구현하면서, 내가 지금 배우고 있는 C#과 게임 개발 지식들이 하나로 연결되는 느낌이 들었다.

하나하나 해결해나가면서 느낀 점은 처음엔 복잡해 보이던 문제들도 디버깅하고 출력해보며 하나씩 분석하니 결국 실마리가 풀렸다. 그럴때의 쾌감은 이루 말할 수 없다..ㅎㅎ 이래서 개발자 한다고 생각한다!

무엇보다 오늘은 "장비 능력치가 반영되지 않는 문제"를 해결하면서 꽤 큰 성취감을 느꼈다. 단순히 코드가 돌아가는 걸 넘어서, 게임 시스템 전체의 흐름을 고민하게 되었고, 그게 바로 개발자다운 성장이라는 생각이 들었다.

코드를 복습하며 내가 만든 로직을 스스로 설명할 수 있게 되니까 조금은 더 자신감도 생겼다.

하루를 마무리하며, 오늘도 잘 해냈다 하루하루 화이팅!!!

2일간 개발한 텍스트 RPG