[cub3d] cub3d

J_JEON·2023년 1월 14일
0

cub3d

목록 보기
1/2
post-thumbnail

cub3d

  • raycast와 mlx를 활용하여 1인칭 게임을 구현

ray cast

  • 광선을 직선으로 투사해 가장 먼저 닿은 물체와의 거리를 파악하는 기법
  • 여기서는 플레이어의 시야에 보이는 벽과의 거리를 파악하여 화면 높이와 벽의 높이를 거리에 따른 비율로 계산해 2D맵을 3D원근법으로 렌더링하기위해 사용

구현사항

  • 0, 1, N, S, E, W로 이루어진 map을 읽어올 수 있어야함
  • map 파일의 상단에는 불러올 텍스쳐 정보등의 identifier를 가지고 있어야 함
  • map이 벽으로 둘러쌓여있지 않다면 error
  • 동, 서, 남, 북 벽들은 각각 다른 텍스쳐를 가지고 있어야 함
  • W, A, S, D를 사용해 캐릭터를 움직일 수 있어야함
  • mlx와 raycast를 사용하여 구현
  • map파일 예시
    NO ./path_to_the_north_texture
    SO ./path_to_the_south_texture
    WE ./path_to_the_west_texture
    EA ./path_to_the_east_texture
    F 220,100,0
    C 225,30,0
    1111111111111111111111111
    1000000000110000000000001
    1011000001110000000000001
    1001000000000000000000001
    111111111011000001110000000000001
    100000000011000001110111111111111
    11110111111111011100000010001
    11110111111111011101010010001
    11000000110101011100000010001
    10000000000000001100000010001
    10000000000000001101010010001
    11000001110101011111011110N0111
    11110111 1110101 101111010001
    11111111 1111111 111111111111

이미지 출처
(https://commons.wikimedia.org/wiki/File:Simple_raycasting_with_fisheye_correction.gif)

profile
늅늅

0개의 댓글