Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

모모도라:달 아래의 진혼곡 모작

🎮 프로젝트 소개

WinAPI 기반으로 제작한 2D 액션 메트로베니아 모작 프로젝트입니다.

게임 엔진을 사용하지 않고 WinAPI 환경에서 플레이어 이동, 점프, 공격, 차징 공격, 몬스터 전투, 인벤토리, Save / Load 시스템을 직접 구현하였습니다.

상태 기반 구조를 활용하여 플레이어의 다양한 행동을 관리하였으며, Hit Stop과 이펙트를 적용하여 2D 액션 게임의 타격감을 표현하고자 하였습니다.


📅 개발 기간

2025.06.19~2025.07.01 (약 2주)


👨‍💻 개발 인원

1명


🛠 개발 환경

Language

  • C,C++

SDK

  • WindowsAPI(WinAPI)

Tools

  • Visual Studio 2019

📌 담당 구현 기능

  • 플레이어 이동 및 액션 시스템
  • 상태 기반 전투 시스템
  • 콤보 공격 및 차징 공격 시스템
  • 활 공격 및 투사체 시스템
  • 몬스터 AI 및 보스 전투 시스템
  • Hit Stop / 카메라 쉐이킹 전투 연출
  • 인벤토리 및 아이템 사용 시스템
  • 파일 입출력 기반 Save / Load 시스템
  • 맵 에디터 및 데이터 파싱 시스템
  • 세이브 포인트 / 이벤트 진행 상태 저장

🎥 시연 영상

[YouTube 링크]


📷 프로젝트 이미지

타이틀화면 인게임 스크린샷1
인게임 스크린샷2 인게임 스크린샷3


엔딩 화면


⭐ 주요 구현 사항

1. 상태 기반 플레이어 액션 및 전투 시스템

개요

플레이어의 이동, 점프, 공격, 활 공격, 회피 등 다양한 액션을 상태 기반으로 관리하여 2D 액션 전투 시스템을 구현하였습니다.

주요 내용

플레이어의 행동을 IDLE, WALK, ATTACK, JUMP, BOW, ROLL, HIT, SAVE, TALK 등 상태로 분리하여 관리하였습니다.

각 상태에 따라 입력 처리와 애니메이션이 전환되도록 구성하였으며, 공격 상태에서는 무기 충돌체를 활성화하여 적과의 전투 판정이 이루어지도록 구현하였습니다.

2. 콤보 및 차징 공격 시스템

콤보 차징

개요

연속 공격과 차징 공격을 구현하여 전투의 조작감과 타격감을 강화하였습니다.

주요 내용

공격 입력 시간 간격을 기준으로 콤보를 관리하였으며, 일정 시간 이상 공격이 이어지지 않으면 콤보가 초기화되도록 구현하였습니다.

일반 공격은 최대 3단 콤보로 구성하였고, 각 콤보 단계에 따라 다른 공격 상태와 애니메이션이 실행되도록 처리하였습니다.

활 공격은 차징 시간에 따라 강화되도록 구현하였으며, 최대 차징 시 여러 방향으로 화살을 발사하여 일반 공격과 다른 전투 흐름을 만들었습니다.


🔧 Trouble Shooting - VR 콘텐츠 최적화

🔴 ISSUE

VR 생존 게임 프로젝트 진행 중 대규모 맵과 다수의 상호작용 오브젝트를 배치하면서 심각한 성능 저하가 발생하였습니다.

VR 기기에서 평균 프레임이 20~30FPS 수준까지 하락하였고, 이는 VR 멀미를 유발할 수 있는 수준이었습니다.

원인

원인을 분석한 결과, 맵에 배치된 수많은 오브젝트가 씬 로딩 시점부터 활성화되어 렌더링 및 메모리를 지속적으로 점유하고 있음을 확인하였습니다.

해결

초기에는 모든 오브젝트를 Unity Scene에 직접 배치하는 구조를 사용하였습니다.

하지만 맵 규모가 커질수록 오브젝트 수가 증가하며 성능 문제가 발생하였고, 이를 해결하기 위해 오브젝트 배치 정보를 데이터로 관리하는 구조를 도입하였습니다.

위치(Position), 회전(Rotation), 크기(Scale) 정보를 JSON 형태로 저장하고, 게임 실행 시 필요한 시점에 오브젝트를 생성하도록 구조를 변경하였습니다.

이를 위해 Unity JSON 직렬화 및 파싱 기능을 학습하여 데이터 기반 오브젝트 배치 시스템을 구현하였습니다.

결과

Before

🔴 평균 FPS : 20 ~ 30 FPS

After

🟢 평균 FPS : 40 ~ 50 FPS

데이터 기반 오브젝트 배치 시스템 적용 후 평균 프레임이 약 2배 향상되었습니다.

또한 배치 정보를 데이터로 관리하게 되면서 레벨 수정 및 유지보수가 수월해졌고, 향후 맵 확장에도 유연하게 대응할 수 있는 구조를 구축할 수 있었습니다.


💡 느낀 점

이번 경험을 통해 최적화는 개발 후반에 해결하는 문제가 아니라 설계 단계부터 고려해야 하는 요소라는 점을 배울 수 있었습니다.

또한 단순히 성능 문제를 해결하는 것에 그치지 않고, 데이터 기반 구조를 도입하여 성능과 유지보수성을 함께 개선할 수 있다는 점을 경험하였습니다.

이 경험을 계기로 VR 콘텐츠 최적화에 관심을 갖게 되었고, 이후 「 VR 기기를 활용한 3D 콘텐츠 최적화 방안 연구」논문을 작성하여 KCI 학술지 게재라는 성과로 이어질 수 있었습니다.


🔗 링크

About

2025.06.19~2025.07.01

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages