หลีกเลี่ยงตัวเลขมหัศจรรย์ใน Phaser.io

ภายในโดเมนปัญหาของการพัฒนาเกม HTML5 Canvas ใน Phaser.io ปัญหาของการเขียนโค้ด "ตัวเลขมหัศจรรย์" แบบฮาร์ดโค้ดนั้นให้ความรู้สึกที่หลีกเลี่ยงได้ยากเป็นพิเศษ นี่คือตัวอย่างบางส่วนที่ดูเหมือนจะเกิดขึ้นอย่างต่อเนื่อง:

  • แอตทริบิวต์สไปรท์ เช่น size, position ฯลฯ การเขียนโค้ดแบบฮาร์ดโค้ดเหล่านี้จะทำให้เกิดปัญหาบนวิวพอร์ตที่มีขนาด การวางแนว หรือความหนาแน่นของพิกเซลที่ไม่คาดคิด

  • คุณลักษณะของเนื้อหาทางฟิสิกส์ เช่น velocity, force, จำนวนอนุภาค ฯลฯ การเขียนโค้ดแบบฮาร์ดโค้ดเหล่านี้จะทำให้เกิดปัญหากับอุปกรณ์ที่ใช้พลังงานน้อย หากอัตราเฟรมลดลงต่ำกว่า 60 fps

  • ค่าเวลา เช่น สำหรับวัตถุ Timer และ Tween เช่นเดียวกับข้างต้น ค่าฮาร์ดโค้ดจะทำให้เกิดพฤติกรรมที่ไม่คาดคิดบนอุปกรณ์ที่ใช้พลังงานน้อย เนื่องจากเวลาเล่นเกมเป็นมิลลิวินาทีจะไม่เท่ากับหนึ่งมิลลิวินาทีของเรียลไทม์อีกต่อไป

ฉันเข้าใจว่าวิธีแก้ปัญหาเหล่านี้มีแนวโน้มที่จะขึ้นอยู่กับเกมที่เป็นปัญหา แต่สิ่งเหล่านี้ดูเหมือนเป็นสากลและแพร่หลายมากจนต้องมีแนวทางปฏิบัติที่ดีที่สุดที่สามัญสำนึกทั่วไปเพื่อหลีกเลี่ยงปัญหาเหล่านั้น เพื่อการพัฒนาเกมโดยเฉพาะใน Phaser.io


person galarant    schedule 08.11.2015    source แหล่งที่มา


คำตอบ (1)


สิ่งเหล่านี้สามารถจัดการได้ด้วยการเตรียมตัวให้เพียงพอ

แอตทริบิวต์สไปรท์ (กล่าวคือ การปรับขนาด)

แหล่งข้อมูลที่ดีสำหรับการปรับขนาดปัญหากับ Phaser อยู่ที่นี่:

http://www.joshmorony.com/how-to-scale-a-game-for-all-device-sizes-in-phaser/

โดยพื้นฐานแล้ว คุณสามารถปรับขนาดเกมของคุณตามอัตราส่วนพิกเซลของอุปกรณ์ได้

ฟิสิกส์และเวลา (การปรับการชะลอตัว)

ที่นี่เราต้องปรับพารามิเตอร์ภายในเกมของเราให้สัมพันธ์กับประสิทธิภาพของอุปกรณ์ของผู้ใช้ ปัญหานี้ได้รับการแก้ไขมานานหลายทศวรรษแล้วสำหรับการเล่นเกมบนพีซี เนื่องจากแต่ละเครื่องมีความแตกต่างกันอย่างมาก

โดยทั่วไป คุณจะมีการตั้งค่าประสิทธิภาพเริ่มต้น และผู้ใช้สามารถปรับเปลี่ยนได้ผ่านเมนูการตั้งค่า นี่เป็นเรื่องง่ายและมีประสิทธิภาพ

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

การตั้งค่าทั้งหมดที่เปลี่ยนแปลงต่ออุปกรณ์สามารถจัดเก็บไว้ในคลาสซิงเกิลตัน/cfg ในตำแหน่งที่คุณเลือก

person John Helfert    schedule 12.11.2015