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

รับชุดฟีเจอร์
Creator Store เป็นแท็บใน Toolbox ที่คุณสามารถใช้เพื่อค้นหาทรัพยากรทั้งหมดที่สร้างโดย Roblox และชุมชน Roblox สำหรับใช้ในโปรเจกต์ของคุณ รวมถึงโมเดล, รูปภาพ, เมช, เสียง, ปลั๊กอิน, วิดีโอ และทรัพยากรฟอนต์ คุณสามารถใช้ Creator Store เพื่อเพิ่มทรัพยากรหนึ่งหรือมากกว่าโดยตรงลงในประสบการณ์ที่เปิดอยู่ รวมถึงชุดฟีเจอร์ด้วย!
ชุดฟีเจอร์ทุกชุดต้องการ Core ชุดฟีเจอร์เพื่อทำงานได้อย่างถูกต้อง เมื่อคุณมี Core และ Missions ชุดฟีเจอร์ในคลังของคุณแล้ว คุณสามารถนำไปใช้ซ้ำในโปรเจกต์ใดๆ บนแพลตฟอร์ม
ในการนำชุดฟีเจอร์จากคลังของคุณเข้าสู่ประสบการณ์ของคุณ:
เพิ่ม Core และ Missions ลงในคลังของคุณภายใน Studio โดยคลิกที่ลิงก์ Add to Inventory ในชุดของส่วนประกอบถัดไป
จากเมนู Window ของ Studio หรือแถบเครื่องมือ Home เปิด Toolbox
ในหน้าต่าง Toolbox คลิกที่แท็บ Inventory แสดงการจัดเรียง My Models

คลิกที่ไทล์ Feature Package Core จากนั้นคลิกที่ไทล์ Missions Feature Package โฟลเดอร์ของทั้งสองชุดจะแสดงในหน้าต่าง Explorer
ลากโฟลเดอร์ชุดไปไว้ใน ReplicatedStorage
กำหนดภารกิจ
ภารกิจที่ทำได้แต่ละรายการจะรวมถึงชุดของงานที่ต้องทำให้เสร็จเพื่อให้ภารกิจเสร็จสมบูรณ์ ตัวเลือกการกำหนดค่า และ metadata เสริม ซึ่งทั้งหมดสามารถกำหนดได้ภายใน ReplicatedStorage.Missions.Configs.Missions โดยประเภทเหล่านี้จะถูกส่งออกจากสคริปต์ Types ในโฟลเดอร์เดียวกัน
ฟิลด์ที่จำเป็น
ฟิลด์ดังต่อไปนี้เป็นสิ่งจำเป็นสำหรับแต่ละภารกิจ
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| missionId | string | คีย์ในตาราง Missions หลัก ภารกิจทั้งหมดจะถูกระบุด้วยสตริงที่ไม่ซ้ำกันของตนเอง |
| categoryId | string | ภารกิจจะต้องอยู่ในหมวดหมู่และจะถูกจัดกลุ่มตามหมวดหมู่ใน UI |
| tasks | table | รายการของงานที่ผู้เล่นต้องทำให้เสร็จเพื่อให้ภารกิจเสร็จสมบูรณ์ |
เงื่อนไขการปลดล็อก
ตามค่าเริ่มต้น ภารกิจจะปลดล็อกสำหรับผู้เล่นโดยอัตโนมัติและสามารถทำสำเร็จได้เพียงครั้งเดียว อย่างไรก็ตาม คุณสามารถใช้ตัวเลือกการกำหนดค่าที่ เลือกได้ ต่อไปนี้เพื่อเปลี่ยนแปลงพฤติกรรมนี้
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| prerequisites | table | รายการของ missionIds อื่นๆ ที่ต้องทำให้เสร็จก่อนที่จะสามารถปลดล็อกภารกิจนี้ได้ |
| manualOnly | bool | ปิดการปลดล็อกภารกิจโดยอัตโนมัติ ดังนั้นจะต้องมีการเรียกใช้ฟังก์ชันเพื่อปลดล็อกภารกิจ เงื่อนไขการปลดล็อกอื่นๆ ต้องได้รับการตอบสนองด้วย |
| availableAfterUtc | bool | ภารกิจจะไม่สามารถปลดล็อกได้ก่อนเวลาที่กำหนดใน UTC |
| availableBeforeUtc | bool | ภารกิจจะไม่สามารถปลดล็อกได้หลังเวลาที่กำหนดใน UTC หากภารกิจถูกปลดล็อกแต่ไม่ได้เสร็จสมบูรณ์ก่อนเวลานี้ ภารกิจจะล้มเหลว |
| repeatable | bool | ภารกิจจะถูกปลดล็อกอีกครั้งหลังจากที่เสร็จสมบูรณ์ |
| repeatLimit | number | หากภารกิจสามารถทำซ้ำได้ จะไม่สามารถทำซ้ำได้มากกว่านี้ |
| repeatCooldownSeconds | number | หากภารกิจสามารถทำซ้ำได้ จะมีการล่าช้าก่อนที่จะถูกปลดล็อก |
| expireSeconds | number | หากภารกิจถูกปลดล็อกและไม่ได้เสร็จสมบูรณ์ภายในจำนวนวินาทีที่กำหนด มันจะล้มเหลว |
| expireCountOffline | bool | หากภารกิจมี expireSeconds และ expireCountOffline ถูกตั้งค่าเป็นจริง เวลาในขณะที่ผู้เล่นไม่ได้อยู่ในประสบการณ์จะนับเป็นเวลาหมดอายุของภารกิจ |
Metadata
ภารกิจมี metadata ที่ระบุวิธีการแสดงในส่วนติดต่อผู้ใช้ภารกิจ คุณสามารถใช้ฟิลด์ เลือกได้ ดังต่อไปนี้เพื่อปรับแต่ง metadata ของมัน
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| displayName | string | ชื่อที่จะแสดงสำหรับภารกิจในส่วนติดต่อผู้ใช้ แทนที่จะใช้ missionId |
| description | string | ข้อความที่ยาวกว่า ซึ่งให้ข้อมูลเพิ่มเติมหรือบริบทเกี่ยวกับภารกิจ |
| visibleAfterComplete | bool | หากตั้งค่าเป็นจริง ภารกิจจะแสดงในรายการภารกิจแม้ว่าจะเสร็จสมบูรณ์แต่จะถูกทำเครื่องหมายว่าเสร็จสมบูรณ์แล้ว |
| visibleAfterFailed | bool | หากตั้งค่าเป็นจริง ภารกิจจะแสดงในรายการภารกิจแม้ว่าจะล้มเหลวแต่จะถูกทำเครื่องหมายว่าล้มเหลว |
| visibleBeforeUnlocked | bool | หากตั้งค่าเป็นจริง ภารกิจจะแสดงออกมาในรายการภารกิจแม้ว่าจะถูกล็อกอยู่ก่อนที่จะมีสิทธิ์ในการทำสำเร็จ |
| invisibleWhileActive | bool | หากตั้งค่าเป็นจริง ภารกิจจะมองไม่เห็น แม้ว่าจะอยู่ในระหว่างการดำเนินการ |
| rewards | table | รายการข้อมูลการแสดงรางวัล
|
กำหนดงาน
แต่ละภารกิจสามารถมีงานได้ศูนย์หรือมากกว่า หากภารกิจมีงานศูนย์ งานนั้นสามารถเคลมได้ทันทีหลังจากที่ปลดล็อก หากภารกิจมีหนึ่งงานหรือมากกว่า เมื่องานเสร็จสมบูรณ์ ผู้เล่นสามารถเก็บรางวัลใดๆ ที่เกี่ยวข้องกับภารกิจนั้นได้ งานแต่ละงานมี taskId ซึ่งคือคีย์ที่เกี่ยวข้องกับงานสำหรับภารกิจที่กำหนด
งานมีอยู่สองประเภท:
- Timed Tasks - ช่วยให้คุณเริ่มและหยุดงานในช่วงเวลาที่แตกต่างกัน จำนวนเวลาหนึ่งต้องผ่านไปในขณะที่ตัวจับเวลาในงานกำลังทำงาน จากนั้นงานจะเสร็จสมบูรณ์
- Count Tasks - ช่วยให้คุณเพิ่มหรือกำหนดความก้าวหน้าของงาน เมื่อความก้าวถึงค่าที่ตั้งไว้ งานจะเสร็จสมบูรณ์
ทั้งสองประเภทของงานมีฟิลด์ดังต่อไปนี้:
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| taskType | string | ระบุว่าประเภทของงานคือการนับหรือเวลานั้นเอง |
| counter | object | (เลือกได้) ตัวนับที่งานนี้ติดตาม ตัวนับคือน้ำหนักที่เก็บข้อมูลที่คงอยู่สำหรับจำนวนหนึ่งหรือการจับเวลา งานหลายงานสามารถติดตามตัวนับเดียวกันได้ เช่น หากมีงานมากกว่าหนึ่งงานติดตามจำนวนเหรียญที่ผู้เล่นเก็บได้ ก็สามารถใช้ “เหรียญ” ตัวยับยั้งเดียวกันได้ งานเหล่านี้สามารถติดตามเหรียญใหม่ที่เก็บได้ ตั้งแต่เริ่มต้นศูนย์ หรือจะเริ่มนับจากค่าของตัวนับ (เหรียญทั้งหมดที่เก็บได้แล้ว)
|
| metadata | object | (เลือกได้) ข้อมูลเกี่ยวกับวิธีการแสดงงานใน UI
|
| callToAction | object | (เลือกได้) ปุ่มที่กระตุ้นฟังก์ชันการเรียกกลับ
|
ฟิลด์ของงานนับ
งานนับมีค่าที่จำเป็น เมื่อความก้าวหน้าของงานตรงตามจำนวนนี้ งานจะเสร็จสมบูรณ์
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| goalCount | number | (เลือกได้) ความก้าวหน้าที่ต้องการเพื่อให้เสร็จสมบูรณ์ |
ฟิลด์ของงานที่ใช้เวลา
งานที่ใช้เวลามีจำนวนเป้าหมายของเวลาที่ใช้และจะเริ่มและหยุด เมื่อปริมาณเวลาที่กำหนดถูกต้อง งานจะเสร็จสมบูรณ์
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| goalSeconds | number | จำนวนวินาทีที่ต้องใช้เพื่อให้ภารกิจเสร็จสมบูรณ์ |
| startImmediately | bool | หากควรเริ่มนับเวลาทันทีที่ปลดล็อก แทนที่จะเริ่มหลังจากที่เริ่ม |
| includesOfflineTime | bool | หากงานจะรวมเวลาที่ใช้ในขณะที่ผู้เล่นไม่ได้อยู่ในประสบการณ์ |
กำหนดหมวดหมู่
หมวดหมู่ไม่จำเป็นต้องถูกกำหนดอย่างชัดเจนเพื่อที่จะใช้ หมวดหมู่สำหรับภารกิจมีค่าตั้งต้นที่จะถูกใช้ อย่างไรก็ตาม คุณสามารถกำหนดค่าเหล่านี้ใน ReplicatedStorage.Missions.Configs.Categories เพื่อเพิ่มเอฟเฟกต์ที่เพิ่มเติมให้กับหมวดหมู่ หมวดหมู่จะถูกระบุด้วย CategoryIds ที่ไม่ซ้ำกัน ซึ่งเป็นหมายเลขเดียวกันที่อ้างอิงในการกำหนดค่าภารกิจ
| ชื่อ | ประเภท | คำบรรยาย |
|---|---|---|
| repeatDelaySeconds | number | (เลือกได้) หากตั้งค่า ภารกิจทั้งหมดในหมวดหมู่จะถูกรีเซ็ตทุกครั้งที่เวลาที่กำหนดผ่านไป และสามารถปลดล็อก ทำสำเร็จ และเคลมรางวัลได้อีกครั้ง ซึ่งแยกต่างหากจากภารกิจที่ทำซ้ำได้ซึ่งสามารถทำซ้ำได้ภายในการทำซ้ำของหมวดหมู่ที่กำหนด |
รวมตรรกะเซิร์ฟเวอร์
ดูที่ ReplicatedStorage.Missions.Server.Examples.MissionsExample ซึ่งจะแสดงวิธีที่เซิร์ฟเวอร์ของคุณจะโต้ตอบกับชุดฟีเจอร์ ภารกิจ
คุณจะต้องเชื่อมต่อสี่สิ่งหลังจากลากชุดฟีเจอร์ ภารกิจ เข้าประสบการณ์ของคุณ:
กำหนดภารกิจในการกำหนดค่าภารกิจของคุณ
เพิ่มตรรกะในประสบการณ์ของคุณเพื่ออัปเดตความก้าวหน้าของงานหรือจำนวนตัวนับที่ติดตามความก้าวหน้า
README-- เพิ่มความก้าวหน้าในภารกิจ Jumping กับรายการงาน JumpsMissions.addProgressToTask(player, "Jumping", "Jumps", 1)-- เริ่มจับเวลาในภารกิจ BattlingTime กับงาน TimeInBattleMissions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- หยุดจับเวลาในภารกิจ BattlingTime กับงาน TimeInBattleMissions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- เพิ่มความก้าวหน้าในงานทั้งหมดที่ติดตามตัวนับ JumpsCounterSystem.addCounter(player, "Jumps", 1)-- เริ่มจับเวลาในงานที่ใช้เวลาทั้งหมดที่ติดตามตัวนับ TimeInBattleCounterSystem.startTimer(player, "TimeInBattle")-- หยุดจับเวลาในงานที่ใช้เวลาทั้งหมดที่ติดตามตัวนับ TimeInBattleCounterSystem.stopTimer(player, "TimeInBattle")ตั้งค่าตัวจัดการการทำภารกิจเสร็จสมบูรณ์ และตัวจัดการการปลดล็อกหรือล้มเหลวตามเลือก ใช้ตัวจัดการการทำภารกิจเสร็จสมบูรณ์เพื่อมอบรางวัลจากภารกิจในประสบการณ์ของคุณ
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} ทำภารกิจ {missionId} เสร็จสมบูรณ์`)-- มอบรางวัลให้กับผู้เล่นendMissions.setCompletionHandler(missionId, completeHandler)ปลดล็อกภารกิจที่ไม่ได้ปลดล็อกโดยอัตโนมัติ ชุดฟีเจอร์ ภารกิจ จะตรวจสอบให้แน่ใจว่าข้อกำหนดของภารกิจทั้งหมดได้รับการตอบสนองก่อนที่ภารกิจจะเสร็จสมบูรณ์ และรางวัลของมันอยู่ในสภาวะที่สามารถเก็บได้
READMEMissions.unlockMission(player, "Manual")
กำหนดค่าค่าคงที่
ค่าคงที่สำหรับชุดฟีเจอร์ Core จะอยู่ในสองตำแหน่ง:
ค่าคงที่ที่แชร์จะอยู่ใน ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants
ค่าคงที่เฉพาะชุดฟีเจอร์ สำหรับชุดฟีเจอร์ ภารกิจ จะอยู่ใน ReplicatedStorage.Missions.Configs.Constants
นอกจากนี้ คุณสามารถค้นหาสตริงสำหรับการแปลที่แยกออกไปในที่เดียว: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings
ปรับปรุงส่วนประกอบ UI
โดยการปรับแต่งวัตถุของชุดฟีเจอร์ เช่น สี ฟอนต์ และความโปร่งใส คุณสามารถปรับเปลี่ยนการนำเสนอภาพของ UI ภารกิจของคุณได้ ตัวอย่างเช่น ใน ReplicatedStorage.Missions.Configs.Constants คุณสามารถเปิดใช้งาน SingleTaskMode เพื่อแสดงแถบความก้าวหน้าสำหรับงานโดยตรงบนภารกิจสำหรับภารกิจที่มีเพียงงานเดียวเท่านั้น
นอกจากนี้ หากประสบการณ์ของคุณมี UI ที่มีอยู่แล้วซึ่งคุณต้องการรวมกับชุดฟีเจอร์ ภารกิจ สคริปต์โมดูลในไคลเอนต์ ModuleScript MissionsClient จะมีฟังก์ชันทั้งหมดที่จำเป็นในการส่งข้อมูลเกี่ยวกับภารกิจของผู้เล่นจากเซิร์ฟเวอร์