[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | BatchGetByInfoAndWait 메서드를 호출할 때 전달하는 DataStorageKeyInfo 객체의 생성 인자 순서와 각 인자가 의미하는 바를 3줄 이내로 설명하세요. [answer] | `DataStorageKeyInfo` 생성 인자의 순서는 **Key, Version, Tag** 입니다. 각 인자는 해당 데이터의 고유 식별자(Key), 데이터 버전(Version), 분류를 위한 태그(Tag)를 의미합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 DataStorageKeyInfo를 통해 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keyInfos = {} local keyInfo1 = DataStorageKeyInfo("Key1", "Version1", "Tag1") local keyInfo2 = DataStorageKeyInfo("Key2", "Version2", "Tag2") table.insert(keyInfos, keyInfo1
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GetVersionsAndWait 메서드의 날짜 범위 필터링 동작 방식을 3문장 이내로 설명하세요. [answer] | `GetVersionsAndWait` 메서드는 `minDate`와 `maxDate` 인수를 받아 해당 기간 내에 생성된 버전 정보만 조회합니다. 이 날짜 필터링은 값을 저장할 때 버전 값을 함께 지정해야만 적용됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 일정 기간 내의 버전 정보를 조회하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local minDate = DateTime(2023, 03, 09, 20, 20, 0, 0) local maxDate = DateTime(2023, 03, 09, 22, 20, 0, 0) -- 값을 저장할 때 버전 값을 함께 지정한 경우에만 조회할 수 있습니다. local errorCode, versionPages = ds:GetVersion
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GetPagesAsync를 통해 태그 기반 데이터 조회 시 callbackFunction에서 전달되는 DataStorageItemPages 객체의 구조나 사용 방법은 어떻게 되나요? [answer] | `GetPagesAsync`를 통해 태그 기반 데이터 조회 시 `callbackFunction`의 세 번째 인수로 전달되는 `DataStorageItemPages` 객체는 페이지네이션(페이지 나누기)을 통해 데이터를 조회하기 위한 객체입니다. 참고 문서와 예제 코드를 기반으로 확인 가능한 사용 방법은 다음과 같습니다. 1. **현재 페이지 데이터 조회**: `GetCurrentPageDatas()` 메서드를 호출하여 현재 페이지에 포함된 데이터 목록을 반환받습니다. 2. **마지막 페이지 확인**: `IsLastPage` 프 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | eKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 DeleteAndWait(string key) [ServerOnly] [Yield]** 입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteAsync(string key, func<int32, string> callback
[task] | code [pass] | ⏳ 미판정 [title] | Foothold [question] | Foothold 의 Length 와 GetWidth() 메서드를 비교하여 발판의 길이와 너비 정보를 확인하고, GetCenter() 메서드로 반환된 중앙 좌표를 Vector2 형식으로 로그로 출력하는 스크립트를 작성해줘 [answer] | Foothold 컴포넌트에서 `Length` 속성과 `GetWidth()` 메서드는 발판의 기하학적 정보를 제공하지만, 의미하는 바가 다릅니다. `Length`는 발판의 전체 길이를 나타내는 읽기 전용 속성입니다. 반면 `GetWidth()` 메서드는 발판의 너비를 반환합니다. 수평 발판의 경우 이 두 값은 유사하게 보일 수 있으나, 기울어진 발판이나 수직 발판에서는 발판의 물리적 길이와 화면 상에서의 폭(너비)이 다를 수 있습니다. 요청하신 스크립트는 `OnBeginPlay` 생명주기 메서드에서 실행되어, 해당 발판의 `Leng [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 발판의 여러 정보를 나타냅니다. # Properties - **Vector2 EndPoint [ReadOnly]** 발판의 끝점을 나타냅니다. 항상 StartPoint보다 오른쪽에 있습니다. - **float FootholdDrag** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **float FootholdForce** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 가해지는 힘입니다. 값이 양수면 오른쪽,
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | ServerOnly로 지정된 GlobalDataStorage API를 클라이언트 스크립트에서 호출하려고 하면 어떤 오류가 발생하나요? [answer] | 제공된 참고 문서에는 `[ServerOnly]`로 지정된 GlobalDataStorage API를 클라이언트 스크립트에서 호출했을 때 발생하는 구체적인 오류 메시지나 예외에 대한 설명이 포함되어 있지 않습니다. 문서에는 해당 API들이 `[ServerOnly]` 속성을 가진다는 사실과, 일부 API의 경우 수행 중 스크립트 실행을 중단하거나(`[Yield]`) 비동기로 수행된다는 정보만 제시되어 있을 뿐, 실행 공간 위반 시의 동작이나 오류 코드는 명시되어 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ageKeyInfo, string> keyValues) [ServerOnly] [Yield]** 입력한 DataStorageKeyInfo들로 데이터를 저장합니다. 모든 데이터 저장에 성공하면 에러 코드와 성공한 DataStorageKeyInfo를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작 할 수 있습니다. - **void TransactSetByInfoAsync(Dictionary<DataStorageKeyInfo, s
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | TransactSetByInfoAsync 함수의 비동기 콜백에서 에러 코드가 UpdateApiFailed(2000000)로 반환되는 구체적인 원인은 무엇인가요? [answer] | 제공된 참고 문서에 `TransactSetByInfoAsync` 함수의 에러 코드에 대한 구체적인 설명은 다음과 같습니다. `TransactSetByInfoAsync` 함수는 입력한 `DataStorageKeyInfo` 들로 데이터를 저장하는 비동기 함수입니다. 이 함수의 콜백(`callbackFunction`)이 호출될 때 에러 코드가 전달되지만, 문서에는 **`TransactSetByInfoAsync` 함수에서 `UpdateApiFailed(2000000)` 에러 코드가 반환되는 구체적인 원인**에 대한 설명이 **없습니다** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ageKeyInfo, string> keyValues) [ServerOnly] [Yield]** 입력한 DataStorageKeyInfo들로 데이터를 저장합니다. 모든 데이터 저장에 성공하면 에러 코드와 성공한 DataStorageKeyInfo를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. 모든 작업 중 하나라도 실패한다면, 함수 호출이 실패합니다. 한 번에 최대 20개 Key까지 조작 할 수 있습니다. - **void TransactSetByInfoAsync(Dictionary<DataStorageKeyInfo, s
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | itemPages 객체를 통해 데이터를 페이지별로 조회하는 로직을 단계별 번호 목록(최대 4단계)으로 정리하세요. [answer] | GlobalDataStorage에서 `itemPages` 객체를 사용하여 데이터를 페이지별로 조회하는 로직은 다음과 같은 4단계로 구성됩니다. 1. `GetCurrentPageDatas()` 메서드를 호출하여 현재 페이지에 포함된 `DataStorageItem` 목록을 가져옵니다. 2. 가져온 항목들을 반복하며 각 `DataStorageItem`의 `KeyInfo`(Key, Version, Tag)와 `Value` 프로퍼티를 통해 데이터를 조회합니다. 3. `IsLastPage` 프로퍼티가 `true`인지 확인하여 현재 페이지가 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 DataStorageKeyInfo를 통해 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keyInfos = {} local keyInfo1 = DataStorageKeyInfo("Key1", "Version1", "Tag1") local keyInfo2 = DataStorageKeyInfo("Key2", "Version2", "Tag2") table.insert(keyInfos, keyInfo1
[task] | code [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage의 GetPagesAndWait를 통해 특정 태그를 가진 데이터 페이지 목록을 동기식으로 조회하고 조회 결과를 table 형태로 변환해 반환하는 스크립트를 작성해줘 [answer] | `GlobalDataStorage`의 `GetPagesAndWait` 메서드는 특정 태그를 가진 데이터를 페이지 단위로 동기식(Yield)으로 조회하는 기능입니다. 제공된 문서와 예제 코드를 기준으로, 조회한 페이지 데이터를 `table` 형태로 변환하여 반환하는 스크립트를 작성합니다. 주의할 점: 1. `GetPagesAndWait`는 `[ServerOnly]` 및 `[Yield]` 속성을 가지므로, 반드시 서버 공간(`[server only]`)에서 호출되어야 하며, 실행 중 스크립트가 일시 정지됩니다. 2. 반환되는 `Dat [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | eKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 DeleteAndWait(string key) [ServerOnly] [Yield]** 입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteAsync(string key, func<int32, string> callback
[task] | code [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage의 BatchSetByInfoAndWait와 BatchGetByInfoAndWait 메서드를 사용하여 DataStorageKeyInfo 객체를 기반으로 데이터를 저장 및 조회하는 스크립트를 작성해줘 [answer] | GlobalDataStorage의 `BatchSetByInfoAndWait`와 `BatchGetByInfoAndWait` 메서드는 서버에서만 실행되며, `DataStorageKeyInfo` 객체를 기반으로 데이터를 저장하고 조회하는 기능을 제공합니다. `DataStorageKeyInfo`는 키(Key), 버전(Version), 태그(Tag) 세 가지 문자열 인수로 생성됩니다. 아래 스크립트는 이 두 메서드를 사용하여 데이터를 저장하고, 저장된 데이터를 페이지네이션 처리를 통해 조회하는 예시입니다. ```lua Method: [s [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 다목적 데이터를 관리할 수 있는 저장소입니다. 메이커와 출시 환경은 저장소를 공유하지 않습니다. # Properties - **string Name [ReadOnly]** 이 GlobalDataStorage의 이름입니다. # Methods - **int32, List<string> BatchDeleteAndWait(List<string> keys) [ServerOnly] [Yield]** 입력한 키들로 데이터들을 삭제합니다. 에러 코드와 삭제에 성공한 키들을 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. -
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | DataStorageKeyInfo 타입의 필드와 역할을 3문장 이내로 요약하세요. [answer] | `DataStorageKeyInfo`는 데이터 저장 시 키 정보를 정의하는 객체로, `Key`, `Tag`, `Version` 필드를 포함합니다. 이 필드들은 각각 저장할 데이터의 고유 식별자, 분류 태그, 버전 정보를 지정하는 역할을 합니다. 생성 시 이 값들을 직접 지정하거나 빈 생성자로 만든 후 각 필드에 값을 할당하여 사용할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | * table * DataStorageKeyInfo * DateTime * DataStorageService * [Data DB 저장 및 불러오기](/docs?postId=68) * [DataStorage 사용량 제한 알아보기](/docs?postId=1044) * [DataStorage 사용량 제한 활용하기](/docs?postId=1045) * [DataStorage 활용하기](/docs?postId=692)
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GetGlobalDataStorage에서 "StorageName"을 잘못 입력하거나 존재하지 않는 이름으로 호출하면 어떤 오류가 발생하며, 이를 처리하는 방법이 있을까요? [answer] | 제시된 참고 문서에는 `GetGlobalDataStorage` 함수가 잘못된 이름이나 존재하지 않는 이름으로 호출되었을 때 발생하는 구체적인 오류 코드나 예외, 그리고 해당 오류를 처리하는 방법에 대한 정보가 포함되어 있지 않습니다. 문서에는 `BatchGetAndWait`, `BatchDeleteAndWait`, `BatchSetByInfoAndWait`, `BatchGetByInfoAndWait` 메서드 호출 시 반환되는 `errorCode` 또는 `getResultCode`를 확인하여 실패 여부를 체크하는 예제는 있지만, ` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keys = {} table.insert(keys, "Key1") table.insert(keys, "Key2") local errorCode, itemPages = ds:BatchGetAndWait(keys) while true do -- GetCurrentPageDatas()로 현재 페이지의 목록을 가져올 수 있습니다. lo
[task] | two_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage에서 데이터를 저장하고 조회하는 기본 사용법은 무엇인가요? [answer] | GlobalDataStorage는 `_DataStorageService`를 통해 특정 이름을 가진 저장소를 가져온 후, 키(Key)를 기반으로 데이터를 저장(Set)하고 조회(Get)하는 방식으로 동작합니다. 모든 저장 및 조회 작업은 서버에서만 수행되며(`[server only]`), 동기화(`AndWait`) 또는 비동기(`Async`) 중 원하는 방식으로 호출할 수 있습니다. 기본적인 사용법은 다음과 같습니다. ### 1. GlobalDataStorage 인스턴스 가져오기 `_DataStorageService`의 `GetG [followup] | GetAndWait와 GetAsync를 함께 사용할 때 콜백 함수의 파라미터 순서와 에러 코드 처리 예시를 보여주세요. [followup_answer] | `GetAndWait`와 `GetAsync`는 동기/비동기 처리 방식이 다르므로 콜백 구조와 파라미터 순서가 다릅니다. 두 메서드를 함께 사용할 때의 콜백 함수 파라미터 순서와 에러 코드 처리 예시는 다음과 같습니다. ### 1. GetAsync 콜백 파라미터 순서 `GetAsync(string key, func<int32, string, string> callbackFunction)`의 콜백 함수는 작업 완료 시 다음 순서로 값을 전달받습니다. 1. **int32**: 에러 코드 (errorCode) 2. **string** [scores] | [judge_reason] | [source_doc] | eKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 DeleteAndWait(string key) [ServerOnly] [Yield]** 입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteAsync(string key, func<int32, string> callback
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | DataStorageService를 통해 데이터를 저장할 때 필요한 파라미터 목록을 표로 정리해서 출력하세요. [answer] | 제공된 문서에는 `DataStorageService`를 통해 데이터를 저장할 때 필요한 구체적인 파라미터 목록이 명시되어 있지 않습니다. 참고 문서에는 `_DataStorageService:GetGlobalDataStorage("globalDS")` 호출 예제와 `SetByInfoAndWait` 메서드 사용 예제가 포함되어 있으나, 저장 시점에 요구되는 모든 파라미터의 정의나 전체 목록에 대한 정보는 찾을 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | * table * DataStorageKeyInfo * DateTime * DataStorageService * [Data DB 저장 및 불러오기](/docs?postId=68) * [DataStorage 사용량 제한 알아보기](/docs?postId=1044) * [DataStorage 사용량 제한 활용하기](/docs?postId=1045) * [DataStorage 활용하기](/docs?postId=692)
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | 문서에 제시된 GetPagesAndWait 예제 코드를 그대로 출력하되, 각 메서드 호출 주위에 해당 메서드의 역할을 설명하는 주석(--)만 추가하세요. [answer] | ```lua -- 전역 데이터 스토리지 인스턴스를 가져옵니다. local ds = _DataStorageService:GetGlobalDataStorage("StorageName") -- 지정된 태그("TestTag")에 해당하는 데이터를 페이지 단위로 비동기 조회하여 오류 코드와 페이지 객체를 반환받습니다. local errorCode, itemPages = ds:GetPagesAndWait("TestTag") while true do -- 현재 페이지에 포함된 데이터 아이템(DataStorageItem) 목록을 가져옵 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 DataStorageKeyInfo를 통해 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keyInfos = {} local keyInfo1 = DataStorageKeyInfo("Key1", "Version1", "Tag1") local keyInfo2 = DataStorageKeyInfo("Key2", "Version2", "Tag2") table.insert(keyInfos, keyInfo1
[task] | two_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | 태그(tag)와 버전(version) 기반 조회 기능인 GetPagesAndWait와 GetVersionsAndWait의 차이점은 무엇인가요? [answer] | `GetPagesAndWait`와 `GetVersionsAndWait`는 모두 GlobalDataStorage에서 데이터를 조회하는 동기(Sync) 메서드이지만, **조회 대상**과 **반환 결과**가 다릅니다. ### 1. GetPagesAndWait * **조회 기준**: `tag`(태그) * **기능**: 특정 태그를 가진 **데이터 항목(Items) 전체 목록**을 조회합니다. * **반환 값**: * `int32`: 에러 코드 * `DataStorageItemPages`: 페이지네이션이 적 [followup] | GetVersionsAndWait에서 SortDirection과 DateTime 필터를 설정하여 과거 특정 시점의 데이터를 찾는 코드를 예시해 주세요. [followup_answer] | `GetVersionsAndWait`는 특정 키에 대한 **버전 히스토리 목록**을 조회하는 메서드입니다. 참고 문서에 따르면, `SortDirection`으로 정렬 방향을, `minDate`와 `maxDate`로 생성 시간 범위를 지정하여 원하는 시점의 버전 정보를 필터링할 수 있습니다. 단, 이 메서드는 **데이터 값(Value) 자체**를 반환하지 않고, 해당 기간 내에 생성된 **버전 정보(`DataStorageVersionPages`) 목록**을 반환합니다. 따라서 특정 시점의 데이터 값을 실제로 가져오려면, 먼저 `Ge [scores] | [judge_reason] | [source_doc] | eKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 DeleteAndWait(string key) [ServerOnly] [Yield]** 입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteAsync(string key, func<int32, string> callback
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | BatchSetByInfoAndWait에서 DataStorageKeyInfo 생성 시 인자 순서와 keyInfoValues 테이블의 구조를 표로 정리해서 보여주세요. [answer] | `BatchSetByInfoAndWait` 메서드에서 `DataStorageKeyInfo` 객체를 생성할 때 사용하는 인자 순서와 `keyInfoValues` 테이블의 구조는 다음과 같습니다. ### 1. DataStorageKeyInfo 생성 인자 순서 `DataStorageKeyInfo` 생성자에는 아래 순서대로 세 개의 인자를 전달합니다. | 순서 | 인자 이름 (참고용) | 설명 | 예시 값 | | :---: | :--- | :--- | :--- | | 1 | Key | 저장할 데이터의 키 (문자열) | `"Key1"` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keys = {} table.insert(keys, "Key1") table.insert(keys, "Key2") local errorCode, itemPages = ds:BatchGetAndWait(keys) while true do -- GetCurrentPageDatas()로 현재 페이지의 목록을 가져올 수 있습니다. lo
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | 버전 활용 예제에서 Version1과 Version2 값을 주고받는 과정을 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua -- 1. 버전 정보(Key, Version)를 포함한 키 객체를 생성합니다. local keyInfo = DataStorageKeyInfo() keyInfo.Key = "Key" keyInfo.Version = "Version1" -- 2. Version1 버전으로 "Value"를 저장합니다. ds:SetByInfoAndWait(keyInfo, "Value") -- 3. Key는 동일하게 유지하되 Version만 Version2로 변경하여 새로운 버전을 생성합니다. keyInfo.Key = "Key" keyInfo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 일정 기간 내의 버전 정보를 조회하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local minDate = DateTime(2023, 03, 09, 20, 20, 0, 0) local maxDate = DateTime(2023, 03, 09, 22, 20, 0, 0) -- 값을 저장할 때 버전 값을 함께 지정한 경우에만 조회할 수 있습니다. local errorCode, versionPages = ds:GetVersion
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage를 가져올 때 "StorageName"이 존재하지 않으면 어떤 오류가 발생하며, 새로 생성하는 절차가 따로 필요한가요? [answer] | 제공된 참고 문서에는 `_DataStorageService:GetGlobalDataStorage("StorageName")`을 호출할 때 "StorageName"이 존재하지 않는 경우 발생하는 구체적인 오류 코드나 예외에 대한 정보가 포함되어 있지 않습니다. 또한, 존재하지 않는 GlobalDataStorage를 새로 생성하는 별도의 절차나 API에 대한 설명도 문서에 없습니다. 따라서 주어진 문서만으로는 해당 질문에 대한 정확한 답변을 할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # Examples #### SetAndWait 데이터를 저장하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCode = ds:SetAndWait("key", "value") ``` #### GetAndWait 데이터를 불러오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCo
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | DataStorage 사용량 제한을 확인하기 위한 API 호출 예제를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua [server only] void CheckDataStorageUsage() { -- DataStorage 사용량 제한을 확인하기 위해 GetGlobalDataStorage를 호출합니다. -- 여기서 "globalDS"는 서버에서 설정된 DataStorage 이름입니다. local globalDataStorage = _DataStorageService:GetGlobalDataStorage("globalDS") -- 참고: 제공된 문서에는 사용량 제한(용량, 키 개수 등)을 직접 조회 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | * table * DataStorageKeyInfo * DateTime * DataStorageService * [Data DB 저장 및 불러오기](/docs?postId=68) * [DataStorage 사용량 제한 알아보기](/docs?postId=1044) * [DataStorage 사용량 제한 활용하기](/docs?postId=1045) * [DataStorage 활용하기](/docs?postId=692)
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | BatchDeleteAndWait 호출 시 반환되는 deletedKeys의 구조가 BatchGetAndWait의 itemPages와 어떻게 다른가요? [answer] | 제시된 문서만으로는 `BatchDeleteAndWait` 호출 시 반환되는 `deletedKeys`의 정확한 구조를 확인할 수 없습니다. 문서에는 `BatchDeleteAndWait`의 사용 예제만 제시되어 있으며, 반환값 `deletedKeys`가 어떤 타입인지(배열인지, 페이지 객체인지 등)나 내부에 어떤 프로퍼티를 가지는지에 대한 설명이 없습니다. 반면, `BatchGetAndWait`의 반환값 `itemPages`는 문서에서 다음과 같은 구조와 메서드를 가진 객체임을 명확히 확인할 수 있습니다: 1. `GetCurrent [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keys = {} table.insert(keys, "Key1") table.insert(keys, "Key2") local errorCode, itemPages = ds:BatchGetAndWait(keys) while true do -- GetCurrentPageDatas()로 현재 페이지의 목록을 가져올 수 있습니다. lo
[task] | code [pass] | ⏳ 미판정 [title] | Foothold [question] | CustomFootholdComponent 를 가진 엔티티에서 Foothold 객체를 받아 GetYByX 를 호출하여 특정 X 좌표에서의 Y 값을 로그로 출력하는 스크립트를 작성해줘 [answer] | 제공된 문서에는 `CustomFootholdComponent`가 `Foothold` 객체를 반환하는 메서드(예: `GetFoothold()`, `Footholds` 배열 등)가 명시되어 있지 않습니다. `Foothold` 문서에는 `OwnerId`가 `CustomFootholdComponent`를 가진 Entity의 Id임을 언급하고 있지만, 컴포넌트에서 발판 리스트나 특정 발판을 가져오는 API는 정의되어 있지 않습니다. 따라서 문서에 근거하여 **`CustomFootholdComponent`로부터 `Foothold` 객체를 직 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 발판의 여러 정보를 나타냅니다. # Properties - **Vector2 EndPoint [ReadOnly]** 발판의 끝점을 나타냅니다. 항상 StartPoint보다 오른쪽에 있습니다. - **float FootholdDrag** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 적용되는 마찰력입니다. 값이 클수록 빠르게 감속합니다. - **float FootholdForce** RigidbodyComponent가 포함된 엔티티가 발판 위에 있을 때 가해지는 힘입니다. 값이 양수면 오른쪽,
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | SetAndWait의 첫 번째 반환값인 errorCode가 0이 아닐 때, 그 값을 확인해서 재시도 로직을 구현하는 것이 권장되나요? [answer] | 제시된 참고 문서에는 `SetAndWait`의 반환값인 `errorCode`가 0이 아닐 때 재시도 로직을 구현해야 하는지 여부에 대한 명시적인 지침이나 권장 사항이 포함되어 있지 않습니다. 문서에는 단순히 `SetAndWait` 호출 시 `errorCode`를 반환받음 (`local errorCode = ds:SetAndWait("key", "value")`)과, 다른 메서드(예: `GetAndWait`)에서 `errorCode ~= 0`인 경우를 확인하여 로그를 남기거나(false 반환) 처리하는 예시 코드가 있을 뿐, 저장 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # Examples #### SetAndWait 데이터를 저장하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCode = ds:SetAndWait("key", "value") ``` #### GetAndWait 데이터를 불러오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCo
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | DataStorageKeyInfo 생성 시 Version과 Tag 값을 지정했는데, 이후 BatchGetAndWait로 조회할 때 이 값들을 어떻게 비교해야 하는지 기준이 있나요? [answer] | 제공된 문서에 `BatchGetAndWait`와 `BatchGetByInfoAndWait`를 호출할 때 `Version`과 `Tag` 값이 어떻게 매칭되는지(예: 부분 일치, 정확 일치 등)에 대한 명시적인 기준이나 설명은 없습니다. 문서에서 확인할 수 있는 내용은 다음과 같습니다. 1. **`BatchGetAndWait`**: 단순히 `Key` 문자열 목록(`keys`)을 인자로 전달합니다. 이 함수 호출 시점에 `Version`이나 `Tag`를 직접 지정하는 파라미터는 없습니다. 2. **`BatchGetByInfoAnd [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 데이터를 일괄로 가져오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local keys = {} table.insert(keys, "Key1") table.insert(keys, "Key2") local errorCode, itemPages = ds:BatchGetAndWait(keys) while true do -- GetCurrentPageDatas()로 현재 페이지의 목록을 가져올 수 있습니다. lo
[task] | code [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage의 GetVersionsAsync를 사용하여 특정 키의 버전 정보를 지정된 날짜 범위와 정렬 방향으로 비동기 조회하고 완료 시 버전 개수를 로그로 출력하는 스크립트를 작성해줘 [answer] | `GlobalDataStorage`의 `GetVersionsAsync` 메서드를 사용하여 요청하신 기능을 구현한 스크립트입니다. ```lua Property: [None] string TargetKey = "MyDataKey" string DSName = "globalDS" Method: [server only] void OnBeginPlay() { local globalDataStorage = _DataStorageService:GetGlobalDataStorage(self.DSName) -- 조회할 날 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | eKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 DeleteAndWait(string key) [ServerOnly] [Yield]** 입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteAsync(string key, func<int32, string> callback
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | BatchSetAndWait를 호출했을 때 반환되는 keys 변수에는 어떤 정보가 담기며, 실패한 키를 따로 구분해서 처리할 수 있나요? [answer] | 제공된 참고 문서에는 `BatchSetAndWait` 함수의 반환값 중 `keys` 변수에 구체적으로 어떤 정보가 담기는지(예: 성공한 키 목록인지, 실패한 키 목록인지, 전체 키 목록인지) 설명하는 내용이 없습니다. 또한, 실패한 키를 따로 구분하여 처리하는 방법이나 관련 API에 대한 정보도 문서에 포함되어 있지 않습니다. 문서에서 확인할 수 있는 정보는 `BatchSetAndWait`가 `keyValues` 테이블을 인자로 받아 일괄 저장 작업을 수행하고, `errorCode`와 `keys` 두 값을 반환한다는 점뿐입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # Examples #### SetAndWait 데이터를 저장하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCode = ds:SetAndWait("key", "value") ``` #### GetAndWait 데이터를 불러오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCo
[task] | single_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage에서 GetAndWait와 GetAsync를 사용할 때 어떤 차이가 있는지, 그리고 스크립트 실행 중단 여부를 고려해 어떤 방식을 선택해야 하는지 궁금합니다. [answer] | GlobalDataStorage의 `GetAndWait`와 `GetAsync`는 데이터를 조회하는 방식과 스크립트 실행 흐름에 미치는 영향에서 명확한 차이가 있습니다. ### 1. 주요 차이점 | 구분 | GetAndWait | GetAsync | | :--- | :--- | :--- | | **실행 방식** | 동기(Synchronous) | 비동기(Asynchronous) | | **스크립트 실행** | **중단(Yield)** | **계속 진행** | | **결과 반환** | 함수 호출 즉시 에러 코드와 데이터를 반환 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | eKeyInfo들로 데이터들을 저장합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 저장에 성공한 DataStorageKeyInfo들과 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 DeleteAndWait(string key) [ServerOnly] [Yield]** 입력한 키로 데이터를 삭제하고 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteAsync(string key, func<int32, string> callback
[task] | code [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage 서비스의 GetByVersionRangeAsync에서 sortDirection을 내림차순으로 설정하여 최신 버전부터 조회하고, minDate와 maxDate를 지정해 특정 시간대 내 데이터를 필터링하는 비동기 조회 서버 스크립트를 작성해줘. [answer] | 제시된 참고 문서에는 `GetByVersionRangeAsync` 메서드의 구체적인 시그니처(파라미터 타입, `sortDirection`, `minDate`, `maxDate` 등의 정확한 프로퍼티 이름이나 전달 방식)가 포함되어 있지 않습니다. 문서에는 `sortDirection`, `minDate`, `maxDate`를 사용하여 시간대 내 버전을 조회할 수 있다는 **기능 설명**만 있고, 이를 위한 구체적인 API 호출 코드나 파라미터 구조가 명시되어 있지 않아 정확한 mLua 코드를 작성할 수 없습니다. 따라서 문서에 없 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | . sortDirection으로 오름/내림차순 정렬을 설정할 수 있습니다. minDate, maxDate로 설정한 시간대 내에서 생성된 버전을 조회할 수 있습니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 키, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **int32 SetAndWait(string key, string value) [ServerOnly] [Yield]** 입력한 키로 데이터를 저장합니다. 작업이 완료되면 에러 코드를 반환합니다. 수행하는 동안 스크립트
[task] | two_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | GlobalDataStorage에서 데이터를 저장하고 불러오는 기본 방법을 알고 싶습니다 [answer] | GlobalDataStorage에서 데이터를 저장하고 불러오기 위해서는 먼저 `_DataStorageService:GetGlobalDataStorage` 메서드를 호출하여 저장소 인스턴스를 가져와야 합니다. 저장소는 이름을 지정하여 생성하며, 이후 해당 인스턴스에서 제공되는 메서드를 사용해 데이터를 처리합니다. ### 1. 데이터 저장 (Set) 데이터를 저장할 때는 `SetAndWait` 또는 `SetAsync` 메서드를 사용합니다. * **동기화 방식 (`SetAndWait`)**: 저장 작업이 완료될 때까지 대기하며, [followup] | SetAndWait와 GetAndWait를 사용하여 특정 키에 값을 저장한 뒤 다시 조회하는 전체 코드 예시를 보여주세요. [followup_answer] | GlobalDataStorage에서 `SetAndWait`와 `GetAndWait`를 사용하여 값을 저장하고 조회하는 전체 코드 예제는 다음과 같습니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") -- 특정 키에 값을 저장 local errorCode = ds:SetAndWait("key", "value") -- 저장된 값을 다시 조회 local errorCode, value = ds:GetAndWait("key") log(value) [scores] | [judge_reason] | [source_doc] | # Examples #### SetAndWait 데이터를 저장하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCode = ds:SetAndWait("key", "value") ``` #### GetAndWait 데이터를 불러오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCo
[task] | instruction_following [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | 데이터 저장 시 버전 관리가 적용되는 조건과 GetByInfoAndWait 호출 시 반환되는 값을 표로 정리해서 제시하세요. [answer] | ### 데이터 저장 시 버전 관리 적용 조건 버전 관리가 적용되기 위해서는 값을 저장할 때 **버전 값을 함께 지정**해야 합니다. 문서에 제시된 방식은 `DataStorageKeyInfo` 객체를 생성하여 `Key`와 `Version` 프로퍼티를 설정한 뒤, `SetByInfoAndWait` 메서드를 사용하여 저장하는 것입니다. 일반적인 `SetAndWait`와 달리 `SetByInfoAndWait`를 사용하면 기존 버전의 값을 덮어쓰는 대신 **새로운 버전을 만들어 저장**합니다. ### GetByInfoAndWait 호출 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 일정 기간 내의 버전 정보를 조회하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local minDate = DateTime(2023, 03, 09, 20, 20, 0, 0) local maxDate = DateTime(2023, 03, 09, 22, 20, 0, 0) -- 값을 저장할 때 버전 값을 함께 지정한 경우에만 조회할 수 있습니다. local errorCode, versionPages = ds:GetVersion
[task] | two_turn [pass] | ⏳ 미판정 [title] | GlobalDataStorage [question] | DataStorageKeyInfo를 사용한 저장과 조회 방식은 일반 SetAndWait와 어떤 차이가 있나요 [answer] | `DataStorageKeyInfo`를 사용하는 방식과 일반 `SetAndWait`/`GetAndWait`의 가장 큰 차이는 **버전 관리(Versioning)** 기능의 유무입니다. **1. 일반 SetAndWait / GetAndWait** * **동작 방식:** 단순히 `"key"`를 기준으로 데이터를 저장하고 불러옵니다. * **특징:** 같은 `"key"`로 다시 데이터를 저장하면 **기존 값이 덮어쓰기(Overwrite)** 됩니다. 과거에 저장했던 값은 영구적으로 사라집니다. * **사용법:** `` [followup] | DataStorageKeyInfo를 인자로 받는 SetByInfoAndWait와 GetByInfoAndWait의 코드 예시를 각각 보여주세요. [followup_answer] | `DataStorageKeyInfo`를 인자로 받아 데이터를 저장하고 조회하는 `SetByInfoAndWait`와 `GetByInfoAndWait`의 코드 예시는 다음과 같습니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") -- DataStorageKeyInfo 생성 (Key, Version, Tag 순서로 인자 전달) local keyInfo = DataStorageKeyInfo("Key", "Version1", "TestTag") -- [scores] | [judge_reason] | [source_doc] | # Examples #### SetAndWait 데이터를 저장하는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCode = ds:SetAndWait("key", "value") ``` #### GetAndWait 데이터를 불러오는 예제입니다. ```lua local ds = _DataStorageService:GetGlobalDataStorage("StorageName") local errorCo