Mysticphoenix   09-30-2013, 11:01 AM
#1
[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 เพื่อสุขอนามัยที่ดีของโค้ดเกมคุณนะครับ และเสียเหงื่อให้น้ำตาดีกว่าเสียกีฬาให้ยาเสพติดครับ สวัสดีครับ
This post was last modified: 09-30-2013, 11:01 AM by Mysticphoenix.

[Image: webboard%20signature1_zpskhtut2jg.png]
การทำอาหารที่อร่อยที่สุด และเดือดร้อนชาวบ้านมากที่สุด กำลังจะเริ่มขึ้น
Nayru   09-30-2013, 11:15 AM
#2
=w=b แนวทางนี้จำเป็นมากเลยครับ ลดทั้งเวลา ลดทั้งการใช้ทรัพยากร(การจองพื้นที่) ทำให้เกมของเราแก้ไขง่าย+ทำงานเร็วขึ้นด้วย

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

[Image: Signature-Alex.png]
นิราจ   09-30-2013, 11:31 AM
#3
ตามนั้นเลยครับ
ง่ายดายไว้ดี

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

มันคล้ายๆกับการสร้าง class ไว้ทำ object
This post was last modified: 09-30-2013, 11:33 AM by นิราจ.

[Image: btpni.jpg]
Demonking   09-30-2013, 11:33 AM
#4
ผมก็รู้มาตลอดนะ แต่ไม่เคยคิดจะใช้ ไม่รู้ทำไม ไม่เข้าใจตัวเอง ทำหน้าเหยาหมิง
arkman   09-30-2013, 11:36 AM
#5
เอาไปใช้กับ GMได้อยู่นะครับ เรื่องการกำหนดค่าตัวแปรเนี่ย

Show ContentSpoiler:
[Image: Signature-Ralph.png]
Nazuth Away   09-30-2013, 03:02 PM
#6
เมื่อก่อนเคยเป็นเดี๋ยวนี้หันไปเรียกเสียงทางสคริปท์แทนเวลาแก้ก็ไปแก้ที่สคริปทอย่างเดียวจบ ทำหน้าเหยาหมิง
This post was last modified: 09-30-2013, 05:24 PM by Nazuth.

[Image: 76561198134933497.png]
Show ContentFanPage:


Ozzy   09-30-2013, 08:21 PM
#7
ช่ายๆ เห็นด้วยเลย เพราะเสียเหงื่อให้น้ำตาดีกว่าเสียกีฬาให้ยาเสพติด
ถ้าเสียกีฬาให้ยาเสพติดเมื่อไหร่ ต่อไปเด็กจะเล่นบาสทีคงติดยากันทั่วบ้านทั่วเมือง
กระทู้นี้มีประโยชน์สะท้อนสังคมมาก ทำหน้าเหยาหมิง
This post was last modified: 09-30-2013, 08:22 PM by Ozzy.
Kuma   09-30-2013, 10:10 PM
#8
ขอถามนิดนึง ทำไมต้องเป็นรูป"ทุเรียน" 0.0


Shinryu   09-30-2013, 10:15 PM
#9
วิธีแก้อีกวิธีคือ ใช้สคริปต์เรียกใช้เหตุการณ์ของวอวี่

[Image: 7f7cb68ce0.png][Image: rlogo.png]
Show ContentSpoiler:
  
Users browsing this thread: 1 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.