Apakah ada alasan bagus mengapa saya tidak harus menggunakan applet java untuk sebuah game?

9

Saya ingin membuat game berbasis browser multi-pemain. Yang menyenangkan tentang menggunakan applet adalah saya dapat membuat klien dan server dalam bahasa yang sama (java / closure / scala / etc). Saya tahu ada html5 dan javascript, tetapi javascript sisi server tidak seatur platform jvm dan dukungan browser masih agak rapuh.

Applet tampaknya tidak digunakan secara luas (kecuali untuk Runescape), tetapi apakah ada alasan mengapa mereka tidak cocok atau hanya karena reputasi buruk yang mereka kembangkan sejak masih bayi?

ryeguy
sumber
1
Mungkin karena beberapa orang melakukan permainan web di Jawa, dan lebih suka Flash?
Bebek Komunis
Java tidak lagi tersedia di browser saat ini (dibandingkan dengan Flash, atau dengan segala cara javascript), dan ada kemungkinan besar audiens target Anda tidak akan menginstalnya. Anda masih dapat menggunakan Java pada sisi server semau Anda, terlepas dari sisi sisi klien, saya tidak mengerti argumen bahwa "javascript sisi server tidak seatur platform jvm".
falstro

Jawaban:

9

Mereka jelas tidak cocok untuk itu, seperti yang ditunjukkan oleh RuneScape dan Minecraft dan game applet Java kecil lainnya. Ada juga perpustakaan untuk grafis 3D akselerasi perangkat keras ( LWJGL , JOGL ). Hanya saja bukan bahasa populer di komunitas pengembangan game.

Anda harus mempertimbangkan platform yang didukung. Windows dan Linux memiliki plugin Java yang hebat, Mac memiliki yang layak (hanya bekerja dengan kecepatan penuh di Safari dalam pengalaman saya), tetapi jelas platform seperti iPad dan Google Chrome OS akan benar-benar terjawab karena tidak, dan mungkin tidak akan pernah, miliki Java VM pada mereka.

Ricket
sumber
Selain itu Anda harus berpikir tentang target pasar Anda - pemain minecraft jelas dapat menangani pergi ke java.com dan menginstalnya, tetapi banyak "kerumunan penjelajah internet" mungkin tidak.
Jari Komppa
Namun, Minecraft dibuat dengan baik sehingga para pengguna dapat mengunduh versi yang dapat dieksekusi, yang mencakup JRE dan tidak memerlukan instalasi seperti itu; itu Hanya Bekerja ™.
Ricket
2
Saya pikir, bahwa java adalah solusi hebat untuk mengakses GPU di browser tanpa memaksa pengguna untuk menginstal sesuatu (80-85% pengguna telah menginstal java ... termasuk explorer noobs juga :))
Notabene
6

Saya menggunakan Java untuk menulis game dan saya telah menggunakan C ++ untuk menulis game dan telah menemukan Java baik-baik saja selama Anda tetap memperhatikan apa kekuatan dan kelemahan Java. Dua keuntungan besar bagi saya, pemrograman di Jawa adalah kecepatan pengembangan dan penyebaran / portabilitas. Waktu kompilasi jauh lebih cepat daripada di VC ++ (belum dapat berbicara untuk XCode atau Dentang) yang berarti saya dapat mengatasi masalah lebih cepat. Juga, karena Eclipse mengkompilasi secara konstan, saya membuat lebih sedikit kesalahan ketik ketik. Saya tidak pernah menulis sepotong kode C ++ yang 'hanya berfungsi' pada sistem atau kompiler lain. Di Jawa, ini adalah norma.

Di sisi lain, Jawa memiliki beberapa daya tarik utama. Efisiensi sering ditempatkan sebagai alasan untuk tidak menggunakan Java tetapi saya telah menemukan bahwa selama Anda membuat kode dengan cara tertentu, Java dapat berkinerja cukup baik. Masalahnya adalah, cara tertentu Anda harus membuat kode bertentangan dengan apa yang dianggap baik oleh banyak orang Jawa.
Di jantung Jawa adalah 'pengumpul sampah', itu sistem manajemen memori. Saat menulis kode efisien, Anda ingin menghindari membuat alokasi dinamis setiap frame dalam bahasa apa pun dan ini khususnya berlaku untuk Java. Jika Anda mengatur pengumpul sampah karena ceroboh baru maka Anda dapat mencium frame rate yang halus selamat tinggal. Kedua (dan yang paling menjengkelkan) Java tidak mendukung tipe data pengguna kelas 1. Setiap tipe data pengguna di Java pada dasarnya dipakai sebagai pointer ke kelas, dialokasikan pada heap. Ini mengerikan untuk cache konkurensi yang Anda tidak dapat memiliki hal-hal seperti array objek Vector3 dan memiliki mereka bersamaan dalam memori - Anda dapat memiliki array pointer Vector3 tetapi itu bukan hal yang sama sekali. Umumnya Anda harus menggunakan offset ke array besar tipe primitif sebagai gantinya.

Luther
sumber
3

Tidak ada yang salah dengan applet Java untuk game web. Saya menulis game roguelike open source ( Tyrant ) di Jawa dan berfungsi dengan sangat baik sebagai applet.

Beberapa poin plus besar Jawa dalam pengalaman saya:

  • Portabilitasnya luar biasa - mengingat kompleksitas Tyrant, cukup mengesankan bahwa saya berhasil mendapatkan kode terkompilasi yang sama persis agar berjalan dengan baik di Windows, Mac dan Linux.

  • Anda tidak perlu khawatir tentang kebiasaan browser.

  • Dengan sedikit kepintaran, Anda dapat membuat kode yang sama berjalan baik sebagai applet atau sebagai aplikasi desktop yang berdiri sendiri

  • Performanya bagus dengan asumsi JVM modern.

  • Semua poin plus biasa dari Java dalam hal array yang hebat dari perpustakaan open source / API dll.

Perhatikan hal-hal berikut:

  • Anda harus menandatangani applet / mendapatkan izin istimewa jika Anda ingin melakukan hal-hal seperti menyimpan data pada sistem file lokal atau mengakses perpustakaan asli. Ini bisa menjadi penghalang bagi sebagian pengguna.

  • Waktu mulai cenderung sedikit lebih lambat daripada Flash atau JavaScript. Di sisi lain, kinerja lebih baik setelah JVM aktif dan berjalan ......

  • Java adalah bahasa yang dikumpulkan dari sampah, jadi terkadang ada sedikit jeda GC. Tidak benar-benar masalah untuk game kasual / roleplaying / strategi, tetapi mungkin menjadi masalah untuk judul FPS 3D berkinerja tinggi di mana Anda mencoba untuk mempertahankan framerate 120 FPs yang bebas jitter ......

mikera
sumber
1

Jika Anda berencana membuat game menjadi freeware atau siap untuk menangani menghasilkan uang dari itu sendiri, baik-baik saja di Jawa. Namun, itu tidak memiliki model sponsor permainan yang mapan dan tersebar luas seperti Flash, jadi menghasilkan uang akan sedikit lebih sulit.

Gregory Avery-Weir
sumber
Apakah saya mencium peluang? :)
Ricket
Saya tidak yakin apakah model sponsor memberikan penawaran bagus untuk pencipta. Lebih baik menjual karya Anda dengan harga yang wajar daripada mengambil uang murah dari situs portal yang menghasilkan uang sedikit dari iklan.
Luther
Luther: cukup benar. Hanya karena sebuah model dibuat bukan berarti itu yang terbaik.
Gregory Avery-Weir