WebSocket은 Unity의 WebGL 내보내기로 얼마나 실시간성을 발휘할 수 있는지 검증해 보았다

h tps : // / st- 라 ls-에서도. 어리석은 p. 코m/
위 사이트에 있는 프라우자 위에 있는 유니티 짱을, 스마트폰으로 조작할 수 있을까를 시험해 보자.
위의 demo 동영상을 gif로 올렸습니다.


관심이 있는 분은 이쪽의 youtube 동영상도 봐 주세요.


전제



전제로서 Rails5에서 ActionCable이라는 Websocket을 사용하기 쉽게하는 framework가 등장했지만,
이 framework는 보통의 WEB용으로, 클라이언트측(브라우저측)으로부터의 송신 처리, 서버로부터의 수신 처리는 모두 JavaScript로 쓰고 있습니다.
거기서, 서버측은 ActionCable 그대로(Rails 그대로), 클라이언트측을 크로스 플랫폼으로 하면, 그것은 얼마나 훌륭한 것인가…

준비 작업



바퀴의 재발명이 되지 않도록 Google 선생님에게 물어 보았습니다.
「actioncable unity」로 검색…
그리고 Unity의 에셋 스토어도 검색하여 "Simple Web Sockets for Unity WebGL"은 단지 수요에 부합했습니다.
Download하고 압축을 풀면,
· WebSocket.cs
· websocket-sharp.dll
· WebSocket.jslib
세 개의 파일이 나올 것입니다. 이 글을 쓰는 시점에서 "Simple Web Sockets for Unity WebGL"이미 Unity 에셋 스토어에서 이미 삭제 된 것 같습니다.
htps : // 기주 b. 이 m / s ta / u b
에서 다운로드한 zip 파일을 압축을 풀고 안의 "websocket-sharp"폴더를 그대로 Unity의 Assets\Plugins에 복사하면 됩니다.


ActionCable wrapper 만들기 (C # (unity 버전))



일단 움직인다(Chrome Ver 72.0.3626.121과 Android8.1.0). 코어 부분의 소스는
htps : // 기주 b. 코 m / 조오 아야 / 아 c 치 온카 b
에 커밋했습니다. 어디가 병목인지를 규명하고 수정하면 다시 커밋합니다.

올린 Youtube 동영상 설명



빨간 선으로 둘러싸인 3D 캐릭터를 아래의 컨트롤러로 조작할 수 있는지의 데모.


3D캐릭터측은 게임화면 기동과 동시에 websocket서버에 접속(Subscribe)하고, 3D캐릭터를 독특한 키로서 서버에 등록합니다.

컨트롤러는 apk 파일로 스마트 폰에 설치되며 시작하면 websocket 서버에 연결 (Subscribe)합니다. websocket 서버가 이것을 검지하면, 지금 서버에 접속하고 있는 모든 유저를 broadcast 합니다.

컨트롤러 측은 수신 한 사용자에게 명령 (상하 좌우 이동, 점프 등)을 발행하고 그것이 websocket 서버를 통해 3D 캐릭터에 도착합니다.

문제점



커맨드를 발행하고 나서 1초(경우에 따라서는 그 이상)도 지났는데, 캐릭터는 아직 움직이지 않습니다.

도전



1, 커맨드 발행 → 서버 수신 → 타겟 클라이언트 수신 사이의 경과 시간을 산출
2, Unity의 WebGL 내보내기 측은 webassembly와 javascript 사이에 통신이 있고 그것이 병목 현상인지 확인

좋은 웹페이지 즐겨찾기