el4cteo/roblox-skills

roblox-analytics-liveops

Analytics and live ops - AnalyticsService economy/funnel/onboarding/progression/custom events, player segments, experience configs via ConfigService, A/B experiments, badges, experience notifications, timed events, daily rewards, season passes.

Zobacz źródło

Jak używać

  1. Skopiuj polecenie instalacji i sprawdź źródła przed instalacją we własnym środowisku agenta.
  2. W oryginale sprawdź wymagane narzędzia, dane dostępowe i obsługiwane środowiska.
  3. Opisz dane wejściowe i oczekiwany rezultat; porównaj wynik ze źródłami.
npx skills add https://github.com/el4cteo/roblox-skills --skill roblox-analytics-liveops

Przed rozpoczęciem

  • Instalacja nie obejmuje subskrypcji modelu, limitu API ani uprawnień do plików.
  • Gwiazdki i instalacje pokazują aktywność, a nie niezależny test jakości lub bezpieczeństwa.
Oryginalny dokument Skill

Treść z repozytorium z zachowaniem nagłówków, przykładów, kodu, tabel, linków i obrazów.

Analytics and live operations

Analytics events (server-side, AnalyticsService)

Standard events feed the Creator Hub dashboards automatically (economy, funnels, progression, custom). The Fire* methods are deprecated; use the Log* family.

luau
--!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

Guidelines:

  • Log from the server (trustworthy, and required by these APIs). Keep event names and custom-field

values low-cardinality (IDs of categories, not free text or user IDs).

  • Economy events need accurate endingBalance; log every source and sink or the dashboard misleads.
  • Design funnels before building features (onboarding steps, shop flow, first purchase).
  • AnalyticsService:GetPlayerSegmentsAsync(player) returns segment info (payer status, account age in

your game, ...) at runtime to tailor onboarding and offers — pcall it.

Experience configs (live values without republishing)

Create configs in Creator Hub (or Open Cloud) — balance numbers, feature flags, event toggles — and read them on the server with ConfigService. Published changes arrive in running servers.

luau
--!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
  • Always code a default: configs may fail to load.
  • Experiments / targeted configs evaluate per player: use ConfigService:GetConfigForPlayerAsync(player)

(GetConfigAsync ignores targeting). Experiments run 14–60 days, up to two variants plus control; pick a goal metric and respect the minimum detectable effect. Manage via Creator Hub or the Open Cloud experimentation API (roblox-open-cloud). Early Harm Detection shows near-real-time playtime, payer conversion, and ARPU (every 5 min) for the first 24 h — stop a harmful variant early.

  • Studio testing: ConfigService:SetTestingValue(key, value) / ClearTestingValue.

Badges

BadgeService:AwardBadgeAsync(userId, badgeId) (server, pcall; skip if UserHasBadgeAsync or CheckUserBadgesAsync already says owned). AwardBadge/UserHasBadge are deprecated. Badges are great onboarding and progression milestones and show on players' profiles.

Experience notifications (re-engagement)

  1. Ask players to opt in at a meaningful moment: ExperienceNotificationService:CanPromptOptInAsync() then

PromptOptIn() (client).

  1. Create notification strings in Creator Hub; send from your backend via Open Cloud

POST /cloud/v2/users/{userId}/notifications (e.g. "your crops are ready", "event starts now"). Notifications are rate-limited and moderated; send ones players value.

Live-ops patterns

  • Timed events: schedule with UTC timestamps in a config (eventStart, eventEnd); compare with

os.time() on the server; broadcast state via attributes; clients show countdowns from workspace:GetServerTimeNow().

  • Season pass / rotating shops: rotation seed = math.floor(os.time() / 86400) for daily shops; store

claimed rewards per season id in player data.

  • Daily rewards/streaks: store lastClaimDay (UTC day number) and streak count; grant on the server.
  • Ship content behind config flags, validate with a small rollout/experiment, then roll out to 100%.
  • Watch Creator Hub dashboards: retention (D1/D7/D30), session length, conversion, ARPPU, funnels, and

performance (crash rate, FPS, memory) after every release. Discovery impressions/plays use a new measurement pipeline from Oct 12, 2026 (higher counts, slightly lower play-through rate) — don't read the jump as a real change.

  • Before launch: invite up to 10 friends or group members as early testers from the publish flow.
  • Player Support (early access, age-checked 13+): add an in-game "report a problem" button that calls

SocialService:PromptFeedbackSubmissionAsync({ FeedbackType = Enum.FeedbackType.PlayerSupport }) (client, pcall); reports arrive with device info and screenshots in 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.

Powiązane zadania

z tego samego repozytorium

Więcej Skills

Wszystkie Skills
el4cteo
Społeczność

roblox-data-stores

Persistence and cross-server data - DataStoreService (UpdateAsync, retries, budgets, limits), session locking with ProfileStore, schema migrations, OrderedDataStore leaderboards, MemoryStore queues/sorted maps/hash maps, MessagingService, right-to-be-forgotten. Use when saving player data, building leaderboards or queues, or fixing data loss, duplication, or throttling.

Instalacje / 1h
3
GitHub Stars
77
Aktualizacja
3 lis
el4cteo
Społeczność

roblox-luau

Modern, type-safe Luau for Roblox, covering --!strict and the new type solver, generics, string interpolation, if-expressions, task library, require-by-string, module/OOP patterns, error handling with retries, buffer/vector, and legacy APIs to avoid. Use when writing, refactoring, or explaining any Roblox script, fixing type errors, or modernizing old Lua code.

Instalacje / 1h
3
GitHub Stars
77
Aktualizacja
3 lis
el4cteo
Społeczność

roblox-physics

Physics and spatial queries - Raycast/Blockcast/Spherecast, overlap queries, collision groups, Touched pitfalls, collision summaries (impact point/normal/speed), assemblies and welds, mover constraints replacing BodyMovers, mechanical constraints, network ownership, CFrame math, vehicles/projectiles, and server authority (BindToSimulation, prediction, rollback). Use when moving parts, detecting hits, building vehicles or projectiles, or fixing jitter, flinging, or ownership bugs.

Instalacje / 1h
3
GitHub Stars
77
Aktualizacja
3 lis
el4cteo
Społeczność

roblox-game-systems

Recipes for common systems built on server authority - currency service and leaderstats, XP/levels, round loops with intermission and teams, validated melee/ranged combat, inventory and tools, soft-currency shops, obby checkpoints, daily rewards, pets. Use when implementing or reviewing gameplay systems such as rounds, combat, weapons, inventories, shops, currencies, or progression.

Instalacje / 1h
2
GitHub Stars
66
Aktualizacja
17 paź