한번도 안해본 기술은 자료를 잘 모아야 계획 및 설계를 하기가 쉽다...
행복회로 돌리는 중..
- N유저 N게임 인스턴스 지원
- 간편한 저장 및 불러오기 지원
- 입출력 딜레이 최소화
- 멀티탭(2인용 게임) 지원
- 여러 게임 플랫폼 지원
- 직관적인 GUI
큰 꿈을 가지고 계획을 세우기 시작했다.
클라우드 게이밍의 구성요소는 다음과 같다.
- 매니징 서버
- static 파일서버(html, js, css...)
- 최적의 게임 서버 선별
- 브라우저와 연결된 게임서버의 세션 관리
- 게임 서버 상태 모니터링
- 게임 서버
- 게임 실행
- video 및 audio 인코딩
- video 및 audio 전송
- 클라이언트
- GUI
- 컨트롤러 input data 전송
이들을 개발하기 위해 고른 테크스택은..
- 에뮬레이터 코어의 제어는 Libretro API + Libretro Cores (대체적으로 C코드가 많이 보인다)
- 자연스러운 동시성 코드를 작성하게 해주는 Go
- Channel을 유용하게 쓸수 있는 부분이 많다고 판단 + Libretro API의 C코드 바인딩이 편리 (포인터 + 데이터타입)
- webRTC 미디어 스트림에서 필요한 Opus(오디오 포멧) + H.264(비디오 인코딩) 라이브러리도 전부 C언어로 되어있다.
- 유저와의 통신은 webRTC API
- 서버와 브라우저의 peer-to-peer 연결
- (서버) webRTC의 mediaEngine 및 Track을 이용한 video 및 audio 전송
- (유저) 키보드 및 컨트롤 input을 게임서버에 전달할 dataChannel
- webRTC API의 구현체중 하나인 Pion Go (슬랙 및 커뮤니티에서 질문or검색이 용이함)
- 클라이언트 코드는 아직 미정... input 관련 핸들러는 어떻게 해야 할지 아직 감조차 오지 않음
여러모로 Go를 시도해보기 좋은 프로젝트라고 판단했다!
이런느낌으로 만들면 되지 않을까... 설계도 스케치! (내부 내용 아무것도 모르는 단계...)
'remote-craft' 카테고리의 다른 글
RemoteCraft 05 - WebRTC Pion! (0) | 2021.07.23 |
---|---|
RemoteCraft 04 - WebRTC 소개 (0) | 2021.07.23 |
RemoteCraft 03 - 계획 01 + 비디오 파이프라인 이야기... (0) | 2021.07.19 |
RemoteCraft 02 - Libretro 00 (0) | 2021.07.19 |
RemoteCraft - 00 시작 (0) | 2021.07.13 |