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





ปัญญาประดิษฐ์คืออะไร?


ปัญญาประดิษฐ์ (Artificial Intelligence) หมายถึงโปรแกรมที่มีความสามารถเหมือนมนุษย์ ทั้งด้านการคิด การวิเคราะห์ และการวางแผน อย่างที่เคยบอกไปในบทแรกว่าอุปกรณ์ทำงานตามคำสั่ง ดังนั้นการที่จะพัฒนาให้โปรแกรมทำงานเหมือนมนุษย์ได้นั้น เราต้องใส่วิธีการคิด การวิเคราะห์ และการวางแผนลงไปในอัลกอริทึมของคำสั่งด้วย ปัญญาประดิษฐ์มักถูกเรียกสั้น ๆ ว่า AI


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






เกมแบบไหนที่ต้องใช้ปัญญาประดิษฐ์?


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


1. เกมที่มีจำนวนผู้เล่นคนเดียว เกมรูปแบบนี้ผู้เล่นจะชนะเมื่อบรรลุเป้าหมายของเกม หรือทำคะแนนสูงสุดให้ได้มากกว่าเดิม เกมรูปแบบนี้เช่น เกมตะลุยด่าน, เกมเรียงเพชร, เกม Tetris, เกมจีบสาว เป็นต้น ถ้าจะพัฒนาเกมรูปแบบนี้ให้เล่นได้หลายคน ผู้เล่นจะแต่ละคนจะแยกกันเล่น แล้วใช้คะแนนเป็นตัวตัดสินว่าใครเป็นผู้ชนะ

2. เกมที่มีจำนวนผู้เล่นหลายคน เกมรูปแบบนี้ผู้เล่นจะชนะเมื่อสามารถโค่นล้มหรืออยู่เหนือผู้เล่นคนอื่น ผู้เล่นทุกคนจะอยู่ในสนามแข่งเดียวกัน แล้วต่อสู้ให้ผู้เล่นคนอื่นพ่ายแพ้ หรือพัฒนาตนเองให้อยู่เหนือกว่าผู้เล่นคนอื่น เกมรูปแบบนี้เช่น เกมหมากรุก, เกมยิงปืน, เกมวางแผนการรบ, เกมพัฒนาประเทศ เป็นต้น เกม TicTacToe ก็จัดอยู่ในเกมรูปแบบนี้ด้วยเช่นกัน


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






เขียนปัญญาประดิษฐ์ได้อย่างไร?


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


ในตัวอย่างนี้จะใช้เกม TicTacToe จากบทที่ 5 มาใส่คำสั่งที่เป็นปัญญาประดิษฐ์เพิ่มเติม ในการเล่นผู้เล่นจะใช้เครื่องหมาย X ส่วนโปรแกรมปัญญาประดิษฐ์จะใช้เครื่องหมาย O โดยปัญญาประดิษฐ์ในตัวอย่างนี้จะเป็นปัญญาประดิษฐ์อย่างง่าย โปรแกรมจะวางแผนล่วงหน้าเพียง 1 ตาเท่านั้น ไม่ได้ใช้สูตร TicTacToe จริง ๆ ที่เล่นอย่างไรก็ไม่มีวันแพ้ อัลกอริทึมโปรแกรมปัญญาประดิษฐ์ในตัวอย่างเกม TicTacToe มีดังนี้



Quote:ขั้นตอนที่ 1 เอาชนะ เล่นโดยไม่สนใจว่าผู้เล่นจะเรียงได้เท่าไร โปรแกรมปัญญาประดิษฐ์เล่นตานี้ก็ชนะแล้ว :

ตรวจสอบเครื่องหมายของทั้งสองฝ่ายบนกระดาน แล้วสังเกตว่าโปรแกรมปัญญาประดิษฐ์เรียงเครื่องหมาย O ได้ 2 ตัวแล้วหรือไม่?
.....(1.1) ถ้าใช่ ให้วางเครื่องหมาย O ตรงช่องที่จะทำให้เครื่องหมาย O เรียงครบ 3 ตัว ชนะ!
.....(1.2) ถ้าไม่ใช่ ให้ทำขั้นตอนต่อไป


ขั้นตอนที่ 2 สกัดทาง ถ้าโปรแกรมปัญญาประดิษฐ์ยังเอาชนะในตานี้ไม่ได้ และผู้เล่นใกล้จะชนะ ก็พยายามสกัดไม่ให้ผู้เล่นชนะได้ :

ตรวจสอบเครื่องหมายของทั้งสองฝ่ายบนกระดาน แล้วสังเกตว่าผู้เล่นเรียงเครื่องหมาย X ได้ 2 ตัวแล้วหรือไม่?
.....(2.1) ถ้าใช่ ให้วางเครื่องหมาย O คั่นตรงช่องที่จะทำให้ผู้เล่นเรียงเครื่องหมาย X ครบ 3 ตัว แล้วเปลี่ยนเป็นตาของผู้เล่นทันที ไม่ต้องทำขั้นตอนต่อไป
.....(2.2) ถ้าไม่ใช่ ให้ทำขั้นตอนต่อไป


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


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

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






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


ผู้อ่านสามารถติดตามอ่านบทความ "เรียนสร้างเกมกับมิกิจัง" บทใหม่ได้ทุกวันศุกร์ ส่วนบทหน้าจะเป็นเรื่องอะไรนั้น คลิกอ่านได้เลยค่ะ บทที่ 7 เป้าหมายของผู้เล่น




"If you do not believe you can do it then you have no chance at all." - Arsene Wenger

"ถ้าคุณไม่เชื่อว่าคุณทำได้ คุณก็ไม่มีโอกาสทำได้"




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


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


แบบฝึกหัดที่ 6 จงเขียนปัญญาประดิษฐ์ของเกมต่อไปนี้

1. เกม TicTacToe แบบใช้สูตร โปรแกรมปัญญาประดิษฐ์จะต้องไม่มีทางแพ้เลย (ง่าย)
2. เกมไพ่โป๊กเกอร์ (Poker) (ปานกลาง)
3. เกมแบ็กแกมมอน (Backgammon) (ปานกลาง)
4. เกมโอเทลโล่ (Othello) (ยาก)
5. เกมหมากฮอส (ยาก)
[Image: 6977f46ce7a5965e6d2d71911a3fbaa9.png]
[-] The following 4 users say Thank You to Mikichan for this post:
  • Alphaforce, dreamknight, Ivan_GilDong, jojo741963
Reply
#2
;3

หมากฮอก ทำนานโฮกเลยล่ะครับ ตายแปป
May the flames guide your way. Every ending will make you stronger.

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)