1. 프로젝트 개요

AO1.png

항목 내용
프로젝트명 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

2. 게임 소개

ArcaneOdyssey는 플레이어가 몰려오는 적을 처치하며 경험치를 획득하고, 스킬과 패시브를 강화해 스테이지를 진행하는 3D 로그라이크 액션 게임입니다.

플레이어 이동, 캐릭터별 기본 공격과 액티브 스킬, 자동 공격 스킬, 버프 성장, 적 스폰 패턴, 아이템 드롭, UI 갱신, CSV 기반 데이터 로딩 구조를 구현했습니다.


3. 담당 기능 요약

기능 설명
플레이어 조작 키보드/조이스틱 입력을 공통 InputController 구조로 처리하고 CharacterController 기반 이동 구현
캐릭터/스킬 시스템 캐릭터별 기본 공격, E/R 액티브 스킬, 패시브 스킬을 인터페이스 기반으로 연결
전투 시스템 공격 판정, 치명타, 투사체, 범위 공격, 지속 피해, 보호막, 빙결/슬로우/에어본 처리
성장 시스템 경험치 획득, 레벨업 선택지, 스킬/버프 강화, 최대 레벨 및 진화 조건 처리
데이터 관리 CSV TextAsset를 파싱해 스킬, 캐릭터, 몬스터 데이터를 enum 기반 Dictionary/List로 관리
적 스폰/AI 시간대별 웨이브, 원형 스폰 패턴, 보스 스폰, NavMeshAgent 기반 플레이어 추적
아이템 시스템 몬스터 사망 시 보석/업그레이드 아이템 드롭, 자석 아이템, 경험치 획득량 버프 처리
UI/사운드 체력/쉴드/경험치/쿨타임 UI, 레벨업 선택창, 결과창, 타입별 사운드 재생 구조 구현

4. 주요 구현 상세

기능 1. CSV 기반 데이터 로딩

문제 상황: 스킬, 캐릭터, 몬스터 데이터가 계속 추가될 수 있어 코드에 직접 수치를 작성하면 밸런싱과 유지보수가 어려웠습니다.

해결 방법: CSVReader에서 TextAsset CSV를 읽고, SkillData, CharSkillData, CharacterData, EnemyData가 각각 데이터를 변환하도록 분리했습니다.

구현 포인트: 스킬/몬스터 타입을 string이 아닌 enum으로 관리, ID 기준 스킬 레벨별 스탯을 Dictionary로 묶음, DataHandler와 SkillManager에 데이터 전달.

성과: CSV 수정만으로 스킬 수치, 캐릭터 정보, 몬스터 스탯을 조정할 수 있어 밸런싱 작업 범위를 줄였습니다.