NVIDIA GRID 개발 문서는 일단 대충 한번 다 훑었다. 샘플코드 흐름도 대충 파악했다.
궁금증은 대부분 풀렸고 예상에서 크게 벗어나지 않았다.
1.SDK가 제공하는건 프론트버퍼를 캡쳐해서 시스템메모리로 가져오거나 캡쳐한 영상을 h264로 인코딩해주는것 까지다.
…
2.서버가 h264스트림을 클라이언트로 전송하는 방법을 제공하진 않는다. 프로그래머가 만들어야 한다.
3.클라이언트가 h264스트림을 수신하고나서 디코딩하는 방법도 각자 알아서. 안드로이드 + Tegra 조합인 경우 sdk에서 지원한다. NVIDIA GPU를 사용하능 pc라면 CUDA SDK에 포함된 h264디코더를 사용할 수 있을것이다.
4.클라이언트의 입력을 서버로 전달하는 방법도 제공하지 않는다. 플랫폼별로 따로 네트워크 코드를 작성해서 처리해야한다.
[결론]
GRID서버 왕창 구매해서 이전에 개발해둔 게임을 올리면 모바일을 비롯한 온갖 플랫폼에서 다 돌거라고 생각하면 큰 오산이다.
하지만 게임 하나를 GRID로 서비스할수 있도록 만든다면 그 과정에서 나온 라이브러리들을 이용해서 나름의 솔루션을 구축할 수 있다. 몇몇 업체들은 이미 라이브러리를 구축하고 있을거고 기업상대로 장사를 하고 있을것이다.
[고찰]
스트리밍 게임 기술에 대한 연구를 할 필요가 있는가에 대한 내 생각.
네트웍 레이턴시나 기타 등등 장애물이 많다. 근데 그런 문제들을 감안해서 스트리밍을 해볼거냐 말거냐를 판단하려면 게임을 스트리밍으로 돌려봐야한다. 이미 개발된 게임을 바로 스트리밍 서버에 올려놓고 테스트를 할수 있는게 아니다. 스팀에서 제공하는 기능이 있긴한데 게임코드에 GRID SDK코드 심어서 하드웨어 가속받아 처리하는거랑은 차이가 많다.
그러니까 게임 하나 정도는 코드를 뜯어고쳐서 GRID SDK를 적용한 테스트를 해봐야한다.
안만들어보고 이러쿵저러쿵 하는건 의미가 없다.
한개는 만들어봐야 결론이 난다.
개인적으로는 이번 프로젝트를 스트리밍 게임으로 서비스하고 싶다.
기술적으로 재밌는 시도가 될것 같다.