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

รับแพ็คเกจ
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
กำหนดภารกิจ
แต่ละภารกิจที่สามารถทำได้จะรวมชุดของงานที่ต้องทำให้เสร็จเพื่อให้ภารกิจเสร็จสมบูรณ์ ตัวเลือกการกำหนดค่า และข้อมูลเมตาดาต้าสำหรับการแสดงผลที่เลือกได้ ซึ่งทั้งหมดนี้สามารถกำหนดได้ภายใน ReplicatedStorage.Missions.Configs.Missions โดยมีประเภทที่ส่งออกจากสคริปต์ Types ในโฟลเดอร์เดียวกัน
ฟิลด์ที่จำเป็น
ฟิลด์ต่อไปนี้เป็นฟิลด์ที่จำเป็นสำหรับแต่ละภารกิจ
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| missionId | string | คีย์หลักในตารางภารกิจทั้งหมด ภารกิจทั้งหมดจะถูกระบุด้วยสตริงที่ไม่ซ้ำกันของตนเอง |
| 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 ถูกตั้งค่าเป็นจริง เวลาที่ผู้เล่นไม่ได้อยู่ในเกมจะนับรวมในการหมดอายุของภารกิจ |
เมตาดาต้า
ภารกิจมีเมตาดาต้าที่ระบุวิธีการแสดงในส่วนติดต่อผู้ใช้ภารกิจ คุณสามารถใช้ฟิลด์ เลือกได้ ต่อไปนี้เพื่อปรับแต่งเมตาดาต้าของมัน
| ชื่อ | ประเภท | คำอธิบาย |
|---|---|---|
| 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
ค่าคงที่เฉพาะแพ็คเกจ ในกรณีนี้คือแพ็คเกจฟีเจอร์ Missions จะอยู่ใน ReplicatedStorage.Missions.Configs.Constants
นอกจากนี้ คุณสามารถค้นหาสตริงสำหรับการแปลที่แยกออกมาในที่เดียว: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings
ปรับแต่งส่วนประกอบ UI
โดยการปรับเปลี่ยนวัตถุในแพ็คเกจ เช่น สี ฟอนต์ และความโปร่งใส คุณสามารถปรับแต่งการนำเสนอภาพของ UI ภารกิจของคุณได้ ตัวอย่างเช่น ใน ReplicatedStorage.Missions.Configs.Constants คุณสามารถเปิดใช้งาน SingleTaskMode เพื่อแสดงแถบความก้าวหน้าสำหรับงานโดยตรงบนภารกิจสำหรับภารกิจที่มีเพียงงานเดียว
นอกจากนี้ หากเกมของคุณมี UI ที่มีอยู่แล้วซึ่งคุณต้องการรวมเข้ากับแพ็คเกจฟีเจอร์ ภารกิจ โมดูล ModuleScript MissionsClient จะมีฟังก์ชันทั้งหมดที่จำเป็นในการส่งข้อมูลเกี่ยวกับภารกิจของผู้เล่นจากเซิร์ฟเวอร์