irpg Community
หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: Imperial School of Art, Literature and Design (https://irpg.in.th/forum-41.html)
+--- Forum: Literature & Design Library (https://irpg.in.th/forum-14.html)
+--- Thread: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ (/thread-1439.html)



หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Mysticphoenix - 09-30-2013

[Image: npym.jpg]

การ "Hard Code" คืออะไร? Hard Code เปรียบเสมือนคุณทำประตูแบบไม่มีลูกบิด ทุกครั้งที่คุณจะล็อคประตู คุณต้องเอาตะปูมาตอกๆ ยึดประตูนั้นกับกำแพง พอคุณต้องการจะออกไปข้างนอก คุณก็ต้องงัดตะปูนั้นออกทีละดอกๆ จะดีกว่าไหม? ถ้าเหนื่อยอีกนิด หาลูกบิดมาใส่ประตูของคุณ ถ้าคุณมัวตอกตะปูใส่ประตูนานๆเข้า หนึ่งคือ คุณเหนื่อยกว่าเดิม สองคือ ประตูคุณจะพังในเวลาไม่ช้า

ยกตัวอย่างเกมบางเกมมีเอฟเฟกเสียง "หวือๆๆๆ" ก่อนเข้าวาร์ป

ทีนี้วันนึง ถ้าคุณอยากเปลี่ยนเสียงนั้น ให้เป็น "ปิ๊งๆๆ" คุณจะทำยังไง?

เข้าไปแก้จุดวาร์ปทุกจุด ในทุกแม็พ จาก "หวือๆๆๆ" ให้กลายเป็น "ปิ๊งๆๆ" เหรอ?

ถ้ามีจุดวาร์ป 80 จุดในเกม...แล้วจะแก้ครบไหม? แก้ไม่ครบก็เป็น bug อีก

ถ้าคุณมีโค้ดซ้ำๆกันลักษณะนี้ในเกม คุณกำลัง Hard Code อยู่!! ซึ่งควรแก้ไขโดยด่วน ก่อนที่โปรเจกต์จะโตไปกว่านี้

วิธีแก้ไขคือ ใช้ common event (เหตุการณ์ทั่วไป)


จำคำแนะนำของผมไว้นะครับ event ที่มีการใช้บ่อยครั้ง ให้ป้อนคำสั่งลงไปให้ "น้อยที่สุด"

ที่เหลือให้ใช้ common event แทน เพราะแทนที่คุณจะต้องไปแก้จุดวาร์ป 80 จุดในเกม คุณก็มาแก้แค่ common event แท่งเดียว ได้ผลลัพธ์แบบเดียวกัน ประหยัดเวลาไปกว่ากันแบบฟ้ากับเหว


คอสร้างเกม action เดินยิง/เดินฟันคงรู้ดี เวลาจะกำหนดพลังชีวิตให้มอนสเตอร์ คุณต้องป้อนคำสั่งเข้าไปใน event ว่า "ตัวแปร [031:พลังชีวิตศัตรู1] == 40" นะ

แล้วหลังจากนั้นคุณก็ copy มอนสเตอร์นั้นไปวางไว้ตามแม็พต่างๆ

วันดีคืนดี คุณอยากจะกลับไปแก้พลังชีวิตของมอนสเตอร์ชนิดนั้น แต่จะทำอย่างไรดี? เพราะคุณ copy มอนสเตอร์ชนิดนั้นแพร่พันธุ์ออกไปแล้วเป็นสิบๆตัว คุณต้องไปนั่งแก้พลังชีวิตของมอนสเตอร์ชนิดนั้นในทุกแม็พ

แต่ชีวิตจะง่ายขึ้นทันทีถ้าคุณรู้จักใช้ common event

เพราะเวลาคุณจะแก้ คุณก็แก้แค่จุดเดียว


การ Hard Code มักจะเกิดขึ้นกับ event เหล่านี้ : ประตู, หีบ, วาร์ป, มอนสเตอร์ในเกมเดินยิง, ผักในระบบปลูกผัก, ร้านค้า, จุดเซฟ, หินสำหรับดัน, หลุมให้ตัวละครตกลงไป, เหวให้ตัวละครกระโดดข้าม, แผนที่โลกที่ติดอยู่ฝาบ้าน, การโชว์หน้าตัวละคร


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

หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณนะครับ และเสียเหงื่อให้น้ำตาดีกว่าเสียกีฬาให้ยาเสพติดครับ สวัสดีครับ


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Nayru - 09-30-2013

=w=b แนวทางนี้จำเป็นมากเลยครับ ลดทั้งเวลา ลดทั้งการใช้ทรัพยากร(การจองพื้นที่) ทำให้เกมของเราแก้ไขง่าย+ทำงานเร็วขึ้นด้วย

ปล.ตอนจบบทความ ถ้ามี "ตึงโป๊ะ!!!" ต่อท้ายจะฮาขึ้นอีก 50% นะครับ ทำหน้าเหยาหมิง


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - นิราจ - 09-30-2013

ตามนั้นเลยครับ
ง่ายดายไว้ดี

http://forums.thaigamedevx.com/index.php?topic=3467.0

มันคล้ายๆกับการสร้าง class ไว้ทำ object


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Demonking - 09-30-2013

ผมก็รู้มาตลอดนะ แต่ไม่เคยคิดจะใช้ ไม่รู้ทำไม ไม่เข้าใจตัวเอง ทำหน้าเหยาหมิง


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - arkman - 09-30-2013

เอาไปใช้กับ GMได้อยู่นะครับ เรื่องการกำหนดค่าตัวแปรเนี่ย


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Nazuth - 09-30-2013

เมื่อก่อนเคยเป็นเดี๋ยวนี้หันไปเรียกเสียงทางสคริปท์แทนเวลาแก้ก็ไปแก้ที่สคริปทอย่างเดียวจบ ทำหน้าเหยาหมิง


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Ozzy - 09-30-2013

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


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Kuma - 09-30-2013

ขอถามนิดนึง ทำไมต้องเป็นรูป"ทุเรียน" 0.0


RE: หลีกเลี่ยงการ Hard Code เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณ - Shinryu - 09-30-2013

วิธีแก้อีกวิธีคือ ใช้สคริปต์เรียกใช้เหตุการณ์ของวอวี่