Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

0MOJEON

Unity 기반의 레트로 스타일 1인칭 슈터(FPS) 게임 프로젝트입니다.

개요

0MOJEON은 3D 환경에서 2D 스프라이트 적(빌보드)을 상대하는 고전 부머 슈터(Doom 계열) 스타일의 FPS입니다. Rigidbody 기반의 물리 이동(가속/마찰/공중 스트레이핑/공중 대쉬)과 무기 반동, 화면 흔들림 등 감각적인 조작감에 초점을 맞추고 있으며, URP 커스텀 렌더러 기능(픽셀화 + 팔레트 색상 감소)으로 레트로 픽셀 룩을 구현합니다. 아레나 전투, 문/열쇠 잠금, 함정, 픽업 아이템 등을 조합한 스테이지 클리어형 구조를 가집니다.

기술 스택

  • 엔진: Unity 2022.3.62f2 (LTS)
  • 렌더 파이프라인: Universal Render Pipeline (URP) 14.0.12 + Shader Graph
  • 언어: C# (Assembly-CSharp)
  • 주요 패키지: AI Navigation (NavMesh) 1.1.7, Post Processing 3.4.0, ProBuilder 5.2.4, TextMesh Pro 3.0.7, Terrain Tools 5.0.6, Timeline 1.7.7
  • 입력: Unity 레거시 Input Manager (Input.GetAxisRaw, KeyCode)
  • 빌드 타깃: Windows 스탠드얼론 (BUILD/0MOJEON.exe 산출물 존재), 기본 해상도 1024x768, 버전 0.1.0

주요 기능 / 시스템

플레이어 (Assets/Script/Player)

  • 물리 기반 이동: Rigidbody + 가속/마찰 모델, 지상·공중 가속 분리, 경사면 미끄러짐, 벽 슬라이드, 계단 오르기, 이동 플랫폼 속도 상속
  • 공중 대쉬(Air Dash): 쿨타임 기반, 이동 방향과 시선 방향을 혼합한 대쉬 벡터
  • 모듈화된 카메라 이펙트: MovementBobbing(이동 흔들림), MouseSway(시점/무기 스웨이), AimPunch(피격 반동), DynamicFovController(속도 기반 FOV), CameraRollController(좌우 이동 롤), PostProcessingController(스프린트 모션 블러 / 피격 색수차)
  • 표면 인식 사운드: SurfaceIdentifier 및 Terrain 스플랫맵을 읽어 지형별 발소리/착지음 재생
  • 사망 연출: 카메라 낙하·기울임 코루틴 종료 후 GameManager에 게임오버 통지

무기 & 전투 (Assets/Script/Weapon, ScriptableObjects/Weapons)

  • 데이터 주도 무기 시스템: WeaponData(ScriptableObject)가 실제 공격 로직을 AttackDefinition 에셋에 위임 — ProjectileAttack, HitscanAttack, MeleeAttack, ChargeAttack
  • 주 공격 / 보조 공격 분리, 차지 샷(충전 비율에 따른 위력 스케일링), 탄창·재장전, 무기 교체 애니메이션
  • 인벤토리: PlayerInventory + InventoryManager, 마우스 휠 및 숫자키로 무기 전환, 탄종별 소지 탄약 관리, WeaponInstance로 무기별 장탄 상태를 개별 보존
  • 반동(Recoil): RecoilSettings 기반 위치/회전 반동
  • 투사체: 오브젝트 풀링으로 재사용, 폭발/관통 처리

적 AI (Assets/Script/Enemy)

  • 유한 상태 머신: IState 인터페이스 + IdleState / ChaseState / AttackState / RepositionState
  • 행동 타입(BehaviorType): Classic(원거리 + 재배치), Stationary(포탑형), MeleeRusher(돌진 근접), Hybrid(거리에 따라 전환)
  • 감지·추적: NavMesh 이동, 시야 거리/시야각 원뿔 감지, 배회(wander), 리쉬(leash) 거리 초과 시 원위치 복귀, 피격 시 확률적 타겟 전환, 공격 중 좌우 스트레이핑
  • 스프라이트 빌보드 그래픽: EnemyGraphics가 플레이어 기준 상대 각도로 정면/좌/우/후면 스프라이트 세트를 선택하고 상태별 2프레임 애니메이션 재생
  • 무게 등급(WeightClass): Light ~ Immovable로 넉백 저항 차등 적용

레벨 & 상호작용 (Assets/Script/Interactables, Manager)

  • 아레나 전투: ArenaController — 시작 시 문 잠금 + 스포너로 적 소환, 전멸 시 잠금 해제 및 onArenaCleared UnityEvent 호출
  • 문/열쇠: Gate(회전/슬라이드 방식), GateLock, GateKey — 카드키 획득으로 잠금 해제
  • 픽업: 체력팩, 실드팩, 탄약팩, 무기 픽업, 버프(스피드 등) 파워업
  • 환경 오브젝트: 폭발 배럴, 이동 플랫폼, 함정(장판 데미지, 빙판, 슬라임 감속)
  • 스테이지 클리어: StageClearObject가 상호작용(Interact) 또는 지점 도달(Reach) 조건으로 클리어 처리

코어 시스템 (Assets/Script/Manager, Core)

  • GameManager: Playing / Paused / GameOver / LevelCleared / GameCleared 상태 관리, 타임스케일·커서·씬 전환 제어 (싱글톤 + DontDestroyOnLoad)
  • Health / IDamageable / DamageInfo: 체력·보호막과 넉백 정보를 담은 통합 데미지 파이프라인
  • StatManager: 스탯 모디파이어(Add/Multiply) 스택 방식 — 이동속도, 데미지, 연사력, 재장전 속도, 추가 점프, 무한탄약, 무적, 은신
  • ObjectPooler: 동적 확장이 가능한 싱글톤 오브젝트 풀
  • EventManager: C# 이벤트 기반으로 시스템 간 결합도 감소
  • AudioManager: World / UI / Music 채널 분리, AudioMixer 연동, 풀링 사운드 플레이어
  • UIManager: HUD(체력·탄약·캐릭터 얼굴), 일시정지/게임오버/클리어 패널, 임시 메시지
  • SceneLoader: 비동기 로딩 + 페이드 전환 및 로딩 화면
  • CombatFeedbackManager: 타격/피격/처치 시 시청각 피드백
  • PlayerInputManager: 모든 입력을 프로퍼티로 중앙화

렌더링 (Assets/Render, Assets/Import)

  • PixelizeFeature / PixelizePass: URP ScriptableRendererFeature 기반 화면 픽셀화
  • PaletteFeature / PalettePass: 휘도 양자화·디더링 등으로 색상 수를 줄이는 레트로 팔레트 후처리
  • SmoothPixelCamera, Billboard, BreathingEffect 등 렌더링 보조 유틸리티

기타

  • VehicleController / IVehicle: WheelCollider 기반의 탑승 가능 차량 (실험적)

프로젝트 구조

0MOJEON/
├── Assets/
│   ├── Data/              # 프리팹 및 ScriptableObject 에셋 (Player, Enemy, Weapon, Projectile, Drop, Managers)
│   ├── Image/             # 스프라이트 (무기, 적 로봇, 드롭 아이템, UI)
│   ├── Import/            # 외부 에셋 (파티클 이펙트, URP 픽셀화 셰이더)
│   ├── Model/             # 3D 모델
│   ├── Render/            # 커스텀 URP 렌더러 기능(Palette), 머티리얼, 셰이더
│   ├── Scenes/            # StartScene(메인 메뉴), Stage1(메인 스테이지), SampleScene, MakeScene
│   ├── Script/
│   │   ├── Core/          # Health, IDamageable, SurfaceIdentifier 등 공통 컴포넌트/인터페이스
│   │   ├── Enemy/         # EnemyController, EnemyGraphics, StateMachine(Idle/Chase/Attack/Reposition)
│   │   ├── Event/         # EventTrigger
│   │   ├── Interactables/ # Base / Gate / Pickups / Traps / Environment
│   │   ├── Manager/       # GameManager, UIManager, AudioManager, ObjectPooler, ArenaController 등
│   │   ├── Player/        # PlayerController, WeaponController, Inventory, Camera 이펙트 모듈
│   │   ├── ScriptableObjects/ # WeaponData, EnemyData, ProjectileData, BuffData, AttackDefinition 계열
│   │   ├── Utilities/     # Billboard, AutoReturnToPool, SmoothPixelCamera, FrameCounter
│   │   ├── Vehicle/       # VehicleController
│   │   └── Weapon/        # Projectile
│   ├── Settings/          # URP 렌더 파이프라인 에셋
│   ├── Sound/             # 오디오 클립 및 믹서
│   └── Terrain/           # 터레인 데이터
├── BUILD/                 # 빌드 산출물 (0MOJEON.exe)
├── Packages/              # UPM 패키지 매니페스트
├── ProjectSettings/       # Unity 프로젝트 설정
└── 0MOJEON.sln            # Visual Studio 솔루션

실행 방법

에디터에서 실행

  1. Unity Hub에서 Unity 2022.3.62f2 를 설치합니다.
  2. Unity Hub → Add 로 이 프로젝트 폴더를 추가하고 엽니다.
  3. Assets/Scenes/StartScene.unity(메인 메뉴) 또는 Assets/Scenes/Stage1.unity(메인 스테이지)를 열고 Play 버튼을 누릅니다.

빌드

  • File > Build Settings의 씬 목록에는 StartScene, Stage1이 활성화되어 있습니다 (SampleScene은 비활성).
  • 플랫폼을 Windows(Standalone)로 두고 Build를 실행합니다.

빌드된 실행 파일

  • BUILD/0MOJEON.exe 를 직접 실행하면 기존 빌드를 바로 플레이할 수 있습니다.

조작

입력 동작
WASD 이동
마우스 시점
좌클릭 / 우클릭 주 공격 / 보조 공격 (충전 무기는 홀드 후 릴리즈)
Shift 스프린트
Space 점프 / (공중에서) 대쉬
R 재장전
E 상호작용
마우스 휠, 숫자키 무기 교체
ESC 일시정지

개발 현황

  • Git 히스토리는 Initial commit 단일 커밋으로, 기존 개발 결과물이 한 번에 커밋된 상태입니다.
  • 플레이어 이동/전투, 적 AI 상태 머신, 무기·인벤토리, 아레나·문·픽업·함정, UI/오디오/씬 전환까지 핵심 게임플레이 루프가 구현되어 있으며 Windows 빌드 산출물이 존재합니다.
  • 플레이 가능한 실제 스테이지는 Stage1 1개이며, 프로젝트 버전은 0.1.0입니다.
  • 차량(VehicleController) 시스템은 일부 주석 인코딩이 깨져 있는 등 실험적/미완성 단계로 보입니다.
  • 코드 전반에 한국어 XML 문서 주석이 상세히 작성되어 있어 유지보수성이 높은 편입니다.

About

레트로 부머 슈터. 데이터 드리븐 무기 시스템과 픽셀화·팔레트 양자화 렌더러 피처.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages