/ shared/Discord Activities
title: "Discord Activities" tags: "Discord Activities, AddressRewriter, .Net, DotNet"
Discord Activities를 사용하면 WebAssembly 게임을 Discord에 직접 통합할 수 있습니다. 이 환경에서 멀티플레이어 게임은 아래에 설명된 추가 요구 사항을 충족해야 합니다. 그 외 모든 사항은 Discord 개발 가이드를 참조하세요.
Photon 관점에서 가장 중요한 부분은: Photon의 주소에 대한 URL 매핑을 설정해야 하며, 클라이언트는 그에 따라 서버 URL을 재작성해야 한다는 점입니다.
이는 Photon Realtime .Net SDK 및 유니티 SDK v4.1.8.11 이상, v5.1.1 이상에서 지원됩니다.
요구 사항 및 설정
"Discord Activity"로 실행되는 애플리케이션은 보안 페이지(https)에 호스트 되므로 임의의 서버 주소와 통신할 수 없습니다. 모든 통신은 discordsays.com
을 통해 이루어져야 합니다.
Discord는 "URL Mapping"을 통해 애플리케이션이 필요로 하는 임의의 주소에 대해 discordsays.com
상의 경로를 설정할 수 있도록 합니다.
Discord Activity에 대한 URL 매핑 예시(일부 생략):

Photon 서버는 exitgames.com
및 photonengine.io
도메인에서 실행됩니다. Industries Circle 회원은 *.photonindustries.io
도메인만 사용할 수 있습니다.
각 머신은 고유의 서브도메인을 가지며(예: 네임서버용 ns.photonengine.io
), 경우에 따라 경로(일반적으로 "Master" 또는 "Game")를 사용합니다. 이 경로도 그대로 유지해야 합니다.
Photon Cloud의 가변 주소 범위를 처리하려면 매핑에서 "Parameter Matching"을 사용하세요:
/photonengine/{subdomain} -> {subdomain}.photonengine.io
Address Rewriter
Photon용 URL 매핑을 설정하면 discordsays.com
경로를 통해 접근할 수 있지만, 클라이언트는 여전히 원래 Photon 서버 URL을 사용하려고 시도합니다. 따라서 클라이언트 측에서 주소 재작성을 코드로 수행해야 합니다.
Photon 클라이언트에서 서버 주소를 수정하려면 client.AddressRewriter
함수를 사용합니다. 이 함수를 등록하면, 연결을 시도하기 전마다 Func<string, ServerConnection, string>
델리게이트가 호출되어 주소를 변환할 수 있습니다.
Discord Activities용 주소 재작성 예시:
C#
string clientId = "12345678"; // your app's discord client id
private string AddressRewriterDiscord(string address, ServerConnection serverType)
{
bool isUri = Uri.TryCreate(address, UriKind.Absolute, out Uri uri);
if (isUri)
{
string host = uri.Host;
string[] hostSplit = host.Split('.');
if (hostSplit.Length != 3)
{
Debug.LogError($"Host address could not be split into 3 parts (subdomain, domain and tld).");
return address;
}
string subdomain = hostSplit[0];
string domain = hostSplit[1];
string discordAddress = $"{uri.Scheme}://{clientId}.discordsays.com/.proxy/{domain}/{subdomain}{uri.path}";
//Debug.Log($"discordAddress: {discordAddress}");
return discordAddress;
}
return address;
}
주소 재작성을 적용하려면 클라이언트 연결 전에 메서드를 등록하세요:
C#
client.AddressRewriter = AddressRewriterDiscord;
{% if PUN_v2 %}
PUN에서는 다음을 설정하세요:
C#
PhotonNetwork.NetworkingClient.AddressRewriter = AddressRewriterDiscord;
{% endif %}
이 코드는 Discord Activity 전용 빌드에서만 사용하세요.
관련 주제
Discord Activity로 앱을 성공적으로 실행하려면, 유니티에서 생성된 HTML의 데이터 경로도 ".proxy" 주소를 사용하도록 조정해야 합니다.
