<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Game Engine on Game Server Services | Docs</title><link>/ko/tags/game-engine/</link><description>Recent content in Game Engine on Game Server Services | Docs</description><generator>Hugo</generator><language>ko</language><atom:link href="/ko/tags/game-engine/index.xml" rel="self" type="application/rss+xml"/><item><title>Game Engine</title><link>/ko/api_reference/initialize/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/initialize/game_engine/</guid><description>&lt;h2 id="sdk-초기화"&gt;SDK 초기화&lt;a class="td-heading-self-link" href="#sdk-%ec%b4%88%ea%b8%b0%ed%99%94" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2 이용을 시작하려면 먼저 GS2-SDK의 초기화 처리를 수행합니다.
&lt;code&gt;Gs2Client.Create&lt;/code&gt;를 호출함으로써 GS2의 클라이언트 인스턴스인 &lt;code&gt;Gs2Domain&lt;/code&gt;을 얻을 수 있습니다.&lt;/p&gt;
&lt;p&gt;초기화에 필요한 파라미터는 다음과 같습니다.&lt;/p&gt;
&lt;h3 id="파라미터"&gt;파라미터&lt;a class="td-heading-self-link" href="#%ed%8c%8c%eb%9d%bc%eb%af%b8%ed%84%b0" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;인자명&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;credential&lt;/td&gt;
 &lt;td&gt;BasicGs2Credential&lt;/td&gt;
 &lt;td&gt;크리덴셜 정보&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;region&lt;/td&gt;
 &lt;td&gt;Region&lt;/td&gt;
 &lt;td&gt;접속 대상 GS2 리전&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="basicgs2credential"&gt;BasicGs2Credential&lt;a class="td-heading-self-link" href="#basicgs2credential" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&amp;ldquo;클라이언트ID&amp;quot;와 &amp;ldquo;클라이언트시크릿&amp;quot;을 지정합니다.
이 값들은 GS2-Identifier에서 관리하고 있습니다.&lt;/p&gt;
&lt;h4 id="region"&gt;Region&lt;a class="td-heading-self-link" href="#region" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;GS2의 데이터센터를 지정합니다.
지정 가능한 값에 대해서는 &lt;a href="/ko/articles/tech/region/"&gt;리전&lt;/a&gt;을 참조해 주십시오.&lt;/p&gt;
&lt;h3 id="구현-예제"&gt;구현 예제&lt;a class="td-heading-self-link" href="#%ea%b5%ac%ed%98%84-%ec%98%88%ec%a0%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;




&lt;ul class="nav nav-tabs" id="tabs-1" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link disabled"
 id="tabs-01-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-00" role="tab"
 aria-controls="tabs-01-00" aria-selected="false"&gt;
 Game Engine:
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-01-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-01" role="tab"
 aria-controls="tabs-01-01" aria-selected="true"&gt;
 Unity (UniTask)
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-01-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-02" role="tab"
 aria-controls="tabs-01-02" aria-selected="false"&gt;
 Unity (Vanilla)
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-01-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-03" role="tab"
 aria-controls="tabs-01-03" aria-selected="false"&gt;
 Unreal Engine 5
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-1-content"&gt;
 &lt;div class="tab-pane fade"
 id="tabs-01-00" role="tabpanel" aria-labelled-by="tabs-01-00-tab" tabindex="1"&gt;
 &lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade show active"
 id="tabs-01-01" role="tabpanel" aria-labelled-by="tabs-01-01-tab" tabindex="1"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Unity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gs2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BasicGs2Credential&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;your client id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;your client secret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Region&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApNortheast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade"
 id="tabs-01-02" role="tabpanel" aria-labelled-by="tabs-01-02-tab" tabindex="1"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cs" data-lang="cs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Unity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Gs2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BasicGs2Credential&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;your client id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;your client secret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Region&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApNortheast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade"
 id="tabs-01-03" role="tabpanel" aria-labelled-by="tabs-01-03-tab" tabindex="1"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;UE5&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FGs2Client&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MakeShared&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FBasicGs2Credential&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;your client id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;your client secret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;ApNorthEast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;h4 id="카오스-모드"&gt;카오스 모드&lt;a class="td-heading-self-link" href="#%ec%b9%b4%ec%98%a4%ec%8a%a4-%eb%aa%a8%eb%93%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;카오스 모드를 적용한 SDK 초기화 처리를 호출함으로써 API 요청을 일정한 확률로 실패시킬 수 있습니다.
카오스 모드를 활성화한 클라이언트를 사용하여 개발을 진행함으로써 에러 핸들링을 더욱 견고하게 만들 수 있습니다.&lt;/p&gt;</description></item><item><title>Game Engine</title><link>/ko/api_reference/transaction/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/transaction/game_engine/</guid><description>&lt;h2 id="트랜잭션이란"&gt;트랜잭션이란&lt;a class="td-heading-self-link" href="#%ed%8a%b8%eb%9e%9c%ec%9e%ad%ec%85%98%ec%9d%b4%eb%9e%80" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;GS2에서의 트랜잭션 처리란, &amp;ldquo;소비 액션&amp;quot;과 &amp;ldquo;입수 액션&amp;quot;으로 정의된 리소스 교환 처리를 실행하는 덩어리를 가리킵니다.
트랜잭션을 발행하는 API에는 GS2-Exchange의 교환 실행 함수(Exchange), GS2-Showcase의 상품 구매 함수(Buy), GS2-Quest의 퀘스트 시작 함수(Start)와 같은 것들이 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;소비 액션&amp;quot;은 플레이어에게 불리하게 작용하는 사용자 데이터 조작을, 반대로 &amp;ldquo;입수 액션&amp;quot;은 플레이어에게 이득이 되는 사용자 데이터 조작을 가리킵니다.&lt;/p&gt;
&lt;p&gt;구체적으로 GS2-Inventory라면 아이템의 소비가 &amp;ldquo;소비 액션&amp;rdquo;, 아이템의 입수가 &amp;ldquo;입수 액션&amp;quot;이 됩니다.
조금 색다른 예를 들면, GS2-Inbox의 메시지 개봉 플래그를 세우는 조작이 &amp;ldquo;소비 액션&amp;rdquo;, 메시지에 첨부된 아이템을 수령하는 것이 &amp;ldquo;입수 액션&amp;quot;이 됩니다.
GS2에서는 사용자 데이터를 다시 쓰는 트랜잭션을 발행하고 실행하는 것을 반복함으로써 게임 사이클을 실현한다고 이해하십시오.&lt;/p&gt;</description></item><item><title>GS2 이용 시작</title><link>/ko/get_start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/</guid><description>&lt;h2 id="sdk"&gt;SDK&lt;a class="td-heading-self-link" href="#sdk" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="game-engine"&gt;Game Engine&lt;a class="td-heading-self-link" href="#game-engine" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Game Server Services는 주요 게임 엔진에서 이용할 수 있는 SDK를 제공합니다.&lt;br&gt;
게임 엔진용 SDK는 게임 내에서 이용하는 것에 초점을 맞춰, 일반 SDK보다 고수준의 API 형태로 제공됩니다.&lt;/p&gt;





&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link disabled"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 aria-controls="tabs-00-00" aria-selected="false"&gt;
 &lt;strong&gt;Language&lt;/strong&gt;:
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="unity" aria-controls="tabs-00-01" aria-selected="true"&gt;
 Unity
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 data-td-tp-persist="unreal engine 5" aria-controls="tabs-00-02" aria-selected="false"&gt;
 Unreal Engine 5
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab"
 data-td-tp-persist="godot" aria-controls="tabs-00-03" aria-selected="false"&gt;
 Godot
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 
 &lt;/div&gt;
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;h4 id="gs2-sdk-for-unity"&gt;GS2 SDK for Unity&lt;a class="td-heading-self-link" href="#gs2-sdk-for-unity" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;본 SDK는 Apache License 2.0으로 제공됩니다.&lt;br&gt;
프로그램 어딘가에 Apache License 2.0으로 제공되는 라이브러리를 사용하고 있음을 명시해야 합니다.&lt;/p&gt;</description></item><item><title>샘플 코드 전문</title><link>/ko/get_start/tutorial/coding/all/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/tutorial/coding/all/</guid><description>&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link disabled"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 aria-controls="tabs-00-00" aria-selected="false"&gt;
 Game Engine:
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 aria-controls="tabs-00-01" aria-selected="true"&gt;
 Unity
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab"
 aria-controls="tabs-00-02" aria-selected="false"&gt;
 Unreal Engine
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab"
 aria-controls="tabs-00-03" aria-selected="false"&gt;
 Godot
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;
 &lt;div class="tab-pane fade"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;
 &lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade show active"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Gs2.Core.Model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Gs2.Unity.Core&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Gs2.Unity.Gs2Account.Model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Gs2.Unity.Util&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;UnityEngine&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Tutorial&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;MonoBehaviour&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;IEnumerator&lt;/span&gt; &lt;span class="n"&gt;Start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Setup variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;clientId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;clientSecret&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientSecret&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;accountNamespaceName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;game-0001&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Initialize GS2 SDK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2Domain&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;BasicGs2Credential&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;clientId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;clientSecret&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Region&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApNortheast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gs2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// define GS2-Account namespace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;gs2Account&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;accountNamespaceName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Create an anonymous account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;EzAccount&lt;/span&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Create an anonymous account&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gs2Account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ModelFuture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Dump anonymous account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$&amp;#34;UserId: {account.UserId}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$&amp;#34;Password: {account.Password}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Log-in created anonymous account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;GameSession&lt;/span&gt; &lt;span class="n"&gt;gameSession&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LoginFuture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Gs2AccountAuthenticator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;accountSetting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;AccountSetting&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;accountNamespaceName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;accountNamespaceName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UserId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gameSession&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Load TakeOver settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gs2Account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gameSession&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;TakeOvers&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HasNext&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Next&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$&amp;#34;Type: {it.Current.Type}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$&amp;#34;Identifier: {it.Current.UserIdentifier}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Finalize GS2-SDK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DisconnectFuture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade"
 id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Gs2Tutorial.cpp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;Sample/Gs2Tutorial.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;Core/Gs2Domain.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;Util/Gs2AccountAuthenticator.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;DEFINE_LOG_CATEGORY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EZGS2_API&lt;/span&gt; &lt;span class="n"&gt;FSampleTask&lt;/span&gt; &lt;span class="k"&gt;final&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Util&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;TGs2Future&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;virtual&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;FSampleTask&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;virtual&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FGs2ErrorPtr&lt;/span&gt; &lt;span class="n"&gt;Action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;TSharedPtr&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;TSharedPtr&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Setup variables
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;ClientId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;ClientSecret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientSecret&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;AccountNamespaceName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;game-0001&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Create GS2 client
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;UE5&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FGs2Client&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MakeShared&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FBasicGs2Credential&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ClientId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ClientSecret&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;ApNorthEast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Create an anonymous account
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Display&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Create anonymous account&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;CreateFuture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AccountNamespaceName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Load created account
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;LoadFuture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LoadFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LoadFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LoadFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;LoadFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;Account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LoadFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Dump anonymous account
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Display&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;UserId: %s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetUserId&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Display&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Password: %s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetPassword&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Log-in created anonymous account
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;LoginFuture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MakeShareable&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;UE5&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Util&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;IAuthenticator&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;UE5&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Util&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FGs2AccountAuthenticator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MakeShared&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;UE5&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Util&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FAccountSetting&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AccountNamespaceName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetUserId&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetPassword&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LoginFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LoginFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LoginFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;LoginFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;GameSession&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LoginFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Load TakeOver settings
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;It&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AccountNamespaceName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;GameSession&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;TakeOvers&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="nl"&gt;TakeOver&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;It&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Display&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Type: %d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;TakeOver&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetType&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Display&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Identifier: %s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;TakeOver&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetUserIdentifier&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Finalize GS2-SDK
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;FinalizeFuture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Disconnect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;FinalizeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FinalizeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FinalizeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;FinalizeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;nullptr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AGs2Tutorial&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;AGs2Tutorial&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;PrimaryActorTick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bCanEverTick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;AGs2Tutorial&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;BeginPlay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Super&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;BeginPlay&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;FAsyncTask&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;FSampleTask&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartBackgroundTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;AGs2Tutorial&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Tick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;DeltaTime&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Super&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Tick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DeltaTime&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Gs2Tutorial.h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#pragma once
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;CoreMinimal.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;GameFramework/Actor.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;#34;Gs2Tutorial.generated.h&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;DECLARE_LOG_CATEGORY_EXTERN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;All&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UCLASS&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EZGS2_API&lt;/span&gt; &lt;span class="nl"&gt;AGs2Tutorial&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;AActor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;GENERATED_BODY&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AGs2Tutorial&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;protected&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;virtual&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;BeginPlay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;virtual&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;Tick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;DeltaTime&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade"
 id="tabs-00-03" role="tabpanel" aria-labelled-by="tabs-00-03-tab" tabindex="0"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript" data-lang="gdscript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;_ready&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Setup variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;YourClientId&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;YourClientSecret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;account_namespace_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;game-0001&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;account_encryption_key_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;grn:gs2:&lt;/span&gt;&lt;span class="si"&gt;{region}:{ownerId}&lt;/span&gt;&lt;span class="s2"&gt;:key:account-encryption-key-namespace:key:account-encryption-key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Initialize GS2 SDK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;credential&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2BasicCredential&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2Connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Gs2Region&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AP_NORTHEAST_1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;ez&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2EzDomain&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Define the GS2-Account namespace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;gs2_account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ez&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;namespace_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account_namespace_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Create an anonymous account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;create_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;gs2_account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;create_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kt"&gt;null&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;push_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;create_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Load the created account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;model_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;create_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;model&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;model_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kt"&gt;null&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;push_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Dump the anonymous account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;UserId: &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Password: &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Log in with the created anonymous account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;authenticator&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2AccountAuthenticator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account_namespace_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account_encryption_key_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;game_session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2GameSession&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;authenticator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;login_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;game_session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;login_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kt"&gt;null&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;push_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;login_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Load TakeOver settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;load_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;gs2_account&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;me&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;game_session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;take_overs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;load&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;load_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kt"&gt;null&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;push_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;load_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;take_over&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;load_result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Type: &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;take_over&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Identifier: &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;take_over&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user_identifier&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Finalize GS2 SDK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect_session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>GS2-Account SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/account/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/account/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezaccount"&gt;EzAccount&lt;a class="td-heading-self-link" href="#ezaccount" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;게임 플레이어 계정&lt;br&gt;&lt;/p&gt;
&lt;p&gt;게임 플레이어를 식별하는 ID 정보 엔티티입니다.&lt;br&gt;
게임 플레이어 계정은 익명 계정이며 사용자ID(UUID)와 비밀번호(무작위 32자 문자열)로 구성되므로, 게임 플레이어는 이메일 주소 등의 정보를 입력할 필요가 없습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;발급된 게임 플레이어 계정은 디바이스의 로컬 스토리지에 저장해 두고, 다음번 로그인부터 사용합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;password&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;비밀번호&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;계정의 보안을 확보하기 위한 비밀번호를 저장합니다.&lt;br&gt;비밀번호는 최대 128자 길이를 가지며, 계정 보호에 중요한 역할을 합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;createdAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;생성일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#authentication" data-bs-toggle="tooltip" data-bs-placement="top" title="계정에 로그인합니다"&gt;authentication - 계정에 로그인합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#create" data-bs-toggle="tooltip" data-bs-placement="top" title="새로운 계정을 생성합니다"&gt;create - 새로운 계정을 생성합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#dotakeover" data-bs-toggle="tooltip" data-bs-placement="top" title="계정 인계를 실행합니다"&gt;doTakeOver - 계정 인계를 실행합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#dotakeoveropenidconnect" data-bs-toggle="tooltip" data-bs-placement="top" title="OpenID Connect를 사용하여 계정 인계를 실행합니다"&gt;doTakeOverOpenIdConnect - OpenID Connect를 사용하여 계정 인계를 실행합니다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="eztakeover"&gt;EzTakeOver&lt;a class="td-heading-self-link" href="#eztakeover" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;인계 정보&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-AdReward SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/ad_reward/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/ad_reward/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezpoint"&gt;EzPoint&lt;a class="td-heading-self-link" href="#ezpoint" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;광고를 시청함으로써 획득한 포인트&lt;br&gt;&lt;/p&gt;
&lt;p&gt;플레이어가 광고 시청을 통해 획득한 포인트의 합계를 나타내는 모델입니다.&lt;br&gt;
플레이어는 광고를 시청할 때마다 포인트를 획득하며, 이 포인트는 보상 교환이나 게임 내 특전 구매 등에 사용할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;point&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;포인트 보유 수&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자가 보유하고 있는 포인트 수를 나타냅니다.&lt;br&gt;이 수치는 사용자가 광고를 시청함으로써 증가하고, 보상이나 특전과 교환함으로써 감소합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getpoint" data-bs-toggle="tooltip" data-bs-placement="top" title="광고 시청으로 획득한 포인트의 현재값 조회"&gt;getPoint - 광고 시청으로 획득한 포인트의 현재값 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h2 id="메서드"&gt;메서드&lt;a class="td-heading-self-link" href="#%eb%a9%94%ec%84%9c%eb%93%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="getpoint"&gt;getPoint&lt;a class="td-heading-self-link" href="#getpoint" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;광고 시청으로 획득한 포인트의 현재값 조회&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Auth SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/auth/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/auth/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezaccesstoken"&gt;EzAccessToken&lt;a class="td-heading-self-link" href="#ezaccesstoken" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;액세스 토큰&lt;br&gt;&lt;/p&gt;
&lt;p&gt;사용자 인증 후 발급되는 액세스 토큰을 관리하는 모델입니다.&lt;br&gt;
액세스 토큰은 사용자가 서비스에 로그인되어 있는 동안 해당 세션의 신원을 증명하는 데 사용됩니다.&lt;br&gt;
토큰에는 유효기간이 설정되어 있으며, 만료되면 재인증이 필요합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;token&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;액세스 토큰&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;액세스를 인증하기 위한 토큰입니다.&lt;br&gt;이 토큰은 시스템에 의해 자동으로 생성되며, 사용자의 세션을 식별합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;expire&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각으로부터 1시간 후의 절대 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;유효기간&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;토큰의 유효기간을 나타내는 타임스탬프입니다. 이 시각에 도달하면 토큰은 무효화됩니다.&lt;br&gt;UNIX 시간·밀리초&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="메서드"&gt;메서드&lt;a class="td-heading-self-link" href="#%eb%a9%94%ec%84%9c%eb%93%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="login"&gt;login&lt;a class="td-heading-self-link" href="#login" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;계정 인증 정보를 사용하여 GS2에 로그인&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Buff SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/buff/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/buff/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezbuffentrymodel"&gt;EzBuffEntryModel&lt;a class="td-heading-self-link" href="#ezbuffentrymodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;버프 엔트리 모델&lt;br&gt;&lt;/p&gt;
&lt;p&gt;버프의 적용량은 버프 엔트리 모델로 관리하며, 동일한 대상에 대해 여러 버프 엔트리 모델을 연결할 수 있습니다.&lt;br&gt;
버프 엔트리 모델의 적용 순서는 버프 엔트리 모델의 &lt;code&gt;priority&lt;/code&gt; 로 관리하며, &lt;code&gt;priority&lt;/code&gt; 값이 작을수록 우선순위가 높아집니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;버프의 적용 방식은 3종류가 있으며 &amp;ldquo;Rate Add&amp;rdquo;, &amp;ldquo;Mul&amp;rdquo;, &amp;ldquo;Value Add&amp;quot;가 있습니다.&lt;br&gt;
Rate Add 는 버프의 적용 레이트에 가산하는 명령이며, Mul 은 버프의 적용 레이트에 곱하는 명령입니다.&lt;br&gt;
Value Add 는 버프 보정 계산 후의 값에 가산을 수행하는 명령입니다.&lt;br&gt;
예를 들어 기본 레이트가 1.0 이고 Rate Add 0.2 를 설정하면 버프 적용 레이트는 1.2 가 됩니다.&lt;br&gt;
Mul 0.5 를 설정하면 버프 적용 레이트는 현재 레이트의 0.5배가 됩니다.&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Chat SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/chat/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/chat/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezroom"&gt;EzRoom&lt;a class="td-heading-self-link" href="#ezroom" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;룸&lt;br&gt;&lt;/p&gt;
&lt;p&gt;룸은 채팅 메시지를 전달할 수 있는 범위를 나타냅니다.&lt;br&gt;
GS2-Chat의 룸에는 참가라는 개념이 없습니다.&lt;br&gt;
따라서 메시지를 수신하려면 룸의 이름만 알고 있으면 되며, 룸에 참가하거나 멤버로 등록할 필요가 없습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;룸의 메시지를 열람할 수 있는 게임 플레이어를 제한하고 싶은 경우 두 가지 방법이 있습니다.&lt;br&gt;
첫 번째는 룸에 비밀번호를 설정하는 것입니다.&lt;br&gt;
두 번째는 룸에 설정 가능한 화이트리스트에 게임 플레이어의 사용자 ID를 설정하여 제한하는 것입니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;비밀번호를 설정한 경우, 비밀번호를 모르면 게임 관리자라도 메시지를 가져올 수 없게 된다는 점에 주의하십시오.&lt;br&gt;
이는 일본국 헌법에서 정한 &lt;code&gt;통신의 비밀&lt;/code&gt;에 해당할 가능성이 있기 때문입니다.&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Datastore SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/datastore/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/datastore/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezdataobject"&gt;EzDataObject&lt;a class="td-heading-self-link" href="#ezdataobject" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;데이터 오브젝트&lt;br&gt;&lt;/p&gt;
&lt;p&gt;데이터 오브젝트는 게임 플레이어가 업로드한 데이터입니다.&lt;br&gt;
데이터는 세대 관리되며, 30일분의 과거 데이터도 보관됩니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;데이터에는 접근 권한을 설정할 수 있습니다.&lt;br&gt;
스코프에는 3종류가 있으며,&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;누구나 접근할 수 있는 &lt;code&gt;public&lt;/code&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;지정한 사용자 ID의 게임 플레이어만 접근할 수 있는 &lt;code&gt;protected&lt;/code&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;본인만 접근할 수 있는 &lt;code&gt;private&lt;/code&gt;&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;가 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;dataObjectId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;데이터 오브젝트 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;데이터 오브젝트의 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;데이터 오브젝트를 식별하는 고유한 이름입니다. 기본적으로 UUID 형식으로 자동 생성됩니다. 네임스페이스 내에서 업로드된 데이터를 참조·관리하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scope&lt;/td&gt;
 &lt;td&gt;문자열 열거형&lt;br&gt;enum {&lt;br&gt;  &amp;ldquo;public&amp;rdquo;,&lt;br&gt;  &amp;ldquo;protected&amp;rdquo;,&lt;br&gt;  &amp;ldquo;private&amp;rdquo;&lt;br&gt;}&lt;br&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;private&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;파일 접근 권한&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 데이터 오브젝트에 접근할 수 있는 사용자를 제어합니다. &lt;code&gt;public&lt;/code&gt;은 누구나 접근 가능, &lt;code&gt;protected&lt;/code&gt;는 allowUserIds에 지정된 사용자 ID만 접근 가능, &lt;code&gt;private&lt;/code&gt;은 오너 본인만 접근 가능합니다.&lt;/div&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;정의&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;public&lt;/td&gt;&lt;td&gt;공개&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;protected&lt;/td&gt;&lt;td&gt;지정한 사용자에게만 공개&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;private&lt;/td&gt;&lt;td&gt;비공개&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;allowUserIds&lt;/td&gt;
 &lt;td&gt;List&amp;lt;string&amp;gt;&lt;/td&gt;
 &lt;td&gt;{scope} == &amp;ldquo;protected&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 100 items&lt;/td&gt;
 &lt;td&gt;공개할 사용자 ID 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;스코프가 &lt;code&gt;protected&lt;/code&gt;로 설정되어 있는 경우, 이 데이터 오브젝트에 접근할 수 있는 사용자를 지정합니다. 이 목록에 포함된 사용자 ID를 가진 사용자만 읽기 접근이 허용됩니다.&lt;/div&gt;&lt;br&gt;&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ scope이(가) &amp;ldquo;protected&amp;rdquo; 이면 활성화&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;status&lt;/td&gt;
 &lt;td&gt;문자열 열거형&lt;br&gt;enum {&lt;br&gt;  &amp;ldquo;ACTIVE&amp;rdquo;,&lt;br&gt;  &amp;ldquo;UPLOADING&amp;rdquo;,&lt;br&gt;  &amp;ldquo;DELETED&amp;rdquo;&lt;br&gt;}&lt;br&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;상태&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;데이터 오브젝트의 현재 라이프사이클 상태입니다. &lt;code&gt;ACTIVE&lt;/code&gt;는 데이터에 접근 가능함을 나타내고, &lt;code&gt;UPLOADING&lt;/code&gt;은 새로운 버전이 업로드 중임을 나타내며, &lt;code&gt;DELETED&lt;/code&gt;는 삭제 예정으로 표시된 상태임을 나타냅니다(실제 삭제는 30일 후에 이루어집니다).&lt;/div&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;정의&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ACTIVE&lt;/td&gt;&lt;td&gt;유효&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;UPLOADING&lt;/td&gt;&lt;td&gt;업로드 중&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DELETED&lt;/td&gt;&lt;td&gt;삭제됨(삭제 처리로부터 30일 후에 실제로 삭제)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;generation&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;데이터의 세대&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;업로드된 데이터의 현재 버전을 나타내는 식별자입니다. 데이터가 재업로드될 때마다 새로운 세대 ID가 할당됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;createdAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;생성일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;updatedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;최종 갱신일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#deletedataobject" data-bs-toggle="tooltip" data-bs-placement="top" title="업로드한 파일 삭제"&gt;deleteDataObject - 업로드한 파일 삭제&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#doneupload" data-bs-toggle="tooltip" data-bs-placement="top" title="파일 업로드 확정"&gt;doneUpload - 파일 업로드 확정&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listmydataobjects" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어가 업로드한 데이터 목록 조회"&gt;listMyDataObjects - 플레이어가 업로드한 데이터 목록 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#preparedownload" data-bs-toggle="tooltip" data-bs-placement="top" title="파일의 다운로드 URL 취득(데이터 오브젝트 ID로 지정)"&gt;prepareDownload - 파일의 다운로드 URL 취득(데이터 오브젝트 ID로 지정)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#preparedownloadbyuseridanddataobjectname" data-bs-toggle="tooltip" data-bs-placement="top" title="다른 플레이어의 파일 다운로드 URL 취득(사용자 ID와 이름으로 지정)"&gt;prepareDownloadByUserIdAndDataObjectName - 다른 플레이어의 파일 다운로드 URL 취득(사용자 ID와 이름으로 지정)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#preparedownloadowndata" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어 자신의 파일 다운로드 URL 취득(이름으로 지정)"&gt;prepareDownloadOwnData - 플레이어 자신의 파일 다운로드 URL 취득(이름으로 지정)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#preparereupload" data-bs-toggle="tooltip" data-bs-placement="top" title="기존 파일의 재업로드(덮어쓰기) 준비"&gt;prepareReUpload - 기존 파일의 재업로드(덮어쓰기) 준비&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#prepareupload" data-bs-toggle="tooltip" data-bs-placement="top" title="새 파일 업로드 준비"&gt;prepareUpload - 새 파일 업로드 준비&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#restoredataobject" data-bs-toggle="tooltip" data-bs-placement="top" title="데이터 오브젝트의 관리 정보 복구"&gt;restoreDataObject - 데이터 오브젝트의 관리 정보 복구&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#updatedataobject" data-bs-toggle="tooltip" data-bs-placement="top" title="데이터 오브젝트의 접근 설정 변경"&gt;updateDataObject - 데이터 오브젝트의 접근 설정 변경&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezdataobjecthistory"&gt;EzDataObjectHistory&lt;a class="td-heading-self-link" href="#ezdataobjecthistory" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;데이터 오브젝트 이력&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Dictionary SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/dictionary/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/dictionary/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezentry"&gt;EzEntry&lt;a class="td-heading-self-link" href="#ezentry" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;게임 플레이어가 획득한 엔트리&lt;br&gt;&lt;/p&gt;
&lt;p&gt;게임 플레이어가 수집한 도감 엔트리 1건을 나타냅니다. 각 엔트리는 EntryModel에 대응하며, 획득 일시를 기록합니다. 보유 상태는 &amp;lsquo;존재함(수집됨) / 존재하지 않음&amp;rsquo;의 2가지 값으로 관리되며, 수량의 개념은 없습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;entryId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;엔트리 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;엔트리 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;엔트리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;acquiredAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;획득 일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 엔트리가 게임 플레이어에 의해 처음 수집된 일시입니다. 등록 시 현재 시각이 자동으로 설정되며, 이후 변경할 수 없습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getentry" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어가 특정 엔트리를 수집했는지 확인"&gt;getEntry - 플레이어가 특정 엔트리를 수집했는지 확인&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getentrywithsignature" data-bs-toggle="tooltip" data-bs-placement="top" title="변조 방지 서명이 포함된 엔트리 가져오기"&gt;getEntryWithSignature - 변조 방지 서명이 포함된 엔트리 가져오기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listentries" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어가 수집한 엔트리 목록 조회"&gt;listEntries - 플레이어가 수집한 엔트리 목록 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezlike"&gt;EzLike&lt;a class="td-heading-self-link" href="#ezlike" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;즐겨찾기로 등록한 엔트리&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Distributor SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/distributor/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/distributor/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstampsheetresult"&gt;EzStampSheetResult&lt;a class="td-heading-self-link" href="#ezstampsheetresult" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;트랜잭션 실행 결과(레거시)&lt;br&gt;&lt;/p&gt;
&lt;p&gt;서버사이드 자동 실행으로 처리된 트랜잭션의 실행 결과를 기록합니다.&lt;br&gt;
각 단계의 요청 내용과 응답 결과를 포함합니다: 검증 액션(사전 조건 확인), 소비 액션, 입수 액션. 오류 감지 및 재시도 로직을 위해 HTTP 상태 코드도 추적합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;transactionId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;36 ~ 36자&lt;/td&gt;
 &lt;td&gt;트랜잭션 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 트랜잭션을 고유하게 식별하는 UUID입니다. 트랜잭션과 그 실행 결과, 그리고 연쇄되는 후속 트랜잭션의 연결에 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;taskRequests&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/distributor/game_engine/#ezconsumeaction"&gt;List&amp;lt;EzConsumeAction&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 100 items&lt;/td&gt;
 &lt;td&gt;소비 액션의 요청 내용 목록&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;sheetRequest&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/distributor/game_engine/#ezacquireaction"&gt;EzAcquireAction&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;입수 액션의 요청 내용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;taskResults&lt;/td&gt;
 &lt;td&gt;List&amp;lt;string&amp;gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 100 items&lt;/td&gt;
 &lt;td&gt;소비 액션의 실행 결과&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;sheetResult&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1048576자&lt;/td&gt;
 &lt;td&gt;입수 액션의 실행 결과 응답 내용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstampsheetresult" data-bs-toggle="tooltip" data-bs-placement="top" title="완료된 트랜잭션의 결과를 취득한다(레거시)"&gt;getStampSheetResult - 완료된 트랜잭션의 결과를 취득한다(레거시)&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="eztransactionresult"&gt;EzTransactionResult&lt;a class="td-heading-self-link" href="#eztransactionresult" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;트랜잭션 실행 결과&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Enchant SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/enchant/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/enchant/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezbalanceparameterstatus"&gt;EzBalanceParameterStatus&lt;a class="td-heading-self-link" href="#ezbalanceparameterstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;밸런스 파라미터 상태&lt;br&gt;&lt;/p&gt;
&lt;p&gt;사용자가 소유한 특정 리소스에 대해 추첨된 파라미터의 실제 값을 나타냅니다. 각 상태는 밸런스 파라미터 모델과 연결되며, 추첨 처리 후 각 파라미터 슬롯에 할당된 구체적인 값을 보유합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;parameterName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;밸런스 파라미터 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 상태의 추첨 조건을 정의하는 밸런스 파라미터 모델의 이름입니다. 합계 값, 배분 방침, 사용 가능한 파라미터 슬롯을 지정하는 모델을 참조합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;propertyId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;파라미터를 보유한 리소스의 프로퍼티 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이러한 밸런스 파라미터가 연결되어 있는 특정 게임 리소스(예: 무기 또는 장비 아이템)를 식별합니다. 일반적으로 GS2-Inventory의 아이템 등의 리소스를 프로퍼티 ID로 참조합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;parameterValues&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/enchant/game_engine/#ezbalanceparametervalue"&gt;List&amp;lt;EzBalanceParameterValue&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;1 ~ 10 items&lt;/td&gt;
 &lt;td&gt;밸런스 파라미터 값 리스트&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;추첨 처리 후 각 파라미터 슬롯에 할당된 구체적인 값입니다. 각 엔트리는 모델에서 정의된 파라미터 슬롯에 대응하며, 할당된 실제 수치를 보유합니다. 모든 값의 합계는 모델에서 지정된 합계 값과 같아집니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getbalanceparameterstatus" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 아이템의 밸런스 파라미터 값을 취득합니다"&gt;getBalanceParameterStatus - 특정 아이템의 밸런스 파라미터 값을 취득합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listbalanceparameterstatuses" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 밸런스 파라미터 값 목록을 취득합니다"&gt;listBalanceParameterStatuses - 플레이어의 밸런스 파라미터 값 목록을 취득합니다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezrarityparameterstatus"&gt;EzRarityParameterStatus&lt;a class="td-heading-self-link" href="#ezrarityparameterstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;레어리티 파라미터의 상태&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Enhance SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/enhance/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/enhance/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezprogress"&gt;EzProgress&lt;a class="td-heading-self-link" href="#ezprogress" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;강화 진행 상황&lt;br&gt;&lt;/p&gt;
&lt;p&gt;강화 시작 시 생성되며, 종료 시 삭제됩니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;강화 도중에 앱을 종료한 경우에는 이 데이터가 남은 상태가 되며&lt;br&gt;
엔티티가 보유한 진행 중인 강화 정보로부터 게임을 재개할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 36자&lt;/td&gt;
 &lt;td&gt;강화 진행 상황 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;강화 진행 상황의 고유 ID를 보유합니다.&lt;br&gt;ID는 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 강화 진행 상황을 식별하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rateName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;강화 레이트 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 강화 조작의 파라미터를 정의하는 강화 레이트 모델의 이름입니다. 대상 인벤토리, 소재 인벤토리, 경험치 계층, 보너스 레이트를 지정하는 모델을 참조합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;propertyId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;강화 대상의 프로퍼티 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;강화되는 GS2-Inventory 아이템의 프로퍼티 ID입니다. 강화 완료 시 경험치를 받는 특정 아이템 인스턴스를 식별합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;experienceValue&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;획득할 수 있는 경험치&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;소비한 소재로부터 산출된 기본 경험치입니다. 이 값은 각 소재의 메타데이터에 정의된 경험치에 소재 수량을 곱한 값의 합계로 결정됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rate&lt;/td&gt;
 &lt;td&gt;float&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 100.0&lt;/td&gt;
 &lt;td&gt;경험치 배율&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;기본 경험치에 적용되는 보너스 배율입니다. 강화 레이트 모델의 보너스 레이트에서 가중치 추첨으로 결정됩니다. 1.0은 보너스 없음을, 1.0보다 큰 값은 &amp;ldquo;대성공&amp;rdquo; 보너스를 나타냅니다(예: 1.5로 경험치 150%).&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#deleteprogress" data-bs-toggle="tooltip" data-bs-placement="top" title="진행 중인 강화를 취소한다"&gt;deleteProgress - 진행 중인 강화를 취소한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#end" data-bs-toggle="tooltip" data-bs-placement="top" title="강화를 완료한다 (2단계 흐름)"&gt;end - 강화를 완료한다 (2단계 흐름)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getprogress" data-bs-toggle="tooltip" data-bs-placement="top" title="현재 강화의 진행 정보를 취득한다"&gt;getProgress - 현재 강화의 진행 정보를 취득한다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezratemodel"&gt;EzRateModel&lt;a class="td-heading-self-link" href="#ezratemodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;강화 레이트 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Exchange SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/exchange/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/exchange/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezawait"&gt;EzAwait&lt;a class="td-heading-self-link" href="#ezawait" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;교환 대기&lt;br&gt;&lt;/p&gt;
&lt;p&gt;보상을 받기 전에 실시간의 경과가 필요한 교환의 실행 상태를 나타냅니다. 플레이어가 &lt;code&gt;await&lt;/code&gt; 타이밍 타입의 교환을 시작했을 때 생성되며, 보상을 사용할 수 있게 될 때까지의 대기 기간을 추적합니다. 대기 시간을 단축하거나 없애는 스킵 기능을 지원하며, 보상 취득 시의 기본 설정값을 저장합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rateName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;교환 레이트 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;교환 레이트 모델 종류 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 36자&lt;/td&gt;
 &lt;td&gt;교환 대기의 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;교환 대기의 고유한 이름을 보유합니다.&lt;br&gt;이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 교환 대기를 식별하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;skipSeconds&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;스킵 초수&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;대기 시간에서 차감하는 초수입니다. 스킵 초수가 적용되면 acquirableAt 타임스탬프가 이만큼 앞당겨집니다. 플레이어가 리소스를 지불하여 대기 시간을 단축하는 구조를 구현하기 위해 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;config&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/exchange/game_engine/#ezconfig"&gt;List&amp;lt;EzConfig&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 32 items&lt;/td&gt;
 &lt;td&gt;보상 취득 시 적용하는 기본 설정값&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;대기 완료 시 보상이 배포될 때 트랜잭션의 플레이스홀더 변수로 사용되는 키와 값의 쌍입니다. 이 값들은 교환 시작 시 설정되며, 획득 액션의 트랜잭션 파라미터에 적용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;exchangedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;교환 시간&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;교환이 시작되어 대기가 생성된 타임스탬프입니다. 보상이 사용 가능해지는 시각을 계산하기 위한 기준 시각으로 사용됩니다(acquirableAt = exchangedAt + lockTime - skipSeconds).&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;acquirableAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;보상을 받을 수 있게 되는 시간&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;대기 기간이 만료되어 보상을 받을 수 있게 되는 타임스탬프입니다. exchangedAt + lockTime - skipSeconds로 계산됩니다. 현재 시각이 이 타임스탬프를 지나면 플레이어는 취득 API를 호출할 수 있게 됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#acquire" data-bs-toggle="tooltip" data-bs-placement="top" title="완료된 시간제 교환의 보상 수령"&gt;acquire - 완료된 시간제 교환의 보상 수령&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#deleteawait" data-bs-toggle="tooltip" data-bs-placement="top" title="대기 중인 시간제 교환 취소"&gt;deleteAwait - 대기 중인 시간제 교환 취소&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getawait" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 대기 중인 시간제 교환 조회"&gt;getAwait - 특정 대기 중인 시간제 교환 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listawaits" data-bs-toggle="tooltip" data-bs-placement="top" title="대기 중인 시간제 교환 목록 조회"&gt;listAwaits - 대기 중인 시간제 교환 목록 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezratemodel"&gt;EzRateModel&lt;a class="td-heading-self-link" href="#ezratemodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;교환 레이트 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Experience SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/experience/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/experience/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstatus"&gt;EzStatus&lt;a class="td-heading-self-link" href="#ezstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스테이터스&lt;br&gt;&lt;/p&gt;
&lt;p&gt;스테이터스란 프로퍼티ID마다 존재하는 엔티티로,&lt;br&gt;
현재의 경험치와 랭크 캡 값을 보유합니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;프로퍼티ID란 스테이터스 고유의 ID로, 개발자가 임의의 값을 설정할 수 있습니다.&lt;br&gt;
GS2에서는 경험치를 보유한 GS2-Inventory의 아이템 세트GRN이나 GS2-Dictionary의 엔트리GRN 뒤에&lt;br&gt;
경험치 모델이 되는 접미사를 추가한 값을 프로퍼티ID로 사용할 것을 권장합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;experienceName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;경험치 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스테이터스의 랭킹 규칙을 정의하는 경험치 모델의 이름입니다. 어떤 랭크업 임계값 테이블과 랭크 캡 설정이 적용되는지를 결정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;propertyId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;프로퍼티ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자 스코프 내에서 이 스테이터스를 고유하게 식별하는 개발자 정의 식별자입니다. 경험치를 보유한 GS2-Inventory의 아이템 세트 GRN이나 GS2-Dictionary의 엔트리 GRN 끝에 경험치 모델의 접미사를 붙인 값을 사용할 것을 권장합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;experienceValue&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;누적 획득 경험치&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스테이터스가 축적한 총 경험치입니다. 현재 랭크는 이 값으로부터 랭크업 임계값 테이블을 사용하여 산출됩니다. 현재 랭크 캡에 대응하는 임계값을 초과하여 경험치를 획득할 수 없습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rankValue&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;현재 랭크&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;랭크업 임계값 테이블을 사용하여 누적 경험치로부터 산출되는 랭크(레벨)입니다. 0부터 시작하며 경험치 임계값을 초과할 때마다 증가합니다. 현재 랭크 캡 값을 초과할 수 없습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rankCapValue&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;현재 랭크 캡&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스테이터스가 현재 도달할 수 있는 최대 랭크입니다. 초기값은 경험치 모델의 defaultRankCap으로 설정되며, 한계돌파 등의 랭크 캡 증가 조작을 통해 maxRankCap까지 끌어올릴 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;nextRankUpExperienceValue&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;다음 랭크업에 필요한 경험치량&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;다음 랭크에 도달하기 위해 필요한 누적 경험치의 임계값입니다. 스테이터스가 이미 랭크 캡에 도달한 경우 0을 반환합니다. 게임 UI에서 프로그레스 바나 남은 경험치를 표시하는 데 유용합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstatus" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 아이템이나 캐릭터의 레벨·경험치 상태를 조회하기"&gt;getStatus - 특정 아이템이나 캐릭터의 레벨·경험치 상태를 조회하기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstatuswithsignature" data-bs-toggle="tooltip" data-bs-placement="top" title="위변조 방지 서명과 함께 레벨·경험치 상태를 조회하기"&gt;getStatusWithSignature - 위변조 방지 서명과 함께 레벨·경험치 상태를 조회하기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#liststatuses" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 레벨·경험치 상태 목록을 조회하기"&gt;listStatuses - 플레이어의 레벨·경험치 상태 목록을 조회하기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezexperiencemodel"&gt;EzExperienceModel&lt;a class="td-heading-self-link" href="#ezexperiencemodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;경험치 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Formation SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/formation/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/formation/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezmold"&gt;EzMold&lt;a class="td-heading-self-link" href="#ezmold" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;폼 저장 영역&lt;br&gt;&lt;/p&gt;
&lt;p&gt;게임 플레이어가 편성한 정보를 보유하는 엔티티입니다.&lt;br&gt;
편성 정보(Form)는 폼 저장 영역(Mold)마다 여러 개 보유할 수 있으며, 몇 개까지 보유할 수 있는지에 대한 캐파시티를 게임 플레이어 × 폼 저장 영역마다 개별적으로 설정할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;폼 저장 영역 모델의 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;폼 저장 영역 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;capacity&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;현재 캐파시티&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 저장 영역에서 이 플레이어가 현재 이용할 수 있는 폼 저장 슬롯 수입니다. 초기값은 저장 영역 모델의 initialMaxCapacity로 설정되며, 캐파시티 증가 조작을 통해 maxCapacity까지 확장할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getmold" data-bs-toggle="tooltip" data-bs-placement="top" title="이름을 지정하여 편성 프리셋 저장 영역 조회"&gt;getMold - 이름을 지정하여 편성 프리셋 저장 영역 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listmolds" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 편성 프리셋 저장 영역 목록 조회"&gt;listMolds - 플레이어의 편성 프리셋 저장 영역 목록 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#deleteform" data-bs-toggle="tooltip" data-bs-placement="top" title="저장된 편성 프리셋 삭제"&gt;deleteForm - 저장된 편성 프리셋 삭제&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getform" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 저장된 편성 프리셋 조회"&gt;getForm - 특정 저장된 편성 프리셋 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getformwithsignature" data-bs-toggle="tooltip" data-bs-placement="top" title="위변조 방지 서명과 함께 편성 프리셋 조회"&gt;getFormWithSignature - 위변조 방지 서명과 함께 편성 프리셋 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#setform" data-bs-toggle="tooltip" data-bs-placement="top" title="편성 프리셋 변경 내용 저장"&gt;setForm - 편성 프리셋 변경 내용 저장&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezform"&gt;EzForm&lt;a class="td-heading-self-link" href="#ezform" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;폼&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Friend SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/friend/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/friend/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezprofile"&gt;EzProfile&lt;a class="td-heading-self-link" href="#ezprofile" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;프로필&lt;br&gt;&lt;/p&gt;
&lt;p&gt;프로필은 게임 플레이어에 관한 정보를 저장합니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;프로필은 공개 범위별로 설정할 수 있으며, 3가지 종류가 있습니다.&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;friend 친구 관계가 성립된 상대방이 열람 가능한 내용&lt;br&gt;&lt;/li&gt;
&lt;li&gt;follow 팔로우하고 있는 상대방이 열람 가능한 내용&lt;br&gt;&lt;/li&gt;
&lt;li&gt;public 누구나 열람 가능한 내용&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;publicProfile&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;공개되는 프로필&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;관계와 상관없이 모든 플레이어에게 표시되는 프로필 정보입니다. 일반적으로 표시 이름, 아바타, 기타 공개 가능한 정보에 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;followerProfile&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;팔로워에게 공개되는 프로필&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 사용자를 팔로우하고 있는 플레이어에게만 표시되는 프로필 정보입니다. 공개 프로필보다 상세한 정보(게임플레이 통계나 상태 메시지 등)를 포함할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;friendProfile&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;친구에게 공개되는 프로필&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;상호 친구 관계가 성립된 플레이어에게만 표시되는 프로필 정보입니다. 가장 프라이빗한 프로필 수준으로, 연락처나 개인 메시지 등 개인 정보를 공유하기에 적합합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getprofile" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어 자신의 프로필 가져오기"&gt;getProfile - 플레이어 자신의 프로필 가져오기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#updateprofile" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어 자신의 프로필 업데이트하기"&gt;updateProfile - 플레이어 자신의 프로필 업데이트하기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezblacklist"&gt;EzBlackList&lt;a class="td-heading-self-link" href="#ezblacklist" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;블랙리스트&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Gateway SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/gateway/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/gateway/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezwebsocketsession"&gt;EzWebSocketSession&lt;a class="td-heading-self-link" href="#ezwebsocketsession" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;WebSocketSession&lt;br&gt;&lt;/p&gt;
&lt;p&gt;WebSocket 세션은 GS2 서버와 클라이언트 간의 지속적인 연결로, 실시간 양방향 통신을 수행합니다.&lt;br&gt;
서버에 대해 클라이언트 측에서 식별자로 사용자 ID를 등록합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;connectionId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;커넥션 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 WebSocket 접속에 할당된 고유 식별자입니다. 알림 송신 시 특정 클라이언트 접속을 식별하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;namespaceName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;네임스페이스 이름&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#setuserid" data-bs-toggle="tooltip" data-bs-placement="top" title="서버로부터의 푸시 알림을 수신하기 위해 플레이어의 접속을 등록한다"&gt;setUserId - 서버로부터의 푸시 알림을 수신하기 위해 플레이어의 접속을 등록한다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h2 id="메서드"&gt;메서드&lt;a class="td-heading-self-link" href="#%eb%a9%94%ec%84%9c%eb%93%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="setuserid"&gt;setUserId&lt;a class="td-heading-self-link" href="#setuserid" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;서버로부터의 푸시 알림을 수신하기 위해 플레이어의 접속을 등록한다&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Grade SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/grade/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/grade/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstatus"&gt;EzStatus&lt;a class="td-heading-self-link" href="#ezstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스테이터스&lt;br&gt;&lt;/p&gt;
&lt;p&gt;스테이터스란 프로퍼티 ID마다 존재하는 엔티티로,&lt;br&gt;
현재 그레이드의 값을 보유합니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;프로퍼티 ID란 스테이터스 고유의 ID로, 개발자가 임의의 값을 설정할 수 있습니다.&lt;br&gt;
연동되는 GS2-Experience의 프로퍼티 ID와 완전히 일치하는 값을 사용할 것을 강력히 권장합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;gradeName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;그레이드 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스테이터스가 속한 그레이드 모델의 이름입니다. 그레이드 엔트리의 매핑, 연동된 경험치 모델, 보상 가산 테이블을 포함하는 그레이드 모델 정의를 참조합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;propertyId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;프로퍼티 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 그레이드 스테이터스의 개발자 정의 식별자로, 사용자와 그레이드 모델 내에서 고유합니다. 그레이드 값과 랭크 캡의 올바른 동기화를 보장하기 위해, 연동되는 GS2-Experience 스테이터스의 프로퍼티 ID와 동일한 값을 사용하는 것을 강력히 권장합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gradeValue&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;현재 그레이드&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스테이터스의 현재 그레이드 값입니다. 연동되는 GS2-Experience 모델의 랭크 캡을 결정하기 위해 그레이드 모델의 그레이드 엔트리 배열의 인덱스로 사용됩니다. 이 값이 변경되면 관련된 경험치 스테이터스의 랭크 캡이 해당 그레이드 엔트리에서 정의된 값으로 자동 갱신됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#applyrankcap" data-bs-toggle="tooltip" data-bs-placement="top" title="현재 한계돌파 그레이드에 맞춰 최대 레벨을 동기화하기"&gt;applyRankCap - 현재 한계돌파 그레이드에 맞춰 최대 레벨을 동기화하기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstatus" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 아이템이나 캐릭터의 한계돌파·각성 상태 가져오기"&gt;getStatus - 특정 아이템이나 캐릭터의 한계돌파·각성 상태 가져오기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#liststatuses" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 한계돌파·각성 상태 목록 가져오기"&gt;listStatuses - 플레이어의 한계돌파·각성 상태 목록 가져오기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezgrademodel"&gt;EzGradeModel&lt;a class="td-heading-self-link" href="#ezgrademodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;그레이드 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Guild SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/guild/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/guild/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezguild"&gt;EzGuild&lt;a class="td-heading-self-link" href="#ezguild" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;길드&lt;br&gt;&lt;/p&gt;
&lt;p&gt;길드는 최대 5개의 속성을 가질 수 있으며, 길드 검색이나 길드 목록 표시 시 이용할 수 있습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;길드에는 참가 정책을 설정할 수 있으며, 자유 참가와 승인제를 선택할 수 있습니다.&lt;br&gt;
자유 참가를 선택한 경우, 길드에 참가 요청을 하면 즉시 길드 멤버가 됩니다.&lt;br&gt;
승인제를 선택한 경우, 길드에 참가 요청을 하면 길드 마스터 또는 길드 멤버가 승인할 때까지 길드 멤버가 되지 않습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;길드 멤버에게는 역할을 설정할 수 있으며, 길드 마스터, 길드 멤버에 더해 길드가 독자적으로 정의한 최대 10개의 커스텀 역할을 설정할 수 있습니다.&lt;br&gt;
길드 멤버는 길드에 참가했을 때 기본으로 부여되는 역할을 설정할 수 있습니다.&lt;/p&gt;</description></item><item><title>GS2-Idle SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/idle/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/idle/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstatus"&gt;EzStatus&lt;a class="td-heading-self-link" href="#ezstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스테이터스&lt;br&gt;&lt;/p&gt;
&lt;p&gt;처음으로 GetIdleStatus 를 호출했을 때 생성되며, 그 시점부터 방치 시간의 카운트가 시작됩니다.&lt;br&gt;
방치 시간의 카운트는 보상을 받으면 리셋됩니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;GS2-Schedule 의 이벤트가 연관되어 있는 경우, 이벤트 개최 전에는 Category 에 액세스할 수 없으며, 스테이터스를 생성할 수도 없습니다.&lt;br&gt;
이벤트가 연관되어 있는 경우, 스테이터스는 이벤트의 반복 횟수를 보유합니다.&lt;br&gt;
현재 이벤트ID와 스테이터스 생성 시의 이벤트ID가 일치하지 않는 경우, 현재 이벤트의 반복 횟수와 스테이터스가 보유한 반복 횟수가 일치하지 않는 경우, 또는 이벤트의 시작 시각보다 앞서 스테이터스가 생성된 경우, 대기 시간은 리셋됩니다.&lt;/p&gt;</description></item><item><title>GS2-Inbox SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/inbox/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/inbox/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezmessage"&gt;EzMessage&lt;a class="td-heading-self-link" href="#ezmessage" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;메시지&lt;br&gt;&lt;/p&gt;
&lt;p&gt;게임 플레이어마다 준비되는 메시지 박스에 전달된 메시지 데이터.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;메시지에는 개봉 상태가 있으며, 개봉 시 실행할 입수 액션을 설정할 수 있습니다.&lt;br&gt;
메시지에는 유효 기한을 설정할 수 있으며, 유효 기한이 지난 메시지는 미읽음 상태, 개봉 후 읽음 상태와 관계없이 자동으로 삭제됩니다.&lt;br&gt;
첨부된 보상을 받지 않은 경우에도 삭제됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;messageId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;메시지 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 36자&lt;/td&gt;
 &lt;td&gt;메시지 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메시지의 고유한 이름을 유지합니다.&lt;br&gt;이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 각 메시지를 식별하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 4096자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메시지의 제목, 본문, 발신자 정보, 표시 파라미터 등을 포함하는 JSON 문자열 등, 메시지의 내용을 나타내는 임의의 데이터입니다. GS2는 이 값을 해석하지 않으며, 메시지 UI 렌더링을 위해 게임 클라이언트에 그대로 전달됩니다. 최대 4096자입니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;isRead&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;false&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;읽음 상태&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메시지가 사용자에 의해 개봉되었는지 여부를 나타냅니다. 메시지가 개봉되면 이 플래그가 true로 설정되고, readAcquireActions가 실행되어 첨부된 보상이 지급되며, readAt 타임스탬프가 기록됩니다. 네임스페이스에서 isAutomaticDeletingEnabled가 설정되어 있는 경우, 읽음 처리 후 메시지가 삭제됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;readAcquireActions&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/inbox/game_engine/#ezacquireaction"&gt;List&amp;lt;EzAcquireAction&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 100 items&lt;/td&gt;
 &lt;td&gt;개봉 시 입수 액션&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자가 이 메시지를 개봉했을 때 실행되는 입수 액션 목록입니다. 아이템, 화폐, 리소스 등의 보상을 메시지에 첨부하기 위해 사용됩니다. 여러 액션을 조합하여 서로 다른 종류의 보상을 동시에 지급할 수 있습니다. 메시지당 최대 100개의 액션입니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;receivedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;생성일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;readAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;개봉 일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간·밀리초&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;expiresAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;유효기간 일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#batchread" data-bs-toggle="tooltip" data-bs-placement="top" title="여러 메시지를 일괄 개봉하여 보상을 한꺼번에 받는다"&gt;batchRead - 여러 메시지를 일괄 개봉하여 보상을 한꺼번에 받는다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#delete" data-bs-toggle="tooltip" data-bs-placement="top" title="선물 상자에서 메시지를 삭제한다"&gt;delete - 선물 상자에서 메시지를 삭제한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#get" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 메시지의 상세 정보를 취득한다"&gt;get - 특정 메시지의 상세 정보를 취득한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#list" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 선물 상자에 있는 메시지 목록을 취득한다"&gt;list - 플레이어의 선물 상자에 있는 메시지 목록을 취득한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#read" data-bs-toggle="tooltip" data-bs-placement="top" title="메시지를 개봉하여 보상을 받는다"&gt;read - 메시지를 개봉하여 보상을 받는다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#receiveglobalmessage" data-bs-toggle="tooltip" data-bs-placement="top" title="전체 플레이어 대상 메시지를 수신한다"&gt;receiveGlobalMessage - 전체 플레이어 대상 메시지를 수신한다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezconfig"&gt;EzConfig&lt;a class="td-heading-self-link" href="#ezconfig" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;컨피그 설정&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Inventory SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/inventory/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/inventory/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezinventory"&gt;EzInventory&lt;a class="td-heading-self-link" href="#ezinventory" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;인벤토리&lt;br&gt;&lt;/p&gt;
&lt;p&gt;인벤토리는 게임 플레이어가 소유한 아이템을 보관하기 위한 가방과 같은 것입니다.&lt;br&gt;
가방에는 용량이 있으며, 플레이어마다 용량을 확장할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;inventoryId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;인벤토리 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;inventoryName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;인벤토리 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 인벤토리의 구조와 용량 설정을 정의하는 인벤토리 모델의 이름입니다. 사용자의 인벤토리 인스턴스를 모델 정의에 연결하여 사용 가능한 아이템의 종류와 용량 제한을 결정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;currentInventoryCapacityUsage&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;용량 사용량&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;아이템 세트에 의해 현재 사용되고 있는 인벤토리 슬롯의 수입니다. 새로운 아이템 스택이 추가될 때(예: allowMultipleStacks에 의해 새로운 슬롯이 생성될 때) 증가하고, 아이템 세트가 완전히 소비되거나 삭제될 때 감소합니다. currentInventoryMaxCapacity를 초과할 수 없습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;currentInventoryMaxCapacity&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;1 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;최대 용량&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 사용자가 사용할 수 있는 인벤토리 슬롯의 현재 최대 수입니다. 인벤토리 모델의 initialCapacity로 초기화되며, 입수 액션 또는 직접적인 API 호출을 통해 모델의 maxCapacity까지 확장할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getinventory" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 인벤토리의 상세 정보 조회"&gt;getInventory - 특정 인벤토리의 상세 정보 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listinventories" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 인벤토리 목록 조회"&gt;listInventories - 플레이어의 인벤토리 목록 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#consume" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 인벤토리에서 아이템 사용(소비)"&gt;consume - 플레이어의 인벤토리에서 아이템 사용(소비)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getitem" data-bs-toggle="tooltip" data-bs-placement="top" title="인벤토리 이름과 아이템 이름으로 특정 아이템 조회"&gt;getItem - 인벤토리 이름과 아이템 이름으로 특정 아이템 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getitemwithsignature" data-bs-toggle="tooltip" data-bs-placement="top" title="소지 증명 서명이 포함된 아이템 조회"&gt;getItemWithSignature - 소지 증명 서명이 포함된 아이템 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezitemset"&gt;EzItemSet&lt;a class="td-heading-self-link" href="#ezitemset" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;아이템 세트&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-JobQueue SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/job_queue/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/job_queue/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezjob"&gt;EzJob&lt;a class="td-heading-self-link" href="#ezjob" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;잡&lt;br&gt;&lt;/p&gt;
&lt;p&gt;잡 큐란 즉시 처리를 완료하지 않고 처리를 지연 실행하기 위한 구조입니다.&lt;br&gt;
예를 들어 캐릭터를 입수했을 때 즉시 실행해야 하는 처리는 소지품에 캐릭터를 저장하는 것입니다.&lt;br&gt;
반면, 즉시 처리하지 않아도 되는 처리로는 &lt;code&gt;도감에 등록한다&lt;/code&gt;는 처리가 있습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;이처럼 즉시 처리할 필요가 없는 처리를 잡 큐를 경유하여 처리하도록 하면 장애에 강한 설계로 만들 수 있습니다.&lt;br&gt;
왜냐하면 도감 서비스가 어떤 장애로 인해 정지되어 있더라도, 도감에 등록되지 않은 상태로 게임을 계속할 수 있기 때문입니다.&lt;br&gt;
잡 큐에 쌓인 처리는 실패하더라도 장애가 해소된 후 재시도함으로써 결과적으로 올바른 상태로 만들 수 있습니다.&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Limit SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/limit/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/limit/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezcounter"&gt;EzCounter&lt;a class="td-heading-self-link" href="#ezcounter" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;사용 횟수 제한의 현재 값&lt;br&gt;&lt;/p&gt;
&lt;p&gt;각 사용자의 사용 횟수 제한 모델에 속한 특정 카운터의 현재 사용 횟수를 추적합니다. 하나의 사용 횟수 제한 모델 아래에 여러 카운터를 만들 수 있습니다(예: 1회 한정 보상을 위해 퀘스트마다 하나의 카운터). 카운트 값은 카운트업 조작 시 지정되는 최대값과 비교되며, 사용 횟수 제한 모델의 리셋 일정에 따라 자동으로 0으로 리셋됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;counterId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;카운터 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;limitName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용 횟수 제한 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 카운터가 속한 사용 횟수 제한 모델의 이름입니다. 이 카운터 값에 적용되는 리셋 일정(매일, 매주, 매월 등)을 결정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;카운터 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용 횟수 제한 모델 내에서 이 카운터를 고유하게 식별하는 이름입니다. 동일한 사용 횟수 제한 모델을 서로 다른 이름의 여러 카운터로 공유할 수 있어, 개별 사용 횟수 제한 모델을 만들지 않고도 별도의 사용 횟수 추적(예: 퀘스트별 또는 상품별로 카운터 1개)이 가능합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;count&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;카운트 값&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 카운터의 현재 사용 횟수입니다. countUp 조작으로 증가하며, 이때 지정된 최대값과 비교됩니다. 사용 횟수 제한 모델의 리셋 시점에 도달하면 자동으로 0으로 리셋됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;createdAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;생성일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;updatedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;최종 갱신일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#countup" data-bs-toggle="tooltip" data-bs-placement="top" title="횟수 제한 카운터 카운트업"&gt;countUp - 횟수 제한 카운터 카운트업&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getcounter" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 횟수 제한 카운터 조회"&gt;getCounter - 특정 횟수 제한 카운터 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listcounters" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 횟수 제한 카운터 목록 조회"&gt;listCounters - 플레이어의 횟수 제한 카운터 목록 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezlimitmodel"&gt;EzLimitModel&lt;a class="td-heading-self-link" href="#ezlimitmodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;횟수 제한 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Lock SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/lock/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/lock/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezmutex"&gt;EzMutex&lt;a class="td-heading-self-link" href="#ezmutex" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;뮤텍스&lt;br&gt;&lt;/p&gt;
&lt;p&gt;GS2가 제공하는 뮤텍스는 재진입 가능한 락의 일종입니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;잠금을 획득할 때 트랜잭션 ID를 지정하며, 동일한 트랜잭션 ID를 지정한 경우에만 다시 잠금을 획득할 수 있습니다.&lt;br&gt;
참조 카운터를 가지므로, 해제할 때에는 동일한 횟수만큼 잠금 해제 처리가 필요합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;mutexId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;뮤텍스 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;propertyId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;프로퍼티 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;잠금 대상 리소스를 식별하기 위한 ID로, 어떤 리소스에 대한 잠금인지를 결정합니다.&lt;br&gt;여러 처리가 동일한 리소스에 대한 배타적 접근을 필요로 하는 경우, 동일한 프로퍼티 ID를 지정해야 합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;transactionId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 256자&lt;/td&gt;
 &lt;td&gt;트랜잭션 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;잠금을 획득하는 트랜잭션의 식별자입니다. 이 ID는 재진입 가능한 잠금을 구현하는 데 사용됩니다.&lt;br&gt;잠금 요청이 현재 잠금을 보유한 것과 동일한 트랜잭션 ID를 지정한 경우, 잠금은 재획득에 성공하며 참조 카운터가 증가합니다.&lt;br&gt;다른 트랜잭션 ID로의 잠금 요청은 잠금이 유지되는 동안 거부됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ttlAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각으로부터 1시간 후의 절대 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;유효기간 일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#get" data-bs-toggle="tooltip" data-bs-placement="top" title="뮤텍스 상태 조회"&gt;get - 뮤텍스 상태 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#lock" data-bs-toggle="tooltip" data-bs-placement="top" title="잠금 획득"&gt;lock - 잠금 획득&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#unlock" data-bs-toggle="tooltip" data-bs-placement="top" title="잠금 해제"&gt;unlock - 잠금 해제&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h2 id="메서드"&gt;메서드&lt;a class="td-heading-self-link" href="#%eb%a9%94%ec%84%9c%eb%93%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="get"&gt;get&lt;a class="td-heading-self-link" href="#get" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;뮤텍스 상태 조회&lt;/p&gt;</description></item><item><title>GS2-Log SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/log/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/log/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezingamelog"&gt;EzInGameLog&lt;a class="td-heading-self-link" href="#ezingamelog" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;인게임 로그&lt;br&gt;&lt;/p&gt;
&lt;p&gt;게임 클라이언트 또는 서버 사이드 스크립트에서 전송되는 커스텀 로그 엔트리입니다. GS2 API 호출로 자동 생성되는 액세스 로그와 달리, 인게임 로그는 게임 개발자가 플레이어의 행동, 게임 상태 변화, 비즈니스 메트릭 등 게임 고유의 이벤트를 기록하기 위해 명시적으로 전송합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;timestamp&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;인게임 로그가 전송된 일시입니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;tags&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/log/game_engine/#ezingamelogtag"&gt;List&amp;lt;EzInGameLogTag&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 20 items&lt;/td&gt;
 &lt;td&gt;태그&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;필터링과 분류를 위해 로그 엔트리에 부여된 키-값 쌍입니다. 태그를 통해 인게임 로그의 효율적인 검색과 집계가 가능합니다(예: 이벤트 타입, 스테이지 ID, 아이템 카테고리).&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;payload&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 10485760자&lt;/td&gt;
 &lt;td&gt;페이로드&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;JSON 형식의 커스텀 로그 데이터입니다. 플레이어의 행동, 게임 상태, 비즈니스 메트릭 등 게임 고유의 임의의 정보를 포함할 수 있습니다. 최대 10MB까지 가능합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#sendingamelog" data-bs-toggle="tooltip" data-bs-placement="top" title="게임 내 로그를 전송합니다"&gt;sendInGameLog - 게임 내 로그를 전송합니다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezingamelogtag"&gt;EzInGameLogTag&lt;a class="td-heading-self-link" href="#ezingamelogtag" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;게임 내 로그의 태그&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-LoginReward SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/login_reward/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/login_reward/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezreceivestatus"&gt;EzReceiveStatus&lt;a class="td-heading-self-link" href="#ezreceivestatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;수신 상태&lt;br&gt;&lt;/p&gt;
&lt;p&gt;사용자별·보너스 모델별 로그인 보너스의 수신 상태를 추적합니다.&lt;br&gt;
각 항목이 해당 날짜의 보상을 수신했는지 여부를 나타내는 불리언 배열(receivedSteps)을 보유합니다.&lt;br&gt;
또한 일별 수신 자격을 판정하기 위해 마지막으로 보너스를 수신한 시각(lastReceivedAt)을 기록합니다.&lt;br&gt;
receivedSteps는 보너스 사이클이 재시작될 때(반복이 활성화된 스트리밍 모드 등) 초기화될 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;bonusModelName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;보너스 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 수신 상태가 연결된 로그인 보너스 모델의 이름.&lt;br&gt;사용자의 수신 진행 상황을 특정 보너스 모델 정의와 연결하여, 어떤 보상 목록과 배포 규칙이 적용되는지를 결정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;receivedSteps&lt;/td&gt;
 &lt;td&gt;List&amp;lt;bool&amp;gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 100 items&lt;/td&gt;
 &lt;td&gt;수신 스텝&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;보상 목록의 각 날짜에 대응하는 순서가 있는 불리언 배열.&lt;br&gt;true는 사용자가 해당 날짜의 보상을 수신했음을 나타내고, false는 놓쳤거나 아직 수신하지 않았음을 나타냅니다.&lt;br&gt;배열의 인덱스는 관련된 BonusModel의 rewards 배열과 대응합니다.&lt;br&gt;스트리밍 모드에서 반복이 활성화된 경우, 사이클이 재시작될 때 이 배열은 초기화됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;lastReceivedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;마지막 수신 시각&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자가 마지막으로 로그인 보너스를 수신한 시각의 타임스탬프.&lt;br&gt;보너스 모델에 정의된 리셋 시각을 기준으로, 사용자가 오늘의 보너스를 이미 수신했는지 여부를 판정하는 데 사용됩니다.&lt;br&gt;수신 상태가 초기화될 때(반복 모드에서의 사이클 재시작 시 등) 0으로 재설정됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#missedreceive" data-bs-toggle="tooltip" data-bs-placement="top" title="놓친 로그인 보너스 수령"&gt;missedReceive - 놓친 로그인 보너스 수령&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#receive" data-bs-toggle="tooltip" data-bs-placement="top" title="오늘의 로그인 보너스 수령"&gt;receive - 오늘의 로그인 보너스 수령&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getreceivestatus" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 보너스 스케줄에 대한 플레이어의 로그인 보너스 진행 상황 조회"&gt;getReceiveStatus - 특정 보너스 스케줄에 대한 플레이어의 로그인 보너스 진행 상황 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listreceivestatuss" data-bs-toggle="tooltip" data-bs-placement="top" title="모든 보너스 스케줄에 대한 플레이어의 로그인 보너스 진행 상황 조회"&gt;listReceiveStatuss - 모든 보너스 스케줄에 대한 플레이어의 로그인 보너스 진행 상황 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezbonusmodel"&gt;EzBonusModel&lt;a class="td-heading-self-link" href="#ezbonusmodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;로그인 보너스 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Lottery SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/lottery/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/lottery/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezprobability"&gt;EzProbability&lt;a class="td-heading-self-link" href="#ezprobability" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;배출 확률&lt;br&gt;&lt;/p&gt;
&lt;p&gt;특정 경품의 산출된 배출 확률을 나타냅니다. 확률은 배출 확률 테이블 내 전체 경품 가중치의 합에 대한 이 경품의 가중치로 계산됩니다. 박스 가챠의 경우, 경품이 박스에서 배출됨에 따라 확률이 동적으로 변화합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;prize&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/lottery/game_engine/#ezdrawnprize"&gt;EzDrawnPrize&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;경품&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 확률이 대응하는 경품으로, ID와 입수 액션을 포함합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rate&lt;/td&gt;
 &lt;td&gt;float&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 1.0&lt;/td&gt;
 &lt;td&gt;배출 확률 (0.0~1.0)&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 경품이 배출될 확률로, 0.0에서 1.0 사이의 값으로 표현됩니다. 이 경품의 가중치를 테이블 내 전체 경품 가중치의 합으로 나누어 산출됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listprobabilities" data-bs-toggle="tooltip" data-bs-placement="top" title="가챠의 현재 배출 확률을 취득한다"&gt;listProbabilities - 가챠의 현재 배출 확률을 취득한다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezdrawnprize"&gt;EzDrawnPrize&lt;a class="td-heading-self-link" href="#ezdrawnprize" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;배출된 경품&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Matchmaking SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/matchmaking/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/matchmaking/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezgathering"&gt;EzGathering&lt;a class="td-heading-self-link" href="#ezgathering" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;개더링&lt;br&gt;&lt;/p&gt;
&lt;p&gt;매치메이킹에 의해 모인 게임 플레이어 그룹을 나타내는 엔티티입니다.&lt;br&gt;
매치메이킹용 파라미터를 여러 개 가지고 있으며, 파라미터를 종합적으로 판단하여 플레이어를 그룹화합니다.&lt;br&gt;
플레이어는 자신의 역할·속성값·거부 리스트(함께 플레이하고 싶지 않은 사용자)를 지정하여 개더링에 참가합니다.&lt;br&gt;
참가 시에는 속성값 범위 조건, 역할의 정원, 화이트리스트 제한(allowUserIds)이 검증됩니다.&lt;br&gt;
모든 역할 슬롯이 정원에 도달하면 개더링은 완성 상태가 되어 매치메이킹이 완료됩니다.&lt;br&gt;
개더링 이름은 UUID 형식으로 자동 생성되며, 유효기간을 설정하여 자동 정리(클린업)하는 것도 가능합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;gatheringId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;개더링&lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;개더링 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;개더링의 고유한 이름을 보유합니다.&lt;br&gt;이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 개더링을 식별하기 위해 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;attributeRanges&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/matchmaking/game_engine/#ezattributerange"&gt;List&amp;lt;EzAttributeRange&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 5 items&lt;/td&gt;
 &lt;td&gt;모집 조건&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 개더링에 참가하기 위해 플레이어가 충족해야 하는 속성 범위 조건의 목록입니다.&lt;br&gt;각 항목은 속성 이름과 허용되는 최소값·최대값 범위를 지정합니다.&lt;br&gt;플레이어 자신의 속성값이 이 범위 내에 있지 않으면 참가할 수 없습니다. 최대 5건.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;capacityOfRoles&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/matchmaking/game_engine/#ezcapacityofrole"&gt;List&amp;lt;EzCapacityOfRole&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;1 ~ 5 items&lt;/td&gt;
 &lt;td&gt;모집 슬롯 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 개더링의 모집 슬롯을 정의합니다.&lt;br&gt;각 항목은 역할 이름, 그 별칭, 그리고 해당 역할에 참가 가능한 최대 인원수를 지정합니다.&lt;br&gt;모든 역할 슬롯이 정원에 도달하면 매치메이킹이 완료됩니다. 최소 1건, 최대 5건.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;allowUserIds&lt;/td&gt;
 &lt;td&gt;List&amp;lt;string&amp;gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 100 items&lt;/td&gt;
 &lt;td&gt;참가 허용 사용자 ID 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 게더링에 참가하는 것이 허용된 사용자 ID의 화이트리스트입니다.&lt;br&gt;지정한 경우, 목록에 포함된 사용자만 이 게더링의 매치메이킹에 참가할 수 있습니다.&lt;br&gt;친구 전용 매치메이킹이나 초대제 매치메이킹 시나리오에 유용합니다. 최대 100건.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메타데이터에는 임의의 값을 설정할 수 있습니다.&lt;br&gt;이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;expiresAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;게더링 유효 기간&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 게더링이 자동으로 만료되어 삭제되는 시각입니다.&lt;br&gt;이 시각까지 매치메이킹이 완료되지 않으면 게더링은 정리됩니다.&lt;br&gt;지정하지 않은 경우, 매치메이킹이 완료되거나 수동으로 삭제될 때까지 게더링이 유지됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;createdAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;생성일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;updatedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;최종 갱신일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#cancelmatchmaking" data-bs-toggle="tooltip" data-bs-placement="top" title="매치메이킹을 취소하고 기어링에서 이탈합니다"&gt;cancelMatchmaking - 매치메이킹을 취소하고 기어링에서 이탈합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#creategathering" data-bs-toggle="tooltip" data-bs-placement="top" title="매치메이킹용 방(개더링) 신규 생성"&gt;createGathering - 매치메이킹용 방(개더링) 신규 생성&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#domatchmaking" data-bs-toggle="tooltip" data-bs-placement="top" title="참가 가능한 개더링을 검색하여 참가"&gt;doMatchmaking - 참가 가능한 개더링을 검색하여 참가&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#earlycompletematchmaking" data-bs-toggle="tooltip" data-bs-placement="top" title="정원이 채워지지 않은 상태에서 매치메이킹을 조기 종료합니다"&gt;earlyCompleteMatchmaking - 정원이 채워지지 않은 상태에서 매치메이킹을 조기 종료합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getgathering" data-bs-toggle="tooltip" data-bs-placement="top" title="기어링의 현재 상태를 취득합니다"&gt;getGathering - 기어링의 현재 상태를 취득합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#ping" data-bs-toggle="tooltip" data-bs-placement="top" title="매치메이킹 대기 중 킵얼라이브를 전송합니다"&gt;ping - 매치메이킹 대기 중 킵얼라이브를 전송합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#updategathering" data-bs-toggle="tooltip" data-bs-placement="top" title="개더링의 모집 조건 변경"&gt;updateGathering - 개더링의 모집 조건 변경&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezrating"&gt;EzRating&lt;a class="td-heading-self-link" href="#ezrating" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;레이팅&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-MegaField SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/mega_field/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/mega_field/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezspatial"&gt;EzSpatial&lt;a class="td-heading-self-link" href="#ezspatial" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;공간 정보&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;areaModelName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;에어리어 이름&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;layerModelName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;레이어 이름&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;position&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/mega_field/game_engine/#ezposition"&gt;EzPosition&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;좌표&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;vector&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/mega_field/game_engine/#ezvector"&gt;EzVector&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;방향&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#update" data-bs-toggle="tooltip" data-bs-placement="top" title="좌표 전송"&gt;update - 좌표 전송&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezareamodel"&gt;EzAreaModel&lt;a class="td-heading-self-link" href="#ezareamodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;에어리어는 공간을 분할하는 것으로, 같은 좌표라도 에어리어가 다르면 별도의 공간으로 취급할 수 있습니다.&lt;/p&gt;</description></item><item><title>GS2-Mission SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/mission/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/mission/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezcomplete"&gt;EzComplete&lt;a class="td-heading-self-link" href="#ezcomplete" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;미션 달성 상황&lt;br&gt;&lt;/p&gt;
&lt;p&gt;특정 미션 그룹에 대한 사용자의 미션 달성 상황과 보상 수령 상황을 추적합니다. 달성 완료된 태스크명과 보상 수령 완료된 태스크명을 각각 별도의 목록으로 관리하여, 달성된 태스크와 실제로 보상을 수령한 태스크를 구분합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;missionGroupName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;미션 그룹명&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 달성 상황 레코드가 속한 미션 그룹의 이름입니다. 사용자별·미션 그룹별로 하나의 달성 상황 레코드가 존재합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;completedMissionTaskNames&lt;/td&gt;
 &lt;td&gt;List&amp;lt;string&amp;gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;달성 완료된 태스크명 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자가 달성한(달성 조건을 충족한) 미션 태스크의 이름입니다. 카운터가 목표값에 도달하거나 검증 액션이 성공한 시점에 이 목록에 추가됩니다. 보상 수령 여부는 관계없습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;receivedMissionTaskNames&lt;/td&gt;
 &lt;td&gt;List&amp;lt;string&amp;gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;보상 수령 완료된 태스크명 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자가 달성 보상을 이미 수령한 미션 태스크의 이름입니다. 보상을 받으려면 태스크가 달성 완료 목록에 포함되어 있어야 합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#evaluatecomplete" data-bs-toggle="tooltip" data-bs-placement="top" title="미션 달성 상태를 재평가합니다"&gt;evaluateComplete - 미션 달성 상태를 재평가합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getcomplete" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 미션 그룹에 대한 플레이어의 달성 상태를 취득합니다"&gt;getComplete - 특정 미션 그룹에 대한 플레이어의 달성 상태를 취득합니다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listcompletes" data-bs-toggle="tooltip" data-bs-placement="top" title="전체 그룹에 대한 플레이어의 미션 달성 상황 조회"&gt;listCompletes - 전체 그룹에 대한 플레이어의 미션 달성 상황 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#decreasecounter" data-bs-toggle="tooltip" data-bs-placement="top" title="카운터를 감소시키기"&gt;decreaseCounter - 카운터를 감소시키기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezcounter"&gt;EzCounter&lt;a class="td-heading-self-link" href="#ezcounter" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;카운터&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Money SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/money/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/money/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezwallet"&gt;EzWallet&lt;a class="td-heading-self-link" href="#ezwallet" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;지갑&lt;br&gt;&lt;/p&gt;
&lt;p&gt;지갑 내 통화는 유료로 구매한 통화와 무료로 얻은 통화로 크게 나누어 관리됩니다.&lt;br&gt;
유료로 구매한 통화는 다시 구매 시점의 단가별로 관리되어, 서비스가 종료되었을 때의 환불이나 자금결제법에 해당하는 잔액이 존재하는지를 집계할 수 있습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;지갑에는 슬롯이 있으며, 슬롯마다 서로 다른 잔액을 관리할 수 있습니다.&lt;br&gt;
플랫폼 간에 잔액을 공유할 수 없는 경우에는 플랫폼마다 다른 슬롯을 사용함으로써 나누어 관리할 수 있습니다.&lt;br&gt;
이때 무료로 얻은 통화는 모든 플랫폼에서 공통된 값을 사용할 수도 있습니다.&lt;/p&gt;</description></item><item><title>GS2-Money2 SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/money2/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/money2/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezwallet"&gt;EzWallet&lt;a class="td-heading-self-link" href="#ezwallet" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;지갑&lt;br&gt;&lt;/p&gt;
&lt;p&gt;지갑 내 통화는 유료로 구매한 통화와 무료로 얻은 통화로 크게 나누어 관리됩니다.&lt;br&gt;
유료로 구매한 통화는 다시 구매 시점의 단가별로 관리되어, 서비스가 종료되었을 때의 환불이나 자금결제법에 해당하는 잔액이 존재하는지를 집계할 수 있습니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;지갑에는 슬롯이 있으며, 슬롯마다 서로 다른 잔액을 관리할 수 있습니다.&lt;br&gt;
플랫폼 간에 잔액을 공유할 수 없는 경우에는 플랫폼마다 다른 슬롯을 사용함으로써 나누어 관리할 수 있습니다.&lt;br&gt;
이때 무료로 얻은 통화는 모든 플랫폼에서 공통된 값을 사용할 수도 있습니다.&lt;/p&gt;</description></item><item><title>GS2-News SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/news/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/news/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="eznews"&gt;EzNews&lt;a class="td-heading-self-link" href="#eznews" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;공지사항 게시글&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Hugo 사이트 데이터로부터 생성된 개별 뉴스 게시글을 나타냅니다.&lt;br&gt;
각 게시글은 섹션과 콘텐츠 경로에 속하며, 제목, 타임스탬프, Front Matter 메타데이터를 가집니다.&lt;br&gt;
게시글은 필요에 따라 GS2-Schedule의 이벤트와 연결하여 표시 기간을 제어할 수 있습니다.&lt;br&gt;
Front Matter에는 JSON 형식의 추가 메타데이터가 포함되며, 표시 순서를 제어하기 위한 선택적 weight 필드도 포함됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;section&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;섹션 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 게시글이 속한 섹션(카테고리)이며, Hugo의 콘텐츠 디렉터리 구조에 대응합니다.&lt;br&gt;게시글을 표시용 논리 그룹으로 구성하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;content&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;콘텐츠&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;섹션 내에서 이 게시글의 콘텐츠 경로 식별자입니다.&lt;br&gt;섹션과 함께 Hugo 콘텐츠 구조 내에서 게시글의 위치를 고유하게 식별합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;title&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;게시글 제목&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;뉴스 게시글의 제목이며, 일반적으로 Hugo의 Front Matter에서 정의됩니다.&lt;br&gt;플레이어에게 게시글 목록을 표시할 때 제목으로 표시됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scheduleEventId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;GS2-Schedule 이벤트 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;timestamp&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;타임스탬프&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간(밀리초)&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;frontMatter&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;Front Matter&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;게시글에 연결된 JSON 형식의 메타데이터이며, 원래 Hugo 마크다운의 Front Matter에서 정의됩니다.&lt;br&gt;weight(표시 순서 제어용), 태그, 카테고리 등 임의의 사용자 정의 속성 필드를 포함할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listnewses" data-bs-toggle="tooltip" data-bs-placement="top" title="공지사항 게시글 목록 조회"&gt;listNewses - 공지사항 게시글 목록 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezsetcookierequestentry"&gt;EzSetCookieRequestEntry&lt;a class="td-heading-self-link" href="#ezsetcookierequestentry" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Cookie 설정 요청 엔트리&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Quest SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/quest/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/quest/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezprogress"&gt;EzProgress&lt;a class="td-heading-self-link" href="#ezprogress" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;퀘스트 진행 상황&lt;br&gt;&lt;/p&gt;
&lt;p&gt;퀘스트 시작 시 생성되며, 종료 시 삭제됩니다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;인게임 도중 앱을 종료한 경우 이 데이터가 남은 상태가 되며&lt;br&gt;
엔티티가 보유한 진행 중인 퀘스트 정보를 통해 게임을 재개할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;progressId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;퀘스트 진행 상황 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;transactionId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 36자&lt;/td&gt;
 &lt;td&gt;트랜잭션 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;퀘스트 트랜잭션의 고유 식별자입니다. 퀘스트 진행 상황과 보상 배포를 관리하는 트랜잭션을 연결하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;questModelId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;퀘스트 모델 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;현재 진행 중인 퀘스트 모델의 GRN입니다. 사용자가 플레이 중인 퀘스트를 식별하며, 퀘스트 도중 앱을 종료한 경우 게임 재개를 가능하게 합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;randomSeed&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;난수 시드&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;퀘스트 시작 시 할당되는 난수 시드입니다. 이 퀘스트 시도에서 선택되는 콘텐츠 배리에이션(보상 세트)을 결정하는 데 사용되며, 재현 가능한 결과를 보장합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 256자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메타데이터에는 임의의 값을 설정할 수 있습니다.&lt;br&gt;이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rewards&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/quest/game_engine/#ezreward"&gt;List&amp;lt;EzReward&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;클리어 보상 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;퀘스트 클리어 시 지급되는 보상의 목록입니다. 난수 시드로 선택된 콘텐츠 배리에이션에 기반하여 퀘스트 시작 시 결정됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;failedRewards&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/quest/game_engine/#ezreward"&gt;List&amp;lt;EzReward&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;실패 시 보상 목록&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;퀘스트 실패 시 지급되는 보상의 목록입니다. 퀘스트 시작 시 결정되며, 실패에 대한 위로 보상이나 비용 일부 반환으로 제공됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#deleteprogress" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 현재 퀘스트 취소"&gt;deleteProgress - 플레이어의 현재 퀘스트 취소&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#end" data-bs-toggle="tooltip" data-bs-placement="top" title="퀘스트 완료 또는 실패 보고"&gt;end - 퀘스트 완료 또는 실패 보고&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getprogress" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 현재 퀘스트 진행 상황 조회"&gt;getProgress - 플레이어의 현재 퀘스트 진행 상황 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezcompletedquestlist"&gt;EzCompletedQuestList&lt;a class="td-heading-self-link" href="#ezcompletedquestlist" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;클리어 완료 퀘스트 목록&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Ranking SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/ranking/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/ranking/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezscore"&gt;EzScore&lt;a class="td-heading-self-link" href="#ezscore" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스코어&lt;br&gt;&lt;/p&gt;
&lt;p&gt;게임 플레이어별·카테고리별로 등록된 스코어를 보유하는 엔티티입니다.&lt;br&gt;
각 스코어 엔트리는 고유 ID로 식별되며, 카테고리 및 스코어 등록 사용자와 연결됩니다.&lt;br&gt;
합산 모드에서는 새로운 스코어가 별도의 엔트리를 생성하는 대신 AddScore 조작을 통해 기존 합계에 가산됩니다.&lt;br&gt;
카테고리의 최소값·최대값 범위를 벗어나는 스코어는 등록 시 거부됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;categoryName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;카테고리명&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;uniqueId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 36자&lt;/td&gt;
 &lt;td&gt;고유 ID&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스코어 엔트리를 고유하게 식별하는 UUID입니다.&lt;br&gt;생성 시 자동으로 생성됩니다. uniqueByUserId가 비활성화된 경우, 동일 사용자의 동일 카테고리 내 여러 스코어 엔트리를 구분하기 위해 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;scorerUserId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;score&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;스코어&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;플레이어가 등록한 스코어 값입니다.&lt;br&gt;카테고리에 설정된 최소값·최대값 범위 내여야 합니다. 합산 모드에서는 AddScore 조작을 통해 이 값을 증가시킬 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 512자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메타데이터에는 임의의 값을 설정할 수 있습니다.&lt;br&gt;이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#putscore" data-bs-toggle="tooltip" data-bs-placement="top" title="랭킹에 스코어 등록하기"&gt;putScore - 랭킹에 스코어 등록하기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getscore" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어가 등록한 특정 스코어 취득하기"&gt;getScore - 플레이어가 등록한 특정 스코어 취득하기&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listscores" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 플레이어가 등록한 스코어 목록 취득하기"&gt;listScores - 특정 플레이어가 등록한 스코어 목록 취득하기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezranking"&gt;EzRanking&lt;a class="td-heading-self-link" href="#ezranking" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;랭킹&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Ranking2 SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/ranking2/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/ranking2/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezglobalrankingdata"&gt;EzGlobalRankingData&lt;a class="td-heading-self-link" href="#ezglobalrankingdata" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;글로벌 랭킹&lt;br&gt;&lt;/p&gt;
&lt;p&gt;특정 시즌의 글로벌 랭킹에서의 랭킹 엔트리를 나타냅니다. 사용자의 스코어, 0부터 시작하는 인덱스(정렬 위치), 1부터 시작하는 순위(동점을 고려)를 포함합니다. 순위는 인덱스 + 1로 계산됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;rankingName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;글로벌 랭킹 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;글로벌 랭킹 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;season&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;시즌&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;GS2-Schedule 이벤트의 반복 횟수에 대응하는 시즌 번호입니다. 새로운 랭킹 기간마다 증가합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;index&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;인덱스&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;랭킹 내 이 엔트리의 0부터 시작하는 고유한 정렬 위치입니다. 순위와 달리, 스코어가 동점이어도 인덱스는 항상 고유합니다. 인덱스 기반 보상 계산에 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rank&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;순위&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;1부터 시작하는 랭킹 순위입니다. 스코어가 같은 플레이어는 동일한 순위를 공유합니다. 인덱스 + 1로 계산됩니다. 순위 기반 보상 계산에 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;score&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 9223372036854775805&lt;/td&gt;
 &lt;td&gt;스코어&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 512자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메타데이터에는 임의의 값을 설정할 수 있습니다.&lt;br&gt;이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;updatedAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;최종 갱신일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;UNIX 시간・밀리초&lt;br&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getglobalrankingrank" data-bs-toggle="tooltip" data-bs-placement="top" title="글로벌 랭킹에서 플레이어 자신의 순위 조회"&gt;getGlobalRankingRank - 글로벌 랭킹에서 플레이어 자신의 순위 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listglobalrankings" data-bs-toggle="tooltip" data-bs-placement="top" title="글로벌 랭킹의 리더보드 조회"&gt;listGlobalRankings - 글로벌 랭킹의 리더보드 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezglobalrankingreceivedreward"&gt;EzGlobalRankingReceivedReward&lt;a class="td-heading-self-link" href="#ezglobalrankingreceivedreward" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;글로벌 랭킹 보상 수령 이력&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Realtime SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/realtime/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/realtime/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezroom"&gt;EzRoom&lt;a class="td-heading-self-link" href="#ezroom" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;룸&lt;br&gt;&lt;/p&gt;
&lt;p&gt;멀티플레이어 대전에서 실시간 통신을 처리하기 위한 전용 게임 서버 인스턴스를 나타냅니다.&lt;br&gt;
룸 생성은 비동기로 이루어지며, 요청 후 시스템이 서버를 프로비저닝하고 인스턴스 준비가 완료되면 IP 주소, 포트, 암호화 키가 할당됩니다.&lt;br&gt;
클라이언트는 접속을 시도하기 전에 생성 완료 알림을 기다리거나 폴링해야 합니다.&lt;br&gt;
암호화 키는 게임 클라이언트와 릴레이 서버 간의 안전한 통신 채널을 확립하는 데 사용됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;룸 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;룸 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ipAddress&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;IP 주소&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;프로비저닝된 게임 서버의 IP 주소.&lt;br&gt;룸의 서버 인스턴스 준비가 완료된 후 시스템에 의해 자동으로 할당됩니다. 룸 생성 직후에는 이용할 수 없습니다. 최대 128자.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;port&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 65535&lt;/td&gt;
 &lt;td&gt;대기 포트&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;프로비저닝된 게임 서버의 대기 포트 번호.&lt;br&gt;서버 인스턴스 준비가 완료된 후 IP 주소와 함께 자동으로 할당됩니다. 범위: 0~65535.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;encryptionKey&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 256자&lt;/td&gt;
 &lt;td&gt;암호화 키&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;게임 클라이언트와 릴레이 서버 간의 통신을 암호화하기 위한 키.&lt;br&gt;서버 인스턴스 준비가 완료된 후 IP 주소 및 포트와 함께 자동으로 할당됩니다.&lt;br&gt;클라이언트는 릴레이 서버를 통해 송수신하는 메시지의 암호화·복호화에 이 키를 사용해야 합니다. 최대 256자.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getroom" data-bs-toggle="tooltip" data-bs-placement="top" title="실시간 게임 룸의 접속 정보 취득"&gt;getRoom - 실시간 게임 룸의 접속 정보 취득&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h2 id="메서드"&gt;메서드&lt;a class="td-heading-self-link" href="#%eb%a9%94%ec%84%9c%eb%93%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="now"&gt;now&lt;a class="td-heading-self-link" href="#now" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;현재 서버 시각 취득&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Schedule SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/schedule/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/schedule/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="eztrigger"&gt;EzTrigger&lt;a class="td-heading-self-link" href="#eztrigger" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;트리거&lt;br&gt;&lt;/p&gt;
&lt;p&gt;상대 이벤트 스케줄링의 기점을 정의하여 플레이어별 이벤트 기간을 구현합니다.&lt;br&gt;
플레이어에게 트리거가 발동되면 유효 기간(expiresAt)이 설정됩니다.&lt;br&gt;
&amp;ldquo;relative&amp;rdquo; 스케줄 타입으로 설정된 이벤트는 트리거를 이름으로 참조하며, 해당 플레이어의 이벤트 기간은 트리거가 발동된 시각부터 유효 기간까지 지속됩니다.&lt;br&gt;
트리거는 갱신할 수 있으며, 유효 기간이 지나면 TTL에 의해 자동으로 정리됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;triggerId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;트리거 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;트리거 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;트리거 고유 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;triggeredAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;현재 시각&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;트리거 발동 일시&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 트리거가 발동된 타임스탬프입니다.&lt;br&gt;상대 이벤트 스케줄링의 기준 시작점 역할을 합니다. 명시적으로 지정하지 않으면 현재 시각이 자동으로 설정됩니다.&lt;br&gt;UNIX 시간(밀리초)으로 표현됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;expiresAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;유효 기간&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 트리거가 만료되어 상대 이벤트 기간이 종료되는 타임스탬프입니다.&lt;br&gt;이 시각 이후 트리거는 만료된 것으로 간주되며(IsExpire가 true를 반환), 해당 플레이어에 대한 관련 상대 이벤트는 더 이상 유효하지 않습니다.&lt;br&gt;트리거 데이터는 만료 후 DynamoDB TTL에 의해 자동으로 정리됩니다. UNIX 시간(밀리초)으로 표현됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#gettrigger" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 트리거의 상태 조회"&gt;getTrigger - 특정 트리거의 상태 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#listtriggers" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 유효한 트리거 목록 조회"&gt;listTriggers - 플레이어의 유효한 트리거 목록 조회&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezevent"&gt;EzEvent&lt;a class="td-heading-self-link" href="#ezevent" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;이벤트&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-SeasonRating SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/season_rating/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/season_rating/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezballot"&gt;EzBallot&lt;a class="td-heading-self-link" href="#ezballot" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;투표용지&lt;br&gt;&lt;/p&gt;
&lt;p&gt;특정 매치 세션에 대해 각 플레이어에게 발급되는 투표권입니다.&lt;br&gt;
대전 컨텍스트(시즌, 세션, 참가 인원 수)와 플레이어의 사용자 ID를 포함합니다.&lt;br&gt;
투표용지는 서버에 의해 서명되어 플레이어에게 반환되며, 플레이어는 게임 결과를 기입하여 WrittenBallot으로 다시 제출합니다.&lt;br&gt;
투표 집계 시, 모든 참가자의 투표용지를 다수결로 비교하여 결과 조작을 방지합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;seasonName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;시즌 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 대전의 레이팅 계산에 사용되는 시즌 모델의 이름.&lt;br&gt;이 대전에 적용되는 티어 구조와 포인트 변동 규칙을 정의하는 SeasonModel을 참조합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;sessionName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;세션 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 투표용지가 속한 매치 세션의 이름.&lt;br&gt;동일한 세션 내의 모든 투표용지는 투표 프로세스에서 함께 집계됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;numberOfPlayer&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;2 ~ 10&lt;/td&gt;
 &lt;td&gt;참가 인원 수&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 대전의 총 참가자 수.&lt;br&gt;투표 완료 여부 판정에 사용됩니다. 결과 확정에는 전체 투표용지의 수집(또는 과반수 성립)이 필요합니다.&lt;br&gt;유효 범위: 2~10.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#createvote" data-bs-toggle="tooltip" data-bs-placement="top" title="대전 결과 보고용 서명된 투표 용지를 작성한다"&gt;createVote - 대전 결과 보고용 서명된 투표 용지를 작성한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#vote" data-bs-toggle="tooltip" data-bs-placement="top" title="자신의 투표용지를 제출하여 대전 결과에 투표합니다 (개별 투표)"&gt;vote - 자신의 투표용지를 제출하여 대전 결과에 투표합니다 (개별 투표)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#votemultiple" data-bs-toggle="tooltip" data-bs-placement="top" title="모든 투표용지를 모아 대전 결과를 한 번에 제출합니다 (즉시 결과 반영)"&gt;voteMultiple - 모든 투표용지를 모아 대전 결과를 한 번에 제출합니다 (즉시 결과 반영)&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezseasonmodel"&gt;EzSeasonModel&lt;a class="td-heading-self-link" href="#ezseasonmodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;시즌 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-SerialKey SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/serial_key/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/serial_key/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezserialkey"&gt;EzSerialKey&lt;a class="td-heading-self-link" href="#ezserialkey" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;시리얼 코드&lt;br&gt;&lt;/p&gt;
&lt;p&gt;발급된 시리얼 코드는 한 번만 사용할 수 있습니다.&lt;br&gt;
시리얼 코드는 &amp;ldquo;RPCLP-FP7N-NCDMJ-FLVA-IRI4&amp;quot;와 같은 형식으로 발급되며 데이터 길이는 변경할 수 없습니다.&lt;br&gt;
시리얼 코드 내에는 캠페인 종류에 대한 정보도 포함되어 있으며, 시리얼 코드를 사용할 때는 네임스페이스만 지정하면 사용할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;campaignModelName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;캠페인 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 시리얼 코드가 속한 캠페인 모델의 이름입니다. 캠페인 정보는 시리얼 코드 자체에 포함되어 있으므로 코드를 사용할 때는 네임스페이스만 지정하면 됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 2048자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메타데이터에는 임의의 값을 설정할 수 있습니다.&lt;br&gt;이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;code&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 48자&lt;/td&gt;
 &lt;td&gt;시리얼 코드&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;&amp;ldquo;XXXXX-XXXX-XXXXX-XXXX-XXXX&amp;rdquo; 형식의 시리얼 코드 문자열입니다. 각 코드는 고유하며 캠페인 식별 정보를 포함합니다. 코드의 형식과 데이터 길이는 고정되어 있어 변경할 수 없습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;status&lt;/td&gt;
 &lt;td&gt;문자열 열거형&lt;br&gt;enum {&lt;br&gt;  &amp;ldquo;ACTIVE&amp;rdquo;,&lt;br&gt;  &amp;ldquo;USED&amp;rdquo;,&lt;br&gt;  &amp;ldquo;INACTIVE&amp;rdquo;&lt;br&gt;}&lt;br&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;ACTIVE&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;상태&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 시리얼 코드의 현재 사용 상태입니다. 사용자가 소비하면 ACTIVE에서 USED로 전환됩니다. 이중 사용을 방지하기 위해 낙관적 잠금(optimistic locking)으로 보호됩니다. INACTIVE 상태의 코드는 사용할 수 없습니다.&lt;/div&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;정의&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ACTIVE&lt;/td&gt;&lt;td&gt;사용 가능&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;USED&lt;/td&gt;&lt;td&gt;사용됨&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;INACTIVE&lt;/td&gt;&lt;td&gt;비활성(사용 불가)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#get" data-bs-toggle="tooltip" data-bs-placement="top" title="시리얼 코드의 상태 확인"&gt;get - 시리얼 코드의 상태 확인&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#useserialcode" data-bs-toggle="tooltip" data-bs-placement="top" title="시리얼 코드 교환"&gt;useSerialCode - 시리얼 코드 교환&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezcampaignmodel"&gt;EzCampaignModel&lt;a class="td-heading-self-link" href="#ezcampaignmodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;캠페인 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Showcase SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/showcase/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/showcase/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezshowcase"&gt;EzShowcase&lt;a class="td-heading-self-link" href="#ezshowcase" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;진열대&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;진열대&lt;/code&gt;에는 진열할 상품을 정의할 수 있습니다.&lt;br&gt;
또한 &lt;code&gt;진열대&lt;/code&gt;의 상품 판매 기간을 설정할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;진열대 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;진열대 고유의 이름. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;metadata&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 2048자&lt;/td&gt;
 &lt;td&gt;메타데이터&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;메타데이터에는 임의의 값을 설정할 수 있습니다.&lt;br&gt;이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;displayItems&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/showcase/game_engine/#ezdisplayitem"&gt;List&amp;lt;EzDisplayItem&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;1 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;진열할 상품 리스트&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 진열대에 진열되는 상품의 리스트입니다. 각 진열 상품은 단일 상품 또는 상품 그룹 중 하나입니다. 판매 기간 이벤트가 종료되었거나 유효하지 않은 상품은 진열대 조회 시 자동으로 필터링됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;salesPeriodEventId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;진열대의 판매 기간을 설정한 GS2-Schedule 이벤트 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 진열대 전체의 판매 기간을 제어합니다. 지정한 경우, 연관된 GS2-Schedule 이벤트 기간 중에만 진열대를 이용할 수 있습니다. 이벤트가 유효하지 않은 경우, 진열대는 비어 있는 상태로 반환됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getshowcase" data-bs-toggle="tooltip" data-bs-placement="top" title="상점 쇼케이스와 상품 가져오기"&gt;getShowcase - 상점 쇼케이스와 상품 가져오기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezdisplayitem"&gt;EzDisplayItem&lt;a class="td-heading-self-link" href="#ezdisplayitem" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;진열 상품&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-SkillTree SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/skill_tree/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/skill_tree/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstatus"&gt;EzStatus&lt;a class="td-heading-self-link" href="#ezstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스킬 트리 해방 상황&lt;br&gt;&lt;/p&gt;
&lt;p&gt;특정 플레이어와 프로퍼티에 대한 스킬 트리의 해방 상태를 추적하는 모델입니다.&lt;br&gt;
해방(언락)된 노드명의 목록을 관리합니다. 노드는 해방(목록에 추가), 구속(목록에서 제거), 초기화(전체 삭제)할 수 있습니다.&lt;br&gt;
이미 해방된 노드를 해방하려 하거나, 미해방 노드를 구속하려 하면 오류가 발생합니다.&lt;br&gt;
사용자가 처음 접근했을 때 자동으로 생성됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;statusId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;상태&lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;releasedNodeNames&lt;/td&gt;
 &lt;td&gt;List&amp;lt;string&amp;gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;해제된 노드 모델명 리스트&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스킬트리에서 플레이어가 잠금 해제한 노드 모델명 리스트입니다.&lt;br&gt;해제(추가), 구속(삭제), 리셋(전체 초기화) 작업으로 갱신됩니다.&lt;br&gt;최대 1000건.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstatus" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 스킬 트리 진행 상황 취득"&gt;getStatus - 플레이어의 스킬 트리 진행 상황 취득&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#release" data-bs-toggle="tooltip" data-bs-placement="top" title="스킬 트리 노드 해방"&gt;release - 스킬 트리 노드 해방&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#reset" data-bs-toggle="tooltip" data-bs-placement="top" title="스킬 트리 전체 초기화(전체 리스펙)"&gt;reset - 스킬 트리 전체 초기화(전체 리스펙)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#restrain" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 노드를 잠금 상태로 되돌리기"&gt;restrain - 특정 노드를 잠금 상태로 되돌리기&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="eznodemodel"&gt;EzNodeModel&lt;a class="td-heading-self-link" href="#eznodemodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;노드 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Stamina SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/stamina/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/stamina/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstamina"&gt;EzStamina&lt;a class="td-heading-self-link" href="#ezstamina" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스태미나&lt;br&gt;&lt;/p&gt;
&lt;p&gt;스태미나란 현실 시간의 경과에 따라 회복되는 포인트입니다.&lt;br&gt;
일반적으로 이 스태미나를 소비해야 게임을 플레이할 수 있도록 함으로써, 플레이어의 하루 플레이 횟수를 제한하고 게임의 진행 속도를 게임 제공사가 제어할 목적으로 사용됩니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;staminaName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;스태미나 모델 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스태미나 인스턴스의 회복 파라미터, 용량, 테이블 참조를 정의하는 StaminaModel의 이름입니다.&lt;br&gt;사용자별 스태미나 상태를 대응하는 모델 정의와 연결합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;value&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;스태미나 값&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;오버플로우분을 제외한, 이 사용자의 현재 스태미나 양입니다.&lt;br&gt;회복 간격과 회복량에 기반하여 시간 경과에 따라 자동으로 증가하며, maxValue까지 회복됩니다.&lt;br&gt;lastRecoveredAt로부터의 경과 시간을 사용하여 recoverSteps = elapsedMinutes / recoverIntervalMinutes 식으로 계산됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;overflowValue&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;오버플로우 값&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;통상의 최대값(maxValue)을 초과하여 저장되어 있는 스태미나량입니다.&lt;br&gt;StaminaModel의 isOverflow가 활성화된 경우에만 사용됩니다. 실효 스태미나의 합계는 value + overflowValue이며, maxCapacity가 상한입니다.&lt;br&gt;스태미나 소비 시 오버플로우분이 먼저 소비됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;maxValue&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;1 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;스태미나 최대값&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;StaminaModel로부터 결정되며, 옵션으로 플레이어의 GS2-Experience 랭크에 따라 MaxStaminaTable로 오버라이드되는 사용자별 스태미나 최대값입니다.&lt;br&gt;오버플로우가 비활성화된 경우 initialCapacity가 하한이 됩니다. 오버플로우가 활성화된 경우 maxCapacity가 상한이 됩니다.&lt;br&gt;자연 회복은 이 값에서 멈춥니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;recoverIntervalMinutes&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;1 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;스태미나 회복 간격(분)&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;StaminaModel로부터 결정되며, 옵션으로 플레이어의 GS2-Experience 랭크에 따라 RecoverIntervalTable로 오버라이드되는 사용자별 회복 간격(분)입니다.&lt;br&gt;테이블이 설정되어 있지 않은 경우, 모델의 기본값인 recoverIntervalMinutes로 대체됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;recoverValue&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;1 ~ 2147483646&lt;/td&gt;
 &lt;td&gt;스태미나 회복량&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;StaminaModel로부터 결정되며, 옵션으로 플레이어의 GS2-Experience 랭크에 따라 RecoverValueTable로 오버라이드되는 사용자별 틱당 회복량입니다.&lt;br&gt;테이블이 설정되어 있지 않은 경우, 모델의 기본값인 recoverValue로 대체됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;nextRecoverAt&lt;/td&gt;
 &lt;td&gt;long&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;다음 회복 시각&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;다음 스태미나 회복 틱이 발생하는 Unix 타임스탬프(밀리초)입니다.&lt;br&gt;lastRecoveredAt + recoverIntervalMinutes * 60 * 1000으로 계산됩니다. 스태미나가 이미 maxValue인 경우, 이 필드는 설정되지 않을 수 있습니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#apply" data-bs-toggle="tooltip" data-bs-placement="top" title="스태미나의 시간 경과에 따른 자연 회복을 적용한다"&gt;apply - 스태미나의 시간 경과에 따른 자연 회복을 적용한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#consume" data-bs-toggle="tooltip" data-bs-placement="top" title="스태미나를 사용(소비)한다"&gt;consume - 스태미나를 사용(소비)한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstamina" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 종류의 플레이어의 현재 스태미나를 취득한다"&gt;getStamina - 특정 종류의 플레이어의 현재 스태미나를 취득한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#liststaminas" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 스태미나 값 목록을 취득한다"&gt;listStaminas - 플레이어의 스태미나 값 목록을 취득한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#setmaxvalue" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어 레벨에 따라 스태미나 상한을 업데이트한다"&gt;setMaxValue - 플레이어 레벨에 따라 스태미나 상한을 업데이트한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#setrecoverinterval" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어 레벨에 따라 스태미나 회복 간격을 업데이트한다"&gt;setRecoverInterval - 플레이어 레벨에 따라 스태미나 회복 간격을 업데이트한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#setrecovervalue" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어 레벨에 따라 스태미나 회복량을 업데이트한다"&gt;setRecoverValue - 플레이어 레벨에 따라 스태미나 회복량을 업데이트한다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezstaminamodel"&gt;EzStaminaModel&lt;a class="td-heading-self-link" href="#ezstaminamodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스태미나 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-StateMachine SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/state_machine/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/state_machine/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezstatus"&gt;EzStatus&lt;a class="td-heading-self-link" href="#ezstatus" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스테이트 머신의 상태&lt;br&gt;&lt;/p&gt;
&lt;p&gt;특정 사용자에 대한 스테이트 머신의 실행 인스턴스를 나타냅니다. 변수, 서브 스테이트 머신용 콜 스택, 전이 횟수, 난수 상태를 포함한 현재 실행 상태를 추적합니다. 스테이터스는 Running, Wait, Pass(성공), Error 상태를 전이합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;statusId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;※&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;스테이트 머신 상태 &lt;span
 class="text-muted"
 style="cursor: pointer;"
 data-bs-toggle="tooltip"
 data-bs-html="true"
 data-bs-placement="top"
 title="GS2 Resource Name&amp;lt;br&amp;gt;GS2가 다루는 모든 정보에 부여되는 고유한 리소스 이름"
&gt;
 GRN
 &lt;svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="currentColor" style="vertical-align: -0.125em;"&gt;
 &lt;path d="M454-298h52v-230h-52v230Zm25.79-290.46q11.94 0 20.23-8.08 8.29-8.08 8.29-20.02t-8.08-20.23q-8.08-8.28-20.02-8.28T459.98-637q-8.29 8.08-8.29 20.02t8.08 20.23q8.08 8.29 20.02 8.29Zm.55 472.46q-75.11 0-141.48-28.42-66.37-28.42-116.18-78.21-49.81-49.79-78.25-116.09Q116-405.01 116-480.39q0-75.38 28.42-141.25t78.21-115.68q49.79-49.81 116.09-78.25Q405.01-844 480.39-844q75.38 0 141.25 28.42t115.68 78.21q49.81 49.79 78.25 115.85Q844-555.45 844-480.34q0 75.11-28.42 141.48-28.42 66.37-78.21 116.18-49.79 49.81-115.85 78.25Q555.45-116 480.34-116Zm-.34-52q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"/&gt;
 &lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ 서버가 자동으로 설정&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;name&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;UUID&lt;/td&gt;
 &lt;td&gt;~ 36자&lt;/td&gt;
 &lt;td&gt;스테이터스 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;스테이트 머신 상태의 고유한 이름을 보유합니다.&lt;br&gt;이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 각 스테이트 머신의 상태를 식별하는 데 사용됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;enableSpeculativeExecution&lt;/td&gt;
 &lt;td&gt;문자열 열거형&lt;br&gt;enum {&lt;br&gt;  &amp;ldquo;enable&amp;rdquo;,&lt;br&gt;  &amp;ldquo;disable&amp;rdquo;&lt;br&gt;}&lt;br&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;disable&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;투기적 실행을 활성화할지 여부&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;활성화하면 스테이트 머신 정의와 난수 상태가 이 Status 엔티티에 포함됩니다. 이를 통해 클라이언트가 서버 확인 전에 로컬에서 전이를 시뮬레이션할 수 있어 체감 지연을 줄일 수 있습니다.&lt;/div&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;정의&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;enable&lt;/td&gt;&lt;td&gt;활성화&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;disable&lt;/td&gt;&lt;td&gt;비활성화&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;stateMachineDefinition&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;{enableSpeculativeExecution} == &amp;ldquo;enable&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 16777216자&lt;/td&gt;
 &lt;td&gt;스테이트 머신 정의&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;투기적 실행을 위해 이 스테이터스에 포함된 GSL 정의입니다. enableSpeculativeExecution이 활성화된 경우에만 존재합니다. 일반적인 API 응답에서는 필터링되며, 클라이언트 측 시뮬레이션에 필요한 경우에만 포함됩니다.&lt;/div&gt;&lt;br&gt;&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ enableSpeculativeExecution이(가) &amp;ldquo;enable&amp;rdquo; 이면 활성화&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;randomStatus&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/state_machine/game_engine/#ezrandomstatus"&gt;EzRandomStatus&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;{enableSpeculativeExecution} == &amp;ldquo;enable&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;난수 상태&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 실행 인스턴스의 난수 생성 상태입니다. 투기적 실행 시 클라이언트와 서버에서 결정론적인 난수 동작을 보장하기 위해 사용됩니다. enableSpeculativeExecution이 활성화된 경우에만 존재합니다.&lt;/div&gt;&lt;br&gt;&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;※ enableSpeculativeExecution이(가) &amp;ldquo;enable&amp;rdquo; 이면 활성화&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;stacks&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/state_machine/game_engine/#ezstackentry"&gt;List&amp;lt;EzStackEntry&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1024 items&lt;/td&gt;
 &lt;td&gt;스택&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;서브 스테이트 머신 호출의 콜 스택입니다. 스테이트 머신이 서브 스테이트 머신을 호출하면 호출한 쪽의 스테이트 머신 이름과 반환 태스크가 푸시됩니다. 서브 스테이트 머신이 완료되면 엔트리가 팝되고 반환 태스크에서 실행이 재개됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;variables&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/state_machine/game_engine/#ezvariable"&gt;List&amp;lt;EzVariable&amp;gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;[]&lt;/td&gt;
 &lt;td&gt;0 ~ 1000 items&lt;/td&gt;
 &lt;td&gt;스테이트 머신별 상태 변수&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;콜 계층 내 각 스테이트 머신의 현재 변수 값입니다. 각 엔트리는 스테이트 머신 이름과, int, float, string, bool, array, map 타입을 지원하는 JSON 직렬화된 값을 보유합니다. 변수는 동일한 실행 인스턴스 내 상태 전이를 거쳐 유지됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;status&lt;/td&gt;
 &lt;td&gt;문자열 열거형&lt;br&gt;enum {&lt;br&gt;  &amp;ldquo;Running&amp;rdquo;,&lt;br&gt;  &amp;ldquo;Wait&amp;rdquo;,&lt;br&gt;  &amp;ldquo;Pass&amp;rdquo;,&lt;br&gt;  &amp;ldquo;Error&amp;rdquo;&lt;br&gt;}&lt;br&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Running&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;스테이터스&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 스테이트 머신 인스턴스의 현재 실행 상태입니다. &amp;ldquo;Running&amp;quot;은 머신이 전이를 처리 중임을 의미합니다. &amp;ldquo;Wait&amp;quot;는 머신이 외부 이벤트(emit)를 대기 중임을 의미합니다. &amp;ldquo;Pass&amp;quot;는 정상적으로 완료되었음을 의미합니다. &amp;ldquo;Error&amp;quot;는 에러로 종료되었음을 의미합니다.&lt;/div&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;정의&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Running&lt;/td&gt;&lt;td&gt;실행 중&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Wait&lt;/td&gt;&lt;td&gt;대기 중&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pass&lt;/td&gt;&lt;td&gt;정상 종료&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Error&lt;/td&gt;&lt;td&gt;이상 종료&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;lastError&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 1024자&lt;/td&gt;
 &lt;td&gt;마지막 에러&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;마지막으로 발생한 에러의 메시지입니다. 스테이터스가 &amp;ldquo;Error&amp;quot;로 전이되었을 때 설정됩니다. 스테이트 머신이 이상 종료된 원인의 상세 내용을 포함합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;transitionCount&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;0 ~ 2147483645&lt;/td&gt;
 &lt;td&gt;전이 횟수&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 실행 인스턴스에서 수행된 상태 전이의 총 횟수입니다. 전이할 때마다 증가합니다. 이 값이 1000을 초과하면 무한 루프를 방지하기 위해 스테이트 머신은 에러로 종료됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#emit" data-bs-toggle="tooltip" data-bs-placement="top" title="이벤트를 전송하여 상태 전이를 트리거한다"&gt;emit - 이벤트를 전송하여 상태 전이를 트리거한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#exit" data-bs-toggle="tooltip" data-bs-placement="top" title="완료된 스테이트 머신을 정리한다"&gt;exit - 완료된 스테이트 머신을 정리한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#getstatus" data-bs-toggle="tooltip" data-bs-placement="top" title="특정 스테이트 머신 인스턴스의 현재 상태를 취득한다"&gt;getStatus - 특정 스테이트 머신 인스턴스의 현재 상태를 취득한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#liststatuses" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어의 스테이트 머신 인스턴스 목록을 취득한다"&gt;listStatuses - 플레이어의 스테이트 머신 인스턴스 목록을 취득한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#report" data-bs-toggle="tooltip" data-bs-placement="top" title="클라이언트 측 스테이트 머신 실행 결과를 서버로 전송하여 검증받는다"&gt;report - 클라이언트 측 스테이트 머신 실행 결과를 서버로 전송하여 검증받는다&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezstackentry"&gt;EzStackEntry&lt;a class="td-heading-self-link" href="#ezstackentry" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;스택 엔트리&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2-Version SDK for Game Engine API 레퍼런스</title><link>/ko/api_reference/version/game_engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/api_reference/version/game_engine/</guid><description>&lt;h2 id="모델"&gt;모델&lt;a class="td-heading-self-link" href="#%eb%aa%a8%eb%8d%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="ezacceptversion"&gt;EzAcceptVersion&lt;a class="td-heading-self-link" href="#ezacceptversion" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;승인한 버전&lt;br&gt;&lt;/p&gt;
&lt;p&gt;앱 버전이나 에셋 버전처럼 데이터에 연결된 버전이 아니라&lt;br&gt;
동의한 이용약관의 버전처럼 사용자별로 버전 관리가 필요한 엔티티에서 사용합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;타입&lt;/th&gt;
 &lt;th&gt;활성화 조건&lt;/th&gt;
 &lt;th&gt;필수&lt;/th&gt;
 &lt;th&gt;기본값&lt;/th&gt;
 &lt;th&gt;값 제한&lt;/th&gt;
 &lt;th&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;versionName&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;버전 이름&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;이 승인 레코드가 연결되어 있는 버전 모델의 이름입니다. 사용자의 승인을 특정 버전 모델 정의에 연결합니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;userId&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;~ 128자&lt;/td&gt;
 &lt;td&gt;사용자ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;version&lt;/td&gt;
 &lt;td&gt;&lt;a href="/ko/api_reference/version/game_engine/#ezversion"&gt;EzVersion&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;div style="text-align: center;"&gt;✓&lt;/div&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;버전&lt;div style="font-size:90%;margin-top:0.5rem;margin-left:0.5rem;" data-nosearch&gt;사용자가 승인 또는 거부한 버전 번호입니다. &amp;ldquo;active&amp;rdquo; 스코프의 버전 모델에서 사용되는 경우, 버전 체크 시 모델의 현재 버전과 비교됩니다.&lt;/div&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;nosearch&gt;&lt;div class="related-links pt-3 d-flex flex-wrap gap-2"&gt;
 
 &lt;span class="text-muted"&gt;관련 메서드:&lt;/span&gt;
 
 




 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#accept" data-bs-toggle="tooltip" data-bs-placement="top" title="버전을 승인한다(이용약관에 동의한다)"&gt;accept - 버전을 승인한다(이용약관에 동의한다)&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#delete" data-bs-toggle="tooltip" data-bs-placement="top" title="버전 승인 기록을 삭제한다"&gt;delete - 버전 승인 기록을 삭제한다&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#list" data-bs-toggle="tooltip" data-bs-placement="top" title="플레이어가 승인 또는 거부한 버전 목록 조회"&gt;list - 플레이어가 승인 또는 거부한 버전 목록 조회&lt;/a&gt;
 
&lt;/div&gt;





 


&lt;div class="d-flex flex-wrap align-items-center gap-2" data-nosearch&gt;
 
 &lt;a class="badge bg-primary-subtle text-decoration-none" href="#reject" data-bs-toggle="tooltip" data-bs-placement="top" title="버전을 거부한다(선택적 약관을 거절한다)"&gt;reject - 버전을 거부한다(선택적 약관을 거절한다)&lt;/a&gt;
 
&lt;/div&gt;


&lt;/div&gt;&lt;/nosearch&gt;

&lt;hr&gt;
&lt;h3 id="ezversionmodel"&gt;EzVersionModel&lt;a class="td-heading-self-link" href="#ezversionmodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;버전 모델&lt;br&gt;&lt;/p&gt;</description></item><item><title>GS2 UIKit for Unity 튜토리얼</title><link>/ko/get_start/uikit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/uikit/</guid><description>&lt;p&gt;중간까지는 일반적인 튜토리얼과 동일한 절차입니다.&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_gs2/"&gt;GS2 설정&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_sdk/"&gt;SDK 설정&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_credential/"&gt;크리덴셜(API 키) 생성&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_account/"&gt;로그인 처리에 필요한 리소스 준비&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="클라이언트-초기화"&gt;클라이언트 초기화&lt;a class="td-heading-self-link" href="#%ed%81%b4%eb%9d%bc%ec%9d%b4%ec%96%b8%ed%8a%b8-%ec%b4%88%ea%b8%b0%ed%99%94" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="환경-정보-생성"&gt;환경 정보 생성&lt;a class="td-heading-self-link" href="#%ed%99%98%ea%b2%bd-%ec%a0%95%eb%b3%b4-%ec%83%9d%ec%84%b1" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;먼저 환경 정보를 정의하는 ScriptableObject를 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="/ko/get_start/uikit/img_6.png" alt="img_6.png"&gt;&lt;/p&gt;
&lt;p&gt;Project에서 컨텍스트 메뉴를 열어 &lt;code&gt;Create &amp;gt; Game Server Services &amp;gt; Core &amp;gt; Environment&lt;/code&gt;를 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="/ko/get_start/uikit/img.png" alt="img.png"&gt;&lt;/p&gt;
&lt;p&gt;생성한 ScriptableObject에 &lt;a href="/ko/get_start/tutorial/setup_credential/"&gt;크리덴셜(API 키) 생성&lt;/a&gt;에서 생성한 clientId / clientSecret을 설정합니다.
Name에는 환경 이름을 입력합니다.&lt;/p&gt;
&lt;h3 id="클라이언트-홀더-생성"&gt;클라이언트 홀더 생성&lt;a class="td-heading-self-link" href="#%ed%81%b4%eb%9d%bc%ec%9d%b4%ec%96%b8%ed%8a%b8-%ed%99%80%eb%8d%94-%ec%83%9d%ec%84%b1" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;다음으로 GS2 클라이언트를 보유하는 GameObject를 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="/ko/get_start/uikit/img_5.png" alt="img_5.png"&gt;&lt;/p&gt;</description></item><item><title>SDK 설정</title><link>/ko/get_start/tutorial/setup_sdk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/tutorial/setup_sdk/</guid><description>&lt;p&gt;이 섹션에서는 Game Engine 용 SDK인 GS2 SDK for Unity, GS2 SDK for Unreal Engine 5, GS2 SDK for Godot 의 설치 절차에 대해 자세히 설명합니다.&lt;/p&gt;
&lt;h2 id="gs2-sdk-for-unity-설치-절차"&gt;GS2 SDK for Unity 설치 절차&lt;a class="td-heading-self-link" href="#gs2-sdk-for-unity-%ec%84%a4%ec%b9%98-%ec%a0%88%ec%b0%a8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="../../../../ja/get_start/gs2-unity-installer_2024.4.1.unitypackage"&gt;GS2 SDK for Unity Installer Version 2024.4.1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;위 링크에서 UnityPackage 형식의 설치 프로그램을 다운로드합니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;새로 Unity 프로젝트를 생성하거나 기존 Unity 프로젝트를 준비하여 Unity Editor 에서 엽니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;메뉴의 『Assets &amp;gt; Import Package &amp;gt; Custum Packages&amp;hellip;』 에서 gs2-unity-installer_2024.4.1.unitypackage 파일을 임포트합니다.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>UI Kit을 사용하여 텍스트 채팅 구현</title><link>/ko/get_start/uikit/chat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/uikit/chat/</guid><description>&lt;h2 id="ui-구성"&gt;UI 구성&lt;a class="td-heading-self-link" href="#ui-%ea%b5%ac%ec%84%b1" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="/ko/get_start/uikit/chat/img.png" alt="img.png"&gt;&lt;/p&gt;
&lt;p&gt;먼저 씬의 전체 모습을 보여드리겠습니다.&lt;/p&gt;
&lt;p&gt;화면 상단에 메시지 리스트, 하단에 텍스트 입력 필드와 전송 버튼을 배치했습니다.&lt;/p&gt;
&lt;h2 id="컨텍스트"&gt;컨텍스트&lt;a class="td-heading-self-link" href="#%ec%bb%a8%ed%85%8d%ec%8a%a4%ed%8a%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="/ko/get_start/uikit/chat/img_1.png" alt="img_1.png"&gt;&lt;/p&gt;
&lt;p&gt;Context 배치에 대해 설명합니다.&lt;/p&gt;
&lt;p&gt;A는 GS2-Chat의 룸 컨텍스트입니다.&lt;/p&gt;
&lt;p&gt;B는 GS2-Chat의 메시지 리스트 컨텍스트입니다.&lt;/p&gt;
&lt;p&gt;C는 GS2-Chat의 메시지 컨텍스트입니다.&lt;/p&gt;
&lt;h2 id="구현-해설"&gt;구현 해설&lt;a class="td-heading-self-link" href="#%ea%b5%ac%ed%98%84-%ed%95%b4%ec%84%a4" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="메시지-목록-조회"&gt;메시지 목록 조회&lt;a class="td-heading-self-link" href="#%eb%a9%94%ec%8b%9c%ec%a7%80-%eb%aa%a9%eb%a1%9d-%ec%a1%b0%ed%9a%8c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src="/ko/get_start/uikit/chat/img_11.png" alt="img_11.png"&gt; &lt;img src="/ko/get_start/uikit/chat/img_12.png" alt="img_12.png"&gt;&lt;/p&gt;
&lt;p&gt;룸 컨텍스트에는 사전에 GS2-Chat에서 생성해 둔 룸의 정보를 설정합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src="/ko/get_start/uikit/chat/img_2.png" alt="img_2.png"&gt; &lt;img src="/ko/get_start/uikit/chat/img_3.png" alt="img_3.png"&gt;&lt;/p&gt;
&lt;p&gt;메시지 리스트 컨텍스트에는 2개의 컴포넌트를 붙여 두었습니다.&lt;/p&gt;
&lt;p&gt;Gs2ChatMessageListFetcher는 룸 컨텍스트에서 지정된 룸 내 메시지 목록을 조회합니다.&lt;/p&gt;</description></item><item><title>GS2-SDK for UE5 Blueprint 튜토리얼</title><link>/ko/get_start/blueprint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/blueprint/</guid><description>&lt;p&gt;중간까지는 일반적인 튜토리얼과 동일한 순서로 진행됩니다.&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_gs2/"&gt;GS2 설정&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_sdk/"&gt;SDK 설정&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_credential/"&gt;크리덴셜(API 키) 생성&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/ko/get_start/tutorial/setup_account/"&gt;로그인 처리에 필요한 리소스 준비&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="클라이언트-초기화"&gt;클라이언트 초기화&lt;a class="td-heading-self-link" href="#%ed%81%b4%eb%9d%bc%ec%9d%b4%ec%96%b8%ed%8a%b8-%ec%b4%88%ea%b8%b0%ed%99%94" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="/ko/get_start/blueprint/img.png" alt="img.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GS2::Core::Action::Initialize&lt;/code&gt; 노드를 생성하고, clientId / clientSecret / 접속할 리전을 설정합니다.
clientId / clientSecret 에는 &lt;a href="/ko/get_start/tutorial/setup_credential/"&gt;크리덴셜(API 키) 생성&lt;/a&gt; 에서 생성한 값을 설정합니다.&lt;/p&gt;
&lt;p&gt;초기화에 성공한 경우 OnSuccess 가 호출되고, 실패한 경우 OnError 가 호출됩니다.&lt;/p&gt;
&lt;p&gt;성공 시에는 Client 에 GS2 클라이언트 객체가, 실패 시에는 Error 에 실패 사유의 에러 객체가 반환됩니다.&lt;/p&gt;
&lt;h2 id="gs2-account-클라이언트-생성"&gt;GS2-Account 클라이언트 생성&lt;a class="td-heading-self-link" href="#gs2-account-%ed%81%b4%eb%9d%bc%ec%9d%b4%ec%96%b8%ed%8a%b8-%ec%83%9d%ec%84%b1" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="/ko/get_start/blueprint/img_1.png" alt="img_1.png"&gt;&lt;/p&gt;</description></item><item><title>UI Kit을 사용하여 아이템 인벤토리 구현</title><link>/ko/get_start/uikit/inventory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/uikit/inventory/</guid><description>&lt;h2 id="ui-구성"&gt;UI 구성&lt;a class="td-heading-self-link" href="#ui-%ea%b5%ac%ec%84%b1" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="/ko/get_start/uikit/inventory/img_1.png" alt="img_1.png"&gt;&lt;/p&gt;
&lt;p&gt;먼저 씬의 전체 모습을 보여드리겠습니다.&lt;/p&gt;
&lt;p&gt;화면 상단에 인벤토리의 용량 사용 현황을 표시하고, 중앙에 보유 아이템 목록, 하단에 아이템을 입수하는 버튼을 배치했습니다.&lt;/p&gt;
&lt;h2 id="컨텍스트"&gt;컨텍스트&lt;a class="td-heading-self-link" href="#%ec%bb%a8%ed%85%8d%ec%8a%a4%ed%8a%b8" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="/ko/get_start/uikit/inventory/img_2.png" alt="img_2.png"&gt;&lt;/p&gt;
&lt;p&gt;Context 배치에 대해 설명합니다.&lt;/p&gt;
&lt;p&gt;A는 GS2-Inventory의 인벤토리 컨텍스트입니다.&lt;/p&gt;
&lt;p&gt;B는 GS2-Inventory의 아이템 리스트 컨텍스트입니다.&lt;/p&gt;
&lt;p&gt;C는 GS2-Inventory의 아이템 컨텍스트입니다.&lt;/p&gt;
&lt;p&gt;D는 GS2-Exchange에서 무상으로 Potion을 입수하는 교환 레이트 컨텍스트입니다.&lt;/p&gt;
&lt;p&gt;E는 GS2-Exchange에서 무상으로 Ether를 입수하는 교환 레이트 컨텍스트입니다.&lt;/p&gt;
&lt;h2 id="구현-해설"&gt;구현 해설&lt;a class="td-heading-self-link" href="#%ea%b5%ac%ed%98%84-%ed%95%b4%ec%84%a4" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="인벤토리의-소비-용량-표시"&gt;인벤토리의 소비 용량 표시&lt;a class="td-heading-self-link" href="#%ec%9d%b8%eb%b2%a4%ed%86%a0%eb%a6%ac%ec%9d%98-%ec%86%8c%eb%b9%84-%ec%9a%a9%eb%9f%89-%ed%91%9c%ec%8b%9c" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src="/ko/get_start/uikit/inventory/img_3.png" alt="img_3.png"&gt; &lt;img src="/ko/get_start/uikit/inventory/img_4.png" alt="img_4.png"&gt;&lt;/p&gt;</description></item><item><title>구현</title><link>/ko/get_start/tutorial/coding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/ko/get_start/tutorial/coding/</guid><description>&lt;p&gt;여기서는 GS2 SDK를 사용하여 계정 생성과 로그인을 수행하는 최소한의 구현 방법을 설명합니다.&lt;/p&gt;
&lt;p&gt;각 플랫폼별 전체 코드는 &lt;a href="/ko/get_start/tutorial/coding/all/"&gt;샘플 코드 전문&lt;/a&gt;을 확인해 주세요.&lt;/p&gt;
&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Unity에서의 구현에 대해&lt;/div&gt;
&lt;p&gt;Unity SDK에서는 비동기 처리에 Coroutine을 사용합니다. 아래 코드 예시는 Coroutine 내부(&lt;code&gt;IEnumerator&lt;/code&gt;를 반환하는 메서드 내부)에서 실행하는 것을 상정하고 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id="gs2-sdk-초기화"&gt;GS2 SDK 초기화&lt;a class="td-heading-self-link" href="#gs2-sdk-%ec%b4%88%ea%b8%b0%ed%99%94" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;




&lt;ul class="nav nav-tabs" id="tabs-2" role="tablist"&gt;
 &lt;li class="nav-item"&gt;
 &lt;button class="nav-link disabled"
 id="tabs-02-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-00" role="tab"
 aria-controls="tabs-02-00" aria-selected="false"&gt;
 Game Engine:
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link active"
 id="tabs-02-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-01" role="tab"
 aria-controls="tabs-02-01" aria-selected="true"&gt;
 Unity
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-02-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-02" role="tab"
 aria-controls="tabs-02-02" aria-selected="false"&gt;
 Unreal Engine
 &lt;/button&gt;
 &lt;/li&gt;&lt;li class="nav-item"&gt;
 &lt;button class="nav-link"
 id="tabs-02-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-03" role="tab"
 aria-controls="tabs-02-03" aria-selected="false"&gt;
 Godot
 &lt;/button&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-2-content"&gt;
 &lt;div class="tab-pane fade"
 id="tabs-02-00" role="tabpanel" aria-labelled-by="tabs-02-00-tab" tabindex="2"&gt;
 &lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade show active"
 id="tabs-02-01" role="tabpanel" aria-labelled-by="tabs-02-01-tab" tabindex="2"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Setup variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;clientId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;clientSecret&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientSecret&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;accountNamespaceName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;game-0001&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Setup general setting&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2Domain&lt;/span&gt; &lt;span class="n"&gt;gs2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateFuture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;BasicGs2Credential&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;clientId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;clientSecret&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Region&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApNortheast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gs2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade"
 id="tabs-02-02" role="tabpanel" aria-labelled-by="tabs-02-02-tab" tabindex="2"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;// Setup variables
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;ClientId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;ClientSecret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;YourClientSecret&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;AccountNamespaceName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;game-0001&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Create GS2 client
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;UE5&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FGs2Client&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MakeShared&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FBasicGs2Credential&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ClientId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ClientSecret&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Core&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;ApNorthEast1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;StartSynchronousTask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;IsError&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UE_LOG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GameLog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ToCStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="k"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;Gs2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;InitializeFuture&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;GetTask&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="tab-pane fade"
 id="tabs-02-03" role="tabpanel" aria-labelled-by="tabs-02-03-tab" tabindex="2"&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript" data-lang="gdscript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Setup variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;YourClientId&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;YourClientSecret&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;account_namespace_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;game-0001&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;account_encryption_key_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;grn:gs2:&lt;/span&gt;&lt;span class="si"&gt;{region}:{ownerId}&lt;/span&gt;&lt;span class="s2"&gt;:key:account-encryption-key-namespace:key:account-encryption-key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Initialize GS2 SDK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;credential&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2BasicCredential&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2Connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Gs2Region&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AP_NORTHEAST_1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;ez&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gs2EzDomain&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="setup-variables"&gt;Setup variables&lt;a class="td-heading-self-link" href="#setup-variables" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;먼저 4개의 변수를 정의하고 있습니다.&lt;/p&gt;</description></item></channel></rss>