การกำหนดค่า
การกำหนดค่าพื้นฐาน
| การตั้งค่า | ค่าเริ่มต้น | ค่าต่ำสุด | ค่าสูงสุด |
|---|---|---|---|
| จำนวนทีม | 3 | 1 | 3 |
| จำนวนผู้เล่น | 3 | 1 | 4 |
| จำนวนรอบ | 4 | 1 | 7 |
| กระสุนไม่จำกัด | true | - | - |
| ไอซ์วอลล์ไม่จำกัด | false | - | - |
| อาวุธปาไม่จำกัด | false | - | - |
การเปลี่ยนค่าข้างต้นสามารถทำได้ แต่หากเกินค่าสูงสุดหรือต่ำกว่าค่าต่ำสุด อาจทำให้ UI และระบบตรรกะบางอย่างทำงานผิดปกติได้
การปรับตำแหน่งของแผนที่
เพื่อที่จะย้ายตำแหน่งของแผนที่ ไปยังที่ใหม่ จำเป็นต้องย้ายวัตถุ (Level Objects) ต่อไปนี้ไปยังตำแหน่งใหม่ โดยค่าเริ่มต้นวัตถุเหล่านี้จะอยู่ที่ Katulistiwa

เพียงย้ายวัตถุเหล่านี้ไปยังตำแหน่งใหม่ แผนที่ทั้งหมดจะถูกย้ายตามไปด้วย
| วัตถุในเลเวล (Level Object) | รูปภาพ | จำนวน |
|---|---|---|
| โซนปลอดภัย (Safe Zone) | ![]() |
1 |
| จุดเกิดและตู้กดอัตโนมัติ (Spawn Points & Vending Machine) | ![]() |
1 ต่อทีม |
นอกจากนี้ หากต้องการเปลี่ยนชื่อสถานที่ที่แสดงบน UI ดังภาพ:

สามารถปรับได้โดยไปที่ Property Settings -> Overall Rules -> LocationName

การตั้งค่าโซนปลอดภัย (Safe Zone)
โซนปลอดภัยจะมีทั้งหมด 2 ขั้นตอน:
- การบีบครั้งแรกจะเกิดขึ้นตามระยะเวลาที่กำหนด โดยศูนย์กลางของโซนจะอยู่ที่เดิม
- การบีบครั้งที่สองจะเกิดขึ้นโดยศูนย์กลางจะย้ายจากตำแหน่งแรกไปยังตำแหน่งใหม่ พร้อมทั้งรัศมีลดลงจนถึง 0
ระยะที่ 1 ของโซนปลอดภัย (Stage 1 Safe Zone)
การตั้งค่าหลักของโซนปลอดภัยในขั้นตอนนี้สามารถปรับได้จากวัตถุ Safe Zone ในเลเวล

ค่าต่อไปนี้สามารถปรับเปลี่ยนได้ตามข้อจำกัด:
| คุณสมบัติ | ค่าเริ่มต้น | ค่าต่ำสุด | ค่าสูงสุด |
|---|---|---|---|
| รัศมีเริ่มต้น | 35.00 | - | - |
| รัศมีสิ้นสุด | 15.00 | - | - |
| เวลาเริ่มต้น (วินาที) | 0 | - | น้อยกว่าระยะเวลาของแผนที่ |
| เวลาเริ่มบีบ (วินาที) | 5 | - | น้อยกว่าระยะเวลาของแผนที่ |
| ระยะเวลาบีบ (วินาที) | 30 | - | น้อยกว่าระยะเวลาของแผนที่ |
| ช่วงเวลาความเสียหาย (วินาที) | 2 | - | - |
| ความเสียหาย | 20 | - | - |
| เวลาเสร็จสิ้น (วินาที) | 40 | - | น้อยกว่าระยะเวลาของแผนที่ |
หากเวลาเริ่มต้นหรือเวลาสิ้นสุดมีค่ามากกว่าหรือเท่ากับระยะเวลาของแผนที่ จะไม่มีโซนปลอดภัยระยะที่ 2
ระยะที่ 2 ของโซนปลอดภัย (Stage 2 Safe Zone)
คุณสมบัติทั้งหมดของโซนปลอดภัยระยะที่ 2 สามารถตั้งค่าได้จาก Overall Rules ภายใต้ Property Settings โดยสามารถปรับค่าดังนี้:
| คุณสมบัติ | ค่าเริ่มต้น | ค่าต่ำสุด | ค่าสูงสุด |
|---|---|---|---|
| SZMoveMin | Vector3{30, 0, 30} | Vector3{0, 0, 0} | - |
| SZMoveMax | Vector3{50, 0, 50} | Vector3{0, 0, 0} | - |
| SZMoveDuration(วินาที) | 100 | 0 | น้อยกว่าระยะเวลาของแผนที่ |
| SZDamage | 40 | 1 | - |
SZMoveMin และ SZMoveMax กำหนดระยะที่ศูนย์กลางของโซนปลอดภัยในระยะที่ 2 จะย้ายไป โดยค่าเริ่มต้นโซนจะย้ายศูนย์กลางไปทางแกน X และ Z ประมาณ 30 ถึง 50 หน่วย
SZMoveDuration ใช้กำหนดระยะเวลาที่โซนปลอดภัยจะเคลื่อนที่และหดตัว
การปรับอุปกรณ์ของผู้เล่น
อุปกรณ์เริ่มต้นของผู้เล่น
อุปกรณ์เริ่มต้นสามารถเปลี่ยนได้ใน Script ของ Player โดยอยู่ในฟังก์ชัน Configure

จำนวนของวัตถุขว้าง (Throwables)
จำนวนของวัตถุขว้างสามารถปรับได้ใน Property Settings ภายใต้ Player Rules โดยสามารถกำหนดค่าได้ดังนี้:
- GlooWallNum: จำนวนไอซ์วอลล์ต่อรอบ
- GrenadeNum: จำนวนระเบิดต่อรอบ
- GlooMelterNum: จำนวนระเบิดกัดกร่อนต่อรอบ
- FlashFreezeNum: จำนวนระเบิดน้ำแข็งต่อรอบ
- InhalerNum: จำนวน Inhaler ต่อรอบ
- MedKitNum: จำนวนชุดพยาบาลต่อรอบ
- SuperMedKitNum: จำนวนชุดพยาบาลพิเศษต่อรอบ

การปรับร้านค้าของผู้เล่น
โดยค่าเริ่มต้น ตู้กดอัตโนมัติทั้งหมดในเทมเพลตจะใช้ร้านค้าเดียวกัน ซึ่งสามารถแก้ไขเนื้อหาได้โดยทำตามขั้นตอน:
คลิกที่ More จากนั้นเลือก Store and economy

จากนั้นคลิกที่ไอคอนนี้เพื่อเข้าสู่หน้าต่างแก้ไขร้านค้า:

เมื่อเปิด UI นี้ จะสามารถแก้ไขรายละเอียดของร้านค้าได้เพิ่มเติม

การตั้งค่าการสุ่มจุดเกิดของผู้เล่น
โดยค่าเริ่มต้น ตำแหน่งเกิดของแต่ละทีมจะสุ่มเปลี่ยนในแต่ละรอบ ซึ่งสามารถเปิดหรือปิดได้จากคอมโพเนนต์ Game Entity

รายการของจุดเกิดทั้งหมดที่ใช้ในการสุ่มอยู่ในฟังก์ชัน Configure ของ Global Script
สามารถเพิ่ม หรือลบจุดเกิดได้จากฟังก์ชันนี้ เพื่อปรับตำแหน่งที่สามารถใช้ได้

โดยค่าเริ่มต้น จะมีจุดเกิดทั้งหมด 4 จุด ดังภาพด้านล่าง

คำอธิบายสคริปต์
สคริปต์หลัก (Global Script)
เมื่อเริ่มรอบใหม่ การตั้งค่าบางอย่างจะถูกกำหนดผ่านฟังก์ชัน Configure ตัวแปร TeamAcedCnt (ใช้เก็บจำนวนทีมที่ถูกคัดออกในรอบนี้) และ TeamWon (ใช้เก็บข้อมูลทีมที่ชนะในรอบนี้) จะถูกรีเซต นอกจากนี้ เขตปลอดภัย (Safe Zone) และตำแหน่งสุดท้ายของมันยังถูกอัปเดตในช่วงนี้ผ่านฟังก์ชัน ResetBorder และ RandBorderEndLoc

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

จากนั้น RandBorderEndLoc จะทำงานตามขั้นตอนดังนี้:

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


ในขั้นตอนการรีเซตเขตปลอดภัย เขตปลอดภัยจากรอบก่อนจะถูกปิดด้วยตนเองเพื่อให้แน่ใจว่าจะไม่มีการสร้างสองเขตปลอดภัยขึ้นมาในรอบที่สองเป็นต้นไป

สคริปต์ทีม (Team Script)
เมื่อเริ่มรอบใหม่ รายชื่อจุดเกิดที่เก็บไว้ในสคริปต์หลักจะถูกสุ่ม จากนั้นสคริปต์ทีมจะใช้รายชื่อนี้กำหนดตำแหน่งเกิดของผู้เล่นแต่ละทีม

หากต้องการเปิดหรือปิดคุณสมบัตินี้ โปรดดูคู่มือการตั้งค่า
สคริปต์ผู้เล่น (Player Script)
เมื่อผู้เล่นเข้าสู่เกม ฟังก์ชันต่อไปนี้จะถูกเรียกเพื่อเตรียมการตั้งค่าผู้เล่น:

ใน Configure จะมีการตั้งค่าที่เกี่ยวข้องกับอาวุธเริ่มต้นของผู้เล่น SetProperty เป็นส่วนที่ใช้ควบคุมคุณสมบัติของผู้เล่น (HP, การดรอปไอเทมเมื่อตาย, ฯลฯ) ส่วน PreloadEquipment และ PreloadAccessory จะใช้ในการโหลดอุปกรณ์สำคัญล่วงหน้า เช่น กระเป๋า, อาวุธ ฯลฯ
เมื่อรอบเริ่มต้น อุปกรณ์ของผู้เล่นจะถูกรีเซตผ่านฟังก์ชัน ResetWeapon ฟังก์ชันนี้จะรีเซตอาวุธที่ขว้างได้ (ระเบิด ฯลฯ) และไอเทมแบบใช้แล้วหมด (ชุดพยาบาล ฯลฯ) ในขั้นตอนนี้ UI สถานะของเกม (Game Status UI) จะถูกสร้างขึ้นและอัปเดตตามจำนวนทีม, ผู้เล่น, สถานะของผู้เล่น และคะแนนทีม

เมื่อผู้เล่นถูกคัดออก ผู้เล่นทุกคนต้องอัปเดต UI สถานะเกมเพื่อแสดงจำนวนผู้เล่นที่เหลืออยู่ในแต่ละทีมอย่างถูกต้อง


ฟังก์ชัน UpdatePlayerNum ทำสิ่งต่อไปนี้เพื่ออัปเดตจำนวนผู้เล่นในแต่ละทีม:
- นับจำนวนผู้เล่นที่ยังมีชีวิตอยู่ในแต่ละทีม
- อัปเดต UI ที่เกี่ยวข้อง
ฟังก์ชันนี้ยังถูกเรียกเมื่อเริ่มแต่ละช่วง (Phase) เพื่อให้แน่ใจว่าจำนวนผู้เล่นจะถูกต้องตลอดการแข่งขัน

การลบ UI มีหลายวิธี ได้แก่ เมื่อผู้เล่นออกจากเกมหรือการแข่งขันสิ้นสุด, เมื่อผู้เล่นออกกลางคัน, หรือเมื่อเกมจบโดยตรวจจาก ID ของเฟส

สคริปต์ HUD
สคริปต์ MatchStatus
UI สถานะการแข่งขัน (Match Status) ไม่ขึ้นอยู่กับผู้เล่นแต่จะอัปเดตอัตโนมัติ โดยเฉพาะตัวจับเวลา (Timer) และตำแหน่งบนแผนที่ ทั้งสองระบบนี้จะเริ่มทำงานอัตโนมัติเมื่อต้นแต่ละเฟส และจะสิ้นสุดเมื่อเฟสนั้นจบ

เมื่อกำหนดตำแหน่งผ่านฟังก์ชัน SetLocation ชื่อของตำแหน่งจะถูกดึงโดยตรงจาก Game Entity ในเมนู Manage Component

ตัวจับเวลาจะอัปเดตทุกวินาทีสำหรับผู้เล่นแต่ละคนโดยคำนวณค่าจากวินาทีและนาทีของ entity ของเฟส


