Skip to content

Repository files navigation

banner

목차











프로젝트 소개

👨‍👩‍👧‍👦 Team Notion 링크

image (19).png

게임명 E.M.I.L.E.
장르 디스토피아적 사이버펑크 세계관을 배경으로 한 2D 플랫폼 액션 게임
동작 환경 및 운영체제 PC, Window
개발 게임 엔진 Unity 2022.3.17f1
사용언어 및 IDE C#, Visual Studio 2022
버전 관리 Github
개발 기간 2025.09.01 ~ 2025.09.05

📜 목차로 돌아가기


개발 기간

📆 프로젝트 개발 일정

🗓️ 사전 기획 및 개발 (09/01 월)

  • 프로젝트 주제 선정 및 범위 설정
  • 레퍼런스 게임 분석 및 핵심 메커니즘 파악
  • 개발 일정 및 역할 분담
  • 기본 시스템 구현(씬/코드/폴더 분리)

🚀 기능 개발 (09/02 화 ~ 09/03 수)

  • 캐릭터 움직임/점프/벽잡기 개발
  • 맵 구현
  • 몬스터 패턴 제작 및 구현
  • 총알 발사 및 교체 구현

🧪 기능 통합 (9/04 목)

  • 리팩토링 및 각각의 코드 통합
  • 오류 수정 및 피드백

🏁 최종 완성 및 마무리 (09/05 금)

  • 오류 수정 및 마무리
  • 발표 PPT 제작
  • 최종 발표 준비 및 시연

📜 목차로 돌아가기


깃허브 구성

📁 GitHub Repository 구조

  • master (root)
    • develop
      • feat/player
      • feat/attack
      • feat/map
      • feat/monster
      • feat/AsynLoadScene
    • origin
      • origin/Manager

📜 목차로 돌아가기


사용된 기술 소개


- 디자인 패턴 : 상태 패턴 - 애니메이션/행동 전환 관리, 싱글톤 - 플레이어, 게임 매니저 등 - Addressables : Key/Label 분류, 사전 로딩 -> 빠른 불러오기 - 비동기 씬 로드 : 로딩 끊김 방지, 필수 오브젝트 사전 로드 - SO(ScriptableObject) : 공용 데이터 분리 가능, 메모리 효율 높아짐 - 오브젝트 풀링 : 빈번한 생성/파괴 최소화 가능, 성능 최적화 - PreLoad : 게임 시작 시 미리 로드되고, 캐시(Dictionary) 저장 후 사용됨

📜 목차로 돌아가기


트러블 슈팅과 해결 과정 소개

  1. 리팩토링 + 구조 통합 과정 문제
  • 원인 : Addressable 기반 코드 활용 미숙 + 탄 수는 Dictionary<BulletData, int>로 관리했는데, currentBullet을 바꾸는 시점과 Dictionary에서 조회하는 시점이 달라서 탄 수가 안 바뀌거나 고정된 값만 나옴
  • 문제 흐름
    1. 리팩토링 : 기존 Attack 클래스가 플레이어 전용 + 총알 관리까지 맡고 있어 재사용성/독립성이 떨어짐. → AttackBase / PlayerAttack 으로 분리.
    2. 연동 문제 : Player 코드에서 사용할 수 있도록 MonoBehaviour를 제거 → Inspector 연결 불가, Null 에러 다수 발생.
    3. Addressable 난항 : BulletData ScriptableObject 불러오는 순서 꼬임 + 탄 수(Dictionary)와 현재 총알(currentBullet) 불일치 문제 → 총알 종류를 변경해도 총알 개수가 고정됨 or 특정 총알만 발사되는 등의 문제 발생
  • 해결 방법
    • Player가 객체를 직접 new로 생성해서 데이터를 코드에서 전달
    • Dictionary로 남은 탄 수 저장/복원
    • Addressable 비동기 로딩이 끝난 후에 currentBullet 갱신 및 초기 세팅 함수 호출
  • 결과 : 성공적인 리팩토링 및 통합이 이루어졌고, 총알 관련 문제도 모두 해결함.
  1. 플레이어의 총알과 보스 사이의 충돌 발생x
  • 원인 : 보스의 경우 콜라이더의 회전이 필요하여 하위에 콜라이더 전용 오브젝트를 구분하였기에 발생한 것으로 추정
  • 사실 수집 : 충돌은 실행되지만 IDamageable 객체가 Null로 확인됨, 터렛과는 정상적으로 상호작용이 작동함
  • 결과 : 기존 캡슐콜라이더를 박스 콜라이더로 변경하고 최상위 오브젝트에 컴포지트 콜라이더를 추가하여 정상적으로 작동하는 것을 확인함
  1. 플레이어의 다중 중복 상태
  • 원인 : 움직임,벽잡기,착지의 중복된 값이 동시에 일어나게 되어 StateMachine값에 의도치 않은 값이 들어가게 됨
  • 조치 : 추론한 원인을 토대로 벽잡기를 바닥에 닿지 않은 시점으로 한정함
  • 결과 : 벽잡기를 바닥에 닿지 않은 시점으로 한정하여 구현,정상 작동을 확인함
  1. 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

📜 목차로 돌아가기

About

2025년 9월 스파르타 유니티 심화 과제(2D 콘솔 슈팅 게임)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages