วิธีเพิ่มแสงและเงาแบบไดนามิกใน Godot
แสงและเงาแบบไดนามิกสามารถยกระดับคุณภาพของภาพและประสบการณ์การเล่นเกมของเกม Godot ของคุณได้ เพิ่มความลึก บรรยากาศ และความสมจริง ทำให้โลกของเกมของคุณสมจริงและมีส่วนร่วมมากขึ้น
Godot มีเครื่องมือที่หลากหลายเพื่ออำนวยความสะดวกในการสร้างและปรับแต่งเอฟเฟกต์แสงและเงาที่ซับซ้อนผ่านความสามารถขั้นสูง เช่น CanvasModulate และ PointLight2D
การตั้งค่าเกม Godot
ในการเริ่มต้นใช้แสงแบบไดนามิกภายในเอนจิ้นเกม Godot ให้สร้างเกม 2D พื้นฐานโดยสร้างฉากใหม่และรวมเอนทิตี ` CharacterBody2D’เพื่อแสดงถึงตัวละครของผู้เล่น
ซอร์สโค้ดที่ใช้ในสิ่งพิมพ์นี้สามารถเข้าถึงได้ผ่านที่เก็บ GitHub เฉพาะ ซึ่งทำหน้าที่เป็นแพลตฟอร์มโอเพ่นซอร์สสำหรับนักพัฒนาในการอ่านและนำไปใช้ตามที่เห็นสมควร นอกจากนี้ยังสามารถเข้าถึงได้ฟรีภายใต้เงื่อนไขของใบอนุญาต MIT ที่ใช้กันอย่างแพร่หลาย โดยให้สิทธิ์แก่ผู้ใช้ในการปรับและแจกจ่ายซอฟต์แวร์โดยไม่ต้องเสียค่าธรรมเนียมหรือค่าสิทธิใดๆ
รวมการแสดงสามมิติของสภาพแวดล้อมของเกมภายในขอบเขตของการสร้างขั้นตอนโดยใช้เทคนิคการแบ่งพาร์ติชันเชิงพื้นที่ เช่น octrees หรือ kd tree ทำให้สามารถจัดการและเพิ่มประสิทธิภาพทรัพยากรได้อย่างมีประสิทธิภาพมากขึ้น นอกจากนี้ ยังรวมระบบแสงแบบไดนามิกที่คำนึงถึงปัจจัยต่างๆ รวมถึงช่วงเวลาของวัน สภาพอากาศ และองค์ประกอบด้านสิ่งแวดล้อมเพื่อมอบประสบการณ์ที่ชวนดื่มด่ำให้กับผู้ใช้ สุดท้าย รวมอัลกอริทึมการจำลองทางฟิสิกส์ขั้นสูง เช่น Havok หรือ PhysX เพื่อสร้างแบบจำลองพฤติกรรมของวัตถุในโลกของเกมอย่างแม่นยำ สร้างประสบการณ์การเล่นเกมแบบโต้ตอบและสมจริง
รวมการเคลื่อนไหวและการโต้ตอบของผู้เล่นเข้ากับขีดจำกัดหน้าจอโดยใช้ GDScript ดังนี้:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()
if Input.is_action_pressed('ui_right'):
velocity.x \+= 1
if Input.is_action_pressed('ui_left'):
velocity.x -= 1
if Input.is_action_pressed('ui_down'):
velocity.y \+= 1
if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
โปรแกรมนี้ช่วยให้ผู้ใช้สามารถนำทางสภาพแวดล้อมเสมือนจริงในทิศทางต่างๆ ซึ่งถูกจำกัดด้วยขอบเขตของพื้นที่ที่แสดงบนหน้าจอของอุปกรณ์
ทำให้ส่วนที่เหลือของฉากมืดลง
ในการสร้างเอฟเฟกต์แสงแบบไดนามิกใน Godot เราต้องใช้คุณสมบัติ CanvasModulate เพื่อหรี่ฉากโดยรวมในขณะที่เน้นเฉพาะบริเวณที่ได้รับแสงสว่างจากแหล่งกำเนิดแสง
extends Node2D
const DARKNESS = 0.7
func _ready():
var canvas_modulate = CanvasModulate.new()
canvas_modulate.color = Color(0, 0, 0, DARKNESS)
add_child(canvas_modulate)
โปรดแนบสคริปต์นี้กับ Node2D ที่สร้างขึ้นใหม่ที่ทำหน้าที่เป็นรูทของฉาก จากนั้น โหนด CanvasModulate จะถูกใช้งานเพื่อกำหนดสีดำโปร่งแสงที่มืดครึ้มอย่างละเอียดบนฟิลด์ภาพทั้งหมด บดบังองค์ประกอบทั้งหมดภายในนั้น ยกเว้นองค์ประกอบที่ได้รับแสงสว่างจากแหล่งกำเนิดแสง
ในการสร้างแอตทริบิวต์มิติสำหรับควบคุมระดับความมืดภายในสภาพแวดล้อม เราแนะนำตัวแปรค่าคงที่ที่มีชื่อซึ่งมีชื่อว่า “DARKNESS” พารามิเตอร์นี้อนุญาตให้มีการจัดการความเข้มของความคลุมเครือที่ใช้กับการแสดงภาพในช่วงที่ไม่มีแสง ด้วยการปรับเปลี่ยนค่าที่กำหนดเป็นตัวแปร “ความมืด” เราอาจควบคุมระดับความทึบแสงที่เกิดขึ้นในฉากเมื่อไม่มีแหล่งกำเนิดแสงอยู่ ค่าที่เพิ่มขึ้นของ “ความมืด” จะนำไปสู่สภาวะความมืดที่ลึกซึ้งยิ่งขึ้น ในขณะที่ค่าที่ลดลงจะทำให้ระดับความมืดลดลงตามไปด้วย
ร่ายแสงเงา
เพื่อให้เอนทิตีสามารถสร้างเอฟเฟ็กต์เงาได้ จำเป็นต้องใช้ส่วนประกอบ LightOccluder2D บนสิ่งกีดขวางใดๆ ที่มีวัตถุประสงค์เพื่อขัดขวางการส่องสว่าง ตัวอย่างของโครงสร้างดังกล่าว ได้แก่ แผงกั้น พื้นผิวที่ยกสูง และองค์ประกอบทางสถาปัตยกรรมอื่นๆ ที่ออกแบบมาเพื่อให้เกิดเงา การติดตั้ง occluders เหล่านี้ช่วยอำนวยความสะดวกในการสร้างเอฟเฟกต์เงาที่สมจริงในสภาพแวดล้อมของเกม
ในการจำลองเงาที่สมจริงอย่างมีประสิทธิภาพสำหรับวัตถุภายในสภาพแวดล้อมวิดีโอเกมของคุณ จำเป็นต้องสร้างส่วนประกอบ LightOccluder2D แบบกำหนดเองที่สอดคล้องกับรูปทรงขององค์ประกอบที่ขัดขวางอย่างแม่นยำ ยิ่งไปกว่านั้น เราอาจปรับเทียบแอตทริบิวต์ต่างๆ เช่น จำนวนรูปหลายเหลี่ยมและการแบ่งส่วนเพื่อให้ได้การควบคุมที่เหมาะสมที่สุดสำหรับการหล่อปรากฏการณ์เงา
เพิ่มไฟรอบทิศทาง
ลองเพิ่มวัตถุ PointLight2D
ลงในฉากโดยกำหนดวัสดุที่มีพื้นผิว สิ่งนี้จะจำลองแหล่งกำเนิดแสงรอบทิศทางที่เอื้อต่อสถานการณ์แสงโดยรอบที่น่าเชื่อถือยิ่งขึ้น
extends PointLight2D
var light_color = Color(1, 1, 0.8)
func _ready():
energy = 2.5
color = light_color
คุณมีความสามารถในการปรับแต่งแอตทริบิวต์เพื่อควบคุมขอบเขตและสีของแสงที่เกิดจากวัตถุ PointLight2D
คุณมีตัวเลือกในการสร้างพื้นผิวแสงส่วนบุคคลเพื่อกำหนดรูปแบบและลักษณะการมองเห็นของแหล่งกำเนิดแสงของคุณ ซึ่งอาจมีตั้งแต่รูปแบบวงกลมที่ไม่ซับซ้อนไปจนถึงการกำหนดค่าที่ซับซ้อนมากขึ้น ซึ่งสะท้อนถึงบรรยากาศที่คุณต้องการสร้าง
ในการถ่ายทอดคุณภาพพื้นผิวให้กับเอนทิตี PointLight2D โปรดปฏิบัติตามขั้นตอนต่อไปนี้:
โปรดเลือกโหนด PointLight2D ภายในลำดับชั้นของฉาก
โปรดไปที่คุณสมบัติพื้นผิวภายในส่วนพื้นผิวของแผงตัวตรวจสอบในบริบทขององค์ประกอบข้อความ
กรุณาคลิกที่พื้นที่พื้นผิวว่าง จากนั้นใช้โปรแกรมสำรวจไฟล์เพื่อเลือกพื้นผิวการส่องสว่างที่ต้องการจากตัวเลือกที่มี
การให้แสงสว่างจากแหล่งกำเนิดแสงที่คุณเลือกจะแสดงรูปแบบและสีที่กำหนดไว้ล่วงหน้า ทำให้เกิดเอฟเฟกต์ที่น่าพึงพอใจต่อการเล่นแสงและเงาแบบไดนามิกในฉาก
รวมถึงคุณสมบัติเพิ่มเติม
เพื่อเพิ่มทั้งคุณภาพด้านสุนทรียภาพและแง่มุมเชิงโต้ตอบของโครงการของคุณ มีส่วนประกอบเสริมหลายรายการที่อาจรวมเข้ากับการกำหนดค่าพื้นฐานของการให้แสงและเงาแบบไดนามิก การเพิ่มที่อาจเกิดขึ้น ได้แก่:
แอนิเมชั่นแสง
เพิ่มบรรยากาศและความสมจริงของแหล่งกำเนิดแสงของคุณด้วยเอฟเฟกต์ภาพเคลื่อนไหวที่ทำให้พวกมันมีชีวิต ตัวอย่างเช่น คุณสามารถทำให้เปลวไฟที่กะพริบเป็นภาพเคลื่อนไหวสำหรับคบเพลิงหรือเทียน จำลองท่าทางการเต้นของไฟที่ปะทุ หรือส่งภาพเคลื่อนไหวที่สั่นเป็นจังหวะไปยังลูกกลมลึกลับที่เปล่งแสงจากโลกอื่น
รอบกลางวันและกลางคืน
รวมวงจรกลางวันและกลางคืนแบบไดนามิกภายในเกม ซึ่งปรับเปลี่ยนความส่องสว่างและสีของแหล่งกำเนิดแสงตามเวลาจริงเพื่อสะท้อนความก้าวหน้าของเวลา การใช้งานดังกล่าวอาจเพิ่มความรู้สึกดื่มด่ำของผู้เล่นโดยการสร้างบรรยากาศที่แตกต่างกันตามช่วงเวลาของวัน ซึ่งจะส่งผลต่อประสบการณ์โดยรวม
การซีดจางของแสง
เพื่อป้องกันไม่ให้ประสบการณ์ดื่มด่ำหยุดชะงัก ขอแนะนำให้ใช้การเปลี่ยนแบบไร้รอยต่อเมื่อเปลี่ยนระดับความสว่าง วิธีนี้ช่วยให้สภาพแวดล้อมค่อยๆ หรี่ลงหรือสว่างขึ้น ส่งผลให้ได้ผลลัพธ์ที่สมจริงและสวยงามยิ่งขึ้น
เงาไดนามิก
อีกวิธีหนึ่งในการใช้เงาแบบคงที่คือการรวมเงาแบบไดนามิกสำหรับวัตถุที่กำลังเคลื่อนไหว สิ่งนี้อาจทำได้โดยการใช้แหล่งกำเนิดแสงเสริมซึ่งติดตามการเคลื่อนไหวของตัวละคร ส่งผลให้มีการแสดงการเปลี่ยนแปลงเงาตามเวลาจริงที่น่าเชื่อถือ
เอฟเฟกต์เสียงปลอดลิขสิทธิ์
การรวมเอฟเฟ็กต์เสียงที่เหมาะสมสามารถเพิ่มประสบการณ์ที่ดื่มด่ำของวิดีโอเกมได้อย่างมาก ทำให้เกมมีชีวิตชีวาและมีชีวิตชีวา เพื่อให้ได้เอฟเฟ็กต์นี้ ให้พิจารณาใช้องค์ประกอบเสียงที่ไม่มีลิขสิทธิ์ซึ่งรวมเข้ากับไดนามิกของแสงและเงาที่สมจริงได้อย่างลงตัว
แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดแสงและเงาแบบไดนามิก
ในการใช้แสงและเงาแบบไดนามิกอย่างมีประสิทธิภาพในวิดีโอเกม สิ่งสำคัญคือต้องแน่ใจว่ามีการใช้งานที่เหมาะสมเพื่อหลีกเลี่ยงผลเสียต่อประสิทธิภาพหรือคุณภาพของภาพ การปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดบางอย่างจะช่วยให้บรรลุเป้าหมายนี้
เพิ่มประสิทธิภาพแหล่งกำเนิดแสง
เพิ่มประสิทธิภาพการใช้องค์ประกอบการส่องสว่างโดยยึดแนวทางอนุรักษ์นิยมที่สอดคล้องกับผลลัพธ์ด้านสุนทรียะที่ต้องการ โคมไฟที่มีมากเกินไปอาจสร้างภาระอย่างมากต่อความสามารถของระบบ โดยเฉพาะอย่างยิ่งในสถานการณ์ที่เกี่ยวข้องกับฮาร์ดแวร์ที่มีศักยภาพน้อย
ใช้การอบแบบเบา
เมื่อจัดการกับการตั้งค่าที่อยู่นิ่งหรือสิ่งที่ไม่มีชีวิต ขอแนะนำให้ใช้เทคนิคที่เรียกว่า"การอบด้วยแสง"เพื่อเพิ่มประสิทธิภาพ วิธีนี้เกี่ยวข้องกับการคำนวณและจัดเก็บข้อมูลการจัดแสงไว้ล่วงหน้า จึงช่วยลดความต้องการสำหรับการคำนวณแบบทันทีทันใดในระหว่างเซสชันการเล่นเกม
เลือกสำหรับ Occluders ง่าย
เมื่อกำหนดค่าโหนด LightOccluder2D ขอแนะนำให้ใช้รูปทรงเรขาคณิตที่ตรงไปตรงมาหากสามารถทำได้ การใช้ประโยชน์จากสิ่งกีดขวางที่สลับซับซ้อนซึ่งประกอบด้วยจุดยอดจำนวนมากอาจก่อให้เกิดความท้าทายด้านประสิทธิภาพ ในกรณีเช่นนี้ ให้พิจารณาปรับใช้รูปแบบหลายเหลี่ยมที่ไม่ซับซ้อนหรือส่วนเชิงเส้นเป็นตัวบดบังเมื่อเห็นว่าเหมาะสม
การคัดและการแบ่งชั้น
Godot มีระบบการมองเห็นและการซ้อนชั้นที่มีประสิทธิภาพ ซึ่งช่วยให้สามารถจัดการการคำนวณแสงและเงาได้อย่างมีประสิทธิภาพโดยจำกัดให้แสดงเฉพาะส่วนที่มองเห็นได้ของฉาก ด้วยการคัดแยกองค์ประกอบนอกจอออก ประสิทธิภาพอาจเพิ่มขึ้นอย่างมากผ่านความต้องการด้านการคำนวณที่ลดลง
การใช้เทคนิคขั้นสูงเพื่อสร้างแสงและเงาแบบไดนามิกที่น่าสนใจในเกม platformer สามารถเพิ่มความน่าดึงดูดทางภาพและคุณภาพโดยรวมได้อย่างมาก
ทำให้เกม Godot มีส่วนร่วมมากขึ้นด้วยแสงและเงาแบบไดนามิก
แสงและเงาแบบไดนามิกช่วยเติมเต็มประสบการณ์การเล่นเกมด้วยความรู้สึกมีชีวิตชีวาและความสมจริง ด้วยการสร้างสภาพแวดล้อมที่ดื่มด่ำและเต็มไปด้วยบรรยากาศมากขึ้น องค์ประกอบเหล่านี้มีความสามารถในการกระตุ้นการตอบสนองทางอารมณ์ที่หลากหลายภายในผู้เล่น ในขณะเดียวกันก็สร้างอารมณ์ที่แตกต่างและเพิ่มการเล่าเรื่องด้วยภาพของเกม
แสงแบบไดนามิกสามารถสร้างประสบการณ์การเล่นเกมที่ดื่มด่ำโดยการเพิ่มความลึกให้กับสภาพแวดล้อมที่น่าขนลุกและเงียบสงบ การรวมแหล่งกำเนิดแสงประเภทต่างๆ เช่น คบเพลิง ไฟ และแสงจากดวงจันทร์ ทำให้เกิดเอฟเฟ็กต์ภาพที่หลากหลาย ซึ่งช่วยเพิ่มการมีส่วนร่วมของผู้เล่นและสร้างความประทับใจที่น่าจดจำ