🎮 프로젝트 소개
🖥️ 개발 기간
🖥️ 깃허브 구성
🖥️ 사용된 기술 소개
🤝 팀원 소개
✍️ Figma 링크
👨👩👧👦 Team Notion 링크
✍️ 기획서 링크
✍️ 담당 업무 로드맵 링크
✍️ QA 테스트
| 게임명 | E.M.I.L.E. |
|---|---|
| 장르 | 디스토피아적 사이버펑크 세계관을 배경으로 한 2D 플랫폼 액션 게임 |
| 동작 환경 및 운영체제 | PC, Window |
| 개발 게임 엔진 | Unity 2022.3.17f1 |
| 사용언어 및 IDE | C#, Visual Studio 2022 |
| 버전 관리 | Github |
| 개발 기간 | 2025.09.01 ~ 2025.09.05 |
📜 목차로 돌아가기
- 프로젝트 주제 선정 및 범위 설정
- 레퍼런스 게임 분석 및 핵심 메커니즘 파악
- 개발 일정 및 역할 분담
- 기본 시스템 구현(씬/코드/폴더 분리)
- 캐릭터 움직임/점프/벽잡기 개발
- 맵 구현
- 몬스터 패턴 제작 및 구현
- 총알 발사 및 교체 구현
- 리팩토링 및 각각의 코드 통합
- 오류 수정 및 피드백
- 오류 수정 및 마무리
- 발표 PPT 제작
- 최종 발표 준비 및 시연
📜 목차로 돌아가기
- master (root)
- develop
- feat/player
- feat/attack
- feat/map
- feat/monster
- feat/AsynLoadScene
- origin
- origin/Manager
- develop
📜 목차로 돌아가기
- 디자인 패턴 : 상태 패턴 - 애니메이션/행동 전환 관리, 싱글톤 - 플레이어, 게임 매니저 등 - Addressables : Key/Label 분류, 사전 로딩 -> 빠른 불러오기 - 비동기 씬 로드 : 로딩 끊김 방지, 필수 오브젝트 사전 로드 - SO(ScriptableObject) : 공용 데이터 분리 가능, 메모리 효율 높아짐 - 오브젝트 풀링 : 빈번한 생성/파괴 최소화 가능, 성능 최적화 - PreLoad : 게임 시작 시 미리 로드되고, 캐시(Dictionary) 저장 후 사용됨
📜 목차로 돌아가기
- 리팩토링 + 구조 통합 과정 문제
- 원인 : Addressable 기반 코드 활용 미숙 + 탄 수는
Dictionary<BulletData, int>로 관리했는데,currentBullet을 바꾸는 시점과 Dictionary에서 조회하는 시점이 달라서 탄 수가 안 바뀌거나 고정된 값만 나옴 - 문제 흐름
- 리팩토링 : 기존 Attack 클래스가 플레이어 전용 + 총알 관리까지 맡고 있어 재사용성/독립성이 떨어짐. →
AttackBase/PlayerAttack으로 분리. - 연동 문제 : Player 코드에서 사용할 수 있도록
MonoBehaviour를 제거 → Inspector 연결 불가, Null 에러 다수 발생. - Addressable 난항 :
BulletDataScriptableObject 불러오는 순서 꼬임 + 탄 수(Dictionary)와 현재 총알(currentBullet) 불일치 문제 → 총알 종류를 변경해도 총알 개수가 고정됨 or 특정 총알만 발사되는 등의 문제 발생
- 리팩토링 : 기존 Attack 클래스가 플레이어 전용 + 총알 관리까지 맡고 있어 재사용성/독립성이 떨어짐. →
- 해결 방법
- Player가 객체를 직접 new로 생성해서 데이터를 코드에서 전달
- Dictionary로 남은 탄 수 저장/복원
Addressable비동기 로딩이 끝난 후에currentBullet갱신 및 초기 세팅 함수 호출
- 결과 : 성공적인 리팩토링 및 통합이 이루어졌고, 총알 관련 문제도 모두 해결함.
- 플레이어의 총알과 보스 사이의 충돌 발생x
- 원인 : 보스의 경우 콜라이더의 회전이 필요하여 하위에 콜라이더 전용 오브젝트를 구분하였기에 발생한 것으로 추정
- 사실 수집 : 충돌은 실행되지만
IDamageable객체가Null로 확인됨, 터렛과는 정상적으로 상호작용이 작동함 - 결과 : 기존 캡슐콜라이더를 박스 콜라이더로 변경하고 최상위 오브젝트에 컴포지트 콜라이더를 추가하여 정상적으로 작동하는 것을 확인함
- 플레이어의 다중 중복 상태
- 원인 : 움직임,벽잡기,착지의 중복된 값이 동시에 일어나게 되어
StateMachine값에 의도치 않은 값이 들어가게 됨 - 조치 : 추론한 원인을 토대로 벽잡기를 바닥에 닿지 않은 시점으로 한정함
- 결과 : 벽잡기를 바닥에 닿지 않은 시점으로 한정하여 구현,정상 작동을 확인함
- HUD 초기 탄약 표시 오류(초기 탄약 0 0 0 표시)
- 원인 : 비동기 로딩 시 초기화 타이밍 어긋남, 초기화 시점 불일치, HUD 이벤트 누락
- 조치 : HUD 연결 시점 조정, 현재 슬롯·탄약 정보 재전송
- 결과 : 씬 로드 후 HUD가 즉시 최대 탄약으로 갱신
📜 목차로 돌아가기
| 직책 | 이름 | 담당 업무 | 개인 블로그 | 개인 깃허브 |
|---|---|---|---|---|
| 개발 팀장 | 이명은 | 공격 구현 | https://blog.naver.com/ralralra1dlq | https://github.com/myeoungeun |
| 개발 팀원 | 허윤 | 플레이어 담당 | https://velog.io/@dev_heoyoon/posts | https://github.com/parechae123?tab=repositories |
| 개발 팀원 | 김남진 | 몬스터 담당 | https://velog.io/@jinnam/posts | https://github.com/UserJin |
| 개발 팀원 | 오승엽 | 맵/UI 담당 | https://github.com/Cae1umBlue | |
| 기획 팀원 | 박용규 | 기획 담당 | https://unity-11-til.tistory.com/ | https://github.com/dragonk1631/ |
| 기획 팀원 | 박진우 | 기획 담당 | https://zjaxjrhkd.tistory.com/ | https://github.com/zjaxjrhkd |
📜 목차로 돌아가기

