แนะนำแนวทางการสร้างเกมส์ 3D และการเลือกใช้ Engine

แนะนำแนวทางการสร้างเกมส์ 3D และการเลือกใช้ Engine

Postby zicma on Tue Aug 25, 2009 11:31 pm

จากเบื้องต้นที่ผมได้เรียนรู้การใช้ 3D Engine ของ Truevision (ไม่ใช่ Game Engine นะครับ ) ก็้พอได้แนวทางการสร้างเกมส์มาบ้าง
และทำให้ได้แนวทางการสร้างเกมส์สำหรับกลุ่มคนเล็กๆหรืออาจจะทำเพียงคนเดียว ซึ่ง แน่นอนแหละครับ ถ้าจะให้เริ่มจาก 0 ก็คงต้องใช้เวลายาวนานเลยทีเดียว อาจจะถึง 4-5 ปี หรือมากกว่านั้น

( ต้องมีเวลาเขียนโปรแกรม 10 ช.ม. ขึ้นไปต่อวัน ) กว่าจะได้เกมส์ ออนไลน์เล็กๆดีๆสักเกมส์ แต่ถ้าอยากย่นระยะเวลาการทำลงมา
ก็ต้องพึ่ง Engine ของกลุ่มคนที่พัฒนาทางด้านนี้โดยตรง โดยที่ Engine จะเป็นการ จัดการกับการแสดงกราฟฟิคและทำหน้าที่เป็น Layer ที่กั้นระหว่าง
ผู้ที่นำ Engine ไปใช้ กับ การประมวลผลของการ์ดจอ เพราะ ถ้าเราเขียนโปรแกรมเกี่ยวกับประมวลกราฟฟิคโดยตรง จะต้องเขียนโปรแกรมผ่าน Direct X หรือ Open GL
ซึ่งทำหน้าที่ติดต่อกับการ์ดจออีกที การเขียนโปรแกรมผ่าน Direct X หรือ Open GL นั้น เป็นเรื่องที่ไม่ง่ายนัก ต้องใช้ระยะเวลามากในการศึกษา แต่สำหรับคนที่อยากสร้างเกมส์ขึ้นมา
โดยที่ไม่เข้าไปยุ่งเกี่ยวมัน ก็สามารถทำได้ โดยผ่าน Engine สำเร็จรูป แต่ต้องพึงระลึกไว้เสมอว่า เราจะไม่สามารถควบคุมประสิทธิภาพ หรือความพอใจสูงสุดในส่วนนั้นได้
เพราะ ประสิทธิภาพสูงสุดของ Engine มันถูกกำหนดมาจากผู้เขียน Engine แล้ว เราสามารถสร้างสรรค์ได้ในส่วนของ Game System และ การจัดการกราฟฟิคเท่านั้น

สำหรับมือใหม่ ต้องเลือกระหว่าง จะเริ่มเรียนรู้จาก 0 ก่อน โดย ศึกษา Direct X หรือ Open GL หรือ เริ่มจาก 1( เต็ม 100 อิอิ ) ด้วยการ ใช้ Engine สำเร็จรูป
และมุ่งไปทำในส่วนอื่นที่ยังมีอีกมากมายแทน

ถ้าเริ่มจาก 0 ก็ไม่ใช่เรื่องง่ายนักสำหรับคนที่มีความรู้ ภาษาโปรแกรมและคณิตศาสตร์ แบบงูๆปลาๆ และ แหล่งความรู้ที่เป็นภาษาไทยนั้นหายากยิ่งนัก คุณต้องใช้
หนังสือจากต่างประเทศ หรือ อินเตอร์เน็ทเท่านั้นในการพัฒนาฝีมือ ในความที่มันยุ่งยากจึงต้องมีการสร้างเป็น Engine ที่ทำให้นำไปใช้ได้ง่ายขึ้น
และต้องมีการพัฒนาอย่างต่อเนื่อง ตาม spec ของการ์ดจอที่พัฒนาขึ้นมาแบบก้าวกระโดด ดังนั้นการที่จะศึกษา Direct X หรือ Open GL แบบครึ่งๆกลางๆ
และนำไปใช้แบบขอไปทีในส่วนอื่นๆของเกมส์ ผมคิดว่า เมื่อเวลาผ่านไป คุณต้องรู้ว่าลำพังตัวคนเดียว ไม่สามารถรู้ได้ทุกเรื่อง ( นอกจากคุณจะฉลาด และขยัน จริงๆ ก็อาจเป็นไปได้ )
เมื่อคุณศึกษาเพียงครึ่งๆกลางๆแต่ถ้าซอร์ฟแวร์มีการพัฒนาไปอีก คุณก็ต้องมาเรียนรู้เพิ่ม ในขณะเดียวกัน ความรู้ทางอื่นๆของเกมส์ก็ต้องมีมากขึ้น
ให้คุณได้ศึกษา เช่นกัน ตัวคุณเองน่ะ ไหวรึเปล่า ? คุณจะยอมละทิ้งในส่วนของ การประมวลผลกราฟฟิค ทิ้งให้เป็นหน้าที่ของ ผู้ที่ศึกษาเกี่ยวกับมันจริงๆ
แล้วไปทำในส่วนอื่นของเกมส์ มันก็ไม่ผิด ขอย้ำว่าไม่ผิด คุณไม่ต้องรู้ทุกเรื่องก็ได้ ( แน่นอนว่ามันมีผลดีก็มีผลเสียเช่นกัน และถึงแม้ว่าคุณจะรู้ทุกๆอย่างเกี่ยวกับเกมส์
ก็ไม่ได้หมายความว่าคุณจะสร้างเกมส์ที่ดีที่สุด ด้วยตัวคนเดียวได้ ) ผมขอบอกว่าให้ตัดสินใจด้วยตัวเอง อย่าไปเชื่อคนที่คิดว่าตัวเองรู้มาก ( แต่หวงความรู้ ประชด bbs บางที่ เอิ้กๆ )
เราต้องเชื่อตัวเองและรู้ตัวเองว่าสมควรทำแค่ไหน หรือถ้าคุณจะทำในส่วนนนี้ก็ควรศึกษาอย่างจริงจังไปเลย เพราะถ้าคุณเก่งในการเขียนโปรแกรมทางด้านนี้จนสามารถสร้าง
Engine ขึ้นมาเองได้ อนาคตการทำงานของคุณก็สดใสแน่นอน เพราะผู้ที่รู้ลึกเรื่องนี้มีน้อยมาก แต่ก็อย่าลืมนะครับ ว่า การศึกษาเกี่ยวกับ Direct X หรือ Open GL
และการประมวลผลกราฟฟิคใช้เวลาไม่น้อยเลยทีเดียว และสุดท้าย คนที่ศึกษาทางด้านนี้โดยตรง ไม่จำเป็นว่าจะต้องสามารถสร้างเกมส์ได้กลุ่มเดียวเท่านั้น
เพราะเกมส์นั้นยังมีส่วนประกอบอีกมากนัก ถ้าคุณมีคนทำงานเป็นกลุ่ม ควรแบ่งหน้าที่ให้ชัดเจน เพราะแต่ละส่วนของการสร้างเกมส์นั้นใช้เวลาไม่น้อยเลยทีเดียว

กรณีที่ละทิ้งการเขียนโปรแกรมในส่วนของ Direct X หรือ Open GL ก็ต้องเลือก Engine สำเร็จรูปมาใช้ โดยที่การเลือกใช้ Engine นั้น จะมี สิ่งที่ต้องพิจารณาหลายอย่างเข่นกัน
เช่น - ราคาของ Engne ในกรณี ที่ใช้แบบ Commercial - ประสิทธิภาพสูงสุด - ความเชื่อมั่นในการที่ผู้เขียนโปรแกรมจะพัฒนาอย่างต่อเนื่อง - ระยะเวลาในการเรียนรู้เกี่ยวกับ
Engine - ความพิเศษของ Engie เช่น Tool ต่างๆที่มีให้ใช้ ฯลฯ ด้านบนที่ยกตัวอย่างเป็นเพียงขอที่ควรพิจารณาหลักๆ ของการเลือกใช้ อย่างว่าแหละครับ
Engine สำเร็จรูปใช้ระยะเวลาเรียนรู้น้อยกว่ามาก แต่มันมาด้วยข้อจำกัดต่างๆ ข้อหลักที่ควรมองก็คือ ราคา และ ประสิทธิภาพสูงสุด นั่นเอง ซึ่ง Engine ประสิทธิภาพสูง
ก็จะตามมาด้วยราคาที่แพง Engine มันเป็นตัวที่บอกได้อย่างนึงว่า มันต้องแยกออกมาจากการสร้างเกมส์ในส่วนอื่นๆ และมีการพัฒนาอย่างจริงจัง และมันเป็นส่วนหลัก
ในการแสดงกราฟฟิคของเกมส์ และถ้าคุณยอมจ่ายเงินเพื่อซื้อ Engine ก็เหมือนคุณจ้างพนักงานมาวิจัย Engine นั่นแหละครับ แต่ผลเสียที่ได้ก็คือ จะไม่มีความรู้ที่วิจัยอยู่กับองค์กร
ถ้าคุณต้องการ Engine ที่ดีที่สุดทำหรับสร้างเกมส์ และติดอยู่กับองค์กรก็ต้องมีทีมงานเขียน Engine ขึ้นมาเอง และก็อย่าลืมนะครับ เงินที่ต้องลงทุน+เวลา คุณพร้อมที่จ่ายหรือไม่?
ก็ต้องตัดสินใจเองแล้ว แต่อย่างบริษัทเกมส์ใหญ่ๆ ก็ซื้อ Engine สำเร็จรูป ก็มี แต่บริษัทที่เปิดตัวทางด้านเกมส์มานานแล้ว ส่วนมากเค้าจะมีเงินทุนเพื่อพัฒนา Engine โดยตรง เช่นกัน
สำหรับ Free Engine ก็มีให้มือใหม่ได้ใช้เช่นกัน แต่ส่วนมากประสิทธิภาพจะไม่ค่อยสูงเท่าไหร่ เช่น Truevision3D ที่ผมลองใช้ หรือแบบ ประสิทธิภาพสูงๆ ก็มี เช่น Nebula2
การนำ Engine ไปใช้นั้น ก็จะต้องศึกษาเกี่ยวกับ Class ต่างๆของ Engine ที่มีให้ เราก็จะต้องเขียนโปรแกรมอีกส่วนนึง เป็นการจัดการกราฟฟิคที่ผ่านการสร้างหรือประมวลผล
มาจาก Engine อีกขั้นนึง เช่น การ นำ Model ขึ้นมาแสดง เคลื่อนไหว หรือนำรูปภาพ แสง มาผสมกับโมเดล ซึ่งเราจะใช้เพียงฟังก์ชั่นง่ายๆของ Engine แทนการเขียน source code
ยาวๆ ประมวลผลกราฟฟิคที่ละ พิกเซล

การเขียนโปรแกรมในส่วนอื่นๆที่นอกเหนือจากกราฟฟิคพื้นฐานที่ได้จาก Engine ก็คือการนำกราฟฟิคพื้นฐานต่างๆมาจัการให้เป็นกราฟฟิคตามที่เราต้องการ
เช่นการสร้างฉาก และโหลดโมเดลต่างๆ ขึ้นมาแสดง ให้จุดของแหล่งกำเนิดแสง ให้โมเดลเคลื่อนที่ ไปทำกิจกรรมต่างๆในเกมส์ที่เรากำหนดขึ้นมา สิ่งที่ผมกล่าวผ่านมาคือ
Game System หรือ ถ้ามีการรวบรวมการทำงานให้ใช้งานได้คล่องตัวขึ้นจะเรียกว่า Game Engine ก็ได้ ในส่วนของ Game System นั้น เป็นการเรียนรู้การทำงานของ 3D Engine
รวมกับ Game Design เพื่อเขียนโปรแกรม ที่ทำการประมวลผลกิจกรรมของเกมส์ เช่นการ เทรดสิ่งของ การโจมตีศัตรู การคำนวณการโจมตีด้วยสกิล ต่างๆ
รวมทั้งในส่วนที่ผู้เล่นสามารถควบคุมได้ ส่วนของ Game System ก็มีความสำคัญมากเช่นกันไม่งั้นถึงจะมี 3D Engine ที่ดีเลิศแค่ไหน แต่ไม่มี Game System
ก็ไม่สามารถเป็นเกมส์ได้ ผู้ที่เริ่มต้นใหม่ๆด้วยความรู้ที่ไม่มากควรเริ่มที่การใช้ Free Engine ก่อนจะดีที่สุด เพราะ ยังไงการเขียน Game System
ก็ยังมีการใช้พื้นฐานการประมวลผลกราฟฟิคเช่นกัน เช่น การสร้าง GUI (Graphic User Interface) ด้วยการใช้ Free Coordinate หรือ การทำ Manual Collision
รวมถึงการ Blending กราฟฟิค แต่ถ้าจะ เริ่มจาก Direct X หรือ Open GL ก็ตามใจนะครับ : )

ผมเองก็เขียนโปรแกรมในหลายส่วนเหมือนกัน รูปด้านล่างนี้เป็นการทดสอบ การทำ effect อย่างง่าย

Image
zicma
Site Admin
 
Posts: 26
Joined: Tue Aug 25, 2009 9:49 pm

Return to PROGRAMMING

Who is online

Users browsing this forum: No registered users and 1 guest

cron