오늘의 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개의 스킬을 새롭게 구현했습니다:
- 불꽃베기 (FlameSlashSkill) - 액티브 스킬
- 범위 내 적에게 즉시 데미지 (1~2회 공격).
- 수라 번개 베기 (ThunderSlashSkill) - 액티브 스킬
- 범위 내 다수의 적에게 번개처럼 데미지.
- 불의 검 (FireSwordSkill) - 버프 스킬
- 10초간 전체 공격력 증가.
- 마나의 축복 (ManaBlessingSkill) - 버프 스킬
- 마나 회복 효과 제공.
- 고속 이동 (SpeedBoostSkill) - 버프 스킬
- 10초간 이동 속도 증가.
- 타오르는 검 (BurningSwordSkill) - 패시브 스킬
- 전투 중 5초마다 전체 공격력 증가.
- BattleManager의 전투 상태와 연동.
- 괴력난신 (OverpowerSkill) - 패시브 스킬
- 전투 시작 후 20초 뒤 한 번만 발동하여 공격력 증가.
- 전투 종료 시 상태 초기화.
6. 문제 해결 과정
- IFusable 및 IEnhanceable 인터페이스를 통해 강화 시스템과 스택 시스템을 통합 관리했습니다.
- 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 |