2012-07-27 36 views
5

Tôi nhận ra câu hỏi trên khá rộng nên tôi sẽ thu hẹp nó xuống. Tôi có một công cụ trò chơi opengl C++ đơn giản sống trong một thư viện tĩnh (có thể được chuyển thành một lib động).Cách tốt nhất để cổng C++ trò chơi lên web

Tôi đã suy nghĩ về cách làm cho nó chạy trên web. Từ những gì tôi có thể thấy tôi có thể sử dụng ActiveX hoặc Google NaCl để chạy mã C++ trong trình duyệt. Nhưng những công nghệ này dường như không dễ dàng vượt qua nền tảng? Hoặc có thể tôi đã hiểu lầm.

Một tùy chọn khác mà tôi đã thấy đang chuyển đổi công cụ thành javascript và WebGL và chạy trong canvas HTML5. Điều này có chậm hơn C++ không? Nó sẽ là nền tảng rất mặc dù.

Bạn nghĩ tùy chọn nào là tốt nhất, hoặc tốt hơn là có tùy chọn nào khác mà tôi đã bỏ lỡ không?

EDIT: về plugin tùy chỉnh tương tự như trình duyệt web thống nhất thì sao?

+0

Tôi e rằng không có cách nào đơn giản và di động để làm điều đó. Các công nghệ liên quan khác nhau quá nhiều. Tôi biết Quake III đã được chuyển sang trang web, nhưng tôi tin rằng họ phải viết lại rất nhiều. – ereOn

+0

Vì vậy, tôi phải viết một phiên bản khác nhau cho mỗi trình duyệt web nếu tôi sử dụng các công nghệ kiểu ActiveX? – Constan7ine

Trả lời

4

Có một số công nghệ thực sự giúp bạn thực hiện việc này. Dưới đây là ba tôi đã chạy ngang qua, nhưng có tối thiểu/không có kinh nghiệm với:

+0

Marmalade trông thật tuyệt vời! Cảm ơn rất nhiều! – Constan7ine

+0

Emscripten trông thú vị - nó thực sự có thể biên dịch mã C++ thành Javascript. –

5

Có thư viện được tạo bởi @kripken hiện vẫn đang được phát triển. Phải mất bitcoin LLVM và chuyển đổi thành Javascript.

Bạn có thể xem trang dự án tại đây, với các ví dụ hoạt động. https://github.com/kripken/emscripten/

1

Nếu bạn muốn một cái gì đó di động trong một trình duyệt, sau đó nó phải dựa trên Javascript (và có khả năng WebGL, mặc dù IE không hỗ trợ điều đó).

ActiveX và NaCL không chỉ di động theo bất kỳ cách nào, hình dạng hoặc hình thức nào.

Tôi không thể nói điều nào dễ hơn, nhưng bạn có tùy chọn viết lại trò chơi của mình bằng Javascript hoặc sử dụng công cụ như Emscripten để biên dịch C++ thành JavaScript.

Lưu ý rằng nếu bạn sử dụng sau, nó vẫn không phải là một viên đạn bạc. Bạn có thể sẽ phải thực hiện nhiều thay đổi đối với mã của mình (ví dụ: vì các thư viện và API được sử dụng trong trò chơi C++ của bạn sẽ không có sẵn trên trình duyệt)

+0

Xin lưu ý rằng PNaCL hoàn toàn di động. Hiện tại cho X86 (-32, -64) và ARM, nhưng nó có thể được mở rộng sang các nền tảng khác vì nó dựa trên bitcoin LLVM. Hệ điều hành khôn ngoan - hiện tại nó hoạt động theo: Linux, Mac, ChromeOS, Windows ... Nó vẫn chưa có trên di động hiện tại (tuy nhiên tôi không thấy rào cản kỹ thuật, nó trông giống như câu hỏi về thời gian). Vì câu hỏi không được đóng khung nếu đó là về máy tính để bàn/thiết bị di động hoặc chỉ tương thích với máy tính để bàn, tôi có thể nói đó là nền tảng di động đa nền tảng - http://stackoverflow.com/a/11685887/544721. –

3

Tôi khuyên bạn nên chuyển sang NaCl.

Ưu điểm:

  1. Hiệu suất: Bạn có thể sử dụng toàn bộ sức mạnh của CPU để render trò chơi của bạn. Nếu trò chơi của bạn sử dụng đồ họa 3D hoặc vật lý tốt, bạn có thể làm cho nó trông mượt mà ngay cả trên các cấu hình hệ thống cũ. Hiệu suất của NaCl là so sánh với các ứng dụng hệ điều hành Native, nó chỉ mất gần 5 đến 10% FPS khi tôi so sánh cùng một trò chơi với phiên bản Win32.
  2. Có rất nhiều ví dụ đã được chuyển, trò chơi dành cho NaCl có thể giúp bạn làm điều đó dễ dàng.
  3. Nó đã được đa nền tảng. Chrome chạy trên Windows, Linux, Mac OSX.

Nhược điểm:

  1. Có thể đưa bạn xung quanh một tuần đến cảng. Bạn phải chuyển sang OpenGL ES 2.0 (Tuy nhiên, nó phải giống với bất kỳ phương pháp dựa trên trình duyệt nào, đặc biệt là HTML5)
  2. Chỉ chạy trên Chrome.
+1

Tôi đã chuyển Irrlicht Rendering Engine sang NaCl và hiệu suất thực sự tốt so với bất kỳ hiệu suất trò chơi dựa trên JavaScript nào. – codetiger

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