
| 항목 | 내용 |
|---|---|
| 프로젝트명 | ArcaneOdyssey: 3D 로그라이크 액션 게임 |
| 개발 기간 | 2024.02 ~ 2024.04 |
| 개발 인원 | 1명 |
| 담당 역할 | Unity 클라이언트 개발 |
| 사용 기술 | Unity, C#, Cinemachine, NavMeshAgent, Addressables, Object Pool, TextMeshPro |
| 플랫폼 | PC |
| GitHub | **https://github.com/0chotona/ArcaneOdyssey** |
| 시연 영상 | https://www.youtube.com/watch?v=KUfLb7VX3j8 |
| 블로그 링크 | https://pika-dev.tistory.com/6 |
ArcaneOdyssey는 플레이어가 몰려오는 적을 처치하며 경험치를 획득하고, 스킬과 패시브를 강화해 스테이지를 진행하는 3D 로그라이크 액션 게임입니다.
플레이어 이동, 캐릭터별 기본 공격과 액티브 스킬, 자동 공격 스킬, 버프 성장, 적 스폰 패턴, 아이템 드롭, UI 갱신, CSV 기반 데이터 로딩 구조를 구현했습니다.
| 기능 | 설명 |
|---|---|
| 플레이어 조작 | 키보드/조이스틱 입력을 공통 InputController 구조로 처리하고 CharacterController 기반 이동 구현 |
| 캐릭터/스킬 시스템 | 캐릭터별 기본 공격, E/R 액티브 스킬, 패시브 스킬을 인터페이스 기반으로 연결 |
| 전투 시스템 | 공격 판정, 치명타, 투사체, 범위 공격, 지속 피해, 보호막, 빙결/슬로우/에어본 처리 |
| 성장 시스템 | 경험치 획득, 레벨업 선택지, 스킬/버프 강화, 최대 레벨 및 진화 조건 처리 |
| 데이터 관리 | CSV TextAsset를 파싱해 스킬, 캐릭터, 몬스터 데이터를 enum 기반 Dictionary/List로 관리 |
| 적 스폰/AI | 시간대별 웨이브, 원형 스폰 패턴, 보스 스폰, NavMeshAgent 기반 플레이어 추적 |
| 아이템 시스템 | 몬스터 사망 시 보석/업그레이드 아이템 드롭, 자석 아이템, 경험치 획득량 버프 처리 |
| UI/사운드 | 체력/쉴드/경험치/쿨타임 UI, 레벨업 선택창, 결과창, 타입별 사운드 재생 구조 구현 |
기능 1. CSV 기반 데이터 로딩
문제 상황: 스킬, 캐릭터, 몬스터 데이터가 계속 추가될 수 있어 코드에 직접 수치를 작성하면 밸런싱과 유지보수가 어려웠습니다.
해결 방법: CSVReader에서 TextAsset CSV를 읽고, SkillData, CharSkillData, CharacterData, EnemyData가 각각 데이터를 변환하도록 분리했습니다.
구현 포인트: 스킬/몬스터 타입을 string이 아닌 enum으로 관리, ID 기준 스킬 레벨별 스탯을 Dictionary로 묶음, DataHandler와 SkillManager에 데이터 전달.
성과: CSV 수정만으로 스킬 수치, 캐릭터 정보, 몬스터 스탯을 조정할 수 있어 밸런싱 작업 범위를 줄였습니다.