온라이브, 가이카이 등의 서비스에 대해 들어보셨을지도 모르겠는데

간략히 설명하자면 서버에서 게임 클라이언트를 실행하고 화면을 동영상으로

실시간 인코딩해서 유저에게 네트워크로 보내주고,

유저는 동영상 화면을 보면서 마우스나 조이스틱 입력을 네트워크로 전송해서

서버에서 실행되는 클라이언트를 조작하는 것입니다.


현재 기술로도 15fps, 200 ms 레이턴시 정도로 플레이가 가능하다니 아주 허황된 기술은 아닌데,

곧 10 배 빠른 인터넷이 나온다고도 하고, 멀티코어 CPU, GPU 발전속도도 서버 렌더링,인코딩의 비용을

크게 줄여줄 것으로 예상되니 3~5 년 후에는 현실화 될지도 모르겠습니다.

몇몇 업체는 관련 플랫폼 선점을 위해 연구 개발에 들어갔다는데, 저도 개인적으로 관심이 있어

어떻게 만들까 아이디어를 생각해봤습니다 ㅎㅎ


기본 아이디어가 렌더링->인코딩->네트워크전송<-유저입력 인것은 큰 차이는 없겠구요,

여기서 UI 레이어는 특수하게 처리하는 것이 핵심 아이디어 입니다.

3D 게임화면은 중저해상도로 인코딩하여 동영상 방식으로 보여주되

UI 는 서버에서 렌더링하지 않고 클라이언트로 UI 명령을 전송해 클라이언트에서 해석하여

보여줍니다.. 음.. 예를들면 유닉스 X-Window 프로토콜과 비슷한 개념이라고 생각할 수 있겠네요.

UI 그래픽 데이타는 작은 것을 늘려 그리는 것이 대부분이기 때문에 트래픽 문제는 덜할것 같구요,

UI 는 단순히 그래픽 데이타가 아니라 Script 를 내장하여 어느정도 클라이언트 CPU 를 활용합니다.

아마 Flash 플레이어 비슷한 뭔가로 나올것 같기도 하고요..


UI 가 클라이언트에서 해석되기 때문에 문맥에 맞는 IME 처리도 가능하고, 글씨도 또렷하게 나오고,

UI 조작은 클라이언트 자체적으로 어느 정도 전개가 가능합니다. 쓸데없는 입력 정보를 서버로 전송하지

않는 필터링도 하여 트래픽을 아낄 수도 있겠고요..


이런 UI 라이브러가 스탠드얼론 모드에서는 기존 UI 라이브러리처럼 네트워크 없이 화면에 직접

렌더링하는데, 네트워크버전/로컬버전 따로 2셋트를 만드는 것이 아니라 완전 transparent 하게

2가지 모드를 지원하는 UI 라이브러리를 만들어보자는 것이 저의 계획입니다. ;;


근데 그런 UI 라이브러리의 기본 기능이 허접하면 경쟁력이 없으니,,

스케일폼을 능가할 정도로 자유로운 표현이 가능하게 만들어보려고 생각중인데

안드로이드의 Surface Flinger 관련 솔루션과 Skia 렌더링 엔진을 도입해볼까 합니다..

텍스쳐 메모리를 좀 더 쓰겠지만 완전 2D GDI 수준의 자유도를 속도 저하 적게 구현할 수 있을것

같다는 생각입니다. 아직 자세히는 안봐서 3D 게임에도 맞는 솔루션인지 확신은 없구요;;


동영상 관련 솔루션은 따로 설명은 안하는데, 반디캠 라이브러리 성능을 유추해보면 큰 문제는

없어 보입니다. 게다가 라이센스 프리한 WebM 코덱도 나온다니 감사히 줏어먹으면 될것 같고 ^^



그냥 연휴에 떠오른 아이디어라서 두서 없이 적어보았는데, 각종 태클 감사히 받겠습니다.

참고가 될만한 자료를 알려주셔도 고맙겠구요~