วันอังคารที่ 17 มกราคม พ.ศ. 2555

นักเขียนโปรแกรม Engine ในหมวด Multimedia and Game

                       ในปัจจุบัน สื่อบันเทิงที่เป็นรูปแบบ multimedia เริ่มแพร่หลายและกำลังพัฒนาไปอย่างรวดเร็วโดย โดยเฉพาะทางด้านเกม มีการพัฒนาอย่างรวดเร็วไม่ว่าจะเป็นทางทวีปอเมริกา และทวีปเอเชีย ทั้งนี้เป็นเพราะว่า มีการสนับสนุนทางด้าน software ที่ช่วยพัฒนาในการทำเกมที่มี Engine ช่วยสร้างเกม และอำนวยความสะดวกต่างๆ ในการสร้าง เช่น การจำลองเสียง การสร้างกราฟิกต่างๆ และรวมถึงการเขียนคำสั่งต่างๆ ที่ช่วยประหยัดเวลาในการสร้าง ส่วนทางด้าน Hardware ผู้ผลิตต่างๆ ได้ทำให้เกิดการรองรับประสิทธิภาพของตัวเกม (software) ได้อย่างมีประสิทธิภาพ ปัจจุบัน เราจึงพบเกมที่มีภาพสวยงามออกมาให้เล่นกันอย่างแพร่หลาย (Need for speed, Final Fantasy, Dragon quest) การใช้งานร่วมกันของ Hardware และ Software อย่างมีประสิทธิภาพ จึงทำให้ผู้บริโภค เกิดกระแสนิยมและให้ความสนใจอย่างต่อเนื่องเรื่อยมา องค์ประกอบส่วนหนึ่งที่ใช้ในการสร้างเกมขึ้นมา คือ ภาษาที่ใช้เขียนเกม โดยภาษาที่ใช้เขียนนั้น สามารถใช้ได้หลากหลายภาษา ไม่ว่าจะเป็น Python, C++, Delph, VB, Java และ .Net แต่ที่ใช้กันอย่างแพร่หลายและมีประสิทธิภาพ คือ C++ ปัจจุบันนี้ เราเป็นที่ทราบกันว่าภาษาที่เป็นรุ่นถัดไป ของ C++ คือ .NET และภาษาที่เป็นส่วนหนึ่งของ .NET นี้คือภาษา C# ที่เริ่มมีผู้สนใจนำมาใช้พัฒนาเกม และศึกษาจุดเด่น จุดด้อย ซึงอาจนำมาใช้แทนที่ภาษา C++ ได้ในขณะยังเป็นที่ยอมรับในการพัฒนาเกมส่วนมากในปัจจุบัน ดังนั้นจึงเป็นที่น่าสนใจว่า Game Engine ที่ใช้ในการสนับสนุนการเขียนเกมด้วย C# จะมีความสามารถอย่างไร มีจุดเด่น จุดด้อย และสามารถนำมาแทนที่ภาษา C++ ได้มากเพียงใด จึงเป็นหัวข้อหลักที่เราเห็นควรในการศึกษา การพัฒนาทางด้านนี้ ว่ามีความเป็นไปอย่างไร มีประสิทธิภาพเพียงใด ในการเขียนเกม

2. วรรณกรรมที่เกี่ยวข้อง
          สืบเนื่องจากบทนำ Game Engine สำหรับ C# ที่เรานำมาศึกษานั้น ณ ปัจจุบันนี้ เริ่มมีการศึกษากันบ้างแล้ว โดยที่เป็น open-source และ commercial ทางด้าน open-source นั้น มีทางเลือกให้เราศึกษาหลากหลายไม่ว่าจะเป็น Axiom, LightFire#, Purple#, RealmForge GDK, ExoEngine และ Ovorp ส่วนทางด้าน Commercial นั้นมีเพียง Truevision3D ตัวเดียวที่สนับสนุนการเขียนด้วย C# นอกนั้นยังคงสนับสนุนภาษา C++ เป็นส่วนใหญ่ ในส่วนที่เราสนใจศึกษา เราจะข้ามส่วนที่เป็น commercial ถึงแม้ว่าจะมีประสิทธิภาพในตัวพัฒนาสูงก็ตาม แต่ยังคงติดเงื่อนไขในการพัฒนาเนื่องจากต้องเสียค่าใช้จ่ายให้สามารถใช้งาน ได้อย่างมีประสิทธิภาโดยสมบูรณ์ เราจึงเน้นศึกษาในด้านที่เป็น open-source มากกว่า เพราะสามารถทำการศึกษาได้อย่างเต็มที่ไม่ว่าจะเป็น ฟังก์ชันการทำงานต่างๆ และ source code ในการสร้างตัว Engine

          Game Engine คือ สิ่งที่ช่วยคุณสร้างเกม เปรียบเสมือนเครื่องมือช่วยเหลือให้การทำงานของคุณ มีความสะดวกและรวดเร็วมากขึ้น ตัวอย่างเช่น Engineที่ถูกสร้างขึ้นเพื่อใช้เป็นรูปแบบเกมของคุณ หรือEngineที่ถูกสร้างขึ้นเพื่อช่วยในการ Render เกมของคุณให้มีความสวยงามมากขึ้น หรือจัดการด้านกราฟิก(graphic) ด้านอุปกรณ์ต่อพ่วง (input) และด้านเสียง (sound) หรืออาจมีส่วนประกอบเพิ่มขึ้นมาเพื่อการจัดการด้านกายภาพ (physics) การสร้างพื้นฉาก (terrain) การตรวจจับการชน (collision detection) และอื่น ๆ เป็นต้น

          .Net Framework เป็นแพลตฟอร์มใหม่ และเปลี่ยนแปลงจากเดิมอย่างสิ้นเชิง สร้างขึ้นโดย บริษัท Microsoft เพื่อใช้สำหรับพัฒนา Application .Net Framework ซึ่งออกแบบมาให้สามารถใช้ภาษาใดๆ ก็ได้ รวมถึงภาษา C# , C++, Visual Basic, JScript, Delphi และอื่นๆ ที่เป็นไปได้ จึงเกิดภาษาเหล่านี้ ขึ้นมาในรูปของ Version โดยเฉพาะ สำหรับ .Net อีกด้วย ได้แก่ ภาษา Managed C++, Visual Basic.Net, Jscript .Net และ Borland C#

          C# Language คือ หนึ่งในภาษาที่นำมาใช้สร้างแอปพลิเคชั่น โดยรันอยู่ใน .NET CLR (Common Language Infrastructure) ได้ ที่เป็นวิวัฒนาการของ ภาษา C และ C++ และถูกสร้างขึ้นโดยบริษัท Microsoft โดยเฉพาะ เจาะจงให้ทำงานกับแพลตฟอร์ม .Net ในฐานะที่เป็นการพัฒนาล่าสุด ภาษา C# จึงถูกออกแบบมาอย่างมีเบื้องหลัง (และ C++) ทำให้รับเอาฟีเจอร์ที่ดีที่สุดจากภาษาอื่นๆ ในขณะที่ลบล้าง


3. วัตถุประสงค์และเป้าหมาย
          3.1 เพื่อศึกษาคุณลักษณะและการทำงานของ Game Engine รวมถึงเทคนิคที่ใช้ในการจัดการกับปัญหาที่เกิดขึ้น
          3.2 เพื่อเปรียบเทียบภาษาที่ใช้ในการเขียนเกมระหว่างภาษา C# กับ C++ 


4. วิธีการศึกษา


          4.1. ข้อมูลและอุปกรณ์ที่ใช้ในการศึกษา
               4.1.1 อุปกรณ์ที่ใช้ในการศึกษา
               - ซีพียู AMD Athlon 2000+
               - หน่วยความจำ DDR RAM 512 Mbyte
               - การ์ดแสดงผล Radeon 9500 pro
               - ระบบปฏิบัติการ WindowXP
               - Microcoft Visual Studio.NET 2003
               4.1.2 ข้อมูลที่ใช้ในการศึกษา
               - ReamlForge GDK Engine
               - Axiom 3D Rendering Engine

          4.2. ขั้นตอนการศึกษา
               แนวทางการศึกษา มีขั้นตอนดังนี้
               1. สำรวจ Game Engine ที่พัฒนาด้วย C# ที่มีในปัจจุบัน
               2. ตัดสินใจเลือกศึกษา RealmForge GDK Engine
               3. ศึกษาคุณลักษณะและการทำงานของ RealmForge GDK Engine

               4.2.1 เหตุผลในการเลือกศึกษา RealmForge GDK Engine 
               - มีความสมบูรณ์ของเอกสารพอสมควรที่จะศึกษาได้
               - มี help สำหรับช่วยเหลือในการพัฒนาได้ (RealmForgeGDK-v0.6.2) ทั้ง Axiom rendering และ RealmForge GDK
               - สนับสนุน .NET Framework และ ใช้ C# ในการพัฒนาเป็นหลัก
               - มีความยืดหยุ่นสูง เนื่องด้วยความสามารถของ .NET ( เช่น ทำการหยุดเกม แล้วสามารถแก้ไข ตัวต่างๆภายในเกมได้ทันที)
               - เป็นโครงงาน open-source ที่สร้างเพื่อให้นักเรียน และผู้มีเวลาว่าง มีทางเลือกที่สามารถพัฒนา ไปสูตัวเกมที่มีความสวยงามได้
               - สนับสนุนทุกรูปแบบของประเภทตัวเกมได้ ไม่ว่าจะเป็น 3D game เพื่อการศึกษาสำหรับเด็ก, MMORPGs , FPS (First Person Shooters ), และ บอร์ดเกม ได้ด้วย
               - มีการจัดเตรียมชุดของเกมไว้เป็นหมวดหมู่สำหรับนักพัฒนา ตามหมวดหมู่ เช่น script, plug-in, สื่อด้าน media เพื่อให้เกิดความรวดเร็วในการพัฒนามากขึ้น

               4.2.2 Game Engine คืออะไร
               Game Engine เปรียบเสมือนสะพานเชื่อมระหว่างคุณและไลบรารี่ของ กราฟิก อุปกรณ์ต่อพ่วง และเสียง เกมEngine คือ ส่วนที่สามารถนำกลับมาใช้ใหม่ได้ ซึ่งคุณไม่ต้องเขียนใหม่ทุกครั้งเมื่อจะทำสิ่งเดียวกันกับสิ่งที่เคยทำไป แล้ว มีหลายฟังก์ชันและหลายคลาส ซึ่งจะทำให้คุณสร้างเกมได้ง่ายขึ้น
               Game Engine ไม่ใช่ตัวเกมทั้งหมด เราอาจเปรียบEngineเสมือนเครื่องยนต์ของรถยนต์ ซึ่งคุณสามารถยกเอาเครื่องยนต์ออกจากตัวรถ แล้วนำไปสร้างส่วนต่าง ๆ มาครอบตัวเครื่องยนต์เพื่อให้รถยนต์วิ่งใหม่ได้
               Game Engine ไม่มีเอกลักษณ์เฉพาะตัว ถูกสร้างขึ้นเพื่อจัดการสิ่งต่าง ๆ ที่เกมสมควรมี และขึ้นอยู่กับผู้สร้างด้วยว่าต้องการให้จัดการส่วนใด แต่สิ่งสำคัญที่ต้องมีการจัดการ คือ กราฟิก (graphic) และเสียง (sound) ส่วนประกอบเพิ่มเติมที่ Game Engine อาจเพิ่มขึ้นมาได้ คือ การจัดการทางด้านกายภาพ (physics) การสร้างพื้นฉาก (terrain) การตรวจจับการชน (collision detection) อุปกรณ์ต่อพ่วง (input) ระบบเครือข่าย (network) และอื่น ๆ เป็นต้น 


โปรแกรมที่จะขอยกตัวอย่างต่อไปนี้มี 2 โปรแกรม คือ

   
     <<< คลิ้กที่รูปภาพเพื่อศึกษาต่อ 
      ที่มา: http://devmaster.net/devdb/engines/realmforge

    
<<<< คลิ้กที่รูปภาพเพื่อศึกษาต่อ
      ที่มา: http://www.udk.com/features.html

       สามารถแบ่งปันผลงานและแชร์ความรู้เกี่ยวกับ UDK ได้ที่ http://udk.unbbz.com/

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

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