อยากเป็นเกมโปรแกรมเมอร์ ต้องทำอย่างไร

การร่ำเรียนวิทยายุทธนั้น มีหลักอยู่ว่า “แรกเริ่มต้องเปิดกว้าง ภายหลังจึงจำกัดวงให้แคบเข้า” เป็นคำพูดจากตัวละครนึงในเรื่อง “Kenji” (Story : Matsuda Ryuchi, Illustration : Fujiwara Yoshihide) ซึ่งเป็นการ์ตูนเรื่องนึงที่ผมหยิบมาอ่านอยู่บ่อย ๆ

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

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

พอเรียนรู้ตรงนี้แล้วเราก็จะเริ่มเขียนเกมเป็นรูปเป็นร่างได้แล้ว ตรงนี้จะอยู่เป็นบทแรก ๆ ของหนังสือที่สอนเขียนเกมในเชิงทฤษฎีแทบทุกเล่มครับ (แต่ภาษาไทยดูเหมือนจะไม่มีนะ) พอรู้เรื่องโปรแกรมเกมแล้ว ก็ให้ลองเขียนเกมง่าย ๆ ด้วยสิ่งที่เรารู้ เช่น ลองเขียนเกมแบบ Console/Text Based ง่าย ๆ ดูก่อน อาจจะเป็นเกมไพ่หรืออะไรก็ได้ทำนองนี้น่ะครับ จากนั้นก็เริ่มเรียนรู้ที่จะใส่ input และ output ทั้งการรับค่าจากคีย์บอร์ด เมาส์ จอยสติ๊ก และการแสดงผลทางหน้าจอ และการเล่นเสียง ให้ศึกษาทั้งหมดแต่ศึกษาแค่คร่าว ๆ เพื่อให้รู้ภาพรวมแต่ละส่วนว่าเกมประกอบไปด้วยอะไร และ ประกอบกันอย่างไร ตรงนี้ต้องให้เวลากับมันครับ ที่สำคัญคืออย่ายึดติดกับ API, Platform, Engine หรือ Lib อะไรก็แล้วแต่ เพราะการเป็นโปรแกรมเมอร์ที่ดีเราต้องรู้ที่จะใช้เครื่องมือ ไม่ใช่เรียนรู้ที่จะตกเป็นเครื่องมือครับ หัดใช้ Lib แค่พอรู้เรื่องก็พอ ที่สำคัญจริง ๆ คือทฤษฎีเบื้องหลังต่างหาก

อีกเรื่องหนึ่งที่สำคัญคือการออกแบบโปรแกรมให้เป็นระบบ ตรงนี้มีหลาย ๆ เรื่องที่สอนกันได้ และสอนกันไม่ได้ ที่จำเป็นก็คงจะเป็นเรื่อง Software Design, Architecture และ Design Pattern ต่าง ๆ ตรงนี้เป็นอีกเรื่องยากแต่คุ้มที่จะเรียนรู้มันครับ

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

ความสำเร็จที่เหลือก็ขึ้นอยู่กับความพยายามแล้ว

อย่างที่คำกล่าวข้างต้นว่าไว้ครับ ในตอนแรกให้ศึกษาให้กว้างที่สุดเท่าที่ทำได้ แล้วจึงศึกษารายละเอียดให้แตกฉานในเรื่องที่ตัวเองสนใจเป็นพิเศษครับ สุดท้ายอยากแนะนำให้อ่านหนังสือสักสองเล่มครับ

  • Game Architecture and Design: A New Edition (Paperback) by Andrew Rollings (Author), David Morris (Author) เล่มนี้พูดถึงการเขียนเกมตั้งแต่ดีไซน์ พัฒนา จนถึงขาย แต่อยู่ในมุมมองของโปรแกรมเมอร์ ผมใช้เล่มนี้ตอนเรียนที่เอแบคด้วยครับ
  • Core Techniques and Algorithms in Game Programming (Paperback) by Daniel Sanchez-Crespo Dalmau (Author) เล่มนี้พูดถึง Architecture และ Algorithm พื้นฐานที่ใช้กันบ่อย ๆ ในการทำเกม โดยที่ครอบคลุมทั้งเรือง Game, Graphic, User Input, Network รวมทั้ง Data Structure และ Algorithm พื้นฐานต่าง ๆ ลองหามาอ่านดูนะครับ น่าจะเป็นประโยชน์