Có một lý do chính đáng nào đó tôi không nên sử dụng một applet java cho một trò chơi?


9

Tôi muốn làm một trò chơi dựa trên trình duyệt nhiều người chơi. Điều tuyệt vời khi sử dụng applet là tôi có thể tạo máy khách và máy chủ bằng cùng một ngôn ngữ (java / clos / scala / etc). Tôi biết có html5 và javascript, nhưng javascript phía máy chủ không hoàn thiện như nền tảng jvm và hỗ trợ trình duyệt vẫn không ổn định.

Các ứng dụng dường như không được sử dụng rộng rãi (ngoại trừ Runescape), nhưng có một lý do nào đó chúng không phù hợp hay chỉ vì tiếng xấu mà chúng phát triển trong giai đoạn trứng nước?


1
Có lẽ vì ít người làm trò chơi web bằng Java và thích Flash?
Vịt Cộng sản

Java đơn giản là không có sẵn trong các trình duyệt hiện nay (so với Flash, hoặc bằng mọi cách có nghĩa là javascript), và rất có thể đối tượng mục tiêu của bạn sẽ không cài đặt nó. Mặc dù vậy, bạn vẫn có thể sử dụng Java trên phía máy chủ, bất kể công nghệ phía máy khách là gì, tôi không hiểu lập luận rằng "javascript phía máy chủ không hoàn thiện như nền tảng jvm".
falstro

Câu trả lời:


9

Chúng rõ ràng không được sử dụng cho nó, như được thể hiện bởi RuneScapeMinecraft và các trò chơi applet Java nhỏ hơn khác. Ngoài ra còn có các thư viện cho đồ họa 3D được tăng tốc phần cứng ( LWJGL , JOGL ). Nó không phải là một ngôn ngữ phổ biến trong cộng đồng phát triển trò chơi.

Bạn phải xem xét các nền tảng được hỗ trợ của bạn mặc dù. Windows và Linux có các plugin Java tuyệt vời, Mac có một plugin khá tốt (chỉ hoạt động ở tốc độ tối đa trong Safari theo kinh nghiệm của tôi), nhưng rõ ràng các nền tảng như iPad và Chrome OS của Google sẽ hoàn toàn bị bỏ qua vì chúng không và có lẽ sẽ không bao giờ, có Java VM trên chúng.


Ngoài ra, bạn phải suy nghĩ về thị trường mục tiêu của mình - những người chơi minecraft rõ ràng có thể xử lý việc truy cập java.com và cài đặt nó, nhưng rất nhiều "đám đông thám hiểm internet" có thể không.
Jari Komppa

Tuy nhiên, Minecraft được làm tốt ở chỗ những người dùng đó chỉ có thể tải xuống phiên bản thực thi, bao gồm JRE và không cần bất kỳ cài đặt nào như vậy; nó chỉ hoạt động ™.
Ricket

2
Tôi nghĩ rằng, java là giải pháp tuyệt vời làm thế nào để truy cập gpu trong trình duyệt mà không buộc người dùng phải cài đặt một cái gì đó (80-85% người dùng đã cài đặt java ... bao gồm cả thám hiểm noobs nữa :))
Notabene

6

Tôi sử dụng Java để viết trò chơi và tôi đã sử dụng C ++ để viết trò chơi và thấy Java vẫn ổn miễn là bạn vẫn chú ý đến những điểm mạnh và điểm yếu của Java. Hai lợi thế lớn đối với tôi, lập trình trong Java là tốc độ phát triển và khả năng triển khai / tính di động. Thời gian biên dịch nhanh hơn nhiều so với trong VC ++ (chưa thể nói về XCode hoặc Clang), điều đó có nghĩa là tôi có thể giải quyết vấn đề nhanh hơn nhiều. Ngoài ra, vì Eclipse đang biên dịch liên tục, tôi ít mắc lỗi đánh máy hơn. Tôi chưa bao giờ viết một đoạn mã C ++ 'chỉ hoạt động' trên một hệ thống hoặc trình biên dịch khác. Trong Java, đây là chuẩn mực.

Mặt khác, Java có một số nhược điểm lớn. Hiệu quả thường được coi là một lý do không sử dụng Java nhưng tôi thấy rằng miễn là bạn viết mã theo một cách nhất định, Java có thể hoạt động khá tốt. Vấn đề là, cách chắc chắn mà bạn phải viết mã đi ngược lại với những gì nhiều người dân Java sẽ coi là thiết kế tốt.
Trái tim của Java là 'trình thu gom rác', đó là hệ thống quản lý bộ nhớ. Khi viết mã hiệu quả, bạn muốn tránh phân bổ động mọi khung trong bất kỳ ngôn ngữ nào và điều này đặc biệt đúng với Java. Nếu bạn tắt bộ thu gom rác do mới cẩu thả thì bạn có thể tạm biệt tốc độ khung hình mượt mà. Thứ hai (và khó chịu nhất) Java không hỗ trợ các kiểu dữ liệu người dùng hạng 1. Mọi kiểu dữ liệu người dùng trong Java về cơ bản được khởi tạo như một con trỏ tới một lớp, được phân bổ trên heap. Điều này thật tệ cho đồng thời bộ đệm mà bạn không thể có những thứ như một mảng các đối tượng Vector3 và có những thứ đó đồng thời trong bộ nhớ - bạn có thể có một mảng các con trỏ Vector3 nhưng hoàn toàn không giống nhau. Nói chung, bạn phải sử dụng offset thành các mảng lớn của các kiểu nguyên thủy thay thế.


3

Không có gì sai với các applet Java cho một trò chơi web. Tôi đã viết một trò chơi roguelike mã nguồn mở ( Tyrant ) bằng Java và nó hoạt động rất tốt như một applet.

Một số điểm cộng lớn của Java theo kinh nghiệm của tôi:

  • Tính di động là tuyệt vời - do sự phức tạp của Tyrant, thật ấn tượng khi tôi quản lý để có được chính xác mã được biên dịch để chạy tốt trên Windows, Mac và Linux.

  • Bạn không phải lo lắng về các yêu cầu của trình duyệt.

  • Với một chút thông minh, bạn có thể làm cho cùng một mã chạy cả dưới dạng một applet hoặc như một ứng dụng máy tính để bàn độc lập

  • Hiệu suất là tuyệt vời khi giả sử một JVM hiện đại.

  • Tất cả các điểm cộng thông thường của Java về mảng lớn các thư viện / API nguồn mở, v.v.

Chỉ cần lưu ý những điều sau:

  • Bạn sẽ cần phải ký applet / nhận các quyền đặc quyền nếu bạn muốn làm những việc như lưu trữ dữ liệu trên hệ thống tệp cục bộ hoặc truy cập các thư viện gốc. Đây có thể là một rào cản đối với một số người dùng.

  • Thời gian khởi động có xu hướng chậm hơn một chút so với Flash hoặc JavaScript. Mặt khác, hiệu năng sẽ tốt hơn khi JVM hoạt động và chạy ......

  • Java là một ngôn ngữ được thu thập rác, do đó, đôi khi nó có các tạm dừng GC rất nhẹ. Không thực sự là một vấn đề đối với các game chiến thuật / nhập vai / chiến lược thông thường, nhưng có thể là một vấn đề đối với các tựa game FPS 3D hiệu suất cao khi bạn đang cố gắng duy trì tốc độ khung hình 120 FP không bị giật jitter liên tục ......


1

Nếu bạn đang lên kế hoạch cho trò chơi trở thành phần mềm miễn phí hoặc sẵn sàng tự mình kiếm tiền từ trò chơi, thì tốt thôi. Tuy nhiên, nó không có một mô hình tài trợ trò chơi phổ biến rộng rãi như Flash hiện có, vì vậy kiếm tiền sẽ khó hơn một chút.


Tôi có ngửi thấy một cơ hội không? :)
Ricket

Tôi không chắc chắn nếu mô hình tài trợ trình bày một thỏa thuận tốt cho người sáng tạo. Tốt hơn là bán tác phẩm của bạn với giá hợp lý hơn là lấy một khoản tiền từ một trang web cổng thông tin kiếm tiền từ quảng cáo.
Luther

Luther: đủ đúng. Chỉ vì một mô hình được thành lập không có nghĩa là mô hình tốt nhất.
Gregory Avery-Weir
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.