เหตุการณ์ฟunnel ช่วยให้คุณติดตามความก้าวหน้าของผู้ใช้ผ่านขั้นตอนที่สำคัญในเกมของคุณ ซึ่งรวมถึง:
- การเริ่มต้น — ผู้ใช้จะออกจากเกมที่ไหนเมื่อต้องเริ่มเล่นเกมของคุณ?
- ความก้าวหน้า — ผู้ใช้จะหยุดพัฒนาผ่านเกมของคุณที่ไหน?
- ร้านค้า — ผู้ใช้จะละทิ้งการซื้อที่ไหน?
เมื่อเกมของคุณเริ่มติดตามเหตุการณ์ฟunnel คุณจะปลดล็อกหน้าฟunnel บนแดชบอร์ดการวิเคราะห์ใน Creator Hub คุณสามารถเพิ่มแท็บลงในแดชบอร์ดได้สูงสุดถึงสิบฟunnel
ติดตามเหตุการณ์ฟunnel
ในการติดตามเหตุการณ์ฟunnel ให้ระบุฟunnel ที่สำคัญที่สุดในเกมของคุณและแบ่งออกเป็นขั้นตอน เนื่องจากเป้าหมายคือการเข้าใจพฤติกรรมของผู้เล่น ขั้นตอนเหล่านี้มักเกี่ยวข้องกับการกระทำหรือความสำเร็จบางอย่าง
ใน RPG คุณอาจมีขั้นตอนสำหรับเข้าร่วมเกม หนึ่งสำหรับเลือกคลาส อีกหนึ่งสำหรับออกจากห้องเริ่มต้น และอื่นๆ คุณมักจะเรียกใช้ LogFunnelStepEvent() หรือ LogOnboardingFunnelStepEvent() หลังจาก ที่ผู้เล่นทำขั้นตอนเสร็จ แต่สิ่งที่สำคัญที่สุดคือการทำให้แน่ใจว่าคุณเรียกใช้วิธีเหล่านี้ในเวลาที่สม่ำเสมอและใช้ชื่อที่เข้าใจง่าย
การเริ่มต้นของคุณเป็นสถานที่ที่ดีในการเริ่มติดตามเหตุการณ์ฟunnel เนื่องจากเป็นที่ที่คุณอาจสูญเสียผู้ใช้ส่วนใหญ่
ติดตามฟunnel แบบครั้งเดียว
ฟunnel แบบครั้งเดียวติดตามเหตุการณ์การแปลงที่เกิดขึ้นเพียงครั้งเดียวต่อผู้ใช้
ตัวอย่างที่พบบ่อยคือ ฟunnel การเริ่มต้น ซึ่งมีความสำคัญในการเข้าใจวิธีการปรับปรุงการรักษาผู้ใช้ใหม่และระยะเวลาการเล่นในเกมของคุณ ตัวอย่างต่อไปนี้เป็นฟunnel การเริ่มต้นสำหรับ Plant เกมประเภท tycoon ที่ผู้ใช้ใหม่เข้าฟาร์ม ปลูกเมล็ด น้ำต้นไม้ และอื่นๆ ตามลำดับ:
ติดตามขั้นตอนการเริ่มต้นใน Plantlocal AnalyticsService = game:GetService("AnalyticsService")-- บันทึกขั้นตอนแรกของ FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- หมายเลขขั้นตอน"ในฟาร์ม" -- ชื่อขั้นตอน)-- บันทึกขั้นตอนที่สองAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- หมายเลขขั้นตอน"ปลูกเมล็ด" -- ชื่อขั้นตอน)
ติดตามฟunnel ที่เกิดขึ้นซ้ำ
ฟunnel ที่เกิดขึ้นซ้ำติดตามเหตุการณ์การแปลงที่เกิดขึ้นหลายครั้งต่อผู้ใช้
ตัวอย่างที่พบบ่อยคือ ฟunnel ร้านค้า ซึ่งช่วยให้คุณเข้าใจวิธีปรับปรุงการแปลงผู้ที่จ่ายในเกม ARPPU และรายได้ ตัวอย่างต่อไปนี้เป็นฟunnel ร้านค้า ซึ่งผู้ใช้เปิดร้าน ดูสินค้า เพิ่มสินค้าลงในตะกร้า และอื่นๆ
ใช้ funnelSessionId เพื่อแยกแยะระหว่างการเชื่อมต่อที่แตกต่างกันของผู้ใช้คนเดียวในฟunnel ที่เกิดขึ้นซ้ำ เช่น การเปิดร้านซ้ำหลายครั้งในช่วงเซสชันเดียว
ติดตามขั้นตอนร้านค้าlocal AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")local funnelSessionId = HttpService:GenerateGUID()-- บันทึกเมื่อผู้ใช้เปิดร้านAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ชื่อฟunnel ที่ใช้ในการจัดกลุ่มขั้นตอนfunnelSessionId, -- ID เซสชันฟunnel สำหรับเซสชันการชำระเงินที่ไม่ซ้ำกันนี้1, -- หมายเลขขั้นตอน"เปิดร้าน" -- ชื่อขั้นตอน)-- บันทึกเมื่อผู้ใช้ดูสินค้าAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ชื่อฟunnel ที่ใช้ในการจัดกลุ่มขั้นตอนfunnelSessionId, -- ID เซสชันฟunnel สำหรับเซสชันการชำระเงินที่ไม่ซ้ำกันนี้2, -- หมายเลขขั้นตอน"ดูสินค้า" -- ชื่อขั้นตอน)-- บันทึกเมื่อผู้ใช้เพิ่มสินค้าลงในตะกร้าAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ชื่อฟunnel ที่ใช้ในการจัดกลุ่มขั้นตอนfunnelSessionId, -- ID เซสชันฟunnel สำหรับเซสชันการชำระเงินที่ไม่ซ้ำกันนี้3, -- หมายเลขขั้นตอน"เพิ่มลงในตะกร้า" -- ชื่อขั้นตอน)
การใช้ funnelSessionId
เมื่อดำเนินการฟunnel funnelSessionId สามารถช่วยให้คุณติดตามเหตุการณ์ของคุณ แต่ไม่จำเป็นต้องใช้ในทุกกรณี สามารถใช้แนวทางต่อไปนี้:
- ฟunnel แบบครั้งเดียว - คุณไม่จำเป็นต้องใช้ funnelSessionId สำหรับฟunnel แบบครั้งเดียว เพราะมันเกิดขึ้นเพียงครั้งเดียวต่อผู้ใช้
- ฟunnel ร้านค้า - ใช้ funnelSessionId เพื่อแยกแยะระหว่างการเชื่อมต่อที่แตกต่างกันของผู้ใช้คนเดียวในฟunnel ที่เกิดขึ้นซ้ำ เช่น การเปิดร้านในช่วงเซสชันเดียวใน ตัวอย่างก่อนหน้า ในกรณีเช่นนี้ ที่ผู้เล่นอาจเปิดร้านหลายครั้งในเซสชันเดียว ควรใช้ GUID เป็น funnelSessionId
- การอัปเกรดสินค้า - ใช้ funnelSessionId เพื่อแยกแยะระหว่างเส้นทางการอัปเกรดสินค้าที่แตกต่างกัน โดยปกติมักจะมีระยะเวลานานกว่าหนึ่งเซสชันการเล่นเดียว แทนที่จะใช้ GUID เช่นกรณีฟunnel ร้านค้า คุณมักจะสามารถสร้างคีย์ที่ไม่ซ้ำกันโดยอิงจากสินค้าที่ถูกอัปเกรด เช่น: <playerId>-<itemId>.
ขั้นตอนเริ่มต้น
ฟunnel จะเริ่มเมื่อมีการบันทึกขั้นตอนแรก หากคุณต้องการเริ่มฟunnel ทันทีเมื่อผู้เล่นเข้าร่วม ให้บันทึกขั้นตอนแรกในเหตุการณ์ PlayerAdded.
บันทึกขั้นตอนแรกในเหตุการณ์ PlayerAdded
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- หมายเลขขั้นตอน
"ผู้เล่นเข้าร่วม" -- ชื่อขั้นตอน
)
end)
ขั้นตอนที่ซ้ำกัน
หากผู้ใช้ทำขั้นตอนซ้ำในฟunnel ฟunnel จะพิจารณาเพียงครั้งแรกของขั้นตอนเท่านั้น ตัวอย่างเช่น หากผู้ใช้บันทึกขั้นตอน 2 ของฟunnel สองครั้ง ฟunnel จะนับเพียงครั้งแรกของขั้นตอน 2 เท่านั้น คุณไม่จำเป็นต้องดำเนินการพิเศษใด ๆ ในการจัดการฟunnel แบบครั้งเดียวสำหรับผู้เล่นที่ตัดการเชื่อมต่อและเชื่อมต่อใหม่ และ funnelSessionId จะจัดการฟunnel ที่เกิดขึ้นซ้ำ
ขั้นตอนที่ทำซ้ำจะถูกมองข้ามโดยฟunnel แต่ยังคงถูกบันทึกและมีส่วนทำให้เกิด การจำกัดอัตราทั่วไป
ขั้นตอนที่ข้าม
หาก auser ข้ามขั้นตอนในฟunnel ขั้นตอนก่อนหน้าอัตโนมัติจะสมบูรณ์ ตัวอย่างเช่น หากคุณมีฟunnel ที่มีขั้นตอน 1, 2 และ 3 และคุณบันทึกขั้นตอน 3 โดยไม่บันทึกขั้นตอน 1 หรือ 2 ฟunnel จะถือว่าเสร็จสิ้นขั้นตอน 1 และ 2.
ใช้ตัวกรองฟunnel
Roblox มีตัวกรองที่ช่วยให้คุณวิเคราะห์ข้อมูลฟunnel ของคุณ สิ่งเหล่านี้รวมถึงข้อมูลผู้เล่นและข้อมูลอุปกรณ์ และคุณสามารถส่งข้อมูลที่กำหนดเองได้ด้วย ในบางกรณี สถานะของผู้เล่นอาจเปลี่ยนแปลงระหว่างฟunnel เช่น เมื่อผู้เล่นเปลี่ยนอุปกรณ์จากมือถือไปยังเดสก์ทอป.
เพื่อหลีกเลี่ยงการนับฟunnel ซ้ำ ตัวกรอง ใช้ได้กับขั้นตอนแรกเท่านั้น ของฟunnel ซึ่งหมายความว่าหากผู้เล่นเปลี่ยนอุปกรณ์ระหว่างฟunnel ฟunnel จะได้รับการระบุให้กับอุปกรณ์ของพวกเขาในช่วงเวลาที่พวกเขาเข้าสู่ฟunnel.
คล้ายกัน ฟunnel จะแสดงโดยกลุ่ม ซึ่งหมายความว่าหากผู้เล่นเข้าฟunnel ในวันที่ 6/19 ฟunnel จะได้รับการระบุให้กับกลุ่มวันที่ 6/19 แม้ว่าพวกเขาจะเสร็จสมบูรณ์ฟunnel ในวันที่ 6/20.
แก้ไขฟunnel
หลังจากที่คุณทำการอัปเดตขั้นตอนฟunnel ของคุณ เป็นสิ่งสำคัญที่ต้องตั้งค่าช่วงวันที่ที่ถูกต้องเพื่อดูฟunnel ล่าสุด หากวันที่ปัจจุบันเป็นวันที่ 6/21 และคุณได้ทำการอัปเดตขั้นตอนที่ 2 ของฟunnel การเริ่มต้นในวันที่ 6/14 คุณควรตั้งค่าช่วงวันที่เป็นวันที่ 6/14 – 6/21 เพื่อดูฟunnel ล่าสุด.
หากคุณเลือกช่วงวันที่ที่รวมการอัปเดตขั้นตอนฟunnel การเตือนจะปรากฏบนขั้นตอนที่เกี่ยวข้อง:

ปกป้องฟunnel ของคุณจากผู้หลอกลวง
เพื่อให้ข้อมูลของคุณสะอาด สิ่งสำคัญคือการเพิ่มระดับการตรวจสอบข้อมูลในโค้ดเซิร์ฟเวอร์ของคุณเพื่อป้องกันไม่ให้ผู้หลอกลวงส่งข้อมูลที่ไม่ถูกต้องไปยังบริการการวิเคราะห์ของคุณ
ตัวอย่างเช่น หากคุณมีฟunnel การเริ่มต้นที่มีสามขั้นตอน คุณสามารถใช้ RemoteEvent สำหรับไคลเอนต์เพื่อแจ้งเซิร์ฟเวอร์เมื่อผู้เล่นทำแต่ละขั้นตอนเสร็จสมบูรณ์ และเพิ่มการตรวจสอบเซิร์ฟเวอร์เพื่อให้แน่ใจว่าหมายเลขขั้นตอนนั้นถูกต้องก่อนที่จะบันทึกเหตุการณ์:
โค้ดเหตุการณ์ด้านไคลเอนต์
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local function fireOnboardingEvent(step: number)
onboardingEvent:FireServer({ step = step })
end
fireOnboardingEvent(1)
fireOnboardingEvent(2)
fireOnboardingEvent(10) -- ขั้นตอนที่ไม่ถูกต้อง
โค้ดเหตุการณ์ด้านเซิร์ฟเวอร์
local AnalyticsService = game:GetService("AnalyticsService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local maxStep = 3
local function onPlayerEventFired(player: Player, args: { step: number })
local step = args.step
if(step > maxStep) then
warn(`ขั้นตอนการเรียนรู้ที่ไม่ถูกต้อง {step} ได้รับจากไคลเอนต์.`)
return
end
print(`{player.Name} ทำขั้นตอนเสร็จสิ้น: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
ใช้ฟิลด์ที่กำหนดเอง
เหตุการณ์ฟunnel ยังช่วยให้คุณแบ่งข้อมูลออกเป็นฟิลด์ที่กำหนดเองเพื่อสนับสนุนการเปรียบเทียบที่ง่ายขึ้นระหว่างกลุ่ม ตัวอย่างเช่น คุณสามารถติดตามว่าสินค้าเริ่มต้นใดที่ให้ผู้เล่นมีความก้าวหน้าที่ดีที่สุด หรือแนบแมพที่แตกต่างเพื่อดูว่าแมพใดมีวงจรเกมที่ดีกว่าคนอื่น.

สำหรับข้อมูลเพิ่มเติม ดูที่ ฟิลด์ที่กำหนดเอง.
ใช้ฟunnel เพื่อพัฒนาเกมของคุณ
หนึ่งในฟunnel ที่สำคัญที่สุดในการติดตามคือการเริ่มต้น เพราะเกมหลายเกมต้องดิ้นรนกับการรักษาผู้ใช้ใหม่และการมีส่วนร่วม.
ในฟunnel การเริ่มต้นสำหรับ Plant ด้านล่าง การลดลงที่ใหญ่ที่สุดคือขั้นตอน 2 ("ปลูกเมล็ด").

ตามข้อมูลนี้ คุณสามารถ:
- เพิ่มตัวบ่งชี้บริบทเพื่อช่วยให้ผู้ใช้ปลูกเมล็ดได้ดีขึ้นเมื่อพวกเขาเริ่มต้น.
- ออกแบบประสบการณ์ผู้ใช้ใหม่ที่ต้องการให้ผู้ใช้ปลูกเมล็ดและเติบโตเป็นต้นไม้ที่ประสบความสำเร็จก่อนที่จะแสำรวจส่วนอื่น ๆ ของเกม คุณสามารถปรับปรุงเหตุการณ์นี้ได้โดยการสร้าง องค์ประกอบย้อนกลับในเชิงบวก หรือใช้เทคนิคการออกแบบเกมอื่น ๆ.
