mcpField
R
roblox-analytics-liveops

roblox-analytics-liveops

github.com/el4cteo数据与数据库54471 次安装2 周前更新
代码仓库

关于 roblox-analytics-liveops

面向 Roblox 开发者的分析与实时运营技能,涵盖服务器端事件记录、运行时配置、实验、徽章和通知,并介绍监测及更新游戏体验的运营模式。

主要功能

  1. 01服务器端分析事件记录
  2. 02运行时体验配置
  3. 03面向玩家的实验
  4. 04徽章与通知流程
  5. 05实时运营排期模式
  6. 06发布与指标监测

适用场景

  1. 01记录经济与进度事件
  2. 02通过玩家分组测试数值调整
  3. 03安排季节活动与商店轮换
  4. 04发布后监测留存率和性能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/el4cteo/roblox-skills --skill roblox-analytics-liveops

安装后在 Claude Code 中输入/roblox-analytics-liveops确认已加载。

详细介绍

分析与实时运营

分析事件(服务器端,AnalyticsService)

标准事件会自动为 Creator Hub 信息中心提供数据(经济、漏斗、进度、自定义)。Fire* 方法已弃用;请使用 Log* 系列方法。

--!strict
local AnalyticsService = game:GetService("AnalyticsService")

local Analytics = {}

-- Currency sources and sinks → Economy dashboard.
function Analytics.coinsEarned(player: Player, amount: number, balance: number, source: string)
	AnalyticsService:LogEconomyEvent(
		player,
		Enum.AnalyticsEconomyFlowType.Source,
		"Coins", -- currency type
		amount,
		balance, -- ending balance
		Enum.AnalyticsEconomyTransactionType.Gameplay.Name, -- or a custom string like "QuestReward"
		source -- item SKU / source id
	)
end

function Analytics.itemBought(player: Player, price: number, balance: number, itemSku: string)
	AnalyticsService:LogEconomyEvent(
		player,
		Enum.AnalyticsEconomyFlowType.Sink,
		"Coins",
		price,
		balance,
		Enum.AnalyticsEconomyTransactionType.Shop.Name,
		itemSku
	)
end

-- First-session tutorial funnel (steps must be sequential, 1-based).
function Analytics.onboarding(player: Player, step: number, stepName: string)
	AnalyticsService:LogOnboardingFunnelStepEvent(player, step, stepName)
end

-- Recurring funnels (e.g. shop purchase flow); share a session id per attempt.
function Analytics.shopFunnel(player: Player, sessionId: string, step: number, stepName: string)
	AnalyticsService:LogFunnelStepEvent(player, "ShopPurchase", sessionId, step, stepName)
end

-- Level progression.
function Analytics.levelStarted(player: Player, level: number)
	AnalyticsService:LogProgressionStartEvent(player, "MainPath", level, `Level{level}`)
end
function Analytics.levelCompleted(player: Player, level: number)
	AnalyticsService:LogProgressionCompleteEvent(player, "MainPath", level, `Level{level}`)
end

-- Anything else: numeric custom events, sliced by up to 3 custom fields.
function Analytics.bossKilled(player: Player, bossId: string, seconds: number)
	AnalyticsService:LogCustomEvent(player, "BossKillTime", seconds, {
		[Enum.AnalyticsCustomFieldKeys.CustomField01.Name] = bossId,
	})
end

return Analytics

指南:

  • 从服务器记录事件(这样更可信,也是这些 API 的要求)。事件名称和自定义字段的值应保持低基数(使用类别 ID,而非自由文本或用户 ID)。
  • 经济事件需要准确的 endingBalance;请记录每个收入来源和支出项,否则信息中心会产生误导。
  • 在开发功能前设计好漏斗(引导步骤、商店流程、首次购买)。
  • AnalyticsService:GetPlayerSegmentsAsync(player) 会在运行时返回细分信息(付费者状态、玩家在你的游戏中的账号年龄……),可用于定制引导和优惠;请使用 pcall 调用。

体验配置(无需重新发布即可更新实时值)

在 Creator Hub(或 Open Cloud)中创建配置(余额数值、功能标志、事件开关等),并在服务器上使用 ConfigService 读取。发布的更改会应用到正在运行的服务器。

--!strict
local ConfigService = game:GetService("ConfigService")

local ok, snapshot = pcall(function()
	return ConfigService:GetConfigAsync()
end)

local function get(key: string, default: any): any
	if not ok then
		return default
	end
	local value = snapshot:GetValue(key)
	return if value == nil then default else value
end

local bossHealth = get("bossHealth", 500)
print("boss health", bossHealth)

if ok then
	snapshot.UpdateAvailable:Connect(function()
		snapshot:Refresh() -- apply newly published values at a safe moment (e.g. between rounds)
		print("new boss health", get("bossHealth", 500))
	end)
end
  • 始终编写默认值:配置可能加载失败。
  • 实验/定向配置会针对每位玩家进行评估:使用 ConfigService:GetConfigForPlayerAsync(player)(GetConfigAsync 会忽略定向设置)。实验运行 14–60 天,最多包含两个变体和一个对照组;请选择目标指标,并注意最小可检测效应。通过 Creator Hub 或 Open Cloud 实验 API(roblox-open-cloud)管理。Early Harm Detection 会在前 24 小时内近乎实时地显示游戏时长、付费者转化率和 ARPU(每 5 分钟更新一次),以便尽早停止有害变体。
  • 在 Studio 中测试:ConfigService:SetTestingValue(key, value) / ClearTestingValue。

徽章

BadgeService:AwardBadgeAsync(userId, badgeId)(在服务器上使用 pcall;如果 UserHasBadgeAsync 或 CheckUserBadgesAsync 已表明玩家拥有徽章,则跳过)。AwardBadge/UserHasBadge 已弃用。徽章是很好的引导和进度里程碑,也会显示在玩家的个人资料中。

体验通知(重新吸引玩家)

  1. 在合适的时机邀请玩家选择接收通知:先调用 ExperienceNotificationService:CanPromptOptInAsync(),再调用 PromptOptIn()(客户端)。
  2. 在 Creator Hub 中创建通知文本;通过 Open Cloud 从你的后端发送通知:POST /cloud/v2/users/{userId}/notifications(例如“你的作物成熟了”“活动现在开始”)。通知有频率限制,且需经过审核;请只发送玩家认为有价值的通知。

实时运营模式

  • 限时活动:在配置中使用 UTC 时间戳设置计划(eventStart、eventEnd);在服务器上与 os.time() 比较;通过属性广播状态;客户端使用 workspace:GetServerTimeNow() 显示倒计时。
  • 赛季通行证/轮换商店:每日商店的轮换种子 = math.floor(os.time() / 86400);在玩家数据中按赛季 ID 存储已领取的奖励。
  • 每日奖励/连续登录:存储 lastClaimDay(UTC 日期编号)和连续登录次数;在服务器上发放奖励。
  • 将内容置于配置标志之后,先通过小规模推出/实验进行验证,再全面推出至 100%。
  • 每次发布后查看 Creator Hub 信息中心:留存率(D1/D7/D30)、会话时长、转化率、ARPPU、漏斗以及性能(崩溃率、FPS、内存)。自 2026 年 10 月 12 日起,发现页的展示量/游玩量采用新的衡量流程(数量更高,游玩完成率略低)——不要将这一变化解读为实际变动。
  • 发布前:在发布流程中邀请最多 10 位好友或群组成员作为早期测试者。
  • 玩家支持(早期访问,年龄验证为 13 岁以上):添加游戏内“报告问题”按钮,调用 SocialService:PromptFeedbackSubmissionAsync({ FeedbackType = Enum.FeedbackType.PlayerSupport })(客户端,使用 pcall);报告会连同设备信息和截图显示在 Creator Hub → Audience → Player Support 中。

Related skills

roblox-monetization (offers, pricing), roblox-data-stores (streaks, season data), roblox-open-cloud (configs/experiments/notifications APIs), roblox-game-systems.

评论

支持 Markdown