Skip to content

juhyeon98/Cub3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧊 cub3d

cub3d는 간단한 2D 맵 데이터를 바탕으로 레이 캐스팅(Ray Casting) 기법을 사용하여 3D처럼 보이는 1인칭 시점을 구현하는 프로젝트입니다. 이 프로젝트는 42서울 커리큘럼의 일환으로, 그래픽스 프로그래밍의 기초 개념을 학습하는 것을 목표로 합니다.

🎯 프로젝트 목표

  • 레이 캐스팅을 이용한 3D 시각화 구현.
  • 키보드/마우스를 통한 플레이어 이동 및 회전 구현.
  • 기본적인 충돌 처리 시스템 구축.
  • 2D 맵 파일(.cub) 파싱 및 유효성 검사.

✨ 주요 기능

Mandatory (필수)

  • 이동/회전: WASD 키를 통한 이동, 방향키(←, →)를 통한 회전.
  • 충돌 처리: 벽에 닿았을 때 이동 차단.
  • 그래픽: 텍스처를 입힌 벽면 랜더링 및 천장/바닥 색상 랜더링.
  • 초기화: 단일 .cub 맵 파일을 읽어 게임 환경 초기화.

Bonus (추가)

  • 마우스 제어: 마우스를 이용한 시점 회전.
  • 상호작용: E 키를 입력하여 문(D) 상호작용 (열기/닫기).
  • Minimap: 간단한 2D 미니맵 구현.
  • 애니메이션: Space bar를 입력해 모션 애니메이션 재생 (아이템 A 등).

🚀 Getting Started

시스템 요구 사항

본 프로그램은 Unix 환경 (macOS)에서만 실행 가능합니다.

설치 및 실행

  1. 저장소 클론
git clone [https://github.com/juhyeon98/Cub3d.git](https://github.com/juhyeon98/Cub3d.git)
cd Cub3d
  1. 빌드
모드 명령어 설명
Mandantory make 필수 기능 구현 버전 빌드
Bonus make bonus 보너스 기능 포함 버전 빌드
  1. 실행
./cub3d maps/[맵 파일]

🗺️ 맵 파일 규격 (.cub)

맵 파일은 반드시 .cub 확장자여야 하며, 환경 설정 정보와 2차원 맵 데이터로 구성됩니다.

1. 환경 설정 (Texture & Color)

요소 형식 설명
NO NO [경로] 북쪽 벽면 텍스처 파일(.xpm)
SO SO [경로] 남쪽 벽면 텍스처 파일(.xpm)
WE WE [경로] 서쪽 벽면 텍스처 파일(.xpm)
EA EA [경로] 동쪽 벽면 텍스처 파일(.xpm)
C C [R,G,B] 천장(Ceiling) 색상(0-255, RGB형식)
F F [R,G,B] 바닥(Foolr) 색상(0-255, RGB형식)

2. 2차원 맵 데이터

문자 의미 Mandantory Bonus
1 벽면 O O
0 통로 O O
N,S,W,E 플레이어 초기 위치 및 방향 O(반드시 1개) O(반드시 1개)
D 문(Door) X O
A 스프라이트 X O

⚠️ 주의 사항

  • 텍스처는 반드시 4개 모두 지정해야 하며, 중복될 수 없습니다.
  • 맵은 벽(1)으로 완전히 둘러싸인 닫힌 공간이어야 합니다.
  • 플레이어(N/S/W/E)는 맵 내부에 하나만 존재해야 합니다.

📘 참고 자료

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published