มีอะไรที่เหมือนกับ XNA สำหรับ c ++ หรือไม่ [ปิด]


18

ฉันชอบคุณสมบัติของ XNA แต่ฉันต้องการเข้าไปในเกม c ++ ปัญหาคือตอนนี้ฉันต้องกังวลเกี่ยวกับทุกอย่างตั้งแต่การโหลดไฟล์ png ไปจนถึงการเปิดหน้าต่าง มันน่ารำคาญนิดหน่อย

ฉันต้องการ XNA รุ่น c ++ เพื่อแก้ปัญหาเหล่านี้ให้ฉัน


คุณควรดูที่DirectX Tool Kitหากคุณยังไม่ได้ ... มันเป็นห้องสมุด C ++ สำหรับการเขียนโปรแกรม Direct3D 11 ที่ยืมมาอย่างชัดเจนจากการออกแบบคลาส XNA Game Studio
Chuck Walbourn

คำตอบ:


16

ฉันจะแนะนำให้คุณดูที่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

http://polycode.org/features/

Polycode เป็นเฟรมเวิร์กข้ามแพลตฟอร์มฟรีสำหรับโค้ดที่สร้างสรรค์ คุณสามารถใช้มันเป็น C ++ API หรือเป็นภาษาสคริปต์แบบสแตนด์อโลนเพื่อให้เข้าถึงกราฟิก 2D และ 3D ที่เร่งความเร็วได้อย่างง่ายดายและง่ายขึ้นตัวแปลงฮาร์ดแวร์ฮาร์ดแวร์โปรแกรมเสียงและเครือข่ายเครื่องยนต์ฟิสิกส์และอื่น ๆ

Core Polycode API เขียนขึ้นใน C ++ และสามารถใช้เพื่อสร้างแอปพลิเคชั่นแบบพกพา

ด้านบนของแกน C ++ API นั้น Polycode นำเสนอระบบการเขียนสคริปต์ที่ใช้ Lua พร้อมชุดเครื่องมือการรวบรวมของตัวเอง Lua API สะท้อน C ++ API และสามารถใช้สร้างต้นแบบได้อย่างง่ายดายและแม้แต่เผยแพร่แอปพลิเคชันที่สมบูรณ์ไปยังหลายแพลตฟอร์มโดยไม่ต้องคอมไพล์ C ++

Polycode เป็น opensource ซึ่งหมายความว่าคุณสามารถเรียนรู้จากการทำสิ่งต่าง ๆ เบื้องหลัง นอกจากนี้ยังใช้ Assimp เพื่อโหลดโมเดลดังนั้นคุณไม่จำเป็นต้องกังวลเกี่ยวกับการลิงก์ไปยัง Assimp ด้วยตนเอง


การชี้แจงเล็กน้อย: Polycode ไม่ได้ใช้ assimp เพื่อโหลดแบบจำลอง แต่มีเครื่องมือที่ใช้ assimp เพื่อแปลงแบบจำลองเป็นรูปแบบที่สามารถโหลดได้
cib

4

มีห้องสมุดหลายร้อยแห่งที่จัดการกับทุกแง่มุมของการพัฒนาเกม ตั้งแต่การโหลดรูปภาพจนถึงการเปิดและจัดการหน้าต่างการเรนเดอร์เสียงเสียงฟิสิกส์ ฯลฯ

สิ่งที่มีไม่มาก "ครบวงจร" โซลูชั่นที่คุณได้รับทุกอย่างพร้อมกัน นั่นเป็นหนึ่งในประโยชน์ของ XNA โดยทั่วไปคุณต้องดึงหลาย ๆ ไลบรารีเข้าด้วยกันเพื่อสร้างเครื่องมือ สิ่งนี้จะช่วยให้คุณมีความยืดหยุ่นที่ดีราวกับว่าองค์ประกอบหนึ่งขาดคุณสามารถ (ค่อนข้าง) แลกเปลี่ยนได้ง่ายสำหรับอีกองค์ประกอบหนึ่ง แต่ในขณะเดียวกันก็ต้องใช้งานมากกว่านี้

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


3

คุณสามารถใช้ D3DX และ DXUT ในตอนแรกซึ่งไม่ได้ยัดไส้เหมือน XNA แต่ช่วยได้มากในการตั้งค่าสภาพแวดล้อมอย่างน้อยเช่นการสร้างหน้าต่างที่รันลูปหลักและมีฟังก์ชั่นที่มีประโยชน์เช่น D3DX11CreateTextureFromFile () คุณจะต้องจัดการ แต่ตัวชี้ แต่ก็ไม่ได้ว่าอย่างหนัก นอกจากนี้ยังมีห้องสมุดมากมายที่คุณสามารถใช้ใน C ++ ซึ่งคุณสามารถแทนที่ด้วยตัวคุณเองหากคุณต้องการปรับปรุงประสิทธิภาพหรือสิ่งที่คุณต้องการเปลี่ยน

ไลบรารี D3DX และ DXUT นั้นเหมาะที่สุดสำหรับ D3D9 และ 10 และ DXUT มาพร้อมกับซอร์สโค้ดของมัน สำหรับ DX11 พวกเขาเลือกสรรฟังก์ชั่นบางอย่างจาก libs เหล่านั้น แต่ฉันหวังว่าพวกเขายังคงมีประโยชน์มากที่สุดและถ้าฉันจำได้ดีตอนนี้พวกเขามีกรอบผลกระทบในรูปแบบซอร์สโค้ด (สำหรับถ้าคุณมีความอดทนในการสำรวจ)

ฉันได้เรียนรู้มากขึ้นเมื่อทำงานในระดับที่ต่ำกว่ากรอบของปิรามิดดังนั้นฉันจึงไม่สามารถบอกคุณได้ว่าใช้ XNA แต่ขึ้นอยู่กับเป้าหมายของคุณเป็นส่วนใหญ่


D3DX ทุกรุ่นเลิกใช้แล้ว ยูทิลิตี้ 'Direct3D 11.x' ที่ทันสมัยคือไลบรารีDirectXTex , DirectXTKและDirectXMeshรวมถึง DirectXMath ใน Windows 8.x SDK เอฟเฟ็กต์ 11และDXUT11รุ่นล่าสุดอยู่ใน CodePlex สำหรับผู้ที่กำลังย้ายพอร์ตโค้ดเบสที่เก่ากว่าและมีความสุขกับแอปเดสก์ท็อป Win32 เท่านั้น
Chuck Walbourn

1

หากคุณเพิ่งคุ้นเคยกับภาษา c ++ ฉันขอแนะนำให้ใช้ไลบรารีอย่างง่ายเช่น SDL เพื่อรับประสบการณ์ในการพัฒนาเกมแล้วเขียนโปรแกรมโดยใช้ openGL

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.