コンテンツにスキップ

リアルタイム通信

リアルタイム通信は マルチプレイヤーロビー のサブ機能で、ルーム内プレイヤー間でカスタムデータを送るために使います。Unity では信頼性付きチャネルと大きなメッセージの分割を提供し、Godot では現在 JSON メッセージ入口を提供しています。リアルタイム通信は先にルーム接続を完了する必要があり、ルーム参加前に単独では使用できません。

エンジン状態説明
UnityPreviewルームメッセージ、信頼性付き転送、大きなメッセージの分割をサポートします。
GameMaker未対応現在の GameMaker 初回公開版にはリアルタイム通信は含まれません。
Godot開発中プレビュー runtime には JSON メッセージの送受信があります。
  • ルーム の最小フローが完了している。
  • ルームに参加済みである。
  • メッセージタイプには SDK の予約タイプを使用しない。
  • 送信内容は両端で解析しやすいよう安定した構造にする。
using System;
using UnityEngine;
using IGP.UnitySDK;
using IGP.UnitySDK.Models;
public sealed class IGPChatDriver : MonoBehaviour
{
[SerializeField] private IGPRuntimeManager runtimeManager;
private void OnEnable()
{
runtimeManager.onMessageReceived.AddListener(OnMessageReceived);
}
private void OnDisable()
{
runtimeManager.onMessageReceived.RemoveListener(OnMessageReceived);
}
public async void SendChat()
{
await runtimeManager.SendMessageAsync(new Message
{
type = "chat.message",
roomId = runtimeManager.CurrentRoomId,
playerId = runtimeManager.PlayerId,
reliable = true,
content = new
{
text = "hello",
sentAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
},
});
}
private void OnMessageReceived(string messageType, object content)
{
Debug.Log($"Message {messageType}: {content}");
}
}
エンジン確認項目
Unity2 つのクライアントが同じルームにおり、一方が送信した後、もう一方が onMessageReceived を受け取る。
GameMaker現在はリアルタイム通信の検証対象外です。
GodotJSON メッセージ送信後、もう一方が MessageReceived signal を受け取る。
  • 送信は成功するが受信できない: 2 つのクライアントが同じルームにいるか確認してください。
  • 内容の解析に失敗する: まず最も単純な JSON 文字列で検証してください。
  • Unity で大きなメッセージ送信に失敗する: 信頼性付きメッセージ入口を優先してください。
  • Godot で予約タイプエラーが出る: 業務側で定義したメッセージタイプ名に変更してください。