본문 바로가기

TIL(Today I Learned)/오늘 무엇을 배웠을까

TIL(Today I Learned) - 62

오늘의 TIL (Today I Learned)


1. 리팩토링 및 스킬 시스템 개선

  • 기존의 스킬 시스템객체지향적 구조로 리팩토링했습니다.
  • 스킬의 기본 클래스인 BaseSkill을 설계하고, 이를 상속받는 ActiveSkill, BuffSkill, PassiveSkill로 나누어 구체화했습니다.
  • 각 스킬 클래스에서 GetSkillEffect를 통해 스킬 효과 객체를 생성하고, 이를 SkillEffectManager에 전달하여 이펙트 및 효과를 처리하도록 개선했습니다.

2. 스킬 클래스별 기능 세분화

  • ActiveSkill: 즉시 발동하는 스킬로, 마나 소모 및 쿨다운이 존재합니다.
  • BuffSkill: 일정 시간 동안 버프 효과를 적용하는 스킬입니다.
  • PassiveSkill: 전투 중 조건에 따라 자동 발동되며, 쿨다운이나 주기 조건에 따라 효과를 발동합니다.

3. 스킬 이펙트 시스템 수정

  • SkillEffectManager가 스킬의 타입에 따라 다음과 같은 이펙트를 처리하도록 수정했습니다.
    • OnPlayer: 플레이어의 무기 위치에서 이펙트를 생성.
    • OnMapCenter: 특정 위치에 범위형 이펙트를 생성.

4. 전투 상태 처리

  • BattleManager를 통해 전투 시작전투 종료를 관리했습니다.
    • OnBattleStart: 전투 시작 시 스킬의 상태를 초기화.
    • OnBattleEnd: 전투 종료 시 스킬의 발동 상태를 리셋하여 재사용 가능하도록 처리.

5. 7개의 스킬 구현

기존 스킬 데이터를 바탕으로 다음과 같이 7개의 스킬을 새롭게 구현했습니다:

  1. 불꽃베기 (FlameSlashSkill) - 액티브 스킬
    • 범위 내 적에게 즉시 데미지 (1~2회 공격).
  2. 수라 번개 베기 (ThunderSlashSkill) - 액티브 스킬
    • 범위 내 다수의 적에게 번개처럼 데미지.
  3. 불의 검 (FireSwordSkill) - 버프 스킬
    • 10초간 전체 공격력 증가.
  4. 마나의 축복 (ManaBlessingSkill) - 버프 스킬
    • 마나 회복 효과 제공.
  5. 고속 이동 (SpeedBoostSkill) - 버프 스킬
    • 10초간 이동 속도 증가.
  6. 타오르는 검 (BurningSwordSkill) - 패시브 스킬
    • 전투 중 5초마다 전체 공격력 증가.
    • BattleManager의 전투 상태와 연동.
  7. 괴력난신 (OverpowerSkill) - 패시브 스킬
    • 전투 시작 후 20초 뒤 한 번만 발동하여 공격력 증가.
    • 전투 종료 시 상태 초기화.

6. 문제 해결 과정

  • IFusableIEnhanceable 인터페이스를 통해 강화 시스템스택 시스템을 통합 관리했습니다.
  • SkillEffectManager의 TriggerEffect 메서드를 2개의 매개변수로 수정하고 이펙트 처리를 스킬 클래스와 연동시켰습니다.
  • BattleManager 이벤트를 스킬 클래스에서 구독하여 전투 시작/종료 시 스킬 상태를 초기화하도록 수정했습니다.

오늘 배운 점

  • 리팩토링 과정에서 구조를 세분화하고 유지보수확장성을 고려해야 한다는 점을 다시 한번 느꼈습니다.
  • 스킬 시스템을 객체지향적으로 개선하면서 코드 재사용성확장성이 크게 향상되었습니다.
  • 이벤트 시스템을 활용하면 전투 상태에 따라 스킬을 유연하게 관리할 수 있음을 배웠습니다.

'TIL(Today I Learned) > 오늘 무엇을 배웠을까' 카테고리의 다른 글

TIL(Today I Learned) - 64  (0) 2024.12.19
TIL(Today I Learned) - 63  (0) 2024.12.18
TIL(Today I Learned) - 61  (0) 2024.12.16
TIL(Today I Learned) - 60  (1) 2024.12.13
TIL(Today I Learned) - 59  (0) 2024.12.12