2012-03-11 34 views
7

Tôi hiện là nhà phát triển C#/Java và tôi đã có thời gian tuyệt vời trên XNA với C# .NET.
Nhưng tôi muốn thử phát triển 3d trên Java, vì nó di động và tôi chưa thử OpenGL.Nơi tìm một khung tương tự như XNA trên Java

Tôi chạy vào một vấn đề mà có nhiều khả năng ở đây:

  • jMonkeyEngine
  • Avatrix3D
  • Ardor3D
  • Java3D - Tôi đã không thực sự nhìn vào rất nhiều, có vẻ như thú vị, nhưng tôi thích nhìn thấy những gì mọi người thực sự nói trước. Nếu đây thực sự là những gì tôi đã tìm kiếm thì điều đó thật tuyệt vời. Nhược điểm là tôi tin rằng mức hỗ trợ rất thấp.

Tôi chủ yếu nhìn vào JME, hóa ra lại là một động cơ hơn là một khuôn khổ (đã xảy ra với tôi thông qua tên, mặc dù tôi đã được thông báo là không).

Về cơ bản những gì tôi muốn từ một đặc biệt framerwork:

  • vẽ Khá tự động (xem XNA, có thể nhiều hơn một chút sau đó họ làm nhưng xung quanh đó)
  • Bao gồm toán vector, những gì họ đã làm trong JME với các nút là tốt
  • Tốt hơn là dễ dàng kết nối với ứng dụng (không giống như XNA, nơi người dùng cuối phải cài đặt .NET AND XNA)
  • Không cần thiết ry triển khai những gì sẽ không nhất thiết phải là chung chung: điều này có thể đòi hỏi một lời giải thích, ý tôi là, những gì tôi ghét trong JME là họ đã có một loạt các triển khai vật lý nặng, chẳng hạn như lớp bullet và simplePhysicsUpdate. Họ không nhất thiết phải làm những gì bạn muốn họ, và nó không phải là rất dễ dàng để thực hiện của riêng bạn. Trong XNA, họ để lại tất cả chủ đề đó hoàn toàn mở.
  • Cách tiếp cận OOP thực sự. Có thật không. Trong XNA tôi coi nó là một phương pháp tiếp cận OOP thực sự vì bạn có MỘT lớp bộ điều khiển, có chứa tất cả các GameComponent s. Đây cũng là những gì làm cho nó dễ dàng như vậy để xây dựng thư viện của riêng bạn cho quản lý đầu vào cá nhân và như vậy. Vật lý cũng trở nên đơn giản hơn nhiều để xử lý.

Xin lưu ý rằng tôi đã không xem xét JME trong một thời gian dài, vì vậy tôi có thể nhầm lẫn về điều đó. Nếu tôi, xin vui lòng nói như vậy, và có thể cung cấp ví dụ về cách nó có thể thực hiện những điều tôi yêu cầu trên đầu trang.

Nếu không hãy cho tôi ý tưởng cho đến những gì có thể như vậy, có nghĩa là để nói một khuôn khổ và không phải là mộtđộng cơ.

Ngoài ra, điều đáng lưu ý là tôi đã hỏi một câu hỏi tương tự đã là here. Đây là cách tôi quan tâm đến JME. Tôi cũng đã xem xét Java3D trên danh sách cần làm của mình.
Câu hỏi này khác với câu hỏi của tôi đối với khung thay vì sau đó là động cơ .(đối với tôi sự khác biệt là động cơ sẽ cố gắng có mọi thứ trò chơi sẵn sàng, trong khi khung làm việc đơn giản giúp việc tạo động cơ thực sự phù hợp với nhu cầu nhu cầu của bạn).

Chỉnh sửa: sau khi đọc 2 câu trả lời, tôi sẽ xem xét Java3D mặc dù dường như có rất ít hỗ trợ, vì tôi không muốn mức độ nặng nề của JME nếu tôi không sử dụng nó, và xem xét hacking off khối của một sản phẩm được phần nào sai (tôi có nghĩa là nó OK để làm điều đó nếu cần thiết, nhưng tôi muốn nhìn vào các giải pháp khác đầu tiên). Nếu điều đó không có tác dụng, tôi sẽ xem xét jogamp và LWJGL, có thể xây dựng khung của riêng tôi từ chúng (có vẻ như một dự án thú vị để làm). Nếu tôi không xây dựng nó, tôi sẽ chỉ dính vào XNA (mặc dù tôi sẽ mất khả năng cài đặt bất kỳ sáng tạo nào của tôi vào máy linux ở tầng dưới :()

Trả lời

2

Một vài suy nghĩ, nhưng bỏ qua để theo đuổi: không có khung như vậy cho Java, bạn có thể ngừng tìm kiếm - hoặc rất thất vọng.

XNA là một khoản đầu tư lớn từ Microsoft, phạm vi và công cụ của nó thật tuyệt vời. Và không có thắc mắc: XNA là một phần của chiến lược XBox của Microsoft VÀ chiến lược di động của họ cùng một lúc. Nó có rất nhiều tài nguyên đằng sau nó. Không ai ở phía Java đã từng đầu tư tương tự, bởi vì không có người chơi lớn nào quan tâm đến việc đẩy Java như một nền tảng chơi game (điều này có thể thay đổi với Android và JavaFX, nhưng tôi sẽ không nín thở).

Những gì chúng tôi có ở đây trong Javaland - là rất nhiều thư viện, cộng đồng và dự án nhỏ hơn. Thêm hứng thú và ý tưởng, ít trưởng thành hơn. Ít dụng cụ hơn, thụ phấn chéo nhiều hơn. Yêu thích hiện tại của tôi là PlayN, một thư viện nền tảng thực sự thú vị cho phép bạn tạo trò chơi cho Android và máy tính để bàn, sau đó biên dịch sang Javascript và phát trên mọi trình duyệt hiện đại mà không cần bất kỳ plugin nào.

Đối với các mặt kỹ thuật, hai ghi chú:

  • Tôi phản đối việc gọi là "một bộ điều khiển để cai trị tất cả" một cách tiếp cận OO đúng (và có lẽ chống lại kêu gọi bất cứ điều gì "cách tiếp cận OO true"); nó chắc chắn là một sự lựa chọn thiết kế có mặt tốt, nhưng nó có sự cân bằng của nó. Có những phương pháp khác để cung cấp các phụ thuộc ngoài việc gắn chúng vào một số đối tượng trung tâm.

  • JME không phải là - AFAIR - được kết nối cứng với bất kỳ công cụ vật lý cụ thể nào, nó được xây dựng với giả định rằng mọi thứ đều có thể thay thế được. Nó có thể được thực hiện theo một cách khác với XNA, nhưng nó là tốt.

+0

Xin lưu ý rằng thực tế JME thực hiện điều tương tự (một bộ điều khiển để quy tắc tất cả) về mặt hiển thị thực tế: rootNode. Có thực sự không có khung hỗ trợ 5 tính năng mà tôi đã yêu cầu không? Tôi tin rằng hack các khối khổng lồ từ một số sản phẩm là một điều khủng khiếp để làm, vì vậy tôi sẽ xem xét Java3D và nếu điều đó không làm điều đó có thể làm cho riêng của tôi với LWJGL/JOGL hoặc chỉ ở lại trong của tôi.NET thế giới XD –

+2

Tôi không có gì chống lại bộ điều khiển duy nhất, thực sự; nhiều người bạn thân nhất của tôi là những người độc thân. Tôi chỉ đơn thuần là chống lại việc xem xét chúng (hoặc bất cứ điều gì khác cho vấn đề đó) "kỹ thuật OOP thực sự duy nhất" :) Đối với những nghi ngờ của bạn, tốt - xem cho chính mình. XNA không phải là dự án nguồn mở trung bình của bạn. Đó là một nền tảng khổng lồ có thể chỉ được cung cấp bởi một nhà cung cấp lớn với nguồn lực lớn. Không có nhà cung cấp Java nào tìm thấy nó là một ý tưởng tốt để đầu tư xây dựng một nền tảng chơi game Java, vì vậy chúng tôi có rất nhiều công cụ nguồn mở tuyệt vời, không có sự trưởng thành mà bạn đã quen. Btw, Java3D là mức độ rất thấp nó sẽ làm cho bạn khóc. – fdreger

+0

Và có, bạn trao giải một số câu trả lời khác trước khi kiểm tra sự thật đằng sau của tôi, đã làm tổn thương :-) – fdreger

1

Tôi nghĩ rằng jMonkeyEngine có lẽ là đặt cược tốt nhất của bạn

Nó được thiết kế như một công cụ trò chơi khá đầy đủ tính năng, nhưng không có gì ngăn bạn sử dụng nó như một khung công tác và chỉ cần chọn và chọn các bit bạn cần. Đó cũng là nguồn mở, vì vậy nếu bạn muốn làm một chút khác biệt sau đó, bạn luôn có thể hack theo cách bạn muốn :-)

Ví dụ: nếu bạn không thích các tính năng đồ thị cảnh jMonkeyEngine cấp cao hơn, bạn chỉ có thể sử dụng LWJGL (jME sử dụng nội bộ để hiển thị) và vẽ trực tiếp bằng cách sử dụng OpenGL.

Các vấn đề liên quan