101-game-dev-basics

From Wiki Planet
Jump to navigationJump to search

อยากทำเกมเอง เริ่มจากตรงไหนก่อนดีถึงจะไม่ล้มกลางทาง

คนที่รักเกมจำนวนไม่น้อยเคยแอบคิดว่าถ้าได้สร้างเกมในหัวออกมาจริงคงสนุกมาก สิ่งที่สกัดคนส่วนใหญ่ไว้ไม่ใช่ความยาก แต่เป็นข้อมูลที่มากจนไม่รู้ว่าควรเริ่มจากอะไร เราจะคุยกันเรื่องขนาดของงาน การเลือกเอนจิน และวิธีทำให้เกมแรกเสร็จโดยไม่ทิ้งกลางทางทำไมโปรเจกต์แรกถึงควรเล็กจนน่าอายมือใหม่ส่วนใหญ่เริ่มด้วยไอเดียที่ทีมสิบคนยังต้องใช้เวลาหลายปีกว่าจะทำเสร็จ พอทำไปสักพักก็เห็นว่าระยะทางที่เหลือยาวเกินกำลัง แล้วก็เลิกทำไปเงียบ ๆ ของเล็ก ๆ ที่ปล่อยออกไปได้จริงให้บทเรียนครบกว่างานใหญ่ที่ค้างอยู่ครึ่งทางที่เป็นแบบนั้นเพราะช่วงท้ายของโปรเจกต์คือส่วนที่ยากที่สุดและน่าเบื่อที่สุด เมนู ระบบบันทึกเกม เสียงตอนกดปุ่ม และการไล่แก้บักจุกจิกล้วนอยู่ในช่วงนั้นทั้งหมด ประสบการณ์ปิดงานให้จบหนึ่งครั้งเปลี่ยนวิธีวางแผนของเราไปตลอดทั้งชีวิตขั้นตอนเริ่มต้นทำเกมทีละข้อ1. กดที่นี่ เลือกเอนจินจากสิ่งที่อยากทำ ไม่ใช่จากที่คนพูดถึงมากที่สุดคำถามแรกไม่ควรเป็นเอนจินไหนดีที่สุด แต่ควรเป็นเกมแบบไหนที่เราอยากทำ ถ้าอยากทำเกมสองมิติแบบเลื่อนหน้าจอ เครื่องมือที่เบาและเรียนง่ายจะพาไปถึงเส้นชัยเร็วกว่า ส่วนงานสามมิติจะต้องแลกด้วยเวลาเรียนรู้ที่นานกว่าและเครื่องที่แรงกว่าพอสมควรให้เช็กด้วยว่าเวลาติดปัญหาแล้วมีคนถามคำถามคล้ายกันไว้ก่อนหน้าเยอะแค่ไหน การย้ายเครื่องมือกลางทางทำให้เราเสียเวลาเรียนรู้ซ้ำโดยที่เกมไม่คืบไปไหนเลย ความรู้เรื่องการวางระบบและจังหวะเกมติดตัวเราไป ไม่ได้ผูกกับเอนจินตัวใดตัวหนึ่ง2. เรียนรู้จากการทำให้จบ ไม่ใช่จากการดูวิดีโอสอนไปเรื่อย ๆหลายคนติดอยู่ในวงจรดูคลิปสอนแล้วรู้สึกว่าเข้าใจ แต่พอลงมือจริงกลับทำไม่ได้ สิ่งที่ทำให้จำได้จริงคือการแก้ปัญหาที่เราสร้างขึ้นมาเองด้วยมือของเราเอง วิธีที่ได้ผลคือดูบทเรียนสั้น ๆ หนึ่งอัน แล้วดัดแปลงสิ่งที่ทำตามให้เป็นของตัวเองการทำทุกวันวันละนิดชนะการทุ่มทีเดียวสิบชั่วโมงแล้วหายไปสองสัปดาห์เสมอ การเข้าร่วมงานแข่งทำเกมระยะสั้นก็เป็นทางลัดที่ดีสำหรับคนที่ทำไม่จบสักที ชิ้นงานแบบนี้แหละที่ทำให้เรากล้าเริ่มโปรเจกต์ถัดไปด้วยความมั่นใจกว่าเดิม3. เขียนกติกาของเกมออกมาให้ชัดก่อนเริ่มเขียนโค้ดทดสอบไอเดียด้วยการเล่าให้คนอื่นฟังสั้น ๆ ถ้าเล่าไม่จบแปลว่ายังไม่ชัดพอ เมื่อสรุปสั้น ๆ ไม่ได้ นั่นคือสัญญาณว่าต้องตัดไอเดียให้เหลือแกนเดียวก่อน การจดกติกาไว้ยังช่วยให้เรากลับมาดูได้ว่าสิ่งที่ทำอยู่ยังตรงกับแผนเดิมไหม4. เรื่องภาพและเสียงเมื่อเราวาดไม่เป็นและแต่งเพลงไม่เป็นข้ออ้างที่ได้ยินบ่อยที่สุดคือทำเกมไม่ได้เพราะวาดภาพไม่สวยและทำเพลงไม่เป็น ทางออกแรกคือใช้ทรัพยากรฟรีที่เปิดให้นำไปใช้ได้ ซึ่งมีให้เลือกเยอะมากในทุกแนวภาพ ทางออกที่สองคือเลือกสไตล์ภาพที่เรียบง่ายอย่างรูปทรงเรขาคณิตหรือภาพจุดความละเอียดต่ำ5. ขอบเขตงานที่บานปลายคือสาเหตุที่โปรเจกต์ตายอาการนี้เริ่มจากความคิดว่าถ้าใส่ระบบนี้เพิ่มอีกนิดเดียวเกมคงสนุกขึ้นเยอะ การเติมฟีเจอร์หนึ่งอย่างมักลากงานทดสอบและงานแก้บักตามมาอีกหลายเท่าตัว ให้มีสมุดพักไอเดีย เอาไว้จดของที่คิดออกแล้วเก็บไว้ทำในโปรเจกต์หน้าความสามารถในการบอกว่าอันนี้ไม่ทำ สำคัญพอ ๆ กับความสามารถในการเขียนโค้ด เกณฑ์ที่ใช้ได้ผลคือเก็บเฉพาะสิ่งที่ขาดไม่ได้จริง ที่เหลือเลื่อนไปหลังปล่อยเวอร์ชันแรก หลังปล่อยของ เสียงตอบรับจริงจะบอกลำดับความสำคัญได้ดีกว่าที่เราเดาเอาเอง6. วางระบบเก็บไฟล์และสำรองงานตั้งแต่วันแรกการมีแค่ไฟล์เดียวในเครื่องเดียวคือความเสี่ยงที่ไม่คุ้มเลยแม้แต่นิดเดียว เครื่องมือประเภทนี้เรียนรู้พื้นฐานได้ในหนึ่งเย็น แล้วใช้ได้ไปตลอดทั้งชีวิตการทำงาน อย่างน้อยที่สุดให้สำรองไฟล์ขึ้นที่เก็บออนไลน์อัตโนมัติทุกวันก็ยังดีกว่าไม่ทำอะไรเลย7. ให้คนอื่นลองเล่นตั้งแต่เกมยังไม่สวยการรอให้ทุกอย่างเรียบร้อยก่อนค่อยให้คนทดสอบทำให้เราเสียโอกาสแก้เรื่องสำคัญ คำถามที่อยากรู้คือผู้เล่นสับสนตรงไหน ไม่ใช่ว่าเขาชอบภาพของเราหรือเปล่า เวลาให้คนลองเล่น ให้นั่งดูเงียบ ๆ อย่าเพิ่งบอกวิธีเล่นแม้จะอยากช่วยแค่ไหน8. ปล่อยของที่ยังไม่สมบูรณ์ออกไปถ้ารอจนพอใจทุกจุด เราจะไม่ได้ปล่อยอะไรออกไปเลยตลอดชีวิตการทำเกม การปล่อยของออกไปคือส่วนหนึ่งของกระบวนการเรียนรู้ ไม่ใช่บททดสอบคุณค่าของเรา เสียงจากคนที่ไม่รู้จักเราจะตรงไปตรงมาและชี้จุดที่เรามองไม่เห็นด้วยตัวเองหน้าแนะนำเกมควรมีภาพเคลื่อนไหวสั้นที่แสดงการเล่นจริง ไม่ใช่แค่ภาพนิ่งสวย ๆ อย่าคาดหวังยอดคนเล่นมากในครั้งแรก เพราะเกมส่วนใหญ่เริ่มจากคนไม่กี่คนเสมอ ครั้งที่สองจะเร็วกว่าและเจ็บน้อยกว่ามาก เนื่องจากเรารู้แล้วว่าหลุมอยู่ตรงไหน9. สิ่งที่ได้เรียนรู้ซึ่งไม่มีในคอร์สไหนบทเรียนที่ใหญ่ที่สุดคือการรู้ว่าตัวเองทำงานได้จริงประมาณวันละเท่าไร ทักษะที่จำเป็นมากคือการเปิดโปรเจกต์ขึ้นมาทำต่อทั้งที่ยังไม่อยากทำ เราจะได้เรียนรู้ว่าไอเดียเปลี่ยนรูปเสมอเมื่อเจอข้อจำกัดจริง ซึ่งบางทีก็ดีขึ้นด้วยซ้ำข้อผิดพลาดที่มือใหม่มักเจอความผิดพลาดที่พบบ่อยที่สุดคือการเปรียบเทียบเครื่องมือไม่จบสักที อีกข้อคือออกแบบระบบเผื่ออนาคตจนลืมทำส่วนที่ทำให้เกมสนุกในตอนนี้ ข้อที่สามคือแก้ฉากเปิดเป็นสิบรอบแล้วเกมก็ยังมีอยู่แค่ฉากเดียวข้อที่สี่คือลืมว่าเกมที่เราชื่นชมนั้นผ่านการทำงานของคนจำนวนมากมาหลายปี ข้อที่ห้าคือเก็บงานไว้คนเดียวจนเสียโอกาสแก้ปัญหาที่คนนอกเห็นตั้งแต่แรก ข้อสุดท้ายคือหนีความน่าเบื่อด้วยการไปหลงรักไอเดียใหม่ที่ยังไม่มีปัญหาคนอยากทำเกมในบ้านเราเริ่มต้นยังไงได้บ้างเอนจินยอดนิยมหลายตัวไม่มีค่าใช้จ่ายจนกว่าเกมจะทำรายได้ถึงระดับหนึ่ง ให้เริ่มด้วยของที่มีอยู่ก่อน แล้วค่อยอัปเกรดเมื่อรู้ชัดว่าติดขัดตรงไหนจริง ๆ ควรจัดที่วางเครื่องให้ระบายอากาศได้ดี เพราะการทำงานนาน ๆ ทำให้เครื่องร้อนกว่าปกติเอกสารทางการของเครื่องมือแทบทั้งหมดเป็นภาษาอังกฤษ จึงต้องใช้เวลาปรับตัวช่วงแรก ทางออกคือเริ่มจากคลิปภาษาไทยเพื่อจับภาพรวม แล้วค่อยขยับไปอ่านเอกสารต้นทาง ลองหากลุ่มที่มีการแบ่งปันผลงานประจำสัปดาห์ เพราะแรงกดดันเบา ๆ ช่วยให้เราทำต่อเนื่องหลายคนลังเลว่าเส้นทางนี้เลี้ยงตัวเองได้จริงหรือเป็นแค่งานอดิเรก คำตอบที่ปลอดภัยคือทำควบคู่ไปกับงานหรือการเรียนไปก่อนจนกว่าจะมีผลงานสะสม มีทั้งบริษัทที่ทำเกมของตัวเองและบริษัทที่รับงานจากต่างประเทศ ซึ่งเปิดรับคนใหม่อยู่งบประมาณก็เป็นเรื่องที่ต้องคิดตั้งแต่ต้นถ้าตั้งใจจะปล่อยเกมขายจริง เริ่มจากช่องทางที่ไม่ต้องลงทุนก่อน แล้วค่อยขยับไปช่องทางที่มีค่าธรรมเนียมทีหลัง เรื่องพวกนี้ไม่ยากแต่ต้องเตรียมล่วงหน้า อย่าปล่อยไว้จนถึงวันที่เงินเข้าแล้วคำถามที่พบบ่อยไม่มีพื้นฐานการเขียนโค้ดเลยจะทำเกมได้หรือเปล่า ตอบว่าเริ่มได้อยู่ เพราะเอนจินสมัยนี้มีระบบต่อบล็อกคำสั่งที่ให้เราสร้างกติกาได้โดยไม่ต้องพิมพ์โค้ดควรเรียนภาษาโปรแกรมตัวไหนก่อนถ้าอยากทำเกมจริงจัง ให้ดูที่เอนจินที่เลือกไว้ เพราะการเรียนภาษาที่เอนจินไม่รองรับจะทำให้เราเอาไปใช้กับโปรเจกต์จริงไม่ได้ควรชวนเพื่อนมาทำด้วยกันไหม ตอบว่าโปรเจกต์แรกทำคนเดียวมักง่ายกว่า เพราะการทำงานเป็นทีมต้องใช้ทักษะการสื่อสารเพิ่ม ซึ่งเป็นภาระอีกชั้นสำหรับมือใหม่ใช้เวลานานแค่ไหนกว่าจะทำเกมแรกเสร็จ ขึ้นอยู่กับขนาดที่เราเลือกทำ ถ้าตั้งเป้าให้เล็กจริง ๆ หนึ่งเดือนก็เห็นผลงานที่เล่นได้ตั้งแต่ต้นจนจบแล้วคอร์สเสียเงินคุ้มกว่าของฟรีจริงหรือเปล่า ตอบว่าช่วงแรกของฟรีก็พอแล้ว เนื่องจากปัญหาของมือใหม่ไม่ใช่การขาดข้อมูล แต่คือการไม่ได้ลงมือทำอย่างต่อเนื่องเกมที่ทำเสร็จแล้วควรเอาไปลงที่ไหน ให้เริ่มจากแพลตฟอร์มที่เปิดรับงานอิสระ จากนั้นให้ขอคำติชมจากชุมชนที่ยินดีลองเล่นงานของคนเริ่มต้นด้วยกันสรุปจุดเริ่มที่ดีที่สุดไม่ใช่การเลือกเครื่องมือให้ถูก แต่คือการลงมือทำของเล็ก ๆ ให้เสร็จ เลือกเอนจินที่เข้ากับเกมในหัว ตัดขอบเขตให้เล็กที่สุด แล้วตั้งใจทำให้ถึงเส้นชัย อย่ากังวลว่ามันจะสมบูรณ์แค่ไหน ขอแค่ให้มันจบ แล้วเริ่มตัวถัดไปด้วยบทเรียนที่ได้มา