Dễ dàng sử dụng các công cụ 3D đa nền tảng để phát triển trò chơi C ++? [đóng cửa]


73

Tôi muốn thử sức mình trong việc viết một game 3D. Tuy nhiên, tôi không muốn bắt đầu ở mức độ thấp như vậy để vẽ các hình tam giác riêng lẻ và viết trình tải đối tượng 3D của riêng tôi, v.v. Tôi đã nghe nói về những thứ như Irrlicht , Crystal Space 3DCafu , nhưng tôi không có bất kỳ kinh nghiệm nào với chúng. Tôi đang tìm kiếm đề xuất từ ​​những người có kinh nghiệm với những động cơ này hoặc các động cơ khác được viết tốt và dễ dàng bắt đầu sử dụng mà không cần phải học nhiều lý thuyết toán học 3D và cách GPU hoạt động bên trong.


16
Trong khi nó có thể đã bị đóng, câu hỏi này rất hữu ích với tôi.
Caleb Jares

4
ditto, chủ đề rất tốt, không biết tại sao stackexchange không thích loại câu hỏi này.
steveh

2
họ thích đóng những câu hỏi mà tôi cho là
Frank Cranston


Câu trả lời:


48

Ý kiến ​​của tôi (chỉ dành cho các công cụ 3D nguồn mở):

  • Irrlicht :
    • Động cơ 3D nhẹ
    • Làm sạch C ++ mà không phụ thuộc và không có STL.
    • Tài liệu không tốt lắm nhưng có hướng dẫn tốt.
    • Rất nhỏ để bạn có thể tùy chỉnh nó dễ dàng.
    • Không có trình điều khiển OpenGL 3.X, Direct X 10.X hoặc 11.X có sẵn trong SDK chính thức.
    • Rất tốt cho phát triển di động;
    • Cộng đồng tốt
    • Có rất ít tiện ích mở rộng
  • Ogre3D :
    • Động cơ 3D lớn
    • Nó sử dụng C ++ hiện đại như STL, ngoại lệ và RTTI
    • Tài liệu tốt (Có sách xuất bản).
    • Nhiều trình kết xuất (OpenGL, DirectX và OpenGL ES ...).
    • Ogre3D có nhiều phần mở rộng như tích hợp CEGUI hoặc Bullet, các nút Tree ...
    • Nhưng khó khăn hơn để mở rộng Ogre3D nếu bạn muốn một cái gì đó cụ thể.
    • Cộng đồng lớn
    • Nhiều tiện ích mở rộng
  • Không gian pha lê : Một thiết kế cũ và khó sử dụng. Sau vài ngày, tôi đã ngừng sử dụng động cơ này.
  • Horde3D
    • Động cơ nhỏ
    • Thiết kế hiện đại
    • Cộng đồng ánh sáng
    • Không có phần mở rộng
  • Pha trộn
    • Động cơ nhỏ với một số phụ thuộc
    • Thiết kế hiện đại với các hiệu ứng hiện đại như DOF hoặc HDR ...
    • Chỉ OpenGL
    • Cộng đồng ánh sáng
    • Tích hợp đạn cho vật lý
    • Bạn sử dụng lua để thí điểm engine3D này

TL; DR:

  • Đối với trò chơi trên máy tính để bàn (hoặc trò chơi thương mại trong tương lai): Ogre3D
  • Đối với một trò chơi đầu tiên: Irrlicht
  • Đối với phát triển di động: irrlicht (Ogre3D quá lớn)
  • Cho hiệu ứng gợi cảm: Blendelf

Thành thật mà nói, tôi sẽ không đề xuất Irrlicht cho phát triển di động. Nó thực hiện quá nhiều phân bổ bộ nhớ và cung cấp các triển khai cấp phát bộ nhớ tùy chỉnh ít hoặc không có. Thời gian khởi động do gần 60 000 phân bổ được thực hiện khi khởi động là một vấn đề lớn.
Simon

Tôi sử dụng Irrlicht trên Android và IOS và thời gian khởi động không phải là vấn đề lớn ... Tải kết cấu dài hơn nhiều so với phân bổ ...
Ellis

@Simon bạn có thể giải thích những gì bạn đang đề cập đến với "triển khai cấp phát bộ nhớ tùy chỉnh" không? Đó là gì, và tại sao bạn muốn nó?
tạm

2
@Aerovistae Cấp phát bộ nhớ yêu cầu các cuộc gọi đến hệ điều hành, đó là một hoạt động rất tốn kém. Thông thường khi tạo một công cụ trò chơi, bạn muốn thực hiện quản lý bộ nhớ của riêng mình, bạn sẽ phân bổ một phần lớn bộ nhớ một lần và sau đó bạn sẽ tự mình phân phối bộ nhớ đó trong chương trình. Bằng cách đó, bạn chỉ di chuyển con trỏ xung quanh và không gọi kernel mỗi khi bạn muốn thêm bộ nhớ. Đây là một chủ đề khá nâng cao và yêu cầu số học con trỏ nâng cao, đặc biệt nếu bạn muốn một cơ chế chống phân mảnh nào đó.
dreta

3
Vì vậy, khi Simon nói rằng anh ta sẽ không đề xuất nó bởi vì nó không cung cấp triển khai cấp phát bộ nhớ tùy chỉnh, thực sự điều này không áp dụng cho người mới bắt đầu, hoặc thậm chí cho hầu hết các nhà phát triển trung gian?
temporary_user_name

21

Gợi ý ban đầu rõ ràng là Ogre3D .


Bạn đã có kinh nghiệm với nó? Nó khá ổn định, được viết tốt và tốt cho người mới bắt đầu 3D? Tôi có thể dễ dàng tìm kiếm một danh sách các công cụ 3D (như bạn thấy trong câu hỏi của tôi), tôi đang tìm kiếm cái nhìn sâu sắc hơn về đó là một lựa chọn tốt, và tại sao. Cảm ơn.
davr

1
Nhưng Ogre3D không phải là một động cơ. Nó là một thư viện kết xuất 3d. Bạn phải chọn một động cơ được xây dựng trên yêu tinh hoặc tự chế tạo.
Cháy

4
Tôi đã có nhiều kinh nghiệm với Ogre3d; Nó rất ổn định và được viết tốt, và làm rất tốt công việc chăm sóc các nhiệm vụ trần tục (loại bỏ cảnh, tải lưới, biển quảng cáo / hạt). Lửa là chính xác ở chỗ nó không phải là Game Engine; nhưng Ogre có thể (và thường là) được kết hợp với các thư viện khác để tạo một thư viện. Đây là một bước tuyệt vời ở trên "vẽ các hình tam giác riêng lẻ và viết trình tải đối tượng 3D của riêng tôi", nhưng nó chỉ là một thư viện kết xuất. Nếu đó là những gì bạn muốn, thì đó là một thư viện tuyệt vời với một cộng đồng tích cực và hỗ trợ.
Karantza

3
@Fire OGRE: Công cụ kết xuất đồ họa hướng đối tượng. Đó là một động cơ. Nó có singletons ở khắp mọi nơi. Chắc chắn là một động cơ.
Ricket

3
@Ricket Có, một công cụ đồ họa , nhưng không phải là một công cụ trò chơi, đó là điều mà anh ta có lẽ có nghĩa nhất vì điều này được nhấn mạnh trong các tài liệu yêu tinh. Ngoài ra mẫu singleton (chống) chắc chắn không liên quan gì đến việc nó có phải là một động cơ hay không.
Raoul

7

Open Scene Graph là một công cụ 3D đa nền tảng khá tốt, được thiết kế rất tốt. Ví dụ, trái ngược với Ogre3D, nó không cung cấp các tính năng "công cụ trò chơi" và tập trung vào việc là một bản tóm tắt rất hay trên đỉnh OpenGL.

  • Nó khá nhẹ và không ép buộc bạn: bạn có thể sử dụng ít hoặc nhiều tùy ý và sử dụng nó thông qua SDL, SFML, wxWidgets, QT ...
  • Đó là một trải nghiệm học tập tuyệt vời: khi bạn học thư viện, bạn càng hiểu nhiều hơn về OpenGL cơ bản và cách nó được thiết kế
  • Khá nhiều sẵn sàng để sử dụng: nó có bộ tải cho các định dạng 3D chính thống
  • Shader thân thiện

Có một cái nhìn vào danh sách rộng lớn của các mẫu .


4

Về mặt công cụ trò chơi:

  • Torque3D : Rất nhiều tính năng, nhưng một số sẽ coi mã khó làm việc.
  • Động cơ C4 : Không tốn kém, hỗ trợ tác giả xuất sắc, nhưng các công cụ có thể sử dụng một chút công việc.
  • DIY: Chọn một bộ thư viện và dán chúng cùng với trò chơi của bạn.

Kể từ khi Ogre3D được đề xuất, cũng tồn tại một Horde3D thay thế trọng lượng nhẹ .

Ưu điểm:

  • Thiết kế này là âm thanh và có khả năng sẽ vượt trội hơn so với Ogre3D để hiển thị nặng (nếu chưa có)
  • API C, tạo liên kết cho các ngôn ngữ như Python đơn giản và dễ bảo trì (mã nội bộ là C ++)

Nhược điểm:

  • Yêu cầu ít nhất hỗ trợ OpenGL 2.0
  • Cộng đồng nhỏ hơn
  • Cơ sở mã không ổn định (thay đổi kiến ​​trúc lớn vẫn đang xảy ra)

2
Tránh Torque 3D nếu bạn coi trọng sự tỉnh táo của mình. Các công cụ kịch bản là một cơn ác mộng lộn xộn, rất khó chịu để làm việc với.
Jared Updike

4

Irrlicht cung cấp nhiều hơn một chút so với Ogre3D, đồng thời thực tế hơn một chút (ví dụ: bạn không cảm thấy như mình đang "khởi động một động cơ" và xem nó chạy, cảm giác giống như bạn là theo ý kiến ​​của tôi, một lệnh đang chạy

Tôi nghĩ rằng nó sẽ là tuyệt vời để bắt đầu với!


4

Tôi biết bạn đã yêu cầu C ++, nhưng Panda3D cũng hoạt động với C ++, ngay cả khi lần đầu tiên nó nhắm mục tiêu hoạt động với python. Nó là một công cụ trò chơi, nhưng bất cứ điều gì ...


2

Sự lựa chọn rõ ràng, nếu Ogre3D quá thấp đối với bạn, sẽ là NeoAxis: http://www.neoaxisgroup.com/

Nó được cung cấp bởi Ogre, nhưng là một nền tảng phát triển trò chơi hoàn chỉnh.

Đó là nhắm mục tiêu .NET để bạn có thể sử dụng C #, C ++, VB được quản lý.

Vì vậy, đi cho điều đó. :)

Ogre3D có thể chạy trên một loạt các thiết bị di động, như iPhone và Android. Vì vậy, nó không quá lớn.

Đừng nhầm kích thước cho hiệu suất.

Tôi không chắc chắn liệu WatersLicht có hỗ trợ iPhone chính thức hay không, nhưng Ogre3D thì có.


Nếu trên .NET, bạn không thể thêm IronPython vào danh sách ngôn ngữ? Python là một ngôn ngữ kịch bản tuyệt vời.
Jared Updike

2
.MẠNG LƯỚI? Điều đó không loại trừ đa nền tảng?
davr

.Net thì không, nhưng Neo-Axis sử dụng C ++ / CLI.
jsimmons

Tôi đã nói chuyện với nhà phát triển chính Neoaxis hôm nay và họ thông báo Mac OS X hỗ trợ vào tháng 9 này. :)
jacmoe


1

Câu trả lời tốt cho đến nay, nhưng tôi sẽ thêm Marmalade . Nó di động khá tốt. Một loạt các studio lớn đã phát hành trò chơi console với nó, vì vậy nó có thông tin đăng nhập. Thậm chí còn có một trình soạn thảo giống như unity được xây dựng trên nó, Shiva3D , cũng cho phép đa nền tảng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.