ABOUT ME

Today
-
Total
-
  • [유니티로 만드는 게임 개발 총론]1장. 프로그래밍 메커니즘의 예술
    도서 정리/유니티로 만드는 게임 개발 총론 2023. 8. 25. 15:15
    본문의 모든 내용과 이미지의 저작권은 '페니 드 빌' 저자의 유니티로 만드는 게임 개발 총론 도서에 있습니다.

    1-1. 게임 엔진의 동작

    • 과거, 게임 개발자들은 게임을 구성하는 모든 요소들을 모두 코드로 작성하거나 비슷한 기존 게임의 코드를 수정해가면서 게임을 제작함.
    • 게임 편집 프로그램(게임 제작 플랫폼)이 등장하면서 수많은 코드를 직접 작성하지 않고도 게임을 개발할 수 있게 되었다.
      • 물리, 사운드, 그래픽, 사용자 입력 등의 작업을 게임 엔진이 처리해 줌.
      • 개발자는 게임 메커니즘 개발에 집중할 수 있게 됨.

    1. 범용 게임 엔진

    • 게임 엔진은 게임의 모든 리소스와 동작을 관리하는 다양한 요소를 실행하는 역할.

    범용 게임 엔진의 구성도

    • 물리 구현 관리자(Physics Manager): 실세계의 물리를 구현하여 오브젝트들 사이, 오브젝트와 환경 사이의 상호작용을 처리
    • 입력 관리자(Input Manager): 플레이어와 게임 간의 상호 작용과 GUI 관리
    • 음향 관리자(Sound Manager): 플레이어에게 들리는 음향의 초기값을 설정하고 이를 제어. 3D 음향이 필요한 경우 적절한 소리가 적절한 음량으로 정확한 출력 장치에 전송되도록 관리
    • 게임 오브젝트(Game Object): 게임 환경에 존재하는 모든 에셋, 다양한 컴포넌트로 구성
      • 인공지능(AI): 오브젝트의 행동을 결정하는 요소
      • 음향: 오브젝트에서 나는 사운드(ex. 바위를 두드리는 소리, 목소리 등)
      • 물리 구현: 오브젝트가 게임의 물리 체계를 따라 움직이게 함
      • 그래픽: 오브젝트가 화면에서 표시되는 방식

    2. 게임의 메인 루프

    게임 실행 방법

    • 초기화: 컴퓨터 메모리를 할당 받고, 저장되어있던 정보를 꺼내며, 그래픽과 주변 기기를 확인
    • 메인 게임 루프/메인 루프: 플레이어가 게임을 종료할 때까지 반복
      • 사용자 입력 처리: 사용자 입력 메시지를 처리하는 함수 사이클
      • 게임 오브젝트 업데이트: 모든 게임 오브젝트를 체크하여 위치 등의 상태 업데이트
      • 환경 업데이트: 게임 오브젝트, 사용자 상호 작용, 물리 시스템 관련 환경 업데이트
      • 씬 렌더링: 화면에 새로운 장면(Scene)을 렌더링
    • 기본적으로 각 루프는 화면상에 한 프레임의 그래픽을 렌더링한다.
    • 루프 실행 속도가 빠를수록 애니메이션이 부드럽게 보인다.
      • 오브젝트의 개수가 많아질수록 메인 루프가 처리할 작업량이 증가 → 화면상에 렌더링될 프레임 사이의 시간이 길어짐. 이 시간을 초당 프레임(Frames Per Second, FPS)이라 부른다.

    1-2. 게임 아트 에셋 입문

    • 기본적으로 게임에 사용되는 아트 에셋은 2D와 3D로 나뉜다.
    • 디지털 이미지의 구성 요소
      • 크기: 폭 x 높이
      • 색심도: 각 픽셀의 색상값을 저장하는데 필요한 비트 수. (ex. 8비트 용량의 4가지 색으로 칠해지는 픽셀 하나는 32비트의 색심도를 가짐)
        • 색심도가 32비트이고 크기가 16 x 32 픽셀 이미지의 용량은 32 x 16 x 32 = 16,384비트
    • 3D 모델 다운로드 사이트

    1. 2제곱 규칙

    • 주어진 그래픽 처리 한도 내에서 최고의 결과물을 낼 수 있는 방법
    • 컴퓨터는 끊임없이 주기적으로 데이터를 처리해서 CPU나 GPU에 작업을 할당함. 이 때 프로세서가 한 사이클에 처리할 수 있는 데이터 양은 한계가 있으므로 데이터를 특정 크기로 묶음.
    • 컴퓨터는 텍스처를 렌더링하기 위해 메모리를 2의 거듭제곱에 맞춰 할당함. 따라서 텍스처의 폭과 높이를 2의 제곱 값으로 맞추는 것이 효율이 가장 좋음.
      • ex) 마인크래프트 게임의 오브젝트 텍스처는 64 x 64 또는 128 x 128 픽셀이다.
    • 텍스처가 2의 제곱이 아니라면, 이미지의 크기나 스케일이 조정된다. 이 때 원래의 크기에 가장 가까운 2의 제곱값으로 폭과 높이가 줄어들거나 늘어나기 때문에 텍스처 왜곡이 발생하거나 이미지 잘림 등의 문제가 발생할 수 있다.
      • 유니티는 2의 제곱이 아닌 이미지도 텍스처로 받아들이지만 스케일을 변경시킨다.
      • 유니티가 지원하는 이미지
        • 폭과 높이: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 픽셀
        • 확장자: psd, tiff, jpg, tga, png, gif, bmp, iff, pict 등 대부분의 이미지 파일
Designed by Tistory.