วันอังคารที่ 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/

RealmForge GDK Engine

                             RealmForge GDK เป็นชุดเครื่องมือรุ่นถัดมาสำหรับใช้พัฒนาตัวเกมที่เป็น 3D และ การจำลองรูปแบบต่างๆที่ใช้ ตัว open-source และ cross-platform middleware ได้ถูกเขียนด้วย C# ทั้งหมด และ รวมลักษณะที่เป็นด้านเด่น และ เบา ของ .NET Framework กับ ลักษณะที่เป็นประโยชน์ที่หลากหลาย และ ได้เปลี่ยนแปลง ชุดเครื่องมือพัฒนา run - time (ในตัวจัดการ game ) ที่ได้รวมการเชื่อมโยงโดยตรงภายใน engine , การอนุญาตให้ออกแบบ ,การพัฒนา และ ทำให้ตัวเกมมีความทันสมัยเองด้วย
               ตัวกราฟิกที่สวยงามของเกมนี้ถูกสนับสนุนโดน Axiom ที่ใช้ C# port ของ engine ที่ใช้ศักยภาพของ OGRE ที่เป็น engine ด้าน shader-driven rendering และ สนับสนุนสำหรับ rendering engine ตัวอื่น ที่ได้ถูกพัฒนามาอย่างดี ตัวสถาปัตยกรรมที่มี องค์ประกอบที่มีความยืดหยุ่นสูง อนุญาตให้สำหรับส่วนที่เพิ่มเติมขึ้นมาอย่างง่ายๆ และ ยังได้รวมองค์ประกอบทั้งหมดที่จำเป็นในการพัฒนา ตัวเกมที่มีความสวยงาม หรือ ส่วนที่รวมการจำลองต่าง ทางกายภาพ เสียง GUIs Serialization ด้านเครือข่าย ส่วนย่อยของระบบ และการจัดการ ทรัพยากรทุกอันที่กล่าวมานี้สามารถเพิ่มเติมได้อย่างง่าย หรือ แทนที่กันได้อย่างดี
               ตัว platform นี้ จัดเตรียม ส่วนที่ขยายออกไป ใน เหตุการณ์ที่เป็นลักษณะเชิงโมเดลหลัก เพื่อการติดต่อที่มีความยืดหยุ่น และ การออกแบบที่เป็นไปตามสัญชาติญาณ และ ส่วน scripting สามารถทำได้อย่างแนบเนียน ด้วย ความเร็วในส่วนการประมวลผล ในบางส่วนของ ภาษา .NET ที่ใช้ใน C# และ VB จะส่งผล JavaScript และ Python ตลอดจนกระทั่ง การออกแบบ ที่เป็นไปอย่างรอบคอบ และ platform ในการสร้างหลากลายเกม ตัวชุดเครื่องมือและตัวเดโมยังคงอยู่ในช่วงเริ่มการพัฒนา และมี คุณลักษณะไม่ครบถ้วนที่ได้ถูกนำไป implement ในตอนนี้ ตามธรรมเนียมของ platform ก่อนหน้านี้ การผลิต หรือ ชุด beta ต้องได้ถูกแนะนำ เพื่อเป็นประโยชน์แก่โปรแกรมเมอร์ ด้วย ประสบการณ์การเขียนโปรแกรม

               Runtime IDE
               ตัว runtime ที่ได้นั้นเปลี่ยนแปลง จะไปปรับปรุงส่วนที่มีประโยชน์ และ ทำให้เกิดการทำงานที่ง่ายโดย อนุญาตให้ 3D Application ได้มีการหยุดไว้ ณ ช่วงที่เกิดการ execute (ขณะที่ runtime) และดังนั้น ทันทีเข้าไป ที่โหมดการออกแบบ ในส่วนที่แสดงผลตัว workspace ของเครื่องมือการพัฒนา และ docked window แสดงถึงสิ่งที่อนุญาตให้ทุกสิ่งจาก สคริปต์ และ plug-in ผ่าน scene graph และ ทำให้เป็น รูปแบบเฉพาะ ทุกๆสิ่งที่ใกล้เคียงกัน อาจสามารถให้แก้ไข ที่ช่วง run-time ด้วย คุณสมบัติหน้าต่างตรวจจับ การรวมคลาสดั้งเดิม และคุณสมบัติของที่ตัวสืบทอดของคลาส

               องค์ประกอบ ของ Framework (Components of the Framework)
               ตัว framework จะรวม ทุกๆเทคโนโลยีที่มีความแตกต่าง ที่ ต้องการสำหรับตัว 3D application ที่ทันสมัยที่รวมทั้งใน ส่วนที่เป็น ด้านกายภาพ AI เสียง เครือข่าย Scripting GUI ชุดเครื่องมือ และ ตัว Scene Graph เอาเข้าไว้ด้วยกัน

               Rendering and Graphics
               Axiom ,ตัว C# port ของ โครงงาน OGRE open source ที่เป็นที่นิยมและได้ใช้ในยุคแรกๆของ 3D rendering engine สำหรับ RealmForge อย่างไรก็ตาม framework นั้นได้ถูกออกแบบให้มีลักษณะอิสระของ การ implement ของ การ render ที่มีลักษณะเฉพาะ และ ตัวเสริมอื่นๆของ render engine ได้วางแผน ไว้เพื่อการพัฒนา การออกแบบความเป็นอิสระของ rendering engine ทำให้แน่ในการคงอยู่อย่างยาวนานของ GDK และ ยอมให้สำหรับนักพัฒนาใช้ engine ที่เหมาะสมที่สุดต่อ โครงงานและงบประมาณของพวกเราเอง Axiom นั้นเป็นจุดที่เชื่อมโยงของ rendering ที่ สนับสนุนเทคโนโลยี 3D rendering ตัวล่าสุด การรวมทุกๆชนิดของตัว shader (เช่น HLSL, GLSL, Cg, Assembler, Vertex, Pixel ) ที่สนับสนุนทั้ง DirectX และ OpenGL และ ให้ก้าวข้ามถึง animation blending

               Axiom Rendering Engine
               Axiom เป็น Cross-platform 3D rendering ที่มีประสิทธิภาพสูง สำหรับ .NET ที่เป็น C# port ของ OGRE engine (Object-Oriented Graphics Rendering Engine) การออกแบบ Engine ที่มีองค์ประกอบอย่างดี ได้จัดให้ มีการตอบสนองที่มีคุณภาพสูงและ เป็นรูปแบบที่เป็นรุ่นต่อมา ของ 3D applications
               โครงงาน Axiom 3D Engine เป็น การพัฒนา engine ที่ใช้รูปแบบ Graphic เชิงวัตถุ ที่พยายามใช้ C# และ Microsoft.Net platform ในการสร้าง รูปแบบการใช้ที่ง่าย มีความยืดหยุ่นสูง ให้สืบทอดได้ และ มีประสิทธิภาพของ engine ที่ดี ที่อนุญาตให้สำหรับ การพัฒนาที่เป็นไปอย่างรวดเร็ว และ เอื้อต่อ application ด้านกราฟิก โดยการใช้ .NET framework ที่เป็นจุดมุ่งหมายเดียวกับ platform นักพัฒนาสามารถมุ่งประเด็นไปที่แก่นของด้านการทำงาน และ ตรรกะ ที่ออกจะเน้นไปที่การจัดการ กับ ความยุ่งยากของ ภาษา ที่คล้ายกับ C++ ตัวแก่นแท้ ของ Axiom เป็น port ของ ORGE graphic engine ที่มีความนิยมอย่างมาก ที่เป็นทางฐานตัวเลือก บน การออกแบบเชิงวัตถุ ,ประสิทธิภาพ , และยืดหยุ่น

               4.2.4 คุณลักษณะสำคัญของ RealmForge GDK Engine (Features)

          1) Design

               Coding
               - ปลั๊กอินรองรับการเปลี่ยนแปลง framework, game engineและ toolset
               - ทุกอย่างจากการแก้ไข ที่ GUI เป็นข้อมูลและสคริปต์
               - Master Modules บรรจุเกือบทุกลักษณะของข้อมูลเกม ได้แก่ world design, script attachment, entity placement และ configurations, shader configuration, game settings, in-game literature, races และ classesและ gameplay settings to name a few
               - Framework สนับสนุนเกมทุกชนิด (RPG, FPS, MMORPG, Adventure) และที่ยังไม่ได้รับการ พิจารณาสำหรับ 3D game ( board and puzzle) ด้วย
               - Framework รวม RealmForge Media Library อยู่ด้วย ซึ่งเป็นการรวบรวมวิธีการอย่างอิสระในการพัฒนาตัวมันเอง
               - สถาปัตยกรรม singleton จำนวนมาก ถูกใช้สร้างลำดับของ Particle system กับส่วนที่เพิ่มเติมที่น้อยที่สุด ซึ่งสามารถทำหน้าที่แทนการนำไปใช้
               - ปลั๊กอิน Modules สามารถสร้างโดย Editor มี diff-grams รัดกุมคล้ายกับ Morrowind สามารถใช้รูปแบบร่วมกันหรือจำแนกเป็นเกมทันสมัย
               - สภาพบำรุงรักษาได้และฝึกหัด OOP ดีเท่ากับมาตรฐานโครงการที่ถูกกำหนดในโครงการ open-source
               - ปลั๊กอิน อนุญาตให้ OpenGL และ DirectX ใช้แลกเปลี่ยนซึ่งกันและกันได้ เหมือนลักษณะส่วนใหญ่ของเกม ที่สามารถเปลี่ยนค่าอย่างง่ายๆ ในคลาส
               - การเขียนใน C# ใช้ .NET Framework ซึ่งสามารถใช้ได้ทุกภาษา .NET ที่รวมทั้ง C#, C++ .NET (MC++), VB .NET, J#, Delphi .NET, Jscript .NET, Lua .NET, Perl .NET, Python .NET

          2) Usage

               Scripting
               - ทุกสิ่งถูกควบคุมโดยสคริปต์และใช้อินเตอร์เฟส ที่อนุญาตการปรับแต่งเต็มรูปโดยไม่มีการแก้ไข โค้ด
               - ใช้ C# และ Jscript.net เป็นภาษาเขียนที่ไม่เคยมีมาก่อน เปลี่ยนแปลงได้ แก้ไขง่าย
               - สคริปต์สามารถพัฒนาใน IDE กับ syntax ที่คล้าย JScript.NET
               - สคริปต์สามารถแปลโปรแกรมและรันบน fly mid-game
               - ภาษาแอสแซมบลีสามารถโหลดด้วยตนเองและบันทึกสคริปต์ได้
               - ทุกสิ่งที่มีอยู่เป็นสคริปต์แท้จริงและมีขอบเขตของเหตุการณ์ที่สคริปต์มีอยู่ด้วย

               Built-in Editors
               - Game Editor รวมอยู่ในEngineและสามารถแสดงผล in-game คล้ายกับ Doom III
               - วิธีการ design-time และ runtime ถูกทำให้ไม่ชัดเจน ตามที่เกมสามารถแก้ไขการใช้ขอบเขตของ เครื่องมือวินโดว์คล้ายกับ IDE
               - แก้ไขในเกมอนุญาตให้ทดสอบและการแก้ไขได้ในเวลาเดียวกัน

               Physics
               - พื้นฐานทางกายภาพ การตรวจพบการชน รูปร่าง ยานพาหนะ
               - Tao C# จำเป็นสำหรับ ODE ใช้เพื่อการนำ open-source ไปใช้ทางกายภาพที่ดีเยี่ยม
               - ปลั๊กอิน OOP อนุญาตให้Engineทางกายภาพขยายออกได้ ซึ่งเค้าโครงง่าย
               - Rag-doll อนุญาตให้ลักษณะตัวละคร ออกแบบจากลำดับของส่วนรูปร่าง ของลักษณะตัวละครที่แตกต่าง
               - สนับสนุนการแบ่งลักษณะตัวละครออกเป็นส่วน

          3) Scene Management
               - General, BSP, Octrees, LOD:
               - ทำการปรับแต่งได้มากและเปลี่ยนแปลงได้
               - ปลั๊กอิน สามารถ override ส่วนจัดการฉาก กับวิธีการนำไปใช้
               - ความแตกต่าง Axiom Scene Managers สนับสนุนการควบคุม culling ระดับต่ำและลักษณะสำคัญ เช่น การเรนเดอร์พื้น
               - ฉากออกแบบเป็นลำดับชั้น
               - การอ้างถึง node trees ได้มีการจัดเตรียมไว้แล้ว (เช่น เทมเพลตบ้าน และ การแก้ไขส่วนน้อยสามารถทำแต่ละ instance)
               - ลักษณะเฉพาะของ ID อนุญาตให้อ้างถึงการเปรียบเทียบที่มีอยู่จริงในสคริปต์
               - Regions หรือ second-level nodes อนุญาตให้จัดการสิ่งแวดล้อม เช่น ท้องฟ้า และหมอก ที่อาณาบริเวณแตกต่างกัน
               - การออกแบบ Node-based กับการเลือก Region อนุญาตสำหรับออกแบบ loadless game
               - Realms (หรือ highest level nodes) ใช้ แสดงถึงบริเวณที่ไม่เกี่ยวเนื่องกับเกม สามารถสร้างเกมซึ่งเซลล์ที่แยกกันและบรรจุไว้เมื่อเข้าไป
               - ทุกสิ่งที่มีอยู่ (including Regions, Nodes และ Realm) สามารถ override ให้อนุญาตนำไปใช้

          4) Graphics and 3D Rendering

               Lighting 


               - Per-vertex, Per-pixel, Lightmapping
               - จำนวนความสว่างไม่จำกัด
               - แอพพลิเคชั่นอย่างง่ายของการทำให้เกิดแสงสว่าง เช่น กระพริบ และประกายไฟ
               - สคริปต์แสงใช้ได้จริงกับสคริปต์วิถีการเคลื่อนที่
               - มีคุณสมบัติมากมาย ประกอบด้วย อากาศล้อมรอบและแพร่กระจายสี ความเข้ม รัศมี
               - สนับสนุนสำหรับชนิดแสงสว่างที่แตกต่าง ประกอบด้วย แสงสว่างจ้า จุด กรวย ล้อมรอบ

               Shadows 


               - แผนภาพเงา, การฉายราบแบน, ระดับเงา
               - สนับสนุนเทคนิคที่ประกอบด้วย ปรับลายฉลุ การเพิ่มลายฉลุ ปรับให้เบาบาง ปรับความละเอียด และรูปลอก
               - เงาลายซ้อนที่มีประสิทธิภาพ
               - เนื้อผิวเงา ตกกระทบระยะไกล สำหรับประสิทธิภาพ FPS

               Texturing 


               - พื้นฐาน, หลายเนื้อผิว, ภาพกระทบ, Mipmapping, เกี่ยวกับปริมาตร, การฉายภาพ
               - สนับสนุน Picture-in-picture ที่เลียนแบบกัน เช่น ภาพถ่าย หรือ ส่องกระจก
               - ภาพสามารถเรนเดอร์เนื้อผิวและใช้ได้จริง เพื่อจำลองการทำงานในเกมแบบกล้องถ่ายรูปหรือวิดีโอ
               - เนื้อผิวถูกเก็บเป็น Materials ดังนั้นสามารถหาได้จากแหล่งต่างๆ(ประกอบด้วยปุ่มที่เก็บเอกสารและไลบราลี่ )
               - วัสดุทั้งหมดเป็นเงาเรียบๆ ให้มีสามารถเคลื่อนไหวได้
               - ในเกมที่ดี ตัดฉากการเรนเดอร์ และสคริปต์เส้นทางการเคลื่อนที่
               - สนับสนุนไฟล์ภาพ PNG, JPEG, TGA, BMP และ DDS

               Shaders 


               - สนับสนุนโปรแกรมจุดและแยกส่วนเงา
               - โปรแกรมระดับต่ำเขียนใน assembler
               - โปรแกรมระดับสูงเขียนใน Cg หรือ DirectX9 HLSL
               - shader เป็นโครงสร้างภายใต้ Modifiers ซึ่งสามารถใช้จริงที่ต้องการให้ทำเกิดภาพ
               - จำนวนของคุณสมบัติที่แตกต่างถูกจัดเตรียมไว้สำหรับแต่ละ Modifiers ที่จะอนุญาตให้เปลี่ยน เป้าหมายโดยปราศจากการเขียนโปรแกรมซับซ้อน
               - การออกแบบ OOP อนุญาตให้ผู้ออกแบบเกมรวมตัวมันเองโดยไม่ต้องมีความรู้เกี่ยวกับ shader อย่างละเอียด
               - Library ของ Modifiers สรุปลำดับของความแตกต่าง shader เตรียมไว้เป็นตัวเร่งพัฒนาเกม
               - ทุกสิ่งที่มีอยู่จริงใช้ shaders เรียบๆ หรือ วัตถุ Material ที่รองรับเนื้อผิวทั้งหมดที่เคลื่อนที่ได้
               - Material สนับสนุนเทคนิคต่างๆ ที่เพื่ออธิบายระดับต่างๆของ shader ในการ์ดวิดีโอ
               - การจัดเตรียมโดยอัตโนมัติสนับสนุน ค่าคงที่ พารามิเตอร์ ใน shader

               Rendering 


               - กำหนดฟังก์ชัน, Render-to-Texture, Fonts, GUI
               - ระดับของรายละเอียดประสิทธิภาพการเรนเดอร์ FPS
               - ลักษณะโปร่งแสงในเนื้อผิวใช้งานได้อัตโนมัติ (png, gif)
               - สนับสนุนขอบเขตที่สมบูรณ์ของตัวดำเนินการกำหนดฟังก์ชัน ที่อธิบายฮาร์ดแวร์ ซึ่งไม่สนับสนุนใช้ shader
               - สนับสนุนเทคนิคจำนวนมาก

               Animation 


               - Keyframe Animation, Skeletal Animation, Facial Animation, Animation Blending
               - Skeletal animation กับการผสมผสานของ animations มากมาย และตัวแปร
               - พื้นฐานทางกายภาพใช้กระดูกและส่วนของร่างกายที่รับรองการเคลื่อนที่ลักษณะเหมือนจริง
               - สร้างในเครื่องมือสำหรับทำให้ลักษณะตัวละครเคลื่อนไหว

               Meshes 


               - Mesh Loading, Skinning, Progressive
               - Hardware-accelerated skinning
               - Flexible mesh data formats accepted
               - Loads OGRE Mesh, Skeleton, and Material formats
               - ทำงานบน 3DS และ LWO
               - ผู้ส่งออก 3DS Studio Max, Blender, Lightwave, Maya, Milkshape, Wings3D
               - จัดทำ Biquadric Bezier สำหรับพื้นผิวโค้ง

               Special Effects 






               - Environment Mapping, Lens Flares, Billboarding, Particle System, ท้องฟ้า, น้ำ, ไฟ, ระเบิด, รูปลอก, หมอก, สภาพอากาศ, กระจก
               - การสลับฉากน้ำ ซึ่งตอบสนองกับสภาพอากาศ เช่น ฝน ลูกเห็บ และอื่น
               - Particle Systems เหมือน IEffect ที่มีอยู่จริง ซึ่งสามารถเขียนสคริปต์การเคลื่อนที่และแยกออกไป หรือประยุกต์ใช้อย่างอื่น
               - สนับสนุนท้องฟ้าชนิดต่าง ประกอบด้วย ก้อนยอดโดม ก้อนแบนราบ ก้อนสี่เหลี่ยม
               - ใช้ shader ให้เคลื่อนที่ได้ เช่น ความเร็วลม และ ทิศทางท้องฟ้าและน้ำ
               - น้ำต่างๆที่มีอยู่จริง มีคุณสมบัติต่างๆให้ใช้ เป็นความเหนียวเหนียว หรือหนา สำหรับการสร้างหนอง น้ำ
               - หมอกปกคลุมที่ดูแบบกล้องถ่ายรูป หรือสามารถใช้เป็นภาพเลือนๆพื้นที่ใต้น้ำ
               - ไฟ ระเบิด ถูกแทนรูปร่าง IEffect ที่มีอยู่ซื่งสามารถแทนที่กับผู้แก้ไขเกม
               - การจัดสิ่งแวดล้อม เช่น ท้องฟ้า หมอก แสงล้อมรอบ และสภาพอากาศ สามารถแยกดินแดนต่างๆของโลก

               Terrain 


               - การเรนเดอร์และการจัดภูมิประเทศเซลล์
               - Loading of meshes and height-maps
               - สนับสนุนแสงสว่างและเงาบนภูมิประเทศ
               - ตัวเลือกที่ใกล้เคียงของแสงสว่างสำหรับประสิทธิภาพ FPS
               - การตรวจวัดภูมิประเทศ

          5) Networking
               - Client-Server, Peer-to-Peer, Master Server
               - เครือข่ายเปลี่ยนแปลงได้และ เซิร์ฟเวอร์สนับสนุนชนิดของเกมต่างๆ
               - Centralized server หรือ peer-to-peer networking
               - ออกแบบเพื่อใช้ประชาชนในเกมแบบผู้เล่นหลายคน เช่น MMORPGs
               - รูปแบบเปลี่ยนแปลงได้จัดเตรียมการใช้งาน เซิร์ฟเวอร์ต่าง ที่รับรอง เครือข่ายและ
               - ใช้ .NET Remoting ให้เกมรันกับเซิร์ฟเวอร์ โดยไม่เปลี่ยนตัวรองโค้ด เกมใช้บนเครือข่ายได้โดยไม่ต้องพยายามเป็นพิเศษ

          6) Audio & Video
               - เสียง 3D, การไหลของเสียง
               - OpenAL สำหรับเสียงข้ามแพลตฟอร์ม
               - เสียง 3D กับการหมุนกล้อง, ความกังวานของเสียง
               - นิยมใช้แบบ OOP กับเขียนสคริปต์เสียงที่ใช้ได้จริง

          7) Artificial Intelligence
               - เส้นทางค้นหา, การตัดสินใจ ,Finite state machines, Scripted, Neural Networks
               - เครื่องข่ายใยประสาท/การตัดสินใจ แบบ Tree hybrid เป็นตัวแบบที่ใช้จัดการ การตัดสินใจขั้นต้นของ AI
               - อัลกอริทึม genetic อนุญาต สำหรับ การพัฒนาการ หรือ อักขระ หรือ แข่งขันของมนุษย์เพื่อการสร้าง ที่มีการท้าทายฝ่ายตรงข้ามที่จะเรียนรู้วิธีกลยุทธของผู้เล่น
               - ทุกๆแง่ปัญหาของ engine สามารถเขียนเป็น script ได้และ ตัว AI ก็ไม่ยกเว้นเช่นกัน
               - สถาปัตยกรรม event-based สำหรับ อักขระ ที่จัดเตรียมให้มีการเขียนประสานอย่างมีประสิทธิภาพ สำหรับ AI
               - อัลกอริทึมเส้นทางค้นหา จะเตรียมให้เหมาะกับเกมต่างๆ
               - แก้ไขจาก "http://realmforgewiki.castlegobs.nl/index.php/Features"
               - อัลกอริทึมการหาเส้นทางที่แตกต่างกัน จะได้จัดเตรียม ให้เหมาะสมตามลักษณะเกม
5. ผลการศึกษาและวิจารณ์


          5.1 การเปรียบเทียบด้าน Rendering Engine ระหว่าง Ogre ของ C++ และ Axiom ของ C#

          ผลลัพธ์ ของ การเปรียบเทียบ FPS (frame ต่อ วินาที) สำหรับ Axiom และ OGRE 3D rendering และตัวรุ่นตัวอย่างลองใช้ (Demo) ตัว Demo ได้เปรียบเทียบ และ จัดทำตามรายการข้างล่าง ที่แต่ละส่วนของ engine ที่พิจารณาไว้ Axiom เป็น C# port ของ OGRE และ ตัว Axiom จะคล้ายคลึงกัน ด้วยการแยกส่วนหลักๆออก เป็น ตัว Axiom ที่ได้เขียนให้จัดการ ด้านภาษา สำหรับ .NET และ OGRE ที่เขียนด้วย ภาษา C++ แล้วทำการประมวลผล วิเคราะห์ในแต่ละครั้ง การควบคุมตัวแปร ไม่คำนึงถึงไม่ว่าแม้ตัว Demo ที่ถูกนำไปใช้ การใช้ .NET และ เป็นไปตามภาพด้านล่าง การใช้ ภาษา .NET เช่น C# ทำให้เกิดความแตกต่างของความเร็วเพียงเล็กน้อย ฉะนั้นผลลัพธ์ ที่ใช้ Axiom และ .NET ที่แท้จริงจะมีค่าเฉลี่ยที่เร็วกว่า อย่างไรก็ตามทั้งหมดก็เป็นการสังเขปเพียงเท่านั้น . นี่เป็น ข้อสังเขปที่ผิดพลาด และ ในกรณีที่มากที่สุดของ C# อาจจะไม่ถ่ายทอดได้เร็วกว่า C++ แต่นี่ได้ปรับปรุงในส่วนของความเร็วและประสิทธิภาพ ที่อาศัย จากการออกแบบ และนำไปใช้ มากกว่า การที่ไม่คำนึงถึง JIT ของภาษา .NET ที่ได้ถูกใช้ ส่วนเพิ่มเติมนี้ จะได้ปรับปรุง C# และ .NET framework ให้เป็นไปตามจริงเท่าที่เป็นไปได้ ไม่ใช่ "ช้าอย่างมาก" สำหรับ การพัฒนา เกม 3D ที่มีประสิทธิภาพสูง เหมือน ดังที่ได้พิจารณาไว้

          ความสามารถของคอมพิวเตอร์ที่ทดสอบ
          - Direct 9.0c October
          - .NET Framework: 1.1.4322.573
          - 1600MGz Pentium M
          - 512 RAM
          - ATI Mobility Radeon 9000 32MB
          - 1400x1050 @ 32bpp Fullscreen
          - Operating System: Microsoft Windows NT 5.1.2600.0 (Windows XP)
          - Axiom Version: Build from CVS 10-16-04
          - OGRE Version: 0.14.0 Prebuilt Release 







          5.2 จุดเด่น - จุดด้อย ของ Game Engine ที่พัฒนาด้วยภาษา C#

          เมื่อเปรียบเทียบกับ C++ เป็นหลัก เนื่องจากเป็นภาษาที่นิยมใช้งาน และมีประสิทธิภาพสูงสำหรับการสร้างเกมในปัจจุบัน

          จุดเด่น
          - มี Garbage Collection ในการจัดการดูแลในส่วนของทรัพยากร และหน่วยความจำ ซึ่งทำหน้าที่ในการเก็บกวาด Object ที่ไม่จำเป็นต้องใช้แล้วที่อยู่ในหน่วยความจำให้ออกไป ทำให้หน่วยความจำว่างขึ้นเพื่อนำไปใช้ประโยชน์อื่น ๆ อีกด้วย (แต่ใช้พื้นที่หน่วยความจำมากพอสมควร)
          - มีลักษณะ True object orientation
          - Less Convoluted syntax มี syntax ที่มีความซับซ้อนน้อยกว่า หมายความว่า เราสามารถพัฒนาเกมได้เร็วกว่านั่นเอง
          - เป็นภาษาที่ปลอดภัยต่อชนิดข้อมูล (type-safe) หมายถึง ทันทีที่ข้อมูลบางอย่างถูกกำหนดค่าให้กับชนิดข้อมูลหนึ่ง ๆ แล้วไม่สามารถแปลงตัวเองไปเป็นชนิดข้อมูลที่ไม่สัมพันธ์กันกับชนิดอื่นในภาย หลังได้

          จุดด้อย
          - เกมหรือโปรแกรมที่พัฒนาด้วย C# ต้องใช้สภาพแวดล้อมของ .NET (.Net Platform) ในการประมวลผล
          - ใช้พื้นที่หน่วยความจำมาก เนื่องมาจาก Garbage Collection

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



ที่มา: http://devmaster.net/devdb/engines/realmforge

คลิ้กที่รูปเพื่อดาวน์โหลดโปรแกรม



UDK ( Unreal Devolopment Kit)

UDK ก็คือ Unreal Engine 3 - ใช้สำหรับผู้เชี่ยวชาญทางด้านการพัฒนาเกม เครื่องมือทุกอย่างที่คุณต้องการใช้ในการสร้างเกม หรือการแสดงภาพ 3 มิติขั้นสูง เครื่องมือที่ดีที่สุดในวงการนี้จะอยู่ในมือคุณ

Unreal Engine คือตัวใช้พัฒนาเกมภาพ 3มิติขั้นสูงแบบ Realtime ที่เกมดังๆหลายเกมใช้ทำกัน เช่น Gear of war หรือUnreal tournament 3 เป็นต้น ซึ่งตอนนี้ได้มีการนำมาให้ใช้ได้ฟรีแต่ถ้าจะพัฒนาเกมขายต้องจ่ายค่า ลิขสิทธิ์



ดาวโหลด พัฒนาโดยไม่มีค่าใช้จ่าย
อย่าง ที่บอกไปว่าแท้จริงแล้ว UDK กับ Unreal Engine 3 มันคือตัวเดียวกันแต่ที่ต่างกันก็คือข้อกำหนดสัญญาการใช้งาน (license) โดยทุกคนสามารถดาวโหลด UDK ไปพัฒนาเกมส์ได้ฟรี ไม่มีค่าใช้จ่ายใดๆภายใต้ข้อตกลงว่าเกมส์นั้นจะไม่ถูกนำขายในเชิงพาณิชย์ ...จริงๆแค่นี้ก็ถือว่าได้ใจนักพัฒนาเกมส์มือใหม่ไปเต็มๆแล้ว ขนาดว่าเอนจินเกมส์ที่ถูกๆหน่อยอย่าง torque ก็ยังใช้เงินซื้อเป็นร้อยเหรียญสหรัฐ
แล้วเกิดว่าคุณเกิดสร้างเกมส์สุดเจ๋งขึ้นมาด้วย UDK แล้วดันมีที่ท่าว่าจะขายดีละ ทางสตูดิโอก็ยินยอมให้มีการนำผลงานไปวางขายได้ โดยจะมีค่าใช้จ่ายในแต่ละเกมส์คือ U$99 + 25% ของรายได้ที่เกินวงเงิน U$5,000 ขึ้นไป จะเห็นว่าเป็นข้อตกลงที่แฟร์ใช้ได้ที่เดียวถ้าคิดในแง่ว่าคุณเป็นนักพัฒนา อิสระ
อ่านเพิ่มเติมพร้อมตัวอย่างการชำระค่าไลเซนส์ได้จาก http://udk.com/licensing

 รองรับอุปกรณ์โมบายอย่าง iPhone/iPad
ตัว เอนจินนั้นถูกประกาศช่วงปลายปี 2009 และเมื่อปลายปีที่แล้วนี้เองมีการอัพเดทใหม่ซึ่งคราวนี้ส่งผลให้ UDK รองรับการสร้างเกมส์สำหรับอุปกรณ์ไร้สายตระกูล iOS แบบครบเซท ซึ่งเพิ่มทางเลือกสำหรับนักพัฒนาที่สนใจในการสร้างเกมส์บนแพลทฟอรม์มือถือ ที่ในปัจจุบันกำลังเติบโตแบบก้าวกระโดด
คุณสามารถทดลองเข้าไปดูค้น Apple App Store และค้นหาแอพที่ชื่อว่า Epic Citadel ซึ่งเป็นเดโมการแสดงผลกราฟฟิค 3D ของอันเรียลเอนจินบนอุปกรณ์ iOS ..แอพนี้ทำเอาหลายคนอ้าปากค้างมาแล้วเพราะไม่นึกว่ากราฟฟิคสามมิติบนมือถือ จะทำได้ระดับนั้นเป็นมาตรฐานในวงการ สื่อการสอนรองรับจำนวนมาก ผมเคยใช้เวลาค้นหาข้อมูลเกี่ยวกับเกมส์เอนจินบ้างเป็นบางพัก และน่าจะสรุปได้ว่ามีเพียง UDK น่าจะเป็นเอนจินเกมส์มืออาชีพที่มีฟีเจอร์ทันสมัยมากที่สุดพร้อมกับไลเซนส์ ที่ถูกใจนักพัฒนาอิสระ (จริงๆมี Unity Basic อีกตัวที่ใช้ฟรีแต่ฟังชั่นจำกัด)
และด้วยสาเหตุที่ร่ายยาวมานี้ คุณจะพบได้ว่าในปัจจุบันตัวสอนการออกแบบเกมส์บน UDK กำลังเริ่มทะลักเข้าสู่ตลาดจำนวนมาก ทั้งแบบฟรีและไม่ฟรีก็ตามที แต่นั่นน่าจะเป็นสัญญาณที่ดีสำหรับคนที่กำลังคิดจะพัฒนาฝีมือตนเองในวงการ นักออกแบบเกมส์
คุณเป็นอีกคนหรือเปล่าที่กำลังคิดจะเดินเข้าสู่วงการเกมส์? อย่ารอช้าอยู่เลย ดาวโหลดมาศึกษาด้วยตัวเองเสียแต่วันนี้โดยไม่มีค่าใช้จ่ายใดๆ

ที่มาของบทความนี้


Screenshot ของโปรแกรม







Screenshot เกมที่เขียนจากโปรแกรม UDK





คำเตือน
               ตรวจ สเป็คขั้นต่ำของเครื่องให้ดีก่อนนะครับ คอมต้องแรงจริงๆเพราะใช้สเป็คคอมมากกว่าใช้เล่นเกมทั่วไปอีกนะครับเรื่อง การ์ดจอไม่ต้องห่วงครับการ์ดจอGF6800ก็พอใช้ได้แล้วครับ แต่ที่สำคัญคือCPUกับRamเพราะถ้าเสป็คเครื่องต่ำอาจทำให้คอมอืดได้ครับ(แรม ขั้นต่ำ2GB!!)

PC specs
Minimum:

* Windows XP SP2 or Windows Vista
* 2.0+ GHz processor
* 2 GB system RAM
* SM3-compatible video card
* 3 GB Free hard drive space

Recommended for Content Development:

* Windows Vista 64 SP2
* 2.0+ GHz multi-core processor
* 8 GB System RAM
* NVIDIA 8000 series or higher graphics card
* Plenty of HDD space




ที่มา:http://www.udk.com/features.html

คลิ้กที่รูปเพื่อดาวน์ดหลดโปรแกรม