Corona용 Lua 빠른 시작

이 빠른 시작은 Corona 엔진에서 첫 번째 PlayFab API 호출을 만드는 것을 도와줍니다.

PlayFab API를 호출하려면 먼저 PlayFab 개발자 계정이 있어야 합니다.

Corona 프로젝트 설정

OS: 이 빠른 시작은 Windows 10용으로 작성되었습니다. 하지만 Mac에서도 잘 작동합니다.

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

  2. Corona를 실행하고 새 프로젝트를 만듭니다. 다음 링크에는 첫 번째 단계를 수행하지 않은 경우 도움이 될 수 있는 정보가 있습니다. https://docs.coronalabs.com/guide/start/installWin/index.html.

  3. 설치하고, 로그인하여 새 프로젝트를 만들었으면 아래의 예제와 유사한 몇 가지 창이 표시됩니다.

    PlayFab SDK 설치

  4. Corona 마켓플레이스에서 PlayFab 클라이언트 플러그인을 활성화합니다.

    https://marketplace.coronalabs.com/plugin/playfab-client

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

첫 번째 API 호출 설정

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

선호하는 텍스트 편집기에서 다음 라인을 build.settings추가합니다.

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

-- Other existing lines...
}

참고 항목

이 예에서 loginRequest 개체의 올바른 형식을 조회하려면 LoginWithCustomID에 대한 API 참조를 확인하세요.

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

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는 자동으로 즉시 프로젝트 소스를 실행합니다. 따라서 이 두 파일을 업데이트하고 저장하는 즉시 다음과 같은 화면이 표시됩니다.

Corona 플러그인 다운로드 - 완료 및 실행

이 시점에서 다른 API 호출을 만들고 게임을 빌드할 수 있습니다. 사용 가능한 모든 클라이언트 API 호출 목록을 보려면 PlayFab API 참조 설명서를 참조하세요.

즐거운 코딩이 되시길 바랍니다.

코드 분해

선택 사항인 이 마지막 섹션은 위 예제의 각 부분을 한 줄씩 설명합니다.

  • build.settings
    • plugins = {
      • Corona 플러그인 시스템을 호출하여 Corona 마켓플레이스 플러그인을 다운로드하고 프로젝트에 설치하도록 지시합니다.
    • ["plugin.playfab.client"] = { publisherId = "com.playfab" }
      • 특별히 이는 PlayFab 클라이언트 플러그인을 다운로드하도록 지시합니다.
  • main.lua
    • require() lines:
      • PlayFab API 호출을 만드는 데 필요한 최소 가져오기입니다.
    • PlayFabClientApi.settings.titleId = "xxxx"
      • 모든 PlayFab 개발자는 게임 관리자에서 타이들을 만듭니다. 게임을 게시할 때 게임에 해당 titleId를 코딩해야 합니다. 이렇게 하면 클라이언트가 PlayFab 내에서 올바른 데이터에 액세스하는 방법을 알 수 있습니다. 대부분의 사용자는 이를 PlayFab을 작동하게 하는 필수 단계로 보면 됩니다.
    • local loginRequest = { CustomId = "GettingStartedGuide", CreateAccount = true }
      • 대부분의 PlayFab API 메서드에는 입력 매개 변수가 필요하고 이러한 입력 매개 변수는 요청 개체로 압축됩니다.
      • 모든 API 메서드는 선택적 매개 변수와 필수 매개 변수가 혼합된 고유 요청 개체가 필요합니다.
        • LoginWithCustomIDRequest의 경우, 플레이어와 CreateAccount을(를) 고유하게 식별하는 CustomId라는 필수 매개 변수가 있어 이 호출로 새로운 계정을 생성하도록 합니다.
    • PlayFabClientApi.LoginWithCustomID(loginRequest, {OnLoginSuccess-function}, {OnLoginError-function})
      • 이는 LoginWithCustomID에 대한 비동기 요청을 시작하며, 성공하면 첫 번째 (OnLoginSuccess) 콜백을 호출하고 실패하면 두 번째 (OnLoginError) 함수를 호출합니다.
    • 대부분의 개발자들은 보다 적절한 로그인 메서드를 사용하고자 합니다.
      • 모든 로그인 메서드 및 입력 매개 변수 목록 목록은 PlayFab 로그인 설명서를 참조하세요. 일반적인 옵션은 다음과 같습니다.
      • OnLoginSuccess단일 매개 변수(결과)를 허용하는 모든 함수입니다.
        • 결과 개체는 호출된 API에 따라 요청된 정보를 포함합니다.
        • LoginResult는 플레이어에 대한 몇 가지 기본 정보를 포함하지만 대부분의 사용자에게 로그인은 다른 API를 호출하기 전에 수행해야 할 필수 단계일 뿐입니다.
      • OnLoginError단일 매개 변수(오류)를 허용하는 모든 함수입니다.
        • API 호출은 여러 가지 이유로 실패할 수 있으며, 항상 실패에 대해 처리하려고 시도해야 합니다.
        • API 호출이 실패하는 이유(가능성이 높은 순서대로 나열):
          • PlayFabSettings.TitleId이(가) 설정되지 않았습니다. 타이틀에 titleId를 설정하는 것을 잊은 경우 아무 작업도 수행되지 않습니다.
          • 요청 매개 변수. 특정 API 호출에 대해 정확하거나 필요한 정보를 제공하지 않은 경우 호출에 실패합니다. 자세한 내용은 error.errorMessage, error.errorDetails 또는 error.GenerateErrorReport()를 참조하세요.
          • 장치 연결 문제. 휴대폰은 지속적으로 연결이 끊어졌다가 다시 연결되므로 언제든지 모든 API 호출이 실패한 후 바로 다시 작동할 수 있습니다. 터널로 들어가면 연결이 완전히 끊길 수 있습니다.
          • PlayFab 서버 문제. 모든 소프트웨어와 마찬가지로 문제가 있을 수 있습니다. 업데이트에 대해서는 릴리스 정보를 참조하세요.
          • 인터넷은 100% 신뢰할 수 없습니다. 때때로 메시지가 손상되었거나 PlayFab 서버에 연결되지 않을 수 있습니다.
        • 문제를 디버깅하는 데 문제가 있는 경우 오류 정보 내의 정보로는 충분하지 않습니다. 포럼에서 문의해 주시기 바랍니다.