MORE格闘アクションゲームのリアルタイム通信12015.12.10皆様こんにちは。プログラマの島鼻と申します。今回は通信処理について基本的な部分を解説してみたいと思います。社内で行った勉強会を幾つかの回数に分けてお送りします。格闘アクションゲームの場合、FPSやMMORPGとは違い、毎フレーム確実な同期処理が必要になります。1フレーム毎にボタンの操作情報を送り合い、同期が取れたらそのフレームを表示します。画像と交えて簡単に解説して行きます。もくじどうやって同期するのか?再現(リプレイ)する。挑むまとめどうやって同期するのか?相手の端末と自分の端末は非同期です。基本的には毎フレーム自分の操作情報を相手に教えてあげれば良いのです。次から簡単に図で通信の様子を確認しましょう。操作情報を送り合えたようです。相手にデータが届くまで時間は掛かるのでワンテンポズレてしまいますね。詳しく見て行きましょう。操作情報はフレーム単位で管理されます。聞く単語の「FPS」と呼ばれる物です。1秒間を幾つかに分割した単位をフレームと呼び、ゲームはこのフレーム単位で動きます。入力情報も1フレームずつ取得され、ゲームに反映されます。この通信では1フレームずつの操作情報を毎フレーム送っています。「ラグ」についてです。これは情報を送信してから相手に到着するまでの時間と思って良いです。次に「同期フレーム」です。こちらは自分の操作情報と相手の捜査情報が揃ったフレームです。この揃った状態でないと、ゲームを1フレーム処理出来ないです。格闘ゲームの場合、相手と自分の操作情報の状態を厳密に合わせないと同じ試合を再現できない為です。この同期フレームを以てゲームは進行して行きます。次に「現在フレーム」です。これは実際の入力を受け付けているフレームです。何か不思議な感じがしますが、ボタンを押してから少し経ってからゲームに反映されます。常にゲーム画面は「ラグ分」だけ遅れて動作します。後追いで次々送信するので「ラグ以上に遅れる事」は基本的には無いです。このラグがミソですね。このラグが無いと常にカクカクしながらゲームが進行する事になります。しても通信している間は待たされるという事です。今回はこの辺に致しましょう。採用情報クラウドクリエイティブスタジオではプログラマを募集しております。