Scaleform GFx(2.0.41 Beta1 SDK)
하드웨어 가속이 되는 아주가벼운 벡터 기반의 최초 그래픽 엔진이다.
벡터기반의 유저 인터페이스, 풍부한 미디어 포맷으로 검증된 Flash와 SVG를 렌더링 해줄 수 있다.
또한 GFx는 게임환경에서 하드웨서 가속을 받으면서 벡터 그래픽을 플레이 할 수 있게 해준다.
- 벡터 기반이다.
- 매우 가볍다.
- Flash & SVG 를 지원한다.
- Dynamic 유저 인터페이스 제작 가능
- Cinematic 유저 인터페이스 제작 가능
- 텍스쳐 애니메이션 지원
- Gamebryo에 통합 가능
- PS3 & PSP 에 미들웨어 프로바이더로 선정됨
- 지원 플랫폼 : PC - Windows 98, ME, NT, 2K, XP, PS3, PSP
- 사용한 게임 : Crysis(크라이시스)
- 사용한 회사 : Bioware(멀티 게임 플랫폼 계약) - (MDK2, 발더스게이트, 스타워즈 등을 개발한회사)
Scaleform GFC(1.0.158 SDK)
비트맵 기반의 현존하는 최신의 유저 인터페이스 엔진이다.
2D/3D 엔진과 통합을 쉽게 할 수 있으며, 신속한 개발을 위해서 강력한 컨트롤
설계 시스템을 제공한다. Scaleform GFC 엔진은 풍부한 C++ GUI 컴포넌트, 편리한 비주얼 레이아웃툴과 테마 에디팅 툴의 세트를 제공함으로써 GUI 개발의 추가적 부담과 비용을 대폭 감소시킨다.
- 비트맵 기반으로 정교한 그래픽 표현 가능
- 윈도우 테마 같은 기능 제공
- 풍부한 C++ 컴포넌트 제공
- 비주얼 레이아웃 툴 제공
- 테마 에디팅 툴 제공
- 지원 플랫폼 : PC(window95,98,NT,200X, XP, Vista)DX9,
- 사용한 게임 : Civilization4(문명4)
Scaleform GFx 분석
GFx 개요
- GFx는 Flash & SVG 같은 풍부한 미디어 데이터를 이용하여 벡터 기반의 유저 인터페이스를 구축할 수 있게 해주는 라이브러리다.
- GFx는 게임내의 어느 곳에서나 Flash & SVG(벡터 그래픽)의 하드웨어 가속을 쉽게 할 수 있다.
- 쉽게 말하자면 게임에서 플래쉬를 렌더링 할 수 있다. (플래쉬를 게임에서 렌더링하고 메세지 전달을 할 수 있다니 환상적이지 않은가?
GFx SDK 주요특징
- 플랫폼 독립적 설계
- 거의 모든 플랫폼에서 사용 가능
- DX9 기반에서 렌더링 가능
- OpenGL 기반에서 렌더링 가능
- UNICODE를 지원한다.
- Windows 98, ME 지원 (Windows98, ME는 지원이 아주 빈약하다. COMCTL32 문제가 있음)
- Windows NT, 2K, XP 완벽 지원
- Linux, XBox, PSP, PS2, PS3, Game Cube, Wii 지원하지 않음
GFx 2.0 SDK 라이센스 비용 (full source access)
- $15,000 USD License per App / 첫번째 플랫폼 가격
- $10,000 USD License per App / 각각의 추가적 플랫폼 가격
- $10,000 USD Support per App / per year (1년 의무 사용)
- 만약 PC용 게임만 개발할 경우 전체 $25,000 USD (2번 항목이 빠지므로)
- 만약 PC & Xbox360을 동시에 개발할 경우 전체 $35,000 USD
- GFC 라이센스를 살 경우 GFx가 포함 되어 있음, $50,000 USD
GFC & GFx 혼합 사용 여부
- Sony 사에서 GFC & GFx를 함께 사용하여 게임을 만들고 있음 (Scaleform 사에서 직접 밝힘)
- 혼합 사용에 대해서는 Scaleform 에서는 지원하지 않음 (혼합 사용하는 당사자가 문제를 직접 해결해야 함)
GFx SDK Components
- GFx 툴킷은 다음과 같은 코어 라이브러리 컴포넌트들로 구성되어 있다.
* GFx.lib - GFX 핵심 라이브러리
* GMain.lib - WinMain 컨테이너
* GFx_D3D9.lib - D3D9 기반에서 렌더링하는 라이브러리
* GFx_GL.lib - OpenGL 기반에서 렌더링하는 라이브러리
* GFx.lib 는 아래와 같은 3개의 핵심 코어로 이루어져 있다.
* GFXPlayer - 코어 플레이백 엔진
* Renderer - 코어 렌더링 서브시스템
* Kernel - 코어 라이브러리
프로그램 설정 방법
먼저 웹사이트에서 GFx SDK를 다운로드 받아서 설치한다. GFx는 MSVC7.0 버젼과 MSVC8.0 버젼 이렇게 두개가 존재한다.
설치하면 설치한 SDK 경로에 다음과 같은 하위 폴더가 생성된다.
(기본폴더를 예로 설명 하겠습니다.)
- C:\Program Files\Scaleform\GFx SDK 2.0 Eval\Include <- 위 헤더 파일을 프로젝트에 포함 시킴
- C:\Program Files\Scaleform\GFx SDK 2.0 Eval\Lib\Win32\Msvc80\Debug_MT
- C:\Program Files\Scaleform\GFx SDK 2.0 Eval\Lib\Win32\Msvc80\Debug_Static_MT
- C:\Program Files\Scaleform\GFx SDK 2.0 Eval\Lib\Win32\Msvc80\Release_MT
- C:\Program Files\Scaleform\GFx SDK 2.0 Eval\Lib\Win32\Msvc80\Release_Static_MT
라이브러리 폴더는 위와 같이 4개가 생성되는데, 설정 방법은 아래와 같다
- Debug_MT ( Scaleform GFx 멀티 스레드 디버그 DLL 라이브러리)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 코드 생성 -> 런타임 라이브버리 -> 다중 스레드 디버그 DLL(/MDd)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 일반 -> 디버깅 정보 형식 -> C7 호환(/Z7)
- Debug_Static_MT ( Scaleform GFx 멀티 스레드 디버그 라이브러리)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 코드 생성 -> 런타임 라이브버리 -> 다중 스레드 디버그 (/MTd)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 일반 -> -> 디버깅 정보 형식 -> C7 호환(/Z7)
- Release_MT ( Scaleform GFx 멀티 스레드 DLL 라이브러리)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 코드 생성 -> 런타임 라이브버리 -> 다중 스레드 DLL(/MD)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 최적화 -> 최적화 -> 속도 최대화(/O2)
- Release_Static_MT ( Scaleform GFx 멀티 스레드 라이브러리)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 코드 생성 -> 런타임 라이브버리 -> 다중 스레드 (/MT)
* 프로젝트 속성 -> 구성 속성 -> C/C++ -> 최적화 -> 최적화 -> 속도 최대화(/O2) 로 설정)
GFx 검토 사항
- SWF file의 액션 스크립트를 통하여 게임과 통신 가능
- flash 파일을 동적 텍스쳐로 사용 가능
- Flash 8 포맷 지원 가능 (몇몇개 밖에 지원하지 못한다, color add, subtract, multiply)
- Flash 7 포맷은 많은 부분을 지원
- Flash 6 포맷은 거의다 지원
- 액션 스크립트 지원하나 제한이 있다 (2007년안에 100% 지원을 목표로 하고 있음)
- Shockwave 는 아직 지원하지 않음
- 액션 스크립트 이용한 동적 메뉴 지원
- UNICODE 지원
- 2D 렌더링시 이미지와 도형을 변환하고 기울이기가 가능
- FSAA or 픽셀쉐이더를 사용하지 않고 High quality AA(anti-aliasing)렌더링 가능
- Flash 파일의 Text 렌더링 가능
- Flash 비디오, 사운드 파일은 지원하지 않는다
- 아주 적은 메모리 사용 (풀스크린에서 SWF 인터페이스 사용시에 1MB 이하의 메모리 사용)
- Win32API & FreeType2 폰트부분에 이용가능
출처
'게임 > 프로그래밍' 카테고리의 다른 글
GPU Gems가 온라인으로 공개됨. (0) | 2009.06.10 |
---|---|
라이센스 이야기 (0) | 2009.02.20 |
Ganged Mode와 Unganged Mode (0) | 2008.11.21 |
호출 규약 (0) | 2008.06.13 |
포인터 선언 방법 (0) | 2008.06.09 |