게임 저작권 확인 후 스팀 라이브러리 출시
프로젝트 개요
1.1 PREVIEW
개발 시스템 구성
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.1 구조 설계
3.2 기능 구현
3.3 개선 사항
결론 및 향후 개발 계획
이 프로젝트는 Unity를 기반으로 제작된 로그라이크 스타일의 2D 게임으로, 전투, 강화, 퀘스트, 인벤토리, 스탯, 포탈 이동, 세이브 및 로드 등의 시스템을 통합하여 제작되었다.
플레이어는 키보드를 이용해 다양한 스킬과 상호작용을 통해 성장하고, 적을 처치하며 게임을 진행한다.
다양한 화면 비율에서도 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 에서 크리티컬 시 데미지 텍스트 컬러·사이즈 업 연출 |