2011-01-06 35 views
5

Tôi muốn phát triển (hoặc tìm thấy, nếu một người đã có trong phát triển) một khuôn khổ với sự hỗ trợ cho đồ họa tăng tốc và âm thanh được xây dựng trên một hệ thống đủ linh hoạt để biên dịch như sau:Nền tảng tốt để xây dựng khung trò chơi nhắm mục tiêu cả web và ngôn ngữ bản địa là gì?

  • mẹ đẻ ppc/x86/x86_64/cánh tay mã nhị phân hoặc một ngôn ngữ mà biên dịch cho họ
  • Javascript
  • ActionScript bytecode hoặc một ngôn ngữ mà biên dịch với nó (ActionScript 3, haXe)
  • tùy chọn Java

Tôi tưởng tượng, ví dụ, tạo một API nơi tôi có thể mở các cửa sổ và thực hiện các cuộc gọi giống như OpenGL và khung bản đồ này theo cách tương đối hiệu quả cho WebGL với đối tượng canvas, đồ họa 3D trong Flash, OpenGL ES 2 với EGL hoặc OpenGL trên máy tính để bàn trong cửa sổ X11, Windows hoặc Cocoa.

Tôi đã cho đến nay nhìn vào những con đường:

  • Xây dựng thư viện trò chơi trong Haxe
    • Ưu điểm:
      • mục tiêu tồn tại cho PHP, JavaScript, ActionScript bytecode, C++
      • Cấp cao, ngôn ngữ hướng đối tượng
    • Nhược điểm:
      • Không hỗ trợ finally {} khối hoặc hủy, làm sạch nguồn khó
      • C++ mục tiêu không cho phép phòng để sản xuất các thư viện tối ưu hóa cao - giao diện chức năng nước ngoài yêu cầu tất cả các kiểu dữ liệu được đóng hộp trong một đối tượng bao bọc, như thể viết các ràng buộc cho một ngôn ngữ kịch bản; chúng cảm thấy không an toàn cho đồ họa và âm thanh thời gian thực, đặc biệt là xuất các chức năng cấp thấp.
      • Không có vẻ khá được nêu ra trưởng thành
  • Sử dụng tiền xử lý C để tạo ra một phiên dịch, viết chương trình hoàn toàn với các macro
    • Ưu điểm:
      • CPP là phổ biến và đơn giản để sử dụng
    • Nhược điểm:
      • Đây là một công việc khó khăn và có thể là công cụ sai cho công việc
      • Việc triển khai CPP khác nhau rất nhiều về hỗ trợ cho các tính năng (ví dụ:xcode cpp không có macro variadic bất chấp tuyên bố tuân thủ C99)
      • Có ít để không có chỗ cho tối ưu hóa trong tuyến đường này
  • Sử dụng llvm 's hỗ trợ nhiều backends để nhắm mục tiêu c/C++ để ngôn ngữ web
    • Ưu điểm:
      • có thể code trong c/C++
      • LLVM là rất trưởng thành hi trình biên dịch tối ưu hóa ghly thực hiện ví dụ nội tuyến toàn cầu
      • mục tiêu tồn tại cho ActionScript (Alchemy) và javascript (emscripten)
    • Nhược điểm:
      • Actionscript mục tiêu là nguồn đóng, bỏ dở, và lỗi.
      • Mục tiêu Javascript không sử dụng các tính năng của HTML5 để tối ưu hóa thích hợp (ví dụ: bộ nhớ tuyến tính với mảng đã nhập) và chưa đủ
      • Mục tiêu LLVM phải chuyển đổi từ bytecode cấp thấp, vì vậy cấu trúc cấp cao bị mất và mã không đọc được được tạo ra từ việc dịch các lệnh riêng lẻ, có thể khó khăn hơn cho một JIT không chuẩn bị để tối ưu hóa. hướng dẫn "nhảy" gây ra vấn đề cho các ngôn ngữ không có câu lệnh "goto".
  • Sử dụng libclang để viết một dịch từ C/C++ với các ngôn ngữ web
    • Ưu điểm:
      • Một thư viện phân tích cú pháp đẹp cung cấp dễ dàng truy cập vào các cấu trúc mã
      • thể mã trong C/C++
      • Có nỗ lực của nhà phát triển được tài trợ từ Apple
    • Nhược điểm:
      • Không đầy đủ; bộ tính năng hiện tại đặt mục tiêu IDE. Các toán tử cơ bản chưa được khai báo và phải được phân tích thủ công từ phần tử AST được trả về để xác định.
      • Dịch mã trước khi biên dịch có thể từ bỏ tối ưu hóa giả định trong c/C++ chẳng hạn như nội tuyến.
  • Tạo máy phát điện mã mới cho clang để dịch sang ngôn ngữ web
    • Ưu điểm:
      • có thể code trong C/C++ như libclang
    • Nhược điểm:
      • Không có API; cấu trúc mã không ổn định
      • Công việc lớn hơn nhiều so với sử dụng libclang; innards của vang rất phức tạp
  • Xây dựng thư viện trò chơi trong Common Lisp
    • Ưu điểm:
      • linh hoạt, ngôn ngữ phát triển tốt
      • mẫn rộng nên dễ dàng viết dịch
      • Dịch giả tồn tại ít nhất javascript
    • Nhược điểm:
      • quen thuộc ngôn ngữ
      • Không chức năng thư viện chuẩn hóa, hiện thực rất khác nhau

nào sau đây con đường tôi nên theo đuổi? Bạn có biết bất kỳ người nào khác, hoặc bất kỳ hệ thống nào có thể hữu ích?

Dự án chung như thế này có tồn tại ở đâu đó chưa?

Cảm ơn bạn đã nhập bất kỳ thông tin nào.

+0

Tôi hy vọng bạn sẽ không tìm thấy bất kỳ giải pháp có ý nghĩa nào. Các nền tảng đích + ngôn ngữ này trong một số trường hợp khác nhau đến mức không có nhiều điểm cố gắng nhắm mục tiêu chúng cùng một lúc ... –

+3

Câu hỏi này có thể phù hợp hơn với gamedev.se. – Sean

+1

Có các cách tiếp cận khác để giải quyết vấn đề này. Viết toàn bộ trò chơi hoặc công cụ trò chơi từ cơ sở mã đơn đến tất cả các nền tảng này là không thể. Nhưng bạn có thể sử dụng các tập lệnh hoặc đi với lộ trình C-preprocessor để xây dựng trò chơi thực tế trên đầu trang của "công cụ trình phát" hỗ trợ các công cụ cấp thấp. Viết một công cụ như vậy cho tất cả các nền tảng này sẽ là một nhiệm vụ rất lớn, nhưng tuy nhiên dự án thú vị. Có những hệ thống độc quyền như vậy đặc biệt là trong các công ty di động. Kiểm tra Unity 3D ít nhất cho một số ý tưởng. Nó có vẻ là một hit khá cho sự phát triển game multiplatform ngày nay. – Virne

Trả lời

0

Có hiện một ngôn ngữ phát triển bởi Blitz Nghiên cứu (http://www.blitzbasic.com), nó là KHÔNG YET được phát hành, mặc dù ngày phát hành gần như đã kết thúc.

Blog của nhà phát triển chính là ở đây: http://marksibly.blogspot.com/2010/05/hi-ok-heres-plan-i-am-currently-working.html

Ngôn ngữ này đã được công bố như là nguồn mở miễn phí (mặc dù các mô-đun trò chơi sẽ được bán như một sản phẩm riêng biệt).

nền tảng

Mục tiêu bao gồm Windows, Linux, MacOSX, android, iPhone, XNA, đèn flash và HTML5

này có thể bật ra được chính xác những gì bạn đang tìm kiếm.

+0

Điều này có vẻ tuyệt vời! – fuzzyTew

+1

@fuzzyTew - Chỉ cần nghĩ rằng tôi muốn cho bạn biết, khỉ hiện đã hết http://www.monkeycoder.co.nz/ – PottyBert

4

Tôi nghĩ rằng Unity là thứ bạn đang tìm kiếm.

  • Một số phiên bản trả tiền cho phép bạn truy cập, sửa đổi và mở rộng mã Unity C++.
  • Đó là nền tảng đa nền tảng trên thiết bị di động-web.
  • Nó cho phép sử dụng ngôn ngữ cấp cao theo mặc định (ngôn ngữ Net -Nhưng không Net platform, Javascript, vv)
+0

Unity là một nguồn tốt; cảm ơn bạn. Lý tưởng nhất là tôi đang cố gắng nhắm mục tiêu Javascript, không phải mã trong Javascript. Tôi muốn có thể tạo thứ gì đó có thể chạy trong trình duyệt mà không cần plugin. Tôi vẫn cần một dịch giả tốt để làm điều đó với các nguồn Unity. – fuzzyTew

+3

Tôi nghĩ your're yêu cầu anh chàng không thể. –

2

Haxe đã trở nên mạnh mẽ hơn nhiều với việc giới thiệu ngôn ngữ macro phức tạp trong phiên bản 2.07. Tôi nghĩ rằng mục tiêu này sẽ đạt được với Haxe ngay bây giờ, và sẽ chỉ nhận được moreso trong bản phát hành trong tương lai. Các khuyết điểm mà tôi đã đề cập vẫn tồn tại, nhưng ngôn ngữ là nguồn mở và các macro rất mạnh.

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