Saya telah menjelajahi internet, tetapi tidak ada banyak sumber daya untuk pengembangan game Java, tidak sebanyak C ++. Bahkan, sebagian besar mesin ditulis dalam C ++. Saya mencoba memainkan permainan yang dibuat dengan jMonkeyEngine, tetapi permainan itu sangat lambat, ke titik di mana komputer saya membeku. Saya tidak punya aplikasi Java lain yang berjalan, dan tidak ada sumber daya yang terlalu intensif. Sebaliknya, komputer saya dapat memainkan sebagian besar game 3D modern dengan mudah. Jika saya terus belajar dan meningkatkan Java sekarang, dan ternyata nanti saya diminta untuk belajar C ++, membuat peralihan mungkin sulit.
Apakah Java bahasa yang dapat diterima untuk pengembangan game yang serius? Yang serius, maksud saya grafis berkualitas tinggi, tanpa banyak lag di komputer modern. Saya juga ingin mempertimbangkan membuat game untuk konsol.
sumber
Jawaban:
Ya itu, periksa daftar ini untuk bukti. Itulah beberapa game yang dibuat dengan Java menggunakan The Lightweight Java Game Library (LWJGL). Ini adalah kerangka kerja tingkat rendah, yang menyediakan OpenGL untuk grafis berkualitas tinggi dan OpenAL untuk suara. Ini juga menyediakan input API. Dengan ini, Anda dapat dengan mudah memulai pengembangan game serius di Jawa.
Saat ini saya sedang menulis game 3D kedua sebagai proyek hobi di Jawa, dan saya sangat menyukainya. Di masa lalu saya biasa menulis game saya dengan C ++, tetapi setelah beralih ke Java tidak ada jalan untuk kembali. Mendukung banyak sistem operasi dengan Java bisa sangat mudah, misalnya gim Java saya sebelumnya, yang saya kembangkan di Windows selama setahun, langsung bekerja di Linux dan di OS X hanya dengan satu bug tanpa perlu mengkompilasi apa pun pada platform tersebut.
Di sisi lain, dengan Java Anda memiliki beberapa masalah.
sumber
Tidak juga. Inilah hal-pertama, ada sangat sedikit dalam hal perpustakaan yang ada untuk Java dibandingkan dengan hampir semua yang ada untuk C ++.
Kedua, Java sebagai bahasa tidak cocok untuk pengembangan game - maksud saya, misalnya, jika Anda berurusan dengan buffer GPU maka Java tidak menyediakan fitur bahasa yang akan membantu Anda dalam memastikan mereka terkunci dengan benar dan dibuka atau dibuang, yang dilakukan C ++. Plus, ada masalah kinerja - dan GC tidak menentukan, yang sangat buruk untuk sebuah game.
Saya tidak pernah mengamati game non-indie yang menghabiskan waktu signifikan dalam bahasa yang tidak dikompilasi dengan kode asli sebelum eksekusi, dan bahkan game indie yang melakukannya jarang terjadi. Jadi keyakinan saya saat ini adalah bahwa hal itu tidak dapat dilakukan.
Ya, tentu saja. Java dan C ++ sangat berbeda, meskipun memiliki kesamaan sintaksis yang dangkal. Pengalaman Java tidak ada artinya saat belajar C ++.
Gameplay lebih dari grafis adalah pilihan yang layak, dan Anda dapat melihatnya dalam keberhasilan permainan seperti Terarria dan Minecraft. Tetapi jika Anda bermaksud membuat grafis srs, maka itu tidak akan bisa dilakukan di Jawa.
sumber
Jika alasan Anda memilih Java adalah karena Anda tidak dapat memahami C ++, program Java Anda tidak akan cukup cepat untuk grafis berkualitas tinggi. Seharusnya menggunakan bahasa tingkat tinggi karena itu membuat Anda lebih produktif, bukan karena Anda tidak bisa mengerti bahasa tingkat bawah.
Saya tidak berpikir itu sepenuhnya ide yang buruk untuk menulis game di Jawa, terutama jika gim ini sederhana, tetapi Anda akan segera mengalami masalah kinerja di Jawa jika Anda menggunakannya sebagai penopang.
Grafik Berat: Kemungkinan, tetapi Anda akan melakukan hal yang sama di Java / LWJGL seperti halnya Anda berada di C ++ / GL: menulis byte ke buffer GPU dan / atau menggunakan daftar tampilan yang sudah usang seperti yang dilakukan Minecraft. Jika Anda tidak memahami manajemen memori, Anda juga tidak akan melakukannya dengan benar.
Bermain game cepat tanpa jeda: Bukan tugas yang mudah dalam bahasa apa pun, dan Anda lebih cenderung menembak diri sendiri tanpa memikirkannya.
Tidak, Java tidak akan tersedia di konsol.
sumber
Seorang programmer berpengalaman umumnya akan tahu banyak bahasa pemrograman - belajar bahasa pemrograman tambahan tidak terlalu sulit setelah Anda mengetahuinya dengan baik. Namun saya akan sangat menyarankan agar C ++ tidak menjadi bahasa pertama Anda, dan mungkin juga bukan yang kedua.
Itu karena C ++ mendapatkan banyak efisiensinya dari tidak melakukan pengecekan error runtime yang signifikan. Sebagai contoh mengakses elemen dari akhir array di Java akan selalu membuat pengecualian memberitahu programmer apa yang salah. Dalam C ++ Anda mungkin beruntung dan akan crash segera, tetapi sangat sering itu akan diam - diam membuang beberapa data lain dan kesalahan tidak akan muncul sampai nanti .
Saya sarankan Anda tetap menggunakan Java untuk saat ini (atau beralih ke C # jika Anda menginginkannya). Itu akan membuat Anda menyelesaikan sesuatu lebih cepat daripada menggunakan C ++, dan kinerja pada PC seharusnya tidak menjadi masalah.
Pikirkan tentang belajar C ++ setelah Anda menyelesaikan beberapa proyek dalam bahasa yang lebih aman. C ++ adalah yang Anda perlukan untuk sebagian besar pekerjaan pengembangan game profesional.
Perhatikan bahwa dengan pengecualian C # / XNA mendapatkan game yang Anda tulis ke konsol minimal mengharuskan Anda untuk mendirikan perusahaan, dengan kantor, dan memiliki anggaran besar yang tersedia untuk pengembangan perangkat keras dan biaya lainnya.
sumber
Penafian: Ini tidak persis menjawab pertanyaan Anda. Namun, saya telah berusaha (secara singkat) menyebutkan beberapa poin yang mungkin menarik bagi Anda.
Alasan Anda melihat begitu banyak tentang C ++ adalah karena C ++ masih merupakan standar industri - bahasa yang paling umum untuk konsol, dll.
Java tidak sering digunakan. Minecraft adalah gim yang cukup populer yang menjadikannya besar dengan Java; tapi itu tidak terlalu bagus secara grafis. Spiral Knights tidak buruk - juga dibuat di Jawa, dengan grafik yang signifikan.
Jika Anda menyukai Java, C # sangat mirip dalam sintaksis, dengan kelebihan yang dapat diinterupsi dengan C ++ - sehingga hal-hal tingkat rendah dapat dilakukan dalam C ++ jika perlu. Unity dapat menggunakan C # untuk scripting, dan XNA adalah pilihan yang sangat baik.
Sekali lagi, Java tidak banyak digunakan. Jika Anda menyukai gaya dan sintaksis, saya pikir Anda akan menemukan C # menjadi pengalaman pengkodean yang sangat mirip dan sangat menyenangkan.
Saya harap impian Anda berhasil, ini sangat menyenangkan di sepanjang jalan :)
sumber
Ini tidak menjawab pertanyaan Anda; masalah grafis dan konsol tampaknya menjadi sesuatu yang sangat perlu Anda pertimbangkan. Juga GC mempengaruhi kinerja. Tapi apa yang saya tulis tentang:
Jika Anda menulis program OO yang besar, kompleks, Anda akan menulisnya 5 kali lebih cepat di Java daripada C ++. Selain itu, perawatan akan jauh lebih mudah. Saya beralih, (diakui untuk perangkat lunak non-game), dan produktivitas saya meningkat. C #, alternatif lain yang baik, lebih sulit dipelajari daripada Java karena ada lebih banyak. Ketika Anda mengetahuinya, Anda dapat menulis kode lebih cepat daripada di Jawa; itu menawarkan banyak trik. Namun, saya menemukan trik itu dapat membuat pemeliharaan sulit. Dan kemudian ada Java doc, yang membantu dengan perpustakaan Sun dan kode lama Anda sendiri. C # tidak ada yang seperti itu.
Saya melakukan permainan berbulu besar di Jawa dan menemukan bahasa yang sempurna, tetapi grafik saya adalah dasar dan itu bukan penembak di mana sepersepuluh detik adalah keabadian bagi para pemain. Juga, saya berharap untuk menambahkan banyak ke nanti, sedangkan saya pikir kebanyakan orang hanya pergi dan menulis permainan baru.
sumber
Lihat Bung, jawaban sederhana untuk "Apakah Java layak untuk pengembang game" adalah ya yang jelas. Anda dapat menggunakan bahasa pemrograman apa pun untuk membuat game. Itu tidak berarti Anda harus melakukannya .
Mungkin hal-hal yang paling mematikan Anda dari C ++ (manajemen memori tingkat rendah, tidak ada pengumpul sampah, harus memperhatikan pointer, struct sebagai array dll) adalah hal-hal yang harus Anda pelajari jika Anda ingin mengeksploitasi sumber daya komputer dengan paling efisien . Game Anda akan berjalan paling baik jika Anda mengeksploitasi sumber daya komputer dengan paling efisien.
Java melakukan beberapa hal (seperti memeriksa batas array) yang membuatnya berjalan lebih lambat. Dalam kode contoh derau Java Perlin yang dioptimalkan ini , penulis berkomentar "(akses array jauh lebih lambat daripada akses anggota)". Hal semacam ini cukup kontra intuitif yang berasal dari latar belakang C ++. Tetapi di Jawa, hal-hal seperti itu.
Saya katakan berhenti menghindari peluru, pelajari C ++, dan gunakan.
sumber
Anda harus melakukannya dalam bahasa yang paling Anda ketahui hingga Anda mampu mendapatkan pendidikan formal (Sarjana Sains?) Di bidang Ilmu Komputer, dengan menekankan desain game. Anda dapat menggunakan game Anda untuk mendapatkan beasiswa, terutama jika Anda dapat mengatakan "Saya melakukan ini tanpa pelatihan formal di Jawa"
JVM modern, bahkan yang dari Oracle, memiliki banyak, banyak fitur untuk mengatasi masalah yang dikemukakan orang di sini. Anda dapat menggunakan pengumpul sampah yang berbeda untuk mendapatkan perilaku pengumpul sampah yang lebih deterministik. Saya tidak memiliki pengalaman yang luas dengan perpustakaan 3D - hanya sedikit dengan Java3D - tetapi tidak ada yang tampaknya mengeluh tentang mereka. Analisis Escape sekarang memungkinkan kunci elision dan alokasi yang jauh lebih cepat / dapat diabaikan dari objek yang sangat berumur pendek.
Masalahnya adalah, apakah Anda memilih Java C ++, Anda harus belajar cara menggunakan concurrency dengan benar dan memiliki pemahaman yang baik tentang manajemen memori. Setelah semua, Anda dapat dengan mudah mengacaukan dengan
malloc
yang Anda bisa dengannew
. Saya tidak tahu seperti apa alat untuk C ++, tetapi alat profil untuk Java cukup mudah digunakan, gratis, dan terintegrasi dengan IDE. Anda dapat menggunakannya untuk melacak masalah kinerja dan belajar .sumber