로블록스(Roblox) 게임 상태 및 메트릭 정보 API 통한 수집 자동화
로블록스(Roblox)에서는 API를 통해 여러 가지 게임 상태 정보 및 메트릭 정보를 수집할 수 있습니다. Roblox의 API는 크게 다음과 같은 부분으로 나눌 수 있습니다.
- Roblox Web API: 사용자 데이터, 게임 내 아이템, 통계 등과 같은 정보를 웹 서비스를 통해 조회할 수 있게 해주는 API입니다.
- 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 코드를 작성하려면, 다음과 같은 작업이 필요합니다.
- Roblox API를 통해 게임 메트릭 데이터를 수집합니다.
- Google Sheets API를 사용하여 데이터를 시트에 기록합니다.
이 작업을 수행하기 위해서는 Python 환경에서 requests
및 gspread
라이브러리를 사용합니다. 또한, Google Sheets API에 접근하기 위해 OAuth 2.0 인증이 필요합니다.
- Google Sheets API 사용 설정 및 인증 파일 다운로드
- Google Cloud Console에서 프로젝트를 만들고 Google Sheets API를 활성화합니다.
- OAuth 2.0 클라이언트 ID를 생성하고
credentials.json
파일을 다운로드합니다.
- 필요한 라이브러리 설치:
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.")
- Google Sheets API 인증 설정
credentials.json
파일을 사용하여 Google Sheets API에 접근할 수 있도록 인증을 설정합니다.
- Roblox API를 통해 게임 메트릭 수집
- 주어진 게임 ID 목록을 순회하면서 각 게임의 일일 방문자 수, 현재 사용자 수, 총 플레이 시간 등의 메트릭 정보를 수집합니다.
- 수집한 데이터를 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에서 데이터 가져오기
- 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" 노드를 사용할 수 있습니다.
- 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를 사용하여 데이터 기록하기
- 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에서 제공하는 사용자 생성 게임 목록을 확인하는 엔드포인트는 다음과 같습니다.
- 사용자 유니버스 ID 조회
- Endpoint:
https://games.roblox.com/v2/users/{userId}/games
- 이 API는 사용자의 고유 ID(userId)를 사용하여 해당 사용자가 만든 게임들의 유니버스 ID를 반환합니다.
- Endpoint:
n8n을 사용하여 이 API를 호출하고, 반환된 게임 ID 목록을 수집하는 방법입니다.
Step 1: HTTP Request Node를 사용하여 사용자 게임 목록 조회
- HTTP Request Node 추가
- "Nodes" 패널에서 "HTTP Request" 노드를 찾아서 워크플로우에 드래그 앤 드롭합니다.
- Roblox API의 엔드포인트 URL을 설정합니다.
- 예시:
Method: GET URL: https://games.roblox.com/v2/users/{YOUR_USER_ID}/games
- HTTP Request Node 설정
URL
에서{YOUR_USER_ID}
를 실제 사용자 ID로 대체합니다.- 필요한 경우
Headers
에 인증 토큰을 추가합니다.{ "Cookie": ".ROBLOSECURITY=YOUR_ROBLOSECURITY_COOKIE" }
Step 2: 데이터 변환 및 게임 ID 추출
- 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에 기록하기
- 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: 워크플로우 연결 및 실행
- HTTP Request Node, Function Node, Google Sheets Node를 순서대로 연결합니다.
- 워크플로우를 저장하고 실행합니다.
- 성공적으로 데이터를 가져와 Google Sheets에 기록했는지 확인합니다.
이 워크플로우를 통해 n8n을 사용하여 사용자 계정에서 생성된 모든 게임의 ID 목록을 자동으로 수집하고 Google Sheets에 기록할 수 있습니다. 필요에 따라 이 작업을 정기적으로 실행하도록 스케줄러 노드를 추가하여 설정할 수도 있습니다.