프로그램 (PHP,Python)

로블록스(Roblox) 게임 상태 및 메트릭 정보 API 통한 수집 자동화

날으는물고기 2024. 11. 6. 00:08

Roblox Creator Hub

로블록스(Roblox)에서는 API를 통해 여러 가지 게임 상태 정보 및 메트릭 정보를 수집할 수 있습니다. Roblox의 API는 크게 다음과 같은 부분으로 나눌 수 있습니다.

  1. Roblox Web API: 사용자 데이터, 게임 내 아이템, 통계 등과 같은 정보를 웹 서비스를 통해 조회할 수 있게 해주는 API입니다.
  2. DataStore API: 게임 서버 내에서 동적으로 데이터를 저장하고 관리할 수 있는 API로, 게임 상태 정보나 사용자 세션 정보 등을 저장하고 불러오는 데 사용됩니다.

Roblox Web API 사용 예

Roblox Web API를 사용하기 위해선 먼저 Roblox의 Developer Hub에서 필요한 정보를 찾아볼 수 있습니다. API를 사용하기 위해선 API 키가 필요할 수 있으며, 보통 게임 개발자 페이지에서 생성할 수 있습니다.

 

Roblox Web API를 사용하여 특정 게임의 일일 방문자 수와 같은 기본적인 메트릭 정보를 수집하는 간단한 Python 예제입니다. 이 예제는 requests 라이브러리를 사용합니다.

 

예제 코드: 특정 게임의 일일 방문자 수 조회

import requests

# 게임 ID와 API 키 설정
game_id = '여기에 게임 ID 입력'
api_key = '여기에 API 키 입력'

# API 요청 URL 구성
url = f'https://games.roblox.com/v1/games?universeIds={game_id}'

# API 헤더에 API 키 포함
headers = {
    'x-api-key': api_key
}

# API 요청 실행
response = requests.get(url, headers=headers)

# 응답 데이터 파싱
data = response.json()

# 일일 방문자 수 출력
print('일일 방문자 수:', data['data'][0]['visits'])

DataStore API 사용 예

DataStore API는 게임 개발 중에 클라이언트와 서버 간의 데이터를 저장하고 불러오는 데 사용됩니다. 이는 로블록스 스튜디오 내에서 스크립팅을 통해 구현됩니다.

 

예제 코드: 게임 내 데이터 저장 및 불러오기

local DataStoreService = game:GetService("DataStoreService")
local myDataStore = DataStoreService:GetDataStore("MyDataStore")

-- 데이터 저장 함수
local function savePlayerData(player, data)
    local success, errorMessage = pcall(function()
        myDataStore:SetAsync(player.UserId, data)
    end)
    if success then
        print("Data saved successfully")
    else
        print("Failed to save data:", errorMessage)
    end
end

-- 데이터 불러오기 함수
local function loadPlayerData(player)
    local success, result = pcall(function()
        return myDataStore:GetAsync(player.UserId)
    end)
    if success then
        return result
    else
        print("Failed to load data")
        return nil
    end
end

-- 예를 들어 플레이어가 게임에 들어올 때 데이터 불러오기
game.Players.PlayerAdded:Connect(function(player)
    local playerData = loadPlayerData(player)
    if playerData then
        print("Loaded player data:", playerData)
    else
        print("No data found for player, setting default values")
        savePlayerData(player, {score = 0, level = 1})  # 기본 데이터 설정
    end
})

이 예제는 로블록스 스튜디오에서 사용되는 Lua 스크립트로, 플레이어의 데이터를 저장하고 불러오는 기본적인 방법을 보여줍니다. DataStoreService를 활용하여 간단한 데이터 관리 기능을 구현할 수 있습니다.

 

로블록스 게임의 메트릭 정보를 수집하고 이를 구글 시트에 기록하는 Python 코드를 작성하려면, 다음과 같은 작업이 필요합니다.

  1. Roblox API를 통해 게임 메트릭 데이터를 수집합니다.
  2. Google Sheets API를 사용하여 데이터를 시트에 기록합니다.

이 작업을 수행하기 위해서는 Python 환경에서 requestsgspread 라이브러리를 사용합니다. 또한, Google Sheets API에 접근하기 위해 OAuth 2.0 인증이 필요합니다.

  1. Google Sheets API 사용 설정 및 인증 파일 다운로드
    • Google Cloud Console에서 프로젝트를 만들고 Google Sheets API를 활성화합니다.
    • OAuth 2.0 클라이언트 ID를 생성하고 credentials.json 파일을 다운로드합니다.
  2. 필요한 라이브러리 설치pip install requests gspread oauth2client

예제 코드: Roblox 게임 메트릭 수집 및 Google Sheets 기록

import requests
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from datetime import datetime

# Google Sheets API 인증 설정
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)
client = gspread.authorize(creds)

# Google Sheets 문서와 시트 설정
sheet = client.open("Roblox Game Metrics").sheet1

# Roblox API 설정
game_ids = ["GAME_ID_1", "GAME_ID_2"]  # 여기에 게임 ID를 입력합니다.
api_key = "YOUR_API_KEY"

# 현재 날짜와 시간을 구함
now = datetime.now()
date_str = now.strftime("%Y-%m-%d")
time_str = now.strftime("%H:%M:%S")

# 각 게임의 메트릭 수집
for game_id in game_ids:
    url = f"https://games.roblox.com/v1/games?universeIds={game_id}"
    headers = {"x-api-key": api_key}
    response = requests.get(url, headers=headers)
    data = response.json()

    # 게임 메트릭 정보 추출
    game_data = data["data"][0]
    daily_visits = game_data["visits"]
    current_players = game_data["playing"]
    game_time = game_data["totalPlaytime"]

    # Google Sheets에 데이터 기록
    sheet.append_row([date_str, time_str, game_id, daily_visits, current_players, game_time])

print("Data collection and recording complete.")
  1. Google Sheets API 인증 설정
    • credentials.json 파일을 사용하여 Google Sheets API에 접근할 수 있도록 인증을 설정합니다.
  2. Roblox API를 통해 게임 메트릭 수집
    • 주어진 게임 ID 목록을 순회하면서 각 게임의 일일 방문자 수, 현재 사용자 수, 총 플레이 시간 등의 메트릭 정보를 수집합니다.
  3. 수집한 데이터를 Google Sheets에 기록
    • 현재 날짜와 시간을 구하고, 수집한 데이터를 시트에 추가합니다.
  • API 키와 게임 ID를 실제 값으로 교체해야 합니다.
  • Google Sheets 문서 이름("Roblox Game Metrics")을 실제 문서 이름으로 교체해야 합니다.
  • credentials.json 파일의 경로를 실제 파일 경로로 수정해야 합니다.

 

이 코드를 주기적으로 실행하면 Roblox 게임의 메트릭 정보를 Google Sheets에 기록할 수 있습니다. 주기적인 실행을 위해서는 스케줄러(예: cron)를 설정하여 실행할 수 있습니다. N8n은 시각적 워크플로우 자동화 도구로, API를 호출하고 데이터를 처리하는 작업을 자동화할 수 있습니다. n8n을 사용하여 Roblox API에서 정보를 수집하고 Google Sheets에 기록하는 방법입니다.

Step 1: HTTP Request Node를 사용하여 Roblox API에서 데이터 가져오기

  1. HTTP Request Node 추가
    • "Nodes" 패널에서 "HTTP Request" 노드를 찾아서 워크플로우에 드래그 앤 드롭합니다.
    • Roblox API의 엔드포인트 URL을 설정합니다.
    • 예시:
      Method: GET
      URL: https://games.roblox.com/v1/games?universeIds=YOUR_GAME_ID
      Headers: 
        x-api-key: YOUR_API_KEY

Step 2: 데이터 변환 (필요한 경우)

Roblox API로부터 가져온 데이터를 원하는 형식으로 변환하기 위해 "Function" 노드를 사용할 수 있습니다.

  1. Function Node 추가
    • "Nodes" 패널에서 "Function" 노드를 찾아서 추가합니다.
    • 다음과 같이 설정합니다.
      return items.map(item => {
        return {
          json: {
            date: new Date().toISOString().split('T')[0],
            time: new Date().toISOString().split('T')[1].split('.')[0],
            game_id: item.json.data[0].id,
            daily_visits: item.json.data[0].visits,
            current_players: item.json.data[0].playing,
            game_time: item.json.data[0].totalPlaytime
          }
        };
      });

Step 3: Google Sheets Node를 사용하여 데이터 기록하기

  1. Google Sheets Node 추가
    • "Nodes" 패널에서 "Google Sheets" 노드를 찾아서 추가합니다.
    • Google Sheets API를 설정합니다. (OAuth2 인증 필요)
    • 다음과 같이 설정합니다.
      Operation: Append
      Sheet ID: YOUR_SHEET_ID
      Range: YOUR_SHEET_NAME!A1
      Value Input Mode: RAW
      Fields:
        - Date: {{$json["date"]}}
        - Time: {{$json["time"]}}
        - Game ID: {{$json["game_id"]}}
        - Daily Visits: {{$json["daily_visits"]}}
        - Current Players: {{$json["current_players"]}}
        - Game Time: {{$json["game_time"]}}

이 워크플로우를 통해 n8n을 사용하여 Roblox 게임의 메트릭 정보를 자동으로 수집하고 Google Sheets에 기록할 수 있습니다. 스케줄러 노드를 추가하여 이 작업을 정기적으로 실행하도록 설정할 수도 있습니다.

 

Roblox API를 통해 사용자가 만든 게임들의 ID 목록을 확인할 수 있는 방법은 사용자의 유니버스 ID(게임의 고유 식별자)를 가져와야 합니다. Roblox API에서 제공하는 엔드포인트를 사용하여 이를 수집할 수 있습니다.

게임 ID 확인을 위한 API 엔드포인트

Roblox API에서 제공하는 사용자 생성 게임 목록을 확인하는 엔드포인트는 다음과 같습니다.

  1. 사용자 유니버스 ID 조회
    • Endpoint: https://games.roblox.com/v2/users/{userId}/games
    • 이 API는 사용자의 고유 ID(userId)를 사용하여 해당 사용자가 만든 게임들의 유니버스 ID를 반환합니다.

n8n을 사용하여 이 API를 호출하고, 반환된 게임 ID 목록을 수집하는 방법입니다.

Step 1: HTTP Request Node를 사용하여 사용자 게임 목록 조회

  1. HTTP Request Node 추가
    • "Nodes" 패널에서 "HTTP Request" 노드를 찾아서 워크플로우에 드래그 앤 드롭합니다.
    • Roblox API의 엔드포인트 URL을 설정합니다.
    • 예시:
      Method: GET
      URL: https://games.roblox.com/v2/users/{YOUR_USER_ID}/games
  2. HTTP Request Node 설정
    • URL에서 {YOUR_USER_ID}를 실제 사용자 ID로 대체합니다.
    • 필요한 경우 Headers에 인증 토큰을 추가합니다.
      {
        "Cookie": ".ROBLOSECURITY=YOUR_ROBLOSECURITY_COOKIE"
      }

Step 2: 데이터 변환 및 게임 ID 추출

  1. Function Node 추가
    • "Nodes" 패널에서 "Function" 노드를 찾아서 추가합니다.
    • 다음과 같이 설정합니다.
      return items.map(item => {
        const games = item.json.data.map(game => {
          return {
            gameId: game.rootPlace.id,
            name: game.name
          };
        });
        return {
          json: {
            games: games
          }
        };
      });

Step 3: 게임 ID 목록을 Google Sheets에 기록하기

  1. Google Sheets Node 추가
    • "Nodes" 패널에서 "Google Sheets" 노드를 찾아서 추가합니다.
    • Google Sheets API를 설정합니다. (OAuth2 인증 필요)
    • 다음과 같이 설정합니다.
      Operation: Append
      Sheet ID: YOUR_SHEET_ID
      Range: YOUR_SHEET_NAME!A1
      Value Input Mode: RAW
      Fields:
        - Game ID: {{$json["gameId"]}}
        - Name: {{$json["name"]}}

Step 4: 워크플로우 연결 및 실행

  1. HTTP Request Node, Function Node, Google Sheets Node를 순서대로 연결합니다.
  2. 워크플로우를 저장하고 실행합니다.
  3. 성공적으로 데이터를 가져와 Google Sheets에 기록했는지 확인합니다.

이 워크플로우를 통해 n8n을 사용하여 사용자 계정에서 생성된 모든 게임의 ID 목록을 자동으로 수집하고 Google Sheets에 기록할 수 있습니다. 필요에 따라 이 작업을 정기적으로 실행하도록 스케줄러 노드를 추가하여 설정할 수도 있습니다.

728x90