스프라이트 (컴퓨터 그래픽스)

[섬네일|[브로포스의 탱크 및 로켓 스프라이트]]

컴퓨터 그래픽스에서 **스프라이트**()는 더 큰 장면에 통합된 2차원 비트맵으로, 주로 2D 비디오 게임에서 사용된다. 원래 스프라이트라는 용어는 하드웨어에 의해 배경과 함께 합성된 고정 크기 객체를 지칭했다. 이후 이 용어의 사용은 더 일반화되었다.

하드웨어 스프라이트 시스템을 사용한 기기에는 1970년대와 1980년대 아케이드 비디오 게임, 아타리 2600 (1977), 콜레코비전 (1982), 패밀리컴퓨터 (1983), 메가 드라이브 (1988) 등의 게임 콘솔, 그리고 TI-99/4 (1979), 아타리 8비트 제품군 (1979), 코모도어 64 (1982), MSX (1983), 아미가 (1985), X68000 (1987)과 같은 홈 컴퓨터가 있다. 하드웨어는 지원하는 스프라이트 수, 각 스프라이트의 크기 및 색상, 그리고 스케일링이나 픽셀 단위의 정확한 중복 보고와 같은 특수 효과에서 차이가 난다.

스프라이트의 하드웨어 합성은 CPU의 개입 없이, 전체 화면 프레임 버퍼가 필요 없이, 브라운관과 같은 비디오 출력 장치를 위해 각 스캔 라인이 준비될 때 발생한다. 스프라이트는 하드웨어 합성 과정에서 사용되는 속성을 설정함으로써 위치를 지정하거나 변경할 수 있다. 스캔 라인당 표시될 수 있는 스프라이트의 수는 시스템이 지원하는 총 스프라이트 수보다 낮은 경우가 많다. 예를 들어, 텍사스 인스트루먼트 TMS9918 칩은 32개의 스프라이트를 지원하지만, 동일한 스캔 라인에는 4개만 나타날 수 있다.

현대 컴퓨터, 비디오 게임 콘솔, 모바일 기기의 CPU는 특수 하드웨어 지원 없이도 비트맵을 프레임 버퍼에 그릴 수 있을 만큼 충분히 빠르다. 그 외에도 GPU는 CPU와 병렬로 엄청난 수의 스케일링, 회전, 안티에일리어싱, 부분적으로 반투명하며 매우 높은 해상도의 이미지를 렌더링할 수 있다.

## 어원
1979년 텍사스 인스트루먼트 TMS9918 비디오 디스플레이 프로세서의 두 엔지니어 중 한 명인 칼 거태그(Karl Guttag)에 따르면, 스프라이트라는 단어의 이 사용은 TI의 매니저인 데이비드 애클리(David Ackley)에서 유래했다. 또한 1970년대 후반 텍사스 인스트루먼트의 대니 힐리스도 이 용어를 사용했다. 이 용어는 스프라이트가 배경 이미지를 덮어쓰지 않고 마치 유령이나 신화 속의 스프라이트처럼 배경 이미지 위에 "떠다닌다"는 사실에서 유래했다.

일부 하드웨어 제조업체는 스프라이트라는 용어가 보편화되기 전에 다른 용어를 사용했다.

**플레이어/미사일 그래픽**은 아타리가 아타리 8비트 제품군 (1979)과 아타리 5200 콘솔 (1982)의 하드웨어 스프라이트에 사용한 용어이다. 이 용어는 동일한 색상을 공유하는 캐릭터("플레이어")와 작은 관련 객체("미사일") 모두에 사용된다는 점을 반영한다. 초기 아타리 2600과 일부 아타리 아케이드 게임에서는 플레이어, 미사일, 볼이라는 용어를 사용했다.

**스탬프**는 1980년대 초반 미스 팩맨을 포함한 일부 아케이드 하드웨어에서 사용되었다.

**이동 가능한 객체 블록** 또는 **MOB**은 모스 테크놀로지의 그래픽 칩 문헌에서 사용되었다. 모스 칩의 주요 사용자이자 대부분의 칩 제조사 수명 동안 모스를 소유했던 코모도어는 코모도어 64에서 대신 스프라이트라는 용어를 사용했다.

**OBJ** (객체 약어)는 패밀리컴퓨터, 슈퍼 패미컴, 게임보이의 개발자 매뉴얼에서 사용된다. 스프라이트 속성과 좌표를 저장하는 데 사용되는 비디오 RAM 영역은 **OAM** (Object Attribute Memory)이라고 불린다. 이는 게임보이 어드밴스 및 닌텐도 DS에도 적용된다.

## 역사
### 아케이드 비디오 게임
스프라이트의 사용은 아케이드 비디오 게임에서 시작되었다. 놀런 부슈널은 최초의 아케이드 비디오 게임인 컴퓨터 스페이스 (1971)를 개발하면서 원래의 개념을 구상했다. 기술적 한계로 인해 사소한 움직임에도 전체 화면 새로고침을 수행했던 스페이스워! (1962)와 같은 초기 메인프레임 게임을 적용하기 어려웠고, 이에 그는 각 개별 게임 요소를 전용 트랜지스터로 제어하는 해결책을 고안했다. 로켓은 본질적으로 배경과 독립적으로 화면을 움직이는 하드웨어 비트맵으로, 화면 이미지를 더욱 효율적으로 생성하고 스프라이트 그래픽의 기반을 제공하는 중요한 혁신이었다.

플레이어 캐릭터를 사람 플레이어 스프라이트로 표현한 최초의 비디오 게임은 아케이드 스포츠 비디오 게임으로, 1974년 4월에 출시되고 북미 출시를 위해 미드웨이 매뉴팩처링에 라이선스가 부여된 타이토의 TV 농구였다. 니시카도 도모히로가 설계했는데, 그는 단순한 퐁 스타일의 직사각형을 넘어 캐릭터 그래픽으로 나아가기 위해 직사각형 모양을 농구 선수와 농구 골대처럼 보이는 객체로 재배열했다. 램텍은 1974년 10월에 또 다른 스포츠 비디오 게임인 베이스볼을 출시했는데, 이 게임 역시 사람과 유사한 캐릭터를 표시했다.

1979년 아케이드 게임 갤럭시안의 남코 갤럭시안 아케이드 시스템 보드는 스크롤되는 배경 위에 애니메이션화된 다색 스프라이트를 표시한다. 이는 닌텐도의 레이더 스코프와 동키콩 아케이드 하드웨어, 그리고 패밀리컴퓨터와 같은 가정용 게임기의 기반이 되었다. 제너럴 컴퓨터 코퍼레이션의 스티브 골슨(Steve Golson)에 따르면, 당시에는 "스프라이트" 대신 "스탬프"라는 용어가 사용되었다.

### 가정용 시스템
사인네틱스는 가정용 시스템에서 스프라이트 그래픽(사인네틱스에서는 객체라고 불렀음)을 생성할 수 있는 최초의 칩을 개발했다. 사인네틱스 2636 비디오 프로세서는 1978년 1292 고급 프로그래밍 가능 비디오 시스템에 처음 사용되었고, 이후 1979년 일렉터 TV 게임 컴퓨터에 사용되었다.

1977년에 출시된 아타리 2600은 5개의 그래픽 객체를 게임 플레이 필드와 독립적으로 움직일 수 있는 하드웨어 스프라이트 구현을 가지고 있다. 당시에는 스프라이트라는 용어가 사용되지 않았다. VCS의 스프라이트는 프로그래밍 매뉴얼에서 이동 가능한 객체라고 불리며, 두 명의 플레이어, 두 개의 미사일, 하나의 볼로 더 구체적으로 식별된다. 이들 각각은 스캔 라인에 표시되는 한 줄의 픽셀로 구성된다. 2차원 모양을 생성하기 위해 스프라이트의 한 줄 비트맵은 소프트웨어에 의해 한 스캔 라인에서 다음 스캔 라인으로 변경된다.

1979년 아타리 400과 800 가정용 컴퓨터는 유사하지만 더 정교한 회로를 가지고 있으며, 스캔 라인당 8개의 단색 객체를 이동시킬 수 있다: 4개의 8비트 폭 플레이어와 4개의 2비트 폭 미사일. 각 객체는 디스플레이의 전체 높이이며 길고 가는 스트립 형태이다. 메모리의 테이블에서 DMA를 통해 각 스캔 라인의 그래픽 패턴 레지스터가 자동으로 설정된다. 하드웨어 레지스터는 각 플레이어와 미사일의 수평 위치를 제어한다. 수직 움직임은 플레이어나 미사일 스트립 내의 비트맵 데이터를 이동함으로써 달성된다. 이 기능은 아타리에 의해 플레이어/미사일 그래픽이라고 불렸다.

텍사스 인스트루먼트는 1979년 TI-99/4 홈 컴퓨터를 위해 스프라이트 지원을 포함한 TMS9918 칩을 개발했다. 업데이트된 버전은 1981년 TI-99/4A에 사용되었다.

### 2.5차원 및 3차원 게임에서
섬네일|2.5차원 게임에서 플레이어와 스프라이트의 상호작용
스프라이트는 1980년대 후반과 1990년대 초반 2.5차원 게임(2D 맵에서 3D 게임 공간을 재현하는 게임)이 부상하면서도 여전히 인기를 유지했다. 빌보딩이라는 기술은 2.5차원 게임에서 화면의 스프라이트가 항상 플레이어 시야를 향해 회전하도록 한다. 1993년의 둠과 같은 일부 2.5차원 게임은 동일한 엔터티가 시청자와의 회전에 따라 다른 스프라이트로 표현될 수 있도록 하여 3D의 환상을 더욱 강화한다.

완전한 3D 게임은 일반적으로 세계 객체를 3D 모델로 표현하지만, 골드Src 및 언리얼과 같은 일부 3D 게임 엔진에서는 스프라이트가 지원되며, 빌보딩되거나 고정된 방향으로 고정될 수 있다. 스프라이트는 작은 세부 사항, 입자 효과 및 3차원의 부재가 크게 문제가 되지 않는 다른 응용 분야에서 여전히 유용하다.

## 하드웨어 스프라이트 시스템
다음은 기본 하드웨어 사양이며, 프레임 중간에 스프라이트를 재활용하는 래스터 인터럽트와 같은 추가 프로그래밍 기술은 포함하지 않는다.

## 같이 보기
* 2.5차원

## 각주

분류:컴퓨터 그래픽스
분류:비디오 게임 개발
분류:비디오 게임 디자인