วันพฤหัสบดีที่ 16 พฤษภาคม พ.ศ. 2556

อยากเริ่มเขียนเกม เริ่มยังไงดี

อันนี้เป็นกระทู้มาจาก thaigamedevx นะ แต่จะโพสบางอันที่น่าสน
แต่อยากดูตัวจิง  ตามนี้เลย
http://forums.thaigamedevx.com/index.php?topic=20.0
สำหรับคนที่อยากเริ่มเขียนเกม คงจะต้องถามตัวเองก่อนว่าต้องการเขียนเกมเพื่ออะไร ซึ่งในแต่ละกรณีจะมี ภาษาคอมพิวเตอร์ และ Tools ที่เหมาะสมแตกต่างกัน นอกจากนั้นการเริ่มต้นคงขึ้นอยู่กับว่าตอนนี้รู้อะไรบ้างแล้ว เช่น เขียนโปรแกรมเป็นหรือไม่ 

สำหรับคนที่อยากลองเขียนเกมเพื่อความสนุก มีจุดมุ่งหมายคือการทำเกมแบบที่อยากทำ โดยไม่สนใจที่จะเรียนรู้เกี่ยวกับการทำเกมแบบลึกๆ และไม่เคยเขียนโปรแกรมมาก่อน ผมแนะนำให้หา engine มาใช้ ยิ่งง่ายยิ่งดีครับ engine อย่าง http://www.gamemaker.nl/ น่าจะเหมาะสมที่สุดในกรณีนี้ เพราะเป็น engine และเครื่องมือสร้างเกมที่ออกแบบมาสำหรับคนที่เขียนโปรแกรมไม่เป็นให้สามารถสร้างเกมได้ .. ในเส้นทางนี้คุณก็จะสามรถสร้างเกม 2d และ 3d แบบเล่นคนเดียวชนิดง่ายๆ ถึงขั้นซับซ้อนปานกลางได้ ..

ในกรณีถัดมา ถ้าหากคุณสนใจที่จะทำเกม 2d หรือ 3d โดยที่คุณไม่เคยเขียนโปรแกรมมาก่อน แต่คุณมีความอยากที่จะเรียนรู้เกี่ยวกับการเขียนโปรแกรมแบบง่ายๆ หรือคุณเคยเขียนโปรแกรมมาบ้าง แต่ไม่อยากเสียเวลาศึกษาอะไรแบบลึกๆ วุ่นวายๆ ผมขอแนะนำ engine ภาษา Basic อย่างเช่น http://www.blitzbasic.com/ หรือ DarkBasic (http://darkbasic.thegamecreators.com/) ซึ่งระหว่าง 2 ตัวนี้ จริงๆ ผมแนะนำ Blitz Basic มากกว่าครับ เพราะมี bug น้อยกว่า และเสถียรกว่า (จากที่ผมอ่านๆ มา) แต่ DarkBasic อาจจะหาข้อมูลภาษาไทยได้ง่ายกว่าครับ เพราะเป็นที่นิยมในหมู่นักทำเกมสมัครเล่นของไทยพอสมควร .. ด้วยเครื่องมือระดับนี้ คุณจะสามารถทำเกมที่ซับซ้อนมากขึ้น แต่มันก็ยังมีขีดจำกัดของมันอยู่ ซึ่งผมแนะนำว่า ก่อนที่คุณจะลงทุนลงเวลากับการศึกษาเครื่องมือเหล่านี้มากเกินไป คุณควรจะศึกษาถึงข้อจำกัดของมัน และจุดมุ่งหมายของตัวคุณเองให้ดีก่อน .. ประเด็นแรกๆ คือ engine เหล่านี้ใช้ภาษาคอมพิวเตอร์ที่เป็นรูปแบบเฉพาะของมัน ดังนั้นความรู้บางส่วนที่คุณเรียนรู้ตรงนี้ จะไม่สามารถนำไปใช้ได้ในการเขียนเกมบน platform อื่นๆ .. นอกจากนี้ การใช้ engine เหล่านี้ มันอาจจะง่ายจนกระทั่งคุณจะไม่ได้เรียนรู้สิ่งต่างๆ หลายอย่างที่เป็นพื้นฐานลึกๆ ของการเขียนเกม แต่อย่างไรก็ดี engine เหล่านี้ เหมาะสำหรับคนที่ไม่อยากทุ่มเทเวลาในการศึกษามากเกินไป และอยากได้เกมออกมาเป็นรูปเป็นร่างเร็วๆ เกมต้มยำกุ้ง ก็เป็นตัวอย่างหนึ่งของเกมที่ใช้ DarkBasic สร้าง

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

อันดับแรก ถ้าคุณยังไม่ได้เข้ามหาวิทยาลัย พอถึงเวลา ผมขอแนะนำให้เลือกสายที่เกี่ยวข้องกับคอมพิวเตอร์ครับ ไม่ว่าจะเป็นวิศวะ หรือวิทยาศาตร์ หรือวิทยาการคอมพิวเตอร์ เพราะเมื่อคุณเข้าไปเรียน คุณจะได้รับทฤษฎีความรู้ต่างๆ เกี่ยวกับคอมพิวเตอร์ที่เป็นพื้นฐานที่จะช่วยคุณต่อไปได้มากในการพัฒนาเกม ... นอกจากนี้การทำเกมของคุณ ก็จะได้ประโยชน์เป็นการฝึกการเขียนโปรแกรมเพื่อการเรียนไปในตัวด้วย หรือคุณอาจจะทำโปรเจคจบเป็นหัวข้อเกี่ยวกับเกมหรือ 3d ด้วยก็ได้ เมื่อเรียนจบออกมา ถึงแม้ว่าอาจจะไปทำงานด้าน web application แต่ความรู้ต่างๆ ที่คุณได้จากการศึกษาด้านการพัฒนาเกม ก็จะทำให้คุณเป็นคนที่เข้าใจการเขียนโปรแกรมในเชิงลึกกว่าคนทั่วๆ ไปด้วย

แล้วในระหว่างนี้ที่ยังเรียนมัธยม หรือว่าถ้าเกิดว่าไม่ได้จบมาทางด้านคอม แต่อยากเป็นโปรแกรมเมอร์เขียนเกมเองล่ะ จะทำไง? ผมขอแนะนำว่าให้เริ่มศึกษาเกี่ยวกับการเขียนโปรแกรมโดยใช้ "a real programming language" (ภาษาโปรแกรมจริงๆ) ซักภาษา แนะนำว่า Java หรือ C++ จะเหมาะมาก เพราะเป็น 2 ภาษาที่มีการใช้มากที่สุด ทั้งในการเขียนเกม และการเขียนโปรแกรมอื่นๆ แต่ถ้าคุณใจสู้จริงๆ ผมแนะนำว่า C++ ไปเลยครับ ... ต้องลองหาหนังสือดีๆ มาอ่านซักเล่มครับ .. โดยที่การศึกษาภาษา C++ หรือ Java นี้ คุณต้องทำใจก่อนเลยว่าคุณคงจะไม่สามารถสร้างเกมออกมาได้เร็วๆ เท่าพวก DarkBasic แน่ๆ แต่สิ่งที่คุณจะได้คือความรู้ติดตัวที่ใช้ไปได้ตลอด

หลังจากที่เข้าใจ C++ ในระดับเบื้องต้น แนะนำว่าให้ทำความเข้าใจเกี่ยวกับ Data Structures พวก Linked Lists แล้วก็ศึกษาตัว STL ให้ดีด้วย เพราะมักจะต้องใช้บ่อยในการจัดการข้อมูลภายในของเกม 

ถัดมาก็ให้ลองดูเกี่ยวกับ DirectX หรือ Graphics Library อย่างเช่น SDL .. ช่วงแรกให้ดู 2D ก่อนจะดีกว่าครับ ลองทำเกมง่ายๆ เริ่มจาก OX ต่อด้วย Pac Man แล้วก็ลองทำเกมแนว Shooting ง่ายๆ .. แน่นอนคุณอาจจะรู้สึกว่า โห เรียนรู้แทบตาย ทำได้แค่เกม 2D กระจอกๆ .. แต่ขอให้เข้าใจครับว่าถ้าอยากรู้จริง มันต้องเริ่มจากพื้นฐานมาก่อน มันไม่มีเส้นทางลัด โปรแกรมเมอร์เก่งๆ ทุกคนก็ต้องเริ่มจากพื้นฐานก่อนทั้งนั้น เพราะถ้าพื้นฐานไม่แน่น คุณจะต่อยอดไม่ได้เลย จะตันอยู่แค่นั้น

เมื่อผ่านเกมง่ายๆ แนว Shooting ได้ คราวนี้แนะนำให้ศึกษาเรื่องทางด้าน 3D อาจจะเป็น Direct3D หรือ OpenGL หรืออาจจะลองหา Engine 3D แบบ Open Source อย่างเช่น OGRE มาลองเล่นดู

ซึ่งพอถึงจุดนี้ เรื่องที่คุณจะสามารถศึกษาเรียนรู้ได้จะมีเยอะแยะมากมายหลายประเด็น ทั้ง 3d game engine architecture, AI, scripting, networking และอื่นๆ อีกมากมาย .. ข้อแนะนำของผมคือให้ตั้ง project ขึ้นมา แล้วพยายามทำให้เสร็จครับ เมื่อคุณตั้ง project เกมขึ้นมาเกมหนึ่ง คุณก็จะมองเห็นว่าในการทำเกมนั้นๆ ให้เสร็จ มันจะมีบางองค์ประกอบของเกมที่คุณรู้วิธีทำอยู่แล้วทำได้เลย และบางองค์ประกอบที่คุณยังไม่รู้วิธีทำ ต้องศึกษาเพิ่มเติมถึงจะทำได้ ซึ่งตรงนี้จะทำให้การศึกษาเรื่องใหม่ๆ ของคุณมีทิศทางและเป้าหมายที่ชัดเจน และในขณะเดียวกันเมื่อทำเกมนั้นๆ เสร็จคุณก็จะมีผลงานที่จะโชว์ด้วย .. มันเป็นการฝึกนิสัย "การทำเกมให้เสร็จ" ซึ่งมันดีกว่านิสัย "ทำไปหน่อยแล้วก็ทิ้ง" 

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

เริ่มจากเกมเล็กๆ ก่อน แล้วค่อยทำเกมใหญ่ๆ ยากขึ้นครับ  และช่วงแรกๆ ทำ project แบบทำคนเดียวจบให้ได้ก่อนครับ 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น