SamuraiRPG


목차

  1. 프로젝트 개요

    1.1 PREVIEW

  2. 개발 시스템 구성

    2.1 플레이어 시스템

    2.2 스탯 시스템

    2.3 레벨업 및 경험치

    2.4 퀘스트 시스템

    2.5 인벤토리 및 아이템

    2.6 상점 시스템

    2.7 강화 시스템

    2.8 버프 시스템

    2.9 포탈 및 씬 전환

    2.10 몬스터 자동 리젠

    2.11 세이브 및 로드 시스템

    2.12 크리티컬 시스템

    2.13 하이라이트 & 차별점

  3. 코드 리뷰

    3.1 구조 설계

    3.2 기능 구현

    3.3 개선 사항

  4. 결론 및 향후 개발 계획


1. 프로젝트 개요

이 프로젝트는 Unity를 기반으로 제작된 로그라이크 스타일의 2D 게임으로, 전투, 강화, 퀘스트, 인벤토리, 스탯, 포탈 이동, 세이브 및 로드 등의 시스템을 통합하여 제작되었다.

플레이어는 키보드를 이용해 다양한 스킬과 상호작용을 통해 성장하고, 적을 처치하며 게임을 진행한다.


1.1 PREVIEW(테스트 해상도 1920 * 1080)

다양한 화면 비율에서도 UI 왜곡 방지세팅 ( 기본값 )

기능 (Feature) 차별점 (Highlight)
1. 이동·점프·대시 & 잔상 이펙트 - Player.cs에서 물리 기반 이동/점프/대시 통합- 대시 시 0.05초 간격으로 잔상(prefab) 생성, 0.5초간 페이드 아웃- 투명도·알파 감소로 자연스러운 궤적 연출
2. 콤보 공격 & 히트박스 - PlayerAttack.cs 콤보 스텝(1→2→3→1) 자동 순환- 애니메이션 이벤트로 히트박스 토글 → BasicHitbox/SkillHitbox 로직 분리
3. 스킬 & VFX - Q키 단일·W키 광역 스킬 (MP 및 쿨타임 관리)- 광역 스킬 시 DamageAllEnemies() 와 CameraShake 연동- AfterImage 잔상과 파티클 이펙트 동시 연출
4. 카메라 셰이크 - CameraShake 클래스 분리, 인스턴스 접근 용이- 스킬·폭발 등 강도(intensity), 지속시간(length) 조절 가능- LateUpdate()에서 랜덤 오프셋 적용
5. 스탯 UI & 실시간 반영 - PlayerStat.cs 이벤트(OnStatChanged) 발행 → StatUI 구독- 슬라이더·텍스트 애니메이션(카운팅 업) 지원- 레벨업 보너스 파티클 효과
6. 경험치 & 레벨업 시스템 - PlayerLevel.cs 경험치 공식: baseExp * growthFactor^(level-1)- 자동 레벨업 루프 + HP/MP 풀 회복- 레벨업 시 UI 슬라이더 부드럽게 채워지는 트윈 애니메이션
7. 퀘스트 시스템 - SO(QuestData) 기반 퀘스트 정의(목표·대사·보상)- Quest.cs: 문자열 비교 → 완료 처리 → 보상 지급- NPC 대화 → 옵션 패널 → 수락/거절 UI
**8. 인벤토리 & 툴팁
인벤토리 관련 학술 논문 :** - InventoryUI 슬롯 동적 생성 + 팝 애니메이션- TooltipUI에서 ★별 강화 레벨 표시 + 강화 스탯 자동 나열- 커서 따라다니는 툴팁 패널
9. 상점 시스템 - ShopManager + ShopItemSlot으로 UI 모듈화- 대량 구매 팝업(수량 슬라이더) 지원- 인벤토리 동기화 구매 로직 (골드·공간 체크)
10. 강화 시스템 - UpgradeUI 드롭다운 부위 선택 → 강화 시도- GetSuccessRate() + Random.value 판정- 성공 시 파티클·사운드, 실패 시 골드만 차감
11. 버프 시스템 - BuffManager 단일 vs 제안된 다중(Dictionary<BuffType,Coroutine>) 구조- Coroutine 기반 타이머 UI, 아이콘 갱신- EXP·STR·DEX·SPD 등 5종 버프
12. 포탈 & 씬 전환 - PortalTrigger 충돌 감지 → PortalManager.OpenPortal(id)- PlayerPrefs에 스폰포인트 저장 → PlayerSpawnManager에서 복원- 페이드 인/아웃 연출
13. 몬스터 자동 리젠 - SpawnPoint에서 부족 수량만큼 주기적 Instantiate- onDeath 액션으로 리스트 정리→ 메모리 낭비 최소화- 스폰 파티클(먼지) 연출
14. 세이브 & 로드 - GameSaveManager JSON 직렬화(JsonUtility) → save.json 저장- 플레이어 위치·스탯·인벤토리 일괄 복원- 비동기 로드 제안(대규모 데이터 대응)
15. 크리티컬 시스템 - IsCriticalHit() 확률 vs GetCriticalMultiplier() 배율(1.8배)- Hitbox.cs에서 크리티컬 시 데미지 텍스트 컬러·사이즈 업 연출