Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[พื้นฐานสร้างเกม] เรียนสร้างเกมกับมิกิจัง : บทที่ 5 มาสร้างเกมแรกกันเถอะ
#1
หลังจากที่ได้อ่านเนื้อหาทฤษฎีมา 4 บทแล้ว ตั้งแต่บทที่ 1 ปฐมบท - เกม (Game), บทที่ 2 เกมเอนจิน (Game Engine), บทที่ 3 อัลกอรึทึม (Algorithm) และบทที่ 4 นิพจน์ (Expression) มาถึงบทนี้ผู้อ่านหลายคนคงอยากลองสร้างเกมจริง ๆ ขึ้นมาบ้างแล้ว ในบทนี้ผู้เขียนเลยจะมาพาผู้อ่านทุกคนมาสร้างเกมแรกกัน ไม่ต้องตกใจไปหรอก บางคนอาจสงสัยว่า "เพิ่งเรียนแค่นิดเดียวจะมีความรู้พอให้สร้างเกมได้หรือ?" คำตอบคือได้แน่นอน การสร้างเกมไม่ต้องใช้ความรู้มากก็ได้ เพียงแค่ทราบพื้นฐานที่จำเป็นก็พอ สิ่งที่สำคัญในการสร้างเกมเลยคือการนำอัลกอริทึมมาประยุกต์ใช้ ในบทนี้เราจะมาสร้างเกม TicTacToe หรือที่เราเรียกภาษาบ้าน ๆ ว่าเกม XO กัน ผู้อ่านก็ลองสร้างเกมนี้ตามไปพร้อม ๆ กันเลย





จะนำตัวอย่างเกมในบทนี้ไปสร้างจริง ๆ ได้อย่างไร?


เนื่องจากบทความ "เรียนสร้างเกมกับมิกิจัง" เป็นบทความเชิงทฤษฎีที่ไม่เจาะจงอุปกรณ์ ภาษาอุปกรณ์ และเกมเอนจินใด ๆ ดังนั้นตัวอย่างเกมในบทความนี้จะใช้ Pseudo Code ในการอธิบายเป็นหลัก ผู้อ่านจะต้องแปลง Pseudo Code เหล่านี้เป็นภาษาอุปกรณ์หรือคำสั่งในเกมเอนจินที่ผู้อ่านใช้เอาเอง ส่วนวิธีแปลง Pseudo Code เป็นภาษาอุปกรณ์หรือคำสั่งในเกมเอนจิน ผู้อ่านต้องศึกษาคำสั่งต่าง ๆ จากบทความที่สอนภาษาอุปกรณ์หรือเกมเอนจินตัวนั้น แล้วเลือกใช้คำสั่งที่คล้ายหรือใกล้เคียงกับ Pseudo Code มากที่สุด ตัวอย่างเกมในบทนี้จะเลือกใช้คำสั่งที่ง่ายสำหรับมือใหม่ เพื่อให้ผู้อ่านสามารถแปลง Pseudo Code ได้ง่ายที่สุด





ขั้นตอนการสร้างเกมคร่าว ๆ มีอะไรบ้าง?


1. ออกแบบเกมคร่าว ๆ ว่าอยากให้เกมเป็นแบบไหน เล่นสองคนหรือเล่นคนเดียว ใช้ภาษาอุปกรณ์หรือเกมเอนจินอะไรในการสร้าง

2. สร้างโปรเจคใหม่ แล้วตั้งชื่อโปรเจคตามที่ต้องการ

3. เขียนอัลกอริทึมของเกม สำหรับมือใหม่ควรเขียนอัลกอริทึมแบบภาพรวมคร่าว ๆ ก่อน แล้วค่อยเขียนอัลกอริทึมแบบละเอียด เพื่อให้มองเห็นภาพรวมของเกมก่อน แล้วคอยเจาะรายละเอียด

4. ใส่คำสั่งจากอัลกอริทึมแบบละเอียดลงในโปรแกรมเขียนภาษาอุปกรณ์หรือเกมเอนจินที่เลือกใช้

5. ทดสอบเกมว่าถูกต้องตามที่เราต้องการหรือไม่ ถ้าเกมมีข้อผิดพลาดก็ต้องแก้ไขคำสั่งแล้วทดสอบใหม่

6. เมื่อเกมเสร็จสมบูรณ์แล้ว ก็สร้างเกมเป็นไฟล์สำเร็จรูปที่ไม่ต้องพึ่งโปรแกรมเขียนภาษาอุปกรณ์หรือเกมเอนจินอีกต่อไป (Export โปรเจค)






ออกแบบเกมอย่างไรดี?


การออกแบบเกมต้องกำหนดรูปแบบของเกมอย่างคร่าว ๆ ในตัวอย่างเกมนี้จะออกแบบเกม ดังนี้


ชื่อเกม : TicTacToe
จำนวนผู้เล่น : สองคน (เพื่อความง่ายในการสร้างเกม)
กติกาการเล่น : ผู้เล่นฝั่งไหนเรียงสัญลักษณ์ของตนเอง (X หรือ O) เป็นเส้นตรงได้ 3 ตัวก่อนเป็นฝ่ายชนะ
เวลาที่ใช้ในการเล่น : ประมาณ 1-2 นาที






เขียนอัลกอริทึมแบบภาพรวมอย่างไรดี?


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


1. เริ่มต้นด้วยกระดานเปล่า
2. ให้ผู้เล่นเลือกช่องที่ต้องการลงสัญลักษณ์ของตัวเอง
3. ตรวจสอบว่าช่องที่ผู้เล่นเลือกมีสัญลักษณ์อื่นอยู่ก่อนหน้าแล้วหรือไม่ ถ้าไม่มีให้แสดงสัญลักษณ์ของผู้เล่นคนนั้นในช่องที่เลือก และบันทึกค่าลงในตัวแปรที่บันทึกกระดาน
4. ตรวจสอบตัวแปรที่บันทึกกระดานว่ามีฝ่ายไหนเรียงสัญลักษณ์ครบ 3 ตัวก่อนหรือไม่ ถ้ามีให้แสดงข้อความว่าผู้เล่นคนนั้นเป็นฝ่ายชนะ
5. ตรวจสอบตัวแปรที่บันทึกกระดานว่ากระดานเต็มแล้วหรือไม่ ถ้าใช่แสดงว่าเสมอ ถ้าไม่ใช่ให้กลับไปทำข้อ 2






เขียนอัลกอริทึมแบบละเอียดอย่างไรดี?


เราจะนำอัลกอริทึมแบบภาพรวมมาเขียนอัลกอริทึมแบบละเอียด โดยจะเขียนเป็นคำสั่งทีละข้อเหมือนในบทที่ 3 สำหรับผู้อ่านที่สร้างเกมจนชำนาญแล้ว ผู้อ่านสามารถข้ามขั้นตอนการเขียนอัลกอริทึมแบบละเอียดได้เลย แต่ผู้อ่านจะต้องมั่นใจจริง ๆ ว่าผู้อ่านสามารถแปลงจากอัลกอริทึมแบบภาพรวมเป็นคำสั่งในภาษาอุปกรณ์หรือเกมเอนจินได้ทันที ในตัวอย่างนี้จะใช้ Pseudo Code ในการเขียนอัลกอริทึม ผู้อ่านสามารถนำ Pseudo Code นี้ไปแปลงเป็นคำสั่งในภาษาอุปกรณ์หรือเกมเอนจินเพื่อสร้างเป็นเกมจริง ๆ ได้เลย


เนื่องจาก Pseudo Code ของเกม TicTacToe มีความยาวมาก ผู้เขียนจึงแยกไปไว้ในเอกสารประกอบบทความแทน เพื่อไม่ให้บทความมีความยาวมากจนเกินไป ผู้อ่านสามารถดาวน์โหลดเอกสารประกอบบทความได้ที่ลิงค์ด้านล่างนี้ (ถ้าลิงค์เสียกรุณาแจ้ง)

ลิงค์หลัก : Mediafire
ลิงค์สำรอง : 4shared



***หมายเหตุ : ให้ข้อความที่อยู่หลังเครื่องหมาย // จนจบบรรทัดเป็นข้อความที่อธิบายรายละเอียด (Comment) เพื่อให้ผู้อ่านเข้าใจง่ายเฉย ๆ ไม่ใช่คำสั่งในอัลกอริทึมแต่อย่างใด***



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


เห็นบทนี้แล้วอย่าเพิ่งคิดว่าการสร้างเกมเป็นเรื่องยาก อัลกอริทึมแบบละเอียดในบทนี้มีความยาวมากก็จริง แต่หลักการทำงานของเกมนี้มีอยู่แค่ 5 ข้อที่เขียนไว้แล้วในอัลกอริทึมแบบภาพรวม ถ้าผู้อ่านเข้าใจอัลกอริทึมแบบภาพรวมได้ อัลกอริทึมแบบละเอียดก็ไม่ใช่ปัญหาอะไร สิ่งสำคัญในการสร้างเกมคือต้องมองหลักการทำงานของเกมนั้นให้ออก แล้วเขียนหลักการนั้นเป็นอัลกอริทึมแบบภาพรวม ส่วนอัลกอริทึมแบบละเอียดจะเป็นอย่างไรก็ขึ้นอยู่กับการเขียนของแต่ละคน อย่างที่เคยบอกไปแล้วในบทที่ 3 ว่า โจทย์หนึ่งข้อมีวิธีแก้ปัญหาได้หลายวิธี" อัลกอริทึมแบบละเอียดในการสร้างเกม TicTacToe ของแต่ละคนอาจจะไม่เหมือนกันก็ได้ ขอแค่ผลลัพธ์ที่ได้ตรงตามสิ่งที่เราต้องการก็พอ


ความจริงแล้วยังมีเกมอีกหลายเกมที่สร้างได้ง่ายและมีอัลกอริทึมแบบละเอียดที่สั้น เช่น เกมทายลูกเต๋า เกมเป่ายิงฉุบ เป็นต้น แต่ผู้เขียนคิดว่าเกม TicTacToe มีความเหมาะสมที่จะเรียนเป็นเกมแรกมากที่สุด เนื่องจากเป็นเกมที่ผู้สร้างจะได้ฝึกเขียนอัลกอริทึมแบบละเอียดออกมาจากหลักการทำงานของเกม และเป็นเกมที่สามารถนำไปพัฒนาต่อยอดในบทที่สูงขึ้นได้ สำหรับผู้อ่านที่เข้าใจอัลกอริทึมแบบภาพรวมแล้ว แต่ยังไม่เข้าใจอัลกอริทึมแบบละเอียด ให้ผู้อ่านลองทำแบบฝึกหัดประจำบทนี้ดู ในแบบฝึกหัดจะเป็นการสร้างเกมง่าย ๆ ที่ไม่ซับซ้อนมากนัก และอย่ามัวแต่เขียนอัลกอริทึมอย่างเดียว ผู้อ่านต้องนำอัลกอริทึมเหล่านั้นไปสร้างเป็นเกมจริง ๆ ด้วย เพราะจุดประสงค์ของการสร้างเกมคือการสร้างเกม ไม่ใช่การเขียนอัลกอริทึม


ผู้อ่านสามารถติดตามอ่านบทความ "เรียนสร้างเกมกับมิกิจัง" บทใหม่ได้ทุกวันศุกร์ สำหรับบทหน้าเราจะยังคงอยู่กับเกม TicTacToe อยู่เหมือนเดิม แต่จะเป็น TicTacToe ที่สามารถเล่นคนเดียวได้ เราจะมาเขียนปัญญาประดิษฐ์ (Artificial Intelligence) กัน แล้วพบกันใหม่บทหน้า บทที่ 6 ปัญญาประดิษฐ์




"The best way to predict the future is to create it." - Peter Drucker

"วิธีที่ดีที่สุดในการทำนายอนาคตคือการสร้างมันขึ้นมาเอง"




-------------------------------------------------------------------------------------------------------------------------------------------------


แบบฝึกหัดประจำบทที่ 5


แบบฝึกหัดที่ 5 จงเขียนอัลกอริทึมแบบภาพรวมและแบบละเอียด แล้วนำมาสร้างเกมต่อไปนี้

1. เกมทายผลการโยนเหรียญ (ง่าย)
2. เกมเป่ายิงฉุบ แบบเล่นสองคน (ง่าย)
3. เกมคิดเลขเร็ว บวก ลบ คูณ หาร (ปานกลาง)
4. เกมบันไดงู แบบเล่นสี่คน การเดินทั้งหมดขึ้นอยู่กับการทอยลูกเต๋า (ปานกลาง)
5. เกมโอเทลโล่ (Othello) แบบเล่นสองคน (ยาก)
[Image: 6977f46ce7a5965e6d2d71911a3fbaa9.png]
[-] The following 4 users say Thank You to Mikichan for this post:
  • dreamknight, jojo741963, platou18, slost
Reply
#2
;3

เกม Tic Tac Toe ก็มา Derp
May the flames guide your way. Every ending will make you stronger.

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)