เขตปลอดภัยสุดท้าย

การกำหนดค่า

การกำหนดค่าพื้นฐาน

การตั้งค่า ค่าเริ่มต้น ค่าต่ำสุด ค่าสูงสุด
จำนวนทีม 3 1 3
จำนวนผู้เล่น 3 1 4
จำนวนรอบ 4 1 7
กระสุนไม่จำกัด true - -
ไอซ์วอลล์ไม่จำกัด false - -
อาวุธปาไม่จำกัด false - -

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

การปรับตำแหน่งของแผนที่

เพื่อที่จะย้ายตำแหน่งของแผนที่ ไปยังที่ใหม่ จำเป็นต้องย้ายวัตถุ (Level Objects) ต่อไปนี้ไปยังตำแหน่งใหม่ โดยค่าเริ่มต้นวัตถุเหล่านี้จะอยู่ที่ Katulistiwa
katulistiwa-location
เพียงย้ายวัตถุเหล่านี้ไปยังตำแหน่งใหม่ แผนที่ทั้งหมดจะถูกย้ายตามไปด้วย

วัตถุในเลเวล (Level Object) รูปภาพ จำนวน
โซนปลอดภัย (Safe Zone) safe-zone 1
จุดเกิดและตู้กดอัตโนมัติ (Spawn Points & Vending Machine) spawn-point 1 ต่อทีม

นอกจากนี้ หากต้องการเปลี่ยนชื่อสถานที่ที่แสดงบน UI ดังภาพ:
location-name
สามารถปรับได้โดยไปที่ Property Settings -> Overall Rules -> LocationName
change-location-name

การตั้งค่าโซนปลอดภัย (Safe Zone)

โซนปลอดภัยจะมีทั้งหมด 2 ขั้นตอน:

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

ระยะที่ 1 ของโซนปลอดภัย (Stage 1 Safe Zone)

การตั้งค่าหลักของโซนปลอดภัยในขั้นตอนนี้สามารถปรับได้จากวัตถุ Safe Zone ในเลเวล
safe-zone-stage-one-settings
ค่าต่อไปนี้สามารถปรับเปลี่ยนได้ตามข้อจำกัด:

คุณสมบัติ ค่าเริ่มต้น ค่าต่ำสุด ค่าสูงสุด
รัศมีเริ่มต้น 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
player-starting-equipment

จำนวนของวัตถุขว้าง (Throwables)

จำนวนของวัตถุขว้างสามารถปรับได้ใน Property Settings ภายใต้ Player Rules โดยสามารถกำหนดค่าได้ดังนี้:

  • GlooWallNum: จำนวนไอซ์วอลล์ต่อรอบ
  • GrenadeNum: จำนวนระเบิดต่อรอบ
  • GlooMelterNum: จำนวนระเบิดกัดกร่อนต่อรอบ
  • FlashFreezeNum: จำนวนระเบิดน้ำแข็งต่อรอบ
  • InhalerNum: จำนวน Inhaler ต่อรอบ
  • MedKitNum: จำนวนชุดพยาบาลต่อรอบ
  • SuperMedKitNum: จำนวนชุดพยาบาลพิเศษต่อรอบ
    player-rules

การปรับร้านค้าของผู้เล่น

โดยค่าเริ่มต้น ตู้กดอัตโนมัติทั้งหมดในเทมเพลตจะใช้ร้านค้าเดียวกัน ซึ่งสามารถแก้ไขเนื้อหาได้โดยทำตามขั้นตอน:
คลิกที่ More จากนั้นเลือก Store and economy
access-shop-step-1-2
จากนั้นคลิกที่ไอคอนนี้เพื่อเข้าสู่หน้าต่างแก้ไขร้านค้า:
access-shop-step-3
เมื่อเปิด UI นี้ จะสามารถแก้ไขรายละเอียดของร้านค้าได้เพิ่มเติม
access-shop-result

การตั้งค่าการสุ่มจุดเกิดของผู้เล่น

โดยค่าเริ่มต้น ตำแหน่งเกิดของแต่ละทีมจะสุ่มเปลี่ยนในแต่ละรอบ ซึ่งสามารถเปิดหรือปิดได้จากคอมโพเนนต์ Game Entity
toggle-spawn-randomization
รายการของจุดเกิดทั้งหมดที่ใช้ในการสุ่มอยู่ในฟังก์ชัน Configure ของ Global Script
สามารถเพิ่ม หรือลบจุดเกิดได้จากฟังก์ชันนี้ เพื่อปรับตำแหน่งที่สามารถใช้ได้
spawn-point-config-global-script
โดยค่าเริ่มต้น จะมีจุดเกิดทั้งหมด 4 จุด ดังภาพด้านล่าง
spawn-point-location

คำอธิบายสคริปต์

สคริปต์หลัก (Global Script)

เมื่อเริ่มรอบใหม่ การตั้งค่าบางอย่างจะถูกกำหนดผ่านฟังก์ชัน Configure ตัวแปร TeamAcedCnt (ใช้เก็บจำนวนทีมที่ถูกคัดออกในรอบนี้) และ TeamWon (ใช้เก็บข้อมูลทีมที่ชนะในรอบนี้) จะถูกรีเซต นอกจากนี้ เขตปลอดภัย (Safe Zone) และตำแหน่งสุดท้ายของมันยังถูกอัปเดตในช่วงนี้ผ่านฟังก์ชัน ResetBorder และ RandBorderEndLoc
global-on-round-start
ในช่วงนี้ จุดเกิดใหม่ทั้งหมดจะถูกเพิ่มเข้าในรายชื่อเพื่อการสุ่ม รายชื่อนี้สามารถใช้โดยสคริปต์ของทีมในการสุ่มตำแหน่งเกิดของแต่ละทีมเมื่อเริ่มรอบใหม่
global-configure-randomize-spawn
จากนั้น RandBorderEndLoc จะทำงานตามขั้นตอนดังนี้:
global-randborderendloc

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

สคริปต์ทีม (Team Script)

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

สคริปต์ผู้เล่น (Player Script)

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

  1. นับจำนวนผู้เล่นที่ยังมีชีวิตอยู่ในแต่ละทีม
  2. อัปเดต UI ที่เกี่ยวข้อง
    ฟังก์ชันนี้ยังถูกเรียกเมื่อเริ่มแต่ละช่วง (Phase) เพื่อให้แน่ใจว่าจำนวนผู้เล่นจะถูกต้องตลอดการแข่งขัน
    player-on-phase-start
    การลบ UI มีหลายวิธี ได้แก่ เมื่อผู้เล่นออกจากเกมหรือการแข่งขันสิ้นสุด, เมื่อผู้เล่นออกกลางคัน, หรือเมื่อเกมจบโดยตรวจจาก ID ของเฟส
    player-destroy-ui

สคริปต์ HUD

สคริปต์ MatchStatus

UI สถานะการแข่งขัน (Match Status) ไม่ขึ้นอยู่กับผู้เล่นแต่จะอัปเดตอัตโนมัติ โดยเฉพาะตัวจับเวลา (Timer) และตำแหน่งบนแผนที่ ทั้งสองระบบนี้จะเริ่มทำงานอัตโนมัติเมื่อต้นแต่ละเฟส และจะสิ้นสุดเมื่อเฟสนั้นจบ
matchstatus-on-phase-start-end
เมื่อกำหนดตำแหน่งผ่านฟังก์ชัน SetLocation ชื่อของตำแหน่งจะถูกดึงโดยตรงจาก Game Entity ในเมนู Manage Component
matchstatus-set-location
ตัวจับเวลาจะอัปเดตทุกวินาทีสำหรับผู้เล่นแต่ละคนโดยคำนวณค่าจากวินาทีและนาทีของ entity ของเฟส
matchstatus-starttimer