กรุณาเลือก อุปกรณ์เคลื่อนที่ | แสดงผลรูแบบคอมพิวเตอร์
ดู: 418|ตอบ: 1

[สอนสร้างเกม] เรียนสร้างเกมกับมิกิจัง : บทที่ 1 ปฐมบท - เกม (Game)

[คัดลอกลิงก์]
 
 มีนามว่าRin_Thida 
 สมาชิกคนที่115 
 เพศ 
 ระดับการอ่าน50 
กระทู้ 
 ค่าประสบการณ์ 
 ทอง 
 ชื่อเสียง 
 ออนไลน์ 

คุณยังไม่ได้ใช้เหรียญ
กรุณาคลิกที่นี่เพื่อใช้เหรียญ

     
โพสต์เมื่อ 2018-4-29 01:11:15 | แสดงโพสต์ทั้งหมด |โหมดอ่าน
แก้ไขครั้งสุดท้ายโดย Rin_Thida เมื่อ 2018-12-18 14:20

บทความนี้เป็นบทความเก่าจากคลัง Planila Game Developer เขียนโดย Mikichan เมื่อวันที่ 30 มีนาคม 2560 (ต้นฉบับ : http://planila.blogspot.com/2017/03/1-game.html)


มีความฝันอยากสร้างเกมเป็นของตัวเอง แต่ไม่รู้ว่าต้องทำอย่างไร ที่นี่มีคำตอบ......



เกมคืออะไร?

ก่อนจะสร้างคิดจะสร้างเกมสักเกม ต้องตอบคำถามนี้ให้ได้ก่อนว่า "เกมคืออะไร?" เพื่อที่จะได้สร้างเกมได้ตรงตามความหมายและความต้องการของเรา ผู้เขียนเชื่อว่าคนที่เข้ามาอ่านบทความนี้ทุกคนเคยเล่นเกมมาก่อน ว่าแต่เกมคืออะไรกันนะ? ด้านล่างนี้คือตัวอย่างนิยามของคำว่าเกม (Game)

"(N.) An activity that one engages in for amusement or fun." - Oxford Dictionary
"กิจกรรมที่สร้างความบันเทิงหรือความสนุกสนาน"
"(N.) an entertaining activity or sport, especially one played by children, or the equipment needed for such an activity: a board game, indoor/computer games" - Cambridge Dictionary
"กิจกรรมบันเทิงหรือกีฬา, มักถูกเล่นโดยเด็ก, หรืออุปกรณ์ที่ใช้ในการทำกิจกรรม เช่น เกมกระดาน, เกมในร่ม, เกมคอมพิวเตอร์"
"น. การแข่งขันที่มีกติกากำหนด เช่น เกมกีฬา, การเล่นเพื่อความสนุก เช่น เกมคอมพิวเตอร์, การแสดงเพื่อสาธิตกิจกรรม เช่น เกมการบริหาร, โดยปริยายหมายถึงการแสดงที่ใช้กลวิธีหรือเล่ห์เหลี่ยมเพื่อหักล้างกัน เช่น เกมการเมือง, ลักษณนามเรียกการแข่งขันหรือการเล่นที่จบลงด้วยการแพ้ชนะกันครั้งหนึ่ง ๆ เช่น เล่นแบดมินตัน ๓ เกม. (อ. game)." - พจนานุกรมฉบับราชบัณฑิตสถาน พ.ศ.2554
"กิจกรรมที่สร้างความสนุกสนานให้กับผู้เข้าร่วมกิจกรรม" - ผู้เขียน

จากตัวอย่างด้านบนจะเห็นว่า เกมมีคำนิยามที่ค่อนข้างกว้างมาก มีหลายสิ่งหลายอย่างที่สามารถเรียกว่าเกมได้ เช่น เกมกีฬา เกมกระดาน เกมไพ่ เกมคอมพิวเตอร์ แล้วสิ่งที่เรากำลังกล่าวถึงล่ะคือเกมประเภทไหน? "วิดีโอเกม (Video Game)" คือเกมที่เล่นบนอุปกรณ์อิเล็กทรอนิกส์ ซึ่งมีความหมายกว้างกว่าเกมคอมพิวเตอร์ (Computer Game) เพราะรวมไปถึงเกมโทรศัพท์ (Mobile Game) เกมคอนโซล (Console Game) และเกมบนอุปกรณ์อิเล็กทรอนิกส์อื่น ๆ ด้วย เกมที่เรากล่าวถึงในบทความนี้ก็คือวิดีโอเกมนั่นเอง

***จากนี้ไปจะเรียกอุปกรณ์อิเล็กทรอนิกส์แบบดิจิตอล (Digital) ที่ใช้เล่นวิดีโอเกมอย่างสั้น ๆ ว่า "อุปกรณ์" เพื่อให้มีความหมายครอบคลุมอุปกรณ์อิเล็กทรอนิกส์ทุกชนิด ไม่เฉพาะเจาะจงว่าเป็นคอมพิวเตอร์หรืออุปกรณ์ใดอุปกรณ์หนึ่ง เนื่องจากตอนนี้เรากำลังศึกษาเกี่ยวกับวิดีโอเกมแบบกว้าง ๆ ยังไม่เจาะจงอุปกรณ์ใดอุปกรณ์หนึ่งเป็นพิเศษ***



เกมทำงานได้อย่างไร?

ก่อนที่จะศึกษาวิธีสร้างเกม เราต้องรู้หลักการทำงานของเกมก่อนว่า "เกมทำงานได้อย่างไร?"

เกมถือว่าเป็นแอปพลิเคชัน (Application) รูปแบบหนึ่ง ข้อมูลและคำสั่ง (Code) ในเกมจะถูกบันทึกเป็นภาษาเครื่อง (Machine Code) ซึ่งใช้สัญลักษณ์แทนด้วยเลขฐานสอง (Binary) เมื่อเราเปิดแอปพลิเคชันขึ้นมาอุปกรณ์จะอ่านคำสั่งออกมาทีละคำสั่ง แล้วดำเนินการตามคำสั่งนั้น ๆ เช่น เกม zyx มีคำสั่งดังต่อไปนี้

  1. //ตัวอย่างเกม zyx
  2. บรรทัดที่ 1. แสดงหน้าจอ Title ของเกม
  3. บรรทัดที่ 2. เล่นเพลงประกอบ abc.def
  4. บรรทัดที่ 3. ตรวจจับการกดคีย์บอร์ด
  5. บรรทัดที่ 4. ถ้ามีการกดปุ่ม Enter บนคีย์บอร์ดให้แสดงหน้าจอ New Game แทนหน้าจอ Title (เปลี่ยนหน้าจอใหม่)
คัดลอกไปที่คลิปบอร์ด

ลำดับการทำงานของเกม zyx จะเป็นดังนี้

  • เมื่อเริ่มเปิดเกมอุปกรณ์จะอ่านคำสั่งบรรทัดที่ 1 เพียงบรรทัดเดียวก่อน อุปกรณ์จะทำการแสดงหน้าจอ Title ของเกม แต่ยังไม่เล่นเพลงประกอบ abc.def และยังไม่ตรวจจับการกดคีย์บอร์ด

  • เมื่ออุปกรณ์แสดงหน้าจอ Title ของเกมเสร็จแล้วก็จะอ่านคำสั่งบรรทัดที่ 2 เพียงบรรทัดเดียวคือเล่นเพลงประกอบ abc.def ยังไม่ตรวจจับการกดคีย์บอร์ด ส่วนหน้าจอ Title ของเกมจะยังคงแสดงอยู่ เนื่องจากยังไม่มีคำสั่งลบหรือเปลี่ยนหน้าจอใหม่

  • เมื่ออุปกรณ์เล่นเพลงประกอบ abc.def แล้วก็จะอ่านคำสั่งบรรทัดที่ 3 เพียงบรรทัดเดียวคือตรวจจับการกดคีย์บอร์ด คำสั่งบรรทัดนี้จะทำหน้าที่แค่ตรวจจับการกดคีย์บอร์ดเพียงอย่างเดียวเท่านั้น ยังไม่มีการดำเนินการตอบสนองต่อการกดคีย์บอร์ดแต่อย่างใด

  • เมื่ออุปกรณ์ตรวจจับการกดคีย์บอร์ดแล้วก็จะอ่านคำสั่งบรรทัดที่ 4 เพียงบรรทัดเดียวคือถ้ามีการกดปุ่ม Enter ให้แสดงหน้าจอ New Game แทนหน้าจอ Title คำสั่งบรรทัดนี้เป็นคำสั่งที่ทำงานต่อมาจากคำสั่งบรรทัดที่ 3 เพื่อตอบสนองต่อการกดคีย์บอร์ด โดยจะใช้ค่าที่ได้จากบรรทัดที่ 3 เท่านั้น บรรทัดที่ 4 จะไม่มีการตรวจจับการกดคีย์บอร์ดเอง และถ้าปุ่มที่ถูกกดไม่ใช่ปุ่ม Enter ก็จะไม่มีการตอบสนองใด ๆ

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



อยากสร้างเกมต้องทำอย่างไร?

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

อ่านมาถึงตรงนี้แล้วผู้อ่านอาจเกิดความรู้สึกเหนื่อยหน่าย ความฝันที่จะสร้างเกมของใครบางคนอาจจะสลายไปแล้ว แต่เดี๋ยวก่อนอ่านตรงนี้ก่อน สิ่งที่ผู้เขียนกล่าวมาทั้งหมดข้างต้นเป็นเนื้อหาที่เป็นความจริงในทางทฤษฎี ซึ่งมีวิธีการที่ค่อนข้างยาก ซับซ้อน และเกี่ยวข้องกับการเขียนโปรแกรมทั้งนั้น แต่ในทางปฏิบัติจริง ๆ แล้วมีวิธีที่ง่ายกว่านั้นอยู่มากทั้งเครื่องมือช่วยสร้างเกม เครื่องมือแปลภาษาเป็นภาษาเครื่อง และเครื่องมือต่าง ๆ อีกมากมายที่จะทำให้การสร้างเกมของเราเป็นสิ่งที่ง่ายดายที่แม้แต่เด็กก็ทำได้ เหตุผลที่ผู้เขียนต้องอธิบายเนื้อหาในทางทฤษฎีที่ฟังดูยุ่งยาก ก็เพื่อให้ผู้อ่านได้เข้าใจหลักการทางทฤษฎีซึ่งเป็นพื้นฐานในการต่อยอดต่อไป

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



จะสร้างเกมต้องเขียนโปรแกรมเป็นด้วยไหม?

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



เกมแรกของฉันจะเป็นแบบไหน?

หลายคนมีความฝันอยากสร้างเกมเป็นของตัวเอง เพราะเห็นเกมฟอร์มยักษ์ที่วางขายตามตลาดอย่างเกมแนว 3D, FPS แล้วอยากสร้างเกมแบบนั้นเป็นของตัวเองบ้าง ผู้เขียนขอบอกเลยว่าอีกนานหลายปีกว่ามือใหม่จะพัฒนาตัวเองให้สร้างเกมฟอร์มยักษ์แบบนั้นได้ หนึ่งปีแรกที่เริ่มศึกษาผู้อ่านไม่มีทางสร้างเกมใหญ่โตขนาดนั้นได้ทันทีเลยหรอก สิ่งนี้เองเป็นสิ่งที่ทำให้มือใหม่ที่อยากสร้างเกมถอดใจกันไปหลายคน เพราะตั้งความฝันไว้สูงแต่ไม่มีความพยายามไปให้ถึง ถ้าผู้อ่านเป็นหนึ่งในมือใหม่ที่มีความฝันอยากจะสร้างเกมฟอร์มยักษ์เหมือนอย่างเกมดัง ๆ บ้าง ผู้เขียนขอบอกไว้ตั้งแต่ตอนนี้เลยว่า ผู้อ่านจะได้สร้างเกมฟอร์มยักษ์แบบนั้นได้เป็นอันดับท้าย ๆ เลย กว่าจะเริ่มต้นสร้างเกมฟอร์มยักษ์จริงก็คงตั้งรออีกหลายปีข้างหน้า ระหว่างทางตามล่าความฝันนี้ผู้อ่านจะต้องผ่านบททดสอบด้วยการสร้างเกมหลากหลายเกม เพื่อเป็นสิ่งพิสูจน์ว่าผู้อ่านมีความรู้ ความสามารถ และความพยายามมากพอจริง ๆ ที่จะสร้างเกมฟอร์มยักษ์แบบนั้นได้ ถ้าผู้อ่านมีความพยายามมากพอจริง ๆ ผู้เขียนก็ขอเป็นกำลังใจให้ประสบความสำเร็จ

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



สุดท้ายนี้ผู้เขียนขอให้ผู้อ่านมีความพยายามอย่างสม่ำเสมอในการศึกษาหาความรู้ ท้อได้แต่อย่าถอย แล้วเจอกันในบทต่อไปค่ะ บทที่ 2 เกมเอนจิน (Game Engine)



"Many of life's failures are people who did not realize how close they were to success when they gave up." - Thomas A. Edison

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




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


คำศัพท์ที่ควรรู้ท้ายบท

แอปพลิเคชัน (Application) VS โปรแกรม (Program)

"โปรแกรม" หมายถึง ชุดของคำสั่ง (Code) ที่รวมกันเพื่อทำหน้าที่ใดหน้าที่หนึ่งอย่างเฉพาะเจาะจง

"แอปพลิเคชัน" หมายถึง ชุดของโปรแกรมที่ทำหน้าที่ร่วมกันเพื่อจุดประสงค์ใด ๆ

"แอปพลิเคชัน" หนึ่งจะมี "โปรแกรม" หนึ่งตัวหรือหลายตัวก็ได้ ยกตัวอย่างเช่น แอปพลิเคชันเบราเซอร์หนึ่งตัวจะมีหลายโปรแกรมย่อยภายใน เช่น โปรแกรมติดตั้งและถอนการติดตั้ง (Installer & Uninstaller), โปรแกรมอ่านหน้าเว็บ html, โปรแกรมปลั๊กอิน (Plug-In) เป็นต้น ดังนั้นคำว่า "แอปพลิเคชัน" จะมีความหมายกว้างกว่าคำว่า "โปรแกรม"


สร้าง (Make/Create) VS พัฒนา (Develop)

คำว่า "สร้าง" กับคำว่า "พัฒนา" ในทางซอฟต์แวร์ (Software) มีความหมายเหมือนกัน คือการทำให้เกิดซอฟต์แวร์ตัวใหม่ขึ้น ข้อแตกต่างอยู่ตรงที่คำว่า "สร้าง" เป็นคำที่เป็นภาษาพูดทั่วไป ในขณะที่คำว่า "พัฒนา" เป็นคำศัพท์ทางวิชาการ ในบทนี้ผู้เขียนได้ใช้คำว่า "สร้างเกม" เพื่อให้ผู้อ่านเข้าใจได้ง่าย แต่ในบทต่อ ๆ ไปผู้เขียนจะใช้คำว่า "พัฒนาเกม" แทนเพื่อให้มีความเป็นเนื้อหาทางวิชาการมากขึ้น


การเขียนโปรแกรม (Programming) VS การพัฒนาโปรแกรม (Program Development)

"การเขียนโปรแกรม" หมายถึง การใส่ชุดของคำสั่งให้โปรแกรม

"การพัฒนาโปรแกรม" หมายถึง การทำให้เกิดซอฟต์แวร์ตัวใหม่ขึ้นทั้งหมด ตั้งแต่การออกแบบโปรแกรม การเตรียมกราฟฟิกและเสียง การเขียนโปรแกรม การทดสอบโปรแกรม การแจกจ่ายและโฆษณาโปรแกรม ฯลฯ ซึ่งมีความหมายกว้างกว่า "การเขียนโปรแกรม" เพียงอย่างเดียว



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

แบบฝึกหัดที่ 1 จงตอบคำถามต่อไปนี้

1. ในความคิดของคุณเกมคืออะไร?

2. คำสั่งในเกมจะถูกบันทึกเป็นอะไร? และใช้สัญลักษณ์อะไรแทนสิ่งนั้น?

3. จากตัวอย่างเกม zyx ในหัวข้อเกมทำงานได้อย่างไรด้านบน ถ้าไม่มีบรรทัดที่ 3 แล้วเมื่อกดปุ่ม Enter เกมจะมีการตอบสนองอย่างไร? (วิเคราะห์)

4. ในช่วงเวลาหนึ่งอุปกรณ์จะสามารถอ่านคำสั่งได้ครั้งละกี่คำสั่ง?

5. เพราะเหตุใดการสร้างเกมในปัจจุบันจึงเป็นเรื่องที่ง่ายดาย?

คะแนน

จำนวนผู้เข้าร่วม 1FAME +4 ย่อ เหตุผล
jojo741963 + 4

ดูบันทึกคะแนน

 
 มีนามว่าoSolitaryo 
 สมาชิกคนที่38 
 เพศ 
 ระดับการอ่าน150 
กระทู้ 
 ค่าประสบการณ์ 
 ทอง 
 ชื่อเสียง 
 ออนไลน์ 

คุณยังไม่ได้ใช้เหรียญ
กรุณาคลิกที่นี่เพื่อใช้เหรียญ

Terroza (U) ★
แฮร่..มันจะไปขย้ำหัวคุณ
     
โพสต์เมื่อ 2018-4-30 21:10:27 | แสดงโพสต์ทั้งหมด
เดี๊ยวๆ แบบฝึกหัดนี่คืออะไร ต้องส่งด้วยไหม กี่คะแนนดีครับ ทำแล้วได้เกรดอะไร และทำแล้วมีคะแนนช่วยไหมครับ /ผิดๆ

/ส่งแบบฝึกหัด (ห้ามลอกโปรดใช้ความรู้ส่วนบุคคลมากกว่าความรู้ข้างโต๊ะ)


ช่องใส่คะแนน _________
ลายเซ็นต์อาจารย์ ______
คุณต้องเข้าสู่ระบบก่อนจึงจะสามารถตอบกลับโพสต์นี้ได้ เข้าสู่ระบบ | สมัครสมาชิก

รายละเอียดเครดิต

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้