Lobby サービスに接続する
Last updated on April 7, 2026
概要
Lobby サービスはマルチプレイヤーサービス下のコンポーネントで、プレイヤーのアクティビティの主要ハブとして機能します。このサービスはプレイヤー間の継続的な接続を提供し、フレンズとプレゼンスサービスとやり取りするためのゲームクライアントのエントリーポイントとしても機能します。
このハウツーでは、AccelByte OSS (OSS)、Unreal Engine、Unity を使用してゲームを AccelByte Gaming Services (AGS) Lobby サービスに接続する方法を説明します。
前提条件
- AGS 管理者ポータルへのアクセス。
- Unreal Engine または Unity を使用している場合は、AccelByte Unreal または Unity SDK をインストールしている必要があります。これにはゲームクライアントの認証情報が含まれます:
- クライアント ID
- クライアントシークレット
ゲームを Lobby サービスに接続する
ゲームを Lobby サービスに接続するには、ゲームエンジンの SDK インストール手順に従ってください。
- AccelByte OSS
- Unreal Engine
- Unity
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
- TypeScript Extend SDK
AccelByte Online Subsystem (OSS) で Lobby サービスに接続する方法は 2 つあります:
Lobby に自動的に接続する
DefaultEngine.ini ファイルの [OnlineSubsystemAccelByte] セクションの bAutoLobbyConnectAfterLoginSuccess パラメーターを true に設定します。設定すると、OSS はユーザーのログインが成功したときにロビーへの接続を試みます。
Lobby に手動で接続する
自動オプションが機能しない場合は、このコマンドを実行して FOnlineIdentityAccelByte::ConnectAccelByteLobby を手動で呼び出すことができます。
// Manually connect to lobby
int32 LocalUserNum = 0;
FOnlineIdentityAccelBytePtr IdentityInterface = StaticCastSharedPtr<FOnlineIdentityAccelByte>(OnlineSubsystem->GetIdentityInterface());
AB_TEST_TRUE(IdentityInterface.IsValid());
IdentityInterface->ConnectAccelByteLobby(LocalUserNum);
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto LobbyApi = ApiClient->GetLobbyApi().Pin();
LobbyApi->Connect();
AccelByteSDK.GetClientRegistry().GetApi().GetLobby().Connect();
LobbyService lobby = new LobbyService(sdk.Configuration);
//async
await lobby.Connect(false);
//sync
Task connectTak = lobby.Connect(false);
connectTak.Wait();
connectionutils.NewWebsocketConnection(&configRepo, &tokenRepo, lobbyMessageHandler)
import okhttp3.Response;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
import net.accelbyte.sdk.api.lobby.ws_models.MessageNotif;
public class MyLobby extends WebSocketListener {
...
private OkhttpWebSocketClient wsClient;
public MyLobby(...) {
...
wsClient = OkhttpWebSocketClient.create(configRepository, tokenRepository, this);
}
@Override
public void onMessage(@NotNull WebSocket webSocket, @NotNull String text) {
super.onMessage(webSocket, text);
if (text.contains(MessageNotif.getType())) {
final MessageNotif notif = MessageNotif.createFromWSM(text);
...
}
}
@Override
public void onOpen(@NotNull WebSocket webSocket, @NotNull Response response) {
super.onOpen(webSocket, response);
}
@Override
public void onClosed(@NotNull WebSocket webSocket, int code, @NotNull String reason) {
super.onClosed(webSocket, code, reason);
}
@Override
public void onClosing(@NotNull WebSocket webSocket, int code, @NotNull String reason) {
super.onClosing(webSocket, code, reason);
}
@Override
public void onFailure(@NotNull WebSocket webSocket, @NotNull Throwable t, @Nullable Response response) {
super.onFailure(webSocket, t, response);
}
import asyncio
import accelbyte_py_sdk.services.auth as auth_service
from accelbyte_py_sdk.core import AccelByteSDK
from accelbyte_py_sdk.core import MyConfigRepository
from accelbyte_py_sdk.core import HttpxHttpClient
from accelbyte_py_sdk.core import InMemoryTokenRepository
from accelbyte_py_sdk.core import WebsocketsWSClient
config_repo = MyConfigRepository(
base_url="https://****.accelbyte.io",
client_id="********************************",
client_secret="********************************",
namespace="********",
)
token_repo = InMemoryTokenRepository()
sdk = AccelByteSDK()
sdk.initialize(
options={
"config": config_repo,
"token": token_repo,
"http": HttpxHttpClient(),
}
)
result, error = await auth_service.login_user_async(
username="********",
password="********",
sdk=sdk,
)
if error:
exit(error)
ws_client = WebsocketsWSClient(
uri=config_repo.get_base_url(),
access_token=token_repo.get_access_token(),
)
await ws_client.connect()
# do something
await ws_client.disconnect()
import { AccelByte } from '@accelbyte/sdk'
import { Lobby } from '@accelbyte/sdk-lobby'
const sdk = AccelByte.SDK({
coreConfig: {
baseURL: process.env.AB_BASE_URL || '',
clientId: process.env.AB_CLIENT_ID || '',
redirectURI: process.env.AB_REDIRECT_URI || '',
namespace: process.env.AB_NAMESPACE || ''
},
webSocketConfig: {
// Enable reconnection on abrupt disconnects. Defaults to true.
allowReconnect: true,
// Maximum number of reconnect attempts. Set to 0 for unlimited attempts.
maxReconnectAttempts: 3
}
})
// Ensure login is complete before connecting
const lobbyWs = Lobby.WebSocket(sdk)
// Connect to WebSocket
lobbyWs.connect()
lobbyWs.onOpen(() => console.log("Connected to WebSocket."))
// Listen for all incoming messages through a single handler
lobbyWs.onMessage(message => {
console.log(message)
})
lobbyWs.onClose((ev) => {
console.log("Disconnected from WebSocket.", ev)
if (sdk.webSocketConfig.allowReconnect) {
console.log("Attempting reconnection, max attempts:", sdk.webSocketConfig.maxReconnectAttempts)
}
})
// Disconnect from WebSocket
await lobbyWs.disconnect()
次のステップ
ゲームを Lobby サービスに接続したら、ゲームのロビーが作成されます。AGS 管理者ポータルでゲームのロビー設定を構成します。Lobby サービスの設定を参照してください。