Skip to main content
이 빠른 시작은 Cocos2d-x 엔진에서 첫 번째 PlayFab API 호출을 수행하는 데 도움을 줍니다. PlayFab API를 호출하려면 먼저 PlayFab 개발자 계정이 있어야 합니다.

Cocos2d-x 프로젝트 설정

OS: 이 가이드는 Visual Studio 2015를 사용하는 Windows 10용으로 작성되었습니다. Cocos는 대부분의 최신 OS와 환경에서 작동합니다. 설치 방법은 유사하지만 조합에 따라 다릅니다. 다른 플랫폼용으로 빌드하는 경우 필요한 파일은 동일하지만 프로젝트 설정은 직접 수행해야 합니다. Visual Studio 2013은 동일한 단계이지만 여기에 제공된 스크린샷은 여러분이 보는 것과 약간 다르게 보일 수 있습니다.
  1. Cocos2d-x 다운로드 및 설치
  2. Cocos2d-x를 구성한 후 Cocos CLI를 사용하여 프로젝트를 만듭니다:
    • Cocos 프로젝트를 저장할 위치로 이동합니다.
    • 상위 폴더에서 명령 창을 엽니다(Cocos CLI가 실제 프로젝트 디렉터리를 생성합니다).
      • Shift 키를 누른 채로 탐색기 창의 빈 흰 공간을 마우스 오른쪽 버튼으로 클릭합니다.
    • 새 콘솔 창에서 이 명령을 입력합니다:
      • cocos new CocosGettingStarted -l cpp
        • 대상 하위 디렉터리(CocosGettingStarted)가 아직 존재하지 않는지 확인하세요. 폴더가 이미 존재하면 이 명령은 실패합니다.
        • “‘cocos’는 내부 또는 외부 명령으로 인식되지 않습니다.”라는 메시지가 표시되면 cocos 설치를 올바르게 구성하지 않은 것입니다(Cocos Windows 설치 가이드로 돌아가세요).
        • 성공하면 새 폴더 CocosGettingStarted가 생성됩니다. 이 가이드에서는 해당 디렉터리 위치를 {CocosGettingStarted}로 참조합니다.
    • 성공적인 출력은 아래 제공된 예시와 유사하게 표시됩니다.
  1. PlayFab Cocos2d-xSdk를 다운로드합니다: Cocos2D-x SDK (C++). 임시 위치 {PlayFabCocos}에 저장하고 압축을 풉니다.
    • Windows 탐색기에서 다음 폴더를 엽니다: {PlayFabCocos}/PlayFabClientSDK
    • 두 번째 Windows 탐색기에서 다음 폴더를 엽니다: {CocosGettingStarted}/Classes
  2. {PlayFabCocos}/PlayFabClientSDK의 모든 파일을 {CocosGettingStarted}/Classes로 복사하여 붙여넣습니다.
  3. Visual Studio에서 {CocosGettingStarted}/proj.win32/CocosGettingStarted.sln을 로드합니다.
  4. Cocos 프로젝트에 PlayFab 파일을 추가하려고 합니다.
  5. Visual Studio의 솔루션 탐색기 패널에서 폴더로 확장합니다: Solution/CocosGettingStarted/src
  6. {CocosGettingStarted}/Classes에서 Windows 탐색기 창을 엽니다.
    • AppDelegate.h, AppDelegate.cpp, HelloWorldScene.h, HelloWorldScene.cpp를 제외하고 {CocosGettingStarted}/Classes의 모든 파일을 선택합니다.
    • 위에서 찾은 Visual Studio Solution/CocosGettingStarted/src 폴더로 탐색기에서 해당 파일들을 모두 끌어다 놓습니다. 문제가 발생하면 한 번에 하나씩 파일을 끌어다 놓을 수 있습니다. 조심해서 모두 가져오세요.
    • VS 프로젝트에서 다음 파일들을 볼 수 있어야 합니다:
PlayFab은 종속성 목록에 수동으로 추가해야 하는 여러 Cocos 라이브러리를 사용합니다.
  • CocosGettingStarted 프로젝트의 Properties 창을 엽니다(아래 표시된 대로).
  • Additional Include Directories를 다음으로 바꿉니다: $(ProjectDir)..\cocos2d\external\zlib\include;$(ProjectDir)..\cocos2d\external\curl\include\win32;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;..\Classes;..;%(AdditionalIncludeDirectories);$(_COCOS_HEADER_WIN32_BEGIN);$(_COCOS_HEADER_WIN32_END);..\cocos2d
Cocos와 함께 제공되지만 기본적으로 활성화되지 않은 라이브러리인 curl과 zlib를 추가하고 있습니다.
이제 CocosGettingStarted 프로젝트가 컴파일되고 실행되어야 하지만 아직 PlayFab API 호출을 수행하지는 않습니다. 설치 완료!

첫 번째 API 호출 설정

이 가이드는 첫 번째 PlayFab API 호출을 수행하는 데 필요한 최소한의 단계를 제공합니다. 앱에서 확인이 표시됩니다.
  1. Visual Studio에서 Solution/CocosGettingStarted/src 폴더 내의 HelloWorldScene.h를 열고 내용을 다음과 같이 바꿉니다:
    • Visual Studio의 Solution/CocosGettingStarted/src 폴더 내에서 HelloWorldScene.h를 열고 내용을 아래에 표시된 것으로 바꿉니다.
  1. 바로 옆에서 HelloWorldScene.cpp를 열고 내용을 다음과 같이 바꿉니다:
이 파일들은 새로운 Cocos 프로젝트 템플릿의 일부인 기존 HelloWorldScene을 가져와 첫 번째 PlayFab API 호출을 포함하도록 수정합니다.

완료 및 실행

  1. Cocos 프로젝트를 빌드하고 실행하세요: 드롭다운 -> Debug -> Start Debugging.
  2. 이렇게 하면 빌드하라는 메시지가 표시됩니다. Yes를 선택합니다.
  3. 다음과 같은 화면이 표시되어야 합니다: Congratulations, you made your first successful API call!
  4. 이제 다른 API 호출을 만들고 게임을 구축할 수 있습니다.
    사용 가능한 모든 클라이언트 API 호출 목록은 PlayFab API 참조 문서를 확인하세요.
즐거운 코딩 되세요!

코드 분석

이 선택적 마지막 섹션에서는 위의 소스 코드 각 부분을 자세히 설명합니다.
  • HelloWorldScene.h
    • 이는 Cocos가 생성한 기본 HelloWorldScene.h에서 아주 약간 수정한 것입니다.
    • 특히, 사용 중인 일부 Cocos GUI와 OnLoginSuccessOnLoginFail의 프로토타입을 정의합니다.
    • 나머지는 모두 표준 Cocos Engine 함수입니다.
  • HelloWorldScene.cpp
    • createScene()은 표준 Cocos Engine 함수입니다.
    • init()
      • 일반적인 Cocos GUI 관련: closeItemtestReportLabel.
      • PlayFab::PlayFabSettings::titleId = "xxxx";
        • 모든 PlayFab 개발자는 Game Manager에서 타이틀을 만듭니다. 게임을 게시할 때 해당 titleId를 게임에 코딩해야 합니다. 이를 통해 클라이언트는 PlayFab 내의 올바른 데이터에 액세스하는 방법을 알 수 있습니다. 대부분의 사용자에게는 이것을 PlayFab이 작동하도록 만드는 필수 단계로 간주하십시오.
      • PlayFab::ClientModels::LoginWithCustomIDRequest request;
        • 대부분의 PlayFab API 메서드는 입력 매개 변수를 요구하며 이러한 입력 매개 변수는 요청 객체로 패키지화됩니다.
        • 모든 API 메서드는 선택적 매개 변수와 필수 매개 변수가 혼합된 고유한 요청 객체를 요구합니다.
          • LoginWithCustomIDRequest의 경우 플레이어를 고유하게 식별하는 필수 매개 변수 CustomId와 이 호출로 새 계정을 만들 수 있게 하는 CreateAccount가 있습니다.
        • 로그인의 경우 대부분의 개발자는 더 적절한 로그인 방법을 사용하고자 할 것입니다.
          • 모든 로그인 방법 목록과 입력 매개 변수는 PlayFab Login 문서를 참조하세요. 일반적인 선택은 다음과 같습니다:
            • LoginWithAndroidDeviceID
            • LoginWithIOSDeviceID
            • LoginWithEmailAddress
      • PlayFab::PlayFabClientAPI::LoginWithCustomID(request, OnLoginSuccess, OnLoginFail, nullptr);
        • 이는 LoginWithCustomID에 대한 비동기 요청을 시작하고 완료되면 OnLoginSuccess 또는 OnLoginFail 함수를 호출합니다.
    • update(float delta)
      • statusMsg 변수를 설정하는 것만으로는 화면상의 텍스트를 업데이트하지 않습니다.
      • 이 함수는 매 틱마다 GUI 텍스트를 statusMsg의 내용과 일치하도록 설정합니다(그다지 효율적이지 않음).
    • OnLoginSuccess(result, customData)
      • 성공 콜백이 호출되면 많은 API 콜백의 result 객체에 요청된 정보가 포함됩니다.
      • LoginResult에는 플레이어에 대한 몇 가지 기본 정보가 포함되어 있지만 대부분의 사용자에게 로그인은 단순히 다른 API를 호출하기 전의 필수 단계입니다.
    • OnLoginFail(error, customData)
      • 오류 함수가 호출되면 API 호출이 실패한 것입니다.
      • API 호출은 여러 이유로 실패할 수 있으며 항상 실패를 처리하려고 시도해야 합니다.
      • API 호출이 실패하는 이유(가능성 순서대로)
        • PlayFabSettings.TitleId가 설정되지 않았습니다. titleId를 타이틀로 설정하는 것을 잊으면 아무것도 작동하지 않습니다.
          • Cocos에서 titleId를 올바르게 설정하지 못하면 curl 라이브러리가 게임을 크래시시킬 수 있습니다.
        • 요청 매개 변수. 특정 API 호출에 대한 올바른 정보 또는 필수 정보를 제공하지 않은 경우 실패합니다. 자세한 정보는 error.errorMessage, error.errorDetails 또는 error.GenerateErrorReport()를 참조하세요.
        • 장치 연결 문제. 휴대 전화는 지속적으로 연결이 끊어졌다가 다시 연결되므로 언제든지 API 호출이 무작위로 실패할 수 있으며 즉시 다시 작동할 수 있습니다. 터널에 들어가면 완전히 연결이 끊길 수 있습니다.
        • PlayFab 서버 문제. 모든 소프트웨어와 마찬가지로 문제가 있을 수 있습니다. 업데이트는 릴리스 노트를 참조하세요.
        • 인터넷은 100% 신뢰할 수 없습니다. 때때로 메시지가 손상되거나 PlayFab 서버에 도달하지 못합니다.
      • 문제를 디버깅하는 데 어려움이 있고 오류 콜백 내의 정보가 충분하지 않다면 포럼에서 방문해 주세요.
    • customData는 컨텍스트를 설정하기 위해 어떤 방식으로든 사용할 수 있는 void 포인터입니다.
      • C++에서는 API 호출의 컨텍스트를 유지하기가 더 어렵기 때문에 콜백에 모든 객체를 전달할 수 있는 customData 매개 변수를 추가하여 원하는 대로 컨텍스트를 설정할 수 있도록 했습니다.
      • 따라서 인벤토리를 검색하는 API 호출을 수행할 때 플레이어 또는 인벤토리 포인터를 customData로 전달할 수 있으며 콜백에서 해당 객체의 인벤토리를 업데이트할 수 있습니다.
마지막 수정일 2026년 8월 25일