BLOG ARTICLE 소니 | 6 ARTICLE FOUND
- 2008.02.28 PS3 EYE를 이용한 해드트랙킹 데모 2
- 2008.02.27 PhyreEngine :: XNA에 대항하는 소니의 무료 크로스플렛폼 3D 엔진 3
- 2008.02.24 플레이스테이션 홈 HDK :: UGG를 향한 소니의 전략 1
- 2007.03.07 [파이스토리] SuperPI에 대한 회의론과 대안 2
- 2006.11.03 Memorial of Microsoft Sidewinder Freestyle Pro
- 2006.10.14 Cell Broadband Engine™ Architecture와 Cell Chip
SCE's new free to use graphics engine
- Run time
- Art pipeline & tools
- 70+ samples and full documentation
Cross Platform (PS3 & PC), optimized for multi-core
- OpenGL & Direct3D
- Simple recompile for PS3
Works with standard tools
- Maya & Max exporters
- COLLADA compatible
- Bullet, Havok, Ageia Physics
Runs on PS3 debug systems
- PS3 development for less than $1200!
Ongoing development & support from SCE
재밋는 사실들을 요약해보면,
- XNA와 마찬가지로 무료를 원칙으로 하지만, 더 나아가 소스코드까지 완전 공개하겠다고 밝히고 있다. 다만 완전 공개 배포인지 여부는 밝혀지지 않았다. (소규모 개발사이상에게만 공개할지도)
- 따라서, PS3와 PC뿐만이 아니라 XBOX360용으로도 컴파일이 가능하다고 전해진다.
현재까지 PhyreEngine를 이용하여 개발된 게임들은 다음과 같다고 한다.
flOw |
GripShift |
DiRT |
왜 크로스플렛폼일까를 생각해볼만한데, 소니의 전략은 "일단 PS3로 만들어라, 그리고 XBOX360이나 PC로 배포하여 채산성을 높여라"라고 한다. 현실적으로 PS3전용게임을 만들어서 이득을 보기란 어렵다. 특히나 소규모 제작사의 경우 더더욱 꺼리게 되는데, 이러한 고민을 해소하기 위해 내부에서 사용하던 크로스플렛폼 엔진을 전격 공개한 것이 아닐까 생각된다.
개인적으로 PS3의 전략들은 SCE가 PS1, PS2때 겪었던 모든 경험을 총동원한다는 생각이 든다. PS1시절에 FROM같은 소규모 개발사들을 육성하여 큰 효과를 냈던 경험을 살려, HOME Development Kit (HDK)나 PhyreEngine로 PS3 컨텐츠를 다양하게 만들고 있으며, PS2시절에 DVD 조기도입으로 가졌던 장점들을 살려, 블루레이도입과 경쟁에 큰 투자를 하고 있다. (많은 전문가들이 워너 브러더스 영입에 큰 검은 돈이 오갔을 것이라고 예상한다.)
블루레이가 이기고, Home 플렛폼과 PhyreEngine가 공개되는 순간부터 차세대 콘솔전쟁의 2회전이 시작되고 있다.
Playstaion Blog GDC 관련글 바로가기
Joystiq 기사 바로가기
플레이스테이션 3의 구세주(?)로 불리는 차기 Social Network Platform인 HOME의 초기 모습은 다소 Flexible하지 않은 모습의 세컨드라이프로서 자유로운 커뮤니티와 개인공간을 제공하지만, 내부 컨텐츠는 미리 정해진 것들을 사용하는 방식이었다. 스크린샷에서는 함께 즐겁게 춤추는 노는 파티의 향연같지만, 그러한 Interactivity가 겉만 번지르르한 외향적 친밀감만을 제공한다는 것은 90년대말 VR의 환상이 깨지고 싸이질과 페이스북세대가 대세인 지금은 말해봐야 입만 아프다.
모두가 즐겁게 춤추는 이 장면의 내막에는 멀뚱거리며 패드로 춤추기를 명령하는 유저들이 있을 뿐이다. No social interaction! Yay를 외치는 단 한명의 유저(사실은 개발자)가 적막함을 배가시켜준다.
GDC 2008에서 발표한 HOME의 내용에 인상적인 부분이 있어 짚고 넘어가겠다. 이번 발표에서 인상적인 부분은 바로, UGG ( User Generated Game ), 즉 유저가 만든 게임을 공유하는 것이 가능하다는 말이다. 발표 내용을 보자.
HDK contents includes...
3D export pipeline tools
Scene & Object Editors
Latest developers build of Home included for both online & offline viewing and testing
Online build access with scene key validation
HDK는 Home Development Kit의 약자로 HOME 플렛폼 위에서 새로운 컨텐츠를 개발하기 위한 API와 Toolkit을 지칭하는 것이다. 또한 만들어진 패키지는 ActiveX나 Java처럼 일종의 인증서를 가지게 될 것 같다. 높은 자유도 때문에 유저에게 해를 주는 컨텐츠 제작이 가능해지므로...
HDK documents includes...
Maya & 3ds Max user guides with tutorials
Scene Editor user guide
Lua Arcade Games, Mini-games and Scripting Reference, tutorials & samples
Character Components Authoring and Furniture Creation with samples
Particle System Tool user guide with samples
All released in English, Japanese and Korean
HDK는 전문가가 아니라 일반유저가 활용할 수 있도록 최대한 다양한 도움말을 제공한다는 뜻이다. 한국어가 제3언어도 있다는 것이 특이하다. 한국의 게임제작에 대한 관심과 인디개발력을 높이 평가한 것이 아닐까.
Scene Editor
Use the Scene Editor to add:
Collisions and Graphics
Triggers (Areas & Events)
Game Elements (Seats, Picture Hooks, Furniture Points etc.)
Screens
Particle Effects
2D Arcade games
3D Mini-Games
Sound Objects (Ambient, Point Emitters, Sound Zones)
Scene Editor는 쉽게 말하면 워크레프트3나 스타크레프트에 포함된 맵에디터와 유사한 것이라고 보면 된다. 마야나 맥스를 통해 Import된 3D 오브젝트들을 배열하고, 게임에서 사용할 수 있도록 충돌조건을 설정하거나, 트리거(일종의 이벤트)를 설정할 수 있다. 또한, 게임내의 아이템(가구, 악세사리)을 위한 여러 조건들(어디에 앉을 수 있는지, 벽에 걸린다면 어떤 방향으로 걸리는지 등등)을 조절할 수 있다.
SceneEditor 스크린샷. 윈도우 기반에서 돌아가는 것을 알 수 있다. End-user를 위한 툴이라면 보다 상큼한 이름으로 지었으면 좋았을 것 같은데..
Lua Home API Overview
Functions & Events:
General
- OnInitialise, OnRender, OnLocalPlayerJoin
Network
- OutboundMessage, ReceivedMessage, NetPropertyBag
Camera Controls
- IsCameraActivated, SetCameraViewPortFOV
Other Library Interfaces:
OSD, Input Handlers, Local Player, Persons, SoundBanks
싸이의 미니홈피꾸미기와 차별되는 대표적인 부분으로, 자신만의 프로그램을 짤 수 있으며, 이 프로그램은 자신의 3D 오브젝트, 맵, 캐릭터를 통하여 다양한 컨텐츠를 제작할 수 있게 된다. 더우기 그 프로그램은 유저는 다른 유저들이 함께 즐길 수 있도록 연결해준다. (다만 게임에 참여하는 로비의 역할은 HOME플렛폼이 처리)
2D Arcade Games
Walk up to an arcade game console, choose to player and the screen apperars
Attached to screens
Scripted in Lua
Use Scene Editor to place the screen on top of your pre-created arcade game console
3D Mini-Games
Walk up to an area and choose to interact. You are moved within the mini-game but still can view those around you
Based in environment
Scripted in Lua
HDK를 통해서 만들 수 있는 컨텐츠는 무궁무진하다. 2D/3D 미니게임도 있지만, 자신의 얘기를 3D 영화로 보여줄 수도 있고, 교육용 컨텐츠 역시 작성이 가능하다. 일전에도 소개됐던 Sony의 UGG전략에서 짐작할 수 있었지만, Unreal에 이어 HOME과 Little Big Planet으로 이어지는 소니의 횡보가 과연 플레이스테이션3를 살릴 수 있을지 기대된다.
HOME에서 UGG를 즐기게 되는 시나리오. 개인홈으로 초대한 유저에게 부탁한다. "내 게임 좀 테스트 해줄래?"
LUA 스크립트를 실행하겠냐는 물음에 Yes하면, 바로 게임에 들어간다.
그 이유로는,
- SuperPI(mod버전포함)는 Single-threaded Application으로서 대세인 다중코어 CPU의 성능을 100% 사용하지 못한다.
- 오픈소스가 아니라서 변화하는 환경에 따른 적용이 불가능하다.
일례로 필자가 새로 장만한 AMD64 4000+와 AMD64 X2 3800+로 SuperPI 1M 처리 속도를 비교해보면,4000+가 10초가까이 빠른 속도를 나타냈다. 이 같은 문제는 멀티코어나 비대칭벡터프로세서의 정확한 성능을 가늠할 수 없을뿐만아니라, 유저들이 잘못된 성능 비교를 보고 혼동하게 만들 수 있다.
MacResearch에 올라온 플스3와 맥과 인텔을 비교해놓은 PI 벤치마크. 저자는 Cell의 SPE를 사용하지 않았다는 것을 명시하고 있지만, 이러한 벤치마크는 낚시제목과 함께 여러 사이트들를 돌면서 유저들을 혼동시킨다. (제발 퍼가지 마세요.)
- 오픈소스
- 병렬/직렬처리를 병행할 수 있는 알고리즘
- 메모리 용량에 최대한 독립적
- 확장명령어셋지원(SSE,SSE2,SSE3,3D NOW!, ...) 및 옵션으로 on/off가능
- GPGPU(General Purpose GPU) 혹은 CUDA 지원으로 CPU와 GPU의 비대칭 병렬처리 옵션
- 플랫폼 독립적으로 Windows, Linux등에서 구동가능
- Cell Broadband Engine(PS3)의 PPE/SPE 비대칭 프로세싱 지원
정도로 SuperPI처럼 PI 값의 정확성보다는 시스템의 활용 측면을 더 바라봐야한다는 생각이다.
병렬처리로 PI를 구하는 대표적인 알고리즘은 Monte Carlo Method지만 기타 다른 알고리즘도 고려해볼 만하다. 특히 다중코어의 Multi-threading이나 비대칭코어의 Multi-passing이나GPU의 고속 행렬연산 pipe를 잘 응용한다면 서로 다른 아키텍쳐의 성능을 비교해 볼 수 있는 벤치마크 프로그램이자 참고용소스로서 가치가 있지 않을까 싶다.
Project PI (오픈소스 PI 프로젝트) 사이트 바로가기
Monte Carlo Methods in Parallel Computing 사이트 바로가기
PI 생성 알고리즘의 Single-threaded Multi-threaded 비교 예제
FFT와 AGM(Monte Carlo) 이용한 PI 계산 사이트 바로가기
첫 느낌은 묵직한 그립감에 나쁘지 않은 느낌이다. 미국판 새턴패드 이후로 미국식 패드 애호가가 된 내가 좋아하는 감촉이다. PS3와 유사한 Angular Sensing 모드는 Sensor라는 버튼을 누르면 작동하게 되어 있는데, 아쉬운 것은 디지털패드와 병행할 수가 없다. 둘중 하나의 값만은 전달한다.
Sensor버튼을 눌러서 모션센싱 모드에서 게임을 해본 결과 이 패드가 왜 망했나를 알 수 있었다.
- Maximum Angle에 대한 정의가 모호하다.
원점에서 기울이기 시작하면 H,V의 Delta 값이 바뀌기 시작하는데, 거의 70도까지 값이 일정하게 올라가다가 70도에서 90도사이는 찔끔찔금 올라간다. Calibration모드에서조차 최대값에 도달하기가 어렵다.
- 플레이어의 손은 기계가 아니다.
패드의 원점은 정확히 평행한 0도선이다. 하지만 플레이해본결과 0도의 위치는 자연스런 기본자세라기보다 약간 무리가 가는 자세라서, 나도 모르게 원점을 벗어나 오작동하는 경우가 많았다. 또한, 최대값의 경우도 인간의 손목으로 나올 수 있는 각도가 아니다;; Constraint을 좀더 작게 잡고 세밀한 움직임을 줬으면 어떘을까 하는 아쉬움이 생긴다.
- H,V 센서의 부정확성
H축에 수직으로 기울인 상태에서 V축 수직으로 이동해보면 값이 일직선을 그리지 못하고 계단의 형태를 띄는 것을 볼 수 있다. 수평/수직 2개의 센서의 정확도가 떨어져 나오는 결과로 보인다.
- 게임에서의 지원미비
Activison에서 제공한 PRO BMX게임의 경우 플레이가 불가능할 정도로 컨트롤이 어렵다. 이 패드는 앞으로만 전진하는 레이싱 게임이나 균형을 맞추는 게임에는 적합해도 앞뒤로 돌아다니며 재주를 부리는 게임에는 전혀 맞질 않는다.
동봉된 게임이 너무 재미없어서 현재 진행중인 게임 프로젝트의 일부에 적용해 보았는데, 반응이 괜찮다. 다만, 입력되는 값을 상대적 좌표로 써야만 느낌이 좋다. 사람마다 쥐는 자세는 다 틀리지만 화면에 피드백하여 움직이는 상대값은 대체로 비슷하였다. PS3의 6-Axis의 경우도 이같은 점을 주의하지 않으면 비슷한 결과가 나오지 싶다.
cell.scei.co.jp에서는 CBE(Cell Broadband Engine™)에 대한 자료를 공개하고 있는데,
게임기 외에 다른 용도를 쓰이길 원하는 Open Architecture라서 Cell 칩의 구동원리에 대한
구체적인 자료들이 많다. (일어 영어 문서 지원)
Cell Broadband Engine™ Architure
사이트를 살펴보다가, CBE(Cell Broadband Engine™) Architure ver. 1.00 문서의
CBEA-Compliant Processor(CBEA규약에 적합한 프로세서)를 정의하는 부분이 눈에 띄었는데,
여기보면 참으로 광대한 상상화가 등장한다.
우주와 같은 이 상상도는...?
Hyper-tech document 가 아닌가라는 생각이 든다. 왜 인지는 PS3에 쓰인 최초 Cell Chip의
구조를 보면 알게된다.
PS3 Cell Chip의 구조
PPE 1개에 SPE 8개. 이것이 우리가 아는 Cell 칩이다.
- 1개의 SG(SPE Group) with 8 SPEs
- 1개의 PG(PPE Group) with 1 PPU
SPE Group이 몇개인가는 Chip Specification에 나와있질 않아서 모르겠지만, IBM에서 정리한
SPE group의 정의를 보면,
– a collection of SPE threads that share scheduling attributes
– there is a default group with default attributes
– each SPE thread belongs to exactly one SPE group
때문에, PS3에 쓰일 Chip은 1개의 그룹일 가능성이 높다.
(아니라면 개개의 Thread에 대한 관리를 PPE에서 매개전달해야 함)
PS3 Chip의 철학
그렇다면, 왜 PS3의 Chip에는 복수개의 PPE가 아닌 복수개의 SPE가 들어갔을까?
이 부분은 PS3가 지향하는 목표가 "가정용 종합 엔터테인먼트"라는 것을 생각하면 알 수 있다.
가정에서 일어나는 대부분의 멀티미디어(게임포함) 행위는 스트리밍의 형태로 이해할 수 있다.
3D게임의 방대한 폴리곤, 텍스쳐의 스트리밍, 물리엔진에 연산되는 방대한 양의 물리적 변수의
스트리밍, HD로 출력되는 HDMI신호의 스트리밍, 그리고 HDTV의 방대한 양의 영상 스트리밍등
미래의 모든 멀티미디어 기술은 복잡하다기보단 단순하고, 방대한 양의 신호와 이를 일괄적으로
해석하는 일에 포커스한다. PS3는 머리가 많은 천재형이라기보단 다리가 많은 일벌레형에 가깝다.
미래 Cell 칩에 대한 상상
그럼 다시 본론으로 돌아와서,
CBEA문서에서는 "n의 PPU를 가진 n개의 PG"와 "n개의 SPE를 가진 n개의 SG"를 정의하고 있다.
그리고 PS3의 Cell Chip은 레퍼런스 구조에 비하면 PG, SG가 필요없을 정도로 작은 스케일임을
알 수 있다. 그렇다면, 대략 예상해볼 수 있는 "현실적인" Cell 칩의 구조도는...
- 8개의 SG (각각의 SG는 8개의 SPE로 구성);;;
- 2개의 PG (각각의 PG는 4개의 PPU로 구성);;;
현존하는 4Ghz의 속도와 SPE당 2개의 Instruction, 4번의 Float/Integer 계산능력으로만 환산해도
4Ghz x 4(계산능력) x 2(Instruction) x 8(SPEs) x 8(SGs) = 2048 GFlops = 2 TFlops;;;
물론, 현존하는 최고의 슈퍼컴퓨터인 eServer Blue Gene의 280600 GFlops에는 택도 없이 모자라지만
하나의 칩으로 나올 수 있는 성능으로는 상당하다고 할 수 있겠다.
물론 게임기로 이러한 성능을 사용할 일은 거의 없겠지만, IBM에서 PowerPC군을 Cell로 대체한다면,
앞으로 이러한 프로세서를 볼날이 머지 않았을 것이다.
Cell Broadband Engine™ 사이트 바로가기
Cell Chip Programming Guide 다운받기
Cell Processor 한글 공식 설명 자료 by IBM