ฉันชอบคุณสมบัติของ XNA แต่ฉันต้องการเข้าไปในเกม c ++ ปัญหาคือตอนนี้ฉันต้องกังวลเกี่ยวกับทุกอย่างตั้งแต่การโหลดไฟล์ png ไปจนถึงการเปิดหน้าต่าง มันน่ารำคาญนิดหน่อย
ฉันต้องการ XNA รุ่น c ++ เพื่อแก้ปัญหาเหล่านี้ให้ฉัน
ฉันชอบคุณสมบัติของ XNA แต่ฉันต้องการเข้าไปในเกม c ++ ปัญหาคือตอนนี้ฉันต้องกังวลเกี่ยวกับทุกอย่างตั้งแต่การโหลดไฟล์ png ไปจนถึงการเปิดหน้าต่าง มันน่ารำคาญนิดหน่อย
ฉันต้องการ XNA รุ่น c ++ เพื่อแก้ปัญหาเหล่านี้ให้ฉัน
คำตอบ:
ฉันจะแนะนำให้คุณดูที่SFMLและPolycode
ฉันคิดว่าคำตอบที่นี่เป็นจุดที่ขาดหายไป เป็นเรื่องน่ารำคาญที่จะต้องเชื่อมโยงไปยังห้องสมุดสิบแห่งเช่น Freetype, libpng, tinyxml, Ogg, Vorbis และอื่น ๆ เพื่อรับคุณสมบัติ XNA พื้นฐาน
SFML
http://www.sfml-dev.org/features.php
SFML เป็น C ++ API มัลติมีเดียฟรีที่ให้คุณเข้าถึงกราฟิก, อินพุต, เสียงและอื่น ๆ ในระดับต่ำและระดับสูงในแง่ของมันคล้ายกับ XNA แต่ไม่ถือมือเท่าไหร่ ตัวอย่างเช่น SFML ไม่มี Class Model
หากคุณกำลังวางแผนในการใช้นางแบบในเกมของคุณคุณควรมีลักษณะที่ใช้Assimp
Assimp เพิ่มการสนับสนุนสำหรับการนำเข้ารูปแบบต่อไปนี้:
Collada ( .dae )
Blender 3D ( .blend )
3ds Max 3DS ( .3ds )
3ds Max ASE ( .ase )
Wavefront Object ( .obj )
Stanford Polygon Library ( .ply )
AutoCAD DXF ( .dxf )
LightWave ( .lwo )
Modo ( .lxo )
Stereolithography ( .stl )
AC3D ( .ac )
Milkshape 3D ( .ms3d )
Quake I Mesh ( .mdl )
Quake II Mesh ( .md2 )
Quake III Mesh ( .md3 )
Quake III BSP ( .pk3 )
Biovision BVH ( .bvh )
DirectX X ( .x )
BlitzBasic 3D ( .b3d )
Quick3D ( .q3d,.q3s )
Ogre XML ( .mesh.xml )
Irrlicht Mesh ( .irrmesh )
Neutral File Format ( .nff )
Sense8 WorldToolKit ( .nff )
Object File Format ( .off )
PovRAY Raw ( .raw )
Terragen Terrain ( .ter )
3D GameStudio ( .mdl )
3D GameStudio Terrain ( .hmp )
Izware Nendo ( .ndo )
Polycode
Polycode เป็นเฟรมเวิร์กข้ามแพลตฟอร์มฟรีสำหรับโค้ดที่สร้างสรรค์ คุณสามารถใช้มันเป็น C ++ API หรือเป็นภาษาสคริปต์แบบสแตนด์อโลนเพื่อให้เข้าถึงกราฟิก 2D และ 3D ที่เร่งความเร็วได้อย่างง่ายดายและง่ายขึ้นตัวแปลงฮาร์ดแวร์ฮาร์ดแวร์โปรแกรมเสียงและเครือข่ายเครื่องยนต์ฟิสิกส์และอื่น ๆ
Core Polycode API เขียนขึ้นใน C ++ และสามารถใช้เพื่อสร้างแอปพลิเคชั่นแบบพกพา
ด้านบนของแกน C ++ API นั้น Polycode นำเสนอระบบการเขียนสคริปต์ที่ใช้ Lua พร้อมชุดเครื่องมือการรวบรวมของตัวเอง Lua API สะท้อน C ++ API และสามารถใช้สร้างต้นแบบได้อย่างง่ายดายและแม้แต่เผยแพร่แอปพลิเคชันที่สมบูรณ์ไปยังหลายแพลตฟอร์มโดยไม่ต้องคอมไพล์ C ++
Polycode เป็น opensource ซึ่งหมายความว่าคุณสามารถเรียนรู้จากการทำสิ่งต่าง ๆ เบื้องหลัง นอกจากนี้ยังใช้ Assimp เพื่อโหลดโมเดลดังนั้นคุณไม่จำเป็นต้องกังวลเกี่ยวกับการลิงก์ไปยัง Assimp ด้วยตนเอง
มีห้องสมุดหลายร้อยแห่งที่จัดการกับทุกแง่มุมของการพัฒนาเกม ตั้งแต่การโหลดรูปภาพจนถึงการเปิดและจัดการหน้าต่างการเรนเดอร์เสียงเสียงฟิสิกส์ ฯลฯ
สิ่งที่มีไม่มาก "ครบวงจร" โซลูชั่นที่คุณได้รับทุกอย่างพร้อมกัน นั่นเป็นหนึ่งในประโยชน์ของ XNA โดยทั่วไปคุณต้องดึงหลาย ๆ ไลบรารีเข้าด้วยกันเพื่อสร้างเครื่องมือ สิ่งนี้จะช่วยให้คุณมีความยืดหยุ่นที่ดีราวกับว่าองค์ประกอบหนึ่งขาดคุณสามารถ (ค่อนข้าง) แลกเปลี่ยนได้ง่ายสำหรับอีกองค์ประกอบหนึ่ง แต่ในขณะเดียวกันก็ต้องใช้งานมากกว่านี้
แม้ว่าจริงๆแล้วทำไมคุณถึงค้างอยู่กับภาษาการเขียนโปรแกรมที่คุณต้องการใช้ ดูเหมือนว่าคุณชอบ XNA จริง ๆ และต้องการใช้สำหรับการพัฒนาเกม ดังนั้นไปทำอย่างนั้น
คุณสามารถใช้ D3DX และ DXUT ในตอนแรกซึ่งไม่ได้ยัดไส้เหมือน XNA แต่ช่วยได้มากในการตั้งค่าสภาพแวดล้อมอย่างน้อยเช่นการสร้างหน้าต่างที่รันลูปหลักและมีฟังก์ชั่นที่มีประโยชน์เช่น D3DX11CreateTextureFromFile () คุณจะต้องจัดการ แต่ตัวชี้ แต่ก็ไม่ได้ว่าอย่างหนัก นอกจากนี้ยังมีห้องสมุดมากมายที่คุณสามารถใช้ใน C ++ ซึ่งคุณสามารถแทนที่ด้วยตัวคุณเองหากคุณต้องการปรับปรุงประสิทธิภาพหรือสิ่งที่คุณต้องการเปลี่ยน
ไลบรารี D3DX และ DXUT นั้นเหมาะที่สุดสำหรับ D3D9 และ 10 และ DXUT มาพร้อมกับซอร์สโค้ดของมัน สำหรับ DX11 พวกเขาเลือกสรรฟังก์ชั่นบางอย่างจาก libs เหล่านั้น แต่ฉันหวังว่าพวกเขายังคงมีประโยชน์มากที่สุดและถ้าฉันจำได้ดีตอนนี้พวกเขามีกรอบผลกระทบในรูปแบบซอร์สโค้ด (สำหรับถ้าคุณมีความอดทนในการสำรวจ)
ฉันได้เรียนรู้มากขึ้นเมื่อทำงานในระดับที่ต่ำกว่ากรอบของปิรามิดดังนั้นฉันจึงไม่สามารถบอกคุณได้ว่าใช้ XNA แต่ขึ้นอยู่กับเป้าหมายของคุณเป็นส่วนใหญ่
หากคุณเพิ่งคุ้นเคยกับภาษา c ++ ฉันขอแนะนำให้ใช้ไลบรารีอย่างง่ายเช่น SDL เพื่อรับประสบการณ์ในการพัฒนาเกมแล้วเขียนโปรแกรมโดยใช้ openGL