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

การร่ำเรียนวิทยายุทธนั้น มีหลักอยู่ว่า “แรกเริ่มต้องเปิดกว้าง ภายหลังจึงจำกัดวงให้แคบเข้า” เป็นคำพูดจากตัวละครนึงในเรื่อง “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 พื้นฐานต่าง ๆ ลองหามาอ่านดูนะครับ น่าจะเป็นประโยชน์

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

  1. ไม่จำเป็นต้อง C++
    ภาษาอะไรก็ได้
    เขียนไปเถอะอย่าเจอะจง
    ขอให้ได้แนวคิดก็พอ
    ถ้าอยากเขียนเกม ใช้ เอนจิ้น รับรองง่าย
    ไม่ก็ XNA

  2. ก็อย่างที่บอกล่ะครับว่า ที่ให้ศึกษา C++ ไปเลย เพราะว่า ทุกคนที่ผมรู้จักที่ทำงานเกมระดับมืออาชีพ ไม่ว่าจะศึกษาภาษาอะไร สุดท้ายเขาจะต้องกลับมาหัด C++ กันหมดด้วยเหตุผลใดก็ตาม

    ตรงจุดนี้มีข้อยกเว้นเหมือนกัน สำหรับคนที่พัฒนาเกมลงบนแพลตฟอร์มมือถือ ซึ่งหลาย ๆ ตัวก็ไม่รองรับ C++ (เช่น Android หรือ Windows Phone 7)

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

    สิ่งที่จะบอกคือศึกษาจุดยากไปก่อนแล้วจะง่ายทีหลังครับ

  3. หรืออย่างน้อย ก็หัดเขียนโปรแกรมด้วย C++ เถอะครับ แล้วจะเกิดผล 😀 คือมันจะทำให้เข้าใจการเขียนโปรแกรมได้ดีกว่าภาษาอื่น และก็ทำให้ติดนิสัยไม่ประมาทมาด้วย เพราะพอพลาดที่จะไม่มีใครจัดการให้

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.