> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Corona용 Lua 빠른 시작

> Windows 또는 Mac에서 Corona 프로젝트를 설정하고 PlayFab Corona SDK 클라이언트 라이브러리를 사용하여 Lua로 첫 번째 PlayFab API 호출을 수행합니다.

이 빠른 시작 가이드는 Corona 엔진에서 첫 번째 PlayFab API 호출을 수행하는 데 도움을 줍니다.

PlayFab API를 호출하려면 먼저 [PlayFab 개발자 계정](https://developer.playfab.com)이 있어야 합니다.

## Corona 프로젝트 설정

OS: 이 빠른 시작 가이드는 Windows용으로 작성되었지만 Mac에서도 잘 작동합니다.

1. Corona를 다운로드하여 설치합니다: [https://coronalabs.com/](https://coronalabs.com/).

2. Corona를 실행하고 새 프로젝트를 만듭니다. 처음 사용하는 경우 다음 링크에서 첫 단계에 대한 도움을 얻을 수 있습니다: [https://docs.coronalabs.com/guide/start/installWin/index.html](https://docs.coronalabs.com/guide/start/installWin/index.html)

3. 설치하고 로그인하여 새 프로젝트를 만들면 아래 예시와 비슷한 여러 창이 표시됩니다.

   <img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/new-project.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=bdbfa4a84974159ffd7b4b0641f540cb" alt="Install PlayFab SDK" width="1447" height="926" data-path="images/playfab/sdks/lua/new-project.png" />

4. Corona Marketplace에서 PlayFab Client 플러그인을 활성화합니다:

   [https://marketplace.coronalabs.com/plugin/playfab-client](https://marketplace.coronalabs.com/plugin/playfab-client)

5. PlayFab 설치가 완료되었습니다!

## 첫 번째 API 호출 설정

이 가이드에서는 첫 번째 PlayFab API 호출을 수행하는 데 필요한 최소 단계를 제공합니다. 확인은 Corona Engine 출력 로그에서 확인할 수 있습니다.

원하는 텍스트 편집기에서 `build.settings`에 다음 줄을 *추가*합니다.

```lua theme={null}
settings =
{
    -- ADD THESE THREE LINES at the top, leave everything else as-is
    plugins = {
        ["plugin.playfab.client"] = { publisherId = "com.playfab" }
    },

-- Other existing lines...
}
```

<Note>
  이 예제에서 loginRequest 객체의 올바른 형식을 확인하려면 [LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid)의 API 참조를 확인하세요.
</Note>

원하는 텍스트 편집기에서 **main.lua** 파일의 내용을 아래에 표시된 내용으로 *교체*합니다.

```lua theme={null}
local pfClient = require("plugin.playfab.client")
local PlayFabClientApi = pfClient.PlayFabClientApi
PlayFabClientApi.settings.titleId = "144"

local loginRequest = {
    -- See the API reference for LoginWithCustomID.
    CustomId = "GettingStartedGuide",
    CreateAccount = true
}
PlayFabClientApi.LoginWithCustomID(loginRequest,
    function(result) print("Congratulations, you made your first successful API call!") end,
    function(error) print("Something went wrong with your first API call.\nHere's some debug information:\n" .. error.errorMessage) end
)
```

## 완료 및 실행

Corona는 저장하는 즉시 프로젝트 소스를 자동으로 실행합니다. 따라서 이 두 파일을 업데이트하고 저장하면 다음이 표시됩니다:

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/finish-and-execute.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=59fd602abd813dbde3966cc4373877bf" alt="Download Corona Plugin - Finish and Execute" width="1182" height="974" data-path="images/playfab/sdks/lua/finish-and-execute.png" />

이 시점에서 다른 API 호출을 시작하고 게임을 빌드할 수 있습니다. 사용 가능한 모든 클라이언트 API 호출 목록은 [PlayFab API 참조](/services/playfab/api-references) 문서를 확인하세요.

즐겁게 코딩하세요!

## 코드 분석

이 선택적 마지막 섹션에서는 위 예제의 각 부분을 한 줄씩 설명합니다.

* build.settings
  * `plugins = {`
    * Corona 플러그인 시스템을 호출하여 프로젝트에 Corona Marketplace 플러그인을 다운로드하고 설치하도록 지시합니다.
  * `["plugin.playfab.client"] = { publisherId = "com.playfab" }`
    * 구체적으로 PlayFab Client 플러그인을 다운로드하도록 지시합니다.
* main.lua
  * require() 줄:
    * PlayFab API 호출을 위해 필요한 최소 임포트입니다.
  * `PlayFabClientApi.settings.titleId = "xxxx"`
    * 모든 PlayFab 개발자는 Game Manager에서 타이틀을 만듭니다. 게임을 게시할 때 해당 titleId를 게임에 코딩해야 합니다. 이를 통해 클라이언트가 PlayFab 내의 올바른 데이터에 액세스하는 방법을 알 수 있습니다. 대부분의 사용자에게 이는 PlayFab이 작동하도록 하는 필수 단계로 간주하면 됩니다.
  * `local loginRequest = { CustomId = "GettingStartedGuide", CreateAccount = true }`
    * 대부분의 PlayFab API 메서드는 입력 매개 변수를 필요로 하며, 이러한 입력 매개 변수는 요청 객체에 패킹됩니다.
    * 모든 API 메서드는 선택 및 필수 매개 변수의 조합이 포함된 고유한 요청 객체가 필요합니다.
      * `LoginWithCustomIDRequest`에는 플레이어를 고유하게 식별하는 필수 매개 변수인 `CustomId`와 이 호출로 새 계정을 만들 수 있게 해주는 `CreateAccount`가 있습니다.
  * `PlayFabClientApi.LoginWithCustomID(loginRequest, {OnLoginSuccess-function}, {OnLoginError-function})`
    * `LoginWithCustomID`에 대한 비동기 요청을 시작하며, 성공 시 첫 번째 콜백(`OnLoginSuccess`)을 호출하고 실패 시 두 번째 함수(`OnLoginError`)를 호출합니다.
  * 로그인의 경우 대부분의 개발자는 보다 적합한 로그인 방법을 사용하고 싶어할 것입니다.
    * 모든 로그인 방법과 입력 매개 변수 목록은 [PlayFab 로그인 설명서](xref:titleid.playfabapi.com.client.authentication)를 확인하세요. 일반적인 선택지는 다음과 같습니다:
      * [LoginWithAndroidDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid)
      * [LoginWithIOSDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithiosdeviceid)
      * [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress)
    * `OnLoginSuccess`는 단일 매개 변수(result)를 받는 임의의 함수입니다.
      * result 객체는 호출된 API에 따라 요청된 정보를 포함합니다.
      * `LoginResult`에는 플레이어에 대한 기본 정보가 포함되어 있지만, 대부분의 사용자에게 로그인은 다른 API를 호출하기 전의 필수 단계에 불과합니다.
    * `OnLoginError`는 단일 매개 변수(error)를 받는 임의의 함수입니다.
      * API 호출은 여러 가지 이유로 실패할 수 있으며 항상 실패 처리를 시도해야 합니다.
      * API 호출이 실패하는 이유(가능성이 높은 순):
        * `PlayFabSettings.TitleId`가 설정되지 않음. 타이틀에 대해 `titleId`를 설정하는 것을 잊으면 아무것도 작동하지 않습니다.
        * 요청 매개 변수. 특정 API 호출에 대해 올바르거나 필수적인 정보를 제공하지 않으면 실패합니다. 자세한 내용은 `error.errorMessage`, `error.errorDetails` 또는 `error.GenerateErrorReport()`를 참조하세요.
        * 장치 연결 문제. 휴대전화는 지속적으로 연결이 끊어졌다가 다시 연결되므로 언제든지 API 호출이 무작위로 실패한 후 바로 다시 작동할 수 있습니다. 터널에 들어가면 완전히 연결이 끊길 수 있습니다.
        * PlayFab 서버 문제. 모든 소프트웨어와 마찬가지로 문제가 발생할 수 있습니다. 업데이트는 [릴리스 노트](/services/playfab/release-notes)를 확인하세요.
        * 인터넷이 100% 신뢰할 수 있는 것은 아닙니다. 때로는 메시지가 손상되거나 PlayFab 서버에 도달하지 못할 수 있습니다.
      * 문제를 디버깅하는 데 어려움이 있고 오류 정보 내의 정보가 충분하지 않은 경우 [포럼](https://community.playfab.com/index.html)을 방문하세요.


## Related topics

- [Defold용 Lua 빠른 시작](/ko/services/playfab/sdks/lua/quickstart-defold.md)
- [Linux용 C++ 빠른 시작](/ko/services/playfab/sdks/playfab-cpp/quickstart-linux.md)
- [Windows용 C++ 빠른 시작](/ko/services/playfab/sdks/playfab-cpp/quickstart-windows.md)
- [GDK용 C/C++ 빠른 시작](/ko/services/playfab/sdks/playfab-cpp/quickstart-gdk.md)
- [Unity 빠른 시작](/ko/services/playfab/sdks/unity3d/quickstart.md)
