Bir oyun için java uygulamasını kullanmamamın iyi bir nedeni var mı?


9

Çok oyunculu tarayıcı tabanlı bir oyun yapmak istiyorum. Bir applet kullanma hakkında güzel bir şey, ben istemci ve sunucu aynı dilde (java / closure / scala / vb) yapabilirsiniz. Html5 ve javascript olduğunu biliyorum, ancak sunucu tarafı javascript jvm platformu kadar olgun değil ve tarayıcı desteği hala lapa lapa.

Applets (Runescape hariç) yaygın olarak kullanılmıyor gibi görünüyor, ancak uygun olmamalarının bir nedeni var mı yoksa sadece bebekliklerinde geliştirdikleri kötü itibar nedeniyle mi?


1
Belki birkaç kişi Java'da web oyunları yapıyor ve Flash'ı tercih ediyor?
Komünist Ördek

Java, günümüzde tarayıcılarda artık mevcut değil (Flash ile karşılaştırıldığında veya javascript ile karşılaştırıldığında) ve hedef kitlenizin yüklü olmaması için iyi bir olasılık var. Hala istemci tarafında teknoloji ne olursa olsun, sunucu tarafında Java kullanabilirsiniz, "sunucu tarafı javascript jvm platformu kadar olgun değil" argümanı anlamıyorum.
falstro

Yanıtlar:


9

RuneScape ve Minecraft ve diğer küçük Java uygulama oyunları tarafından gösterildiği gibi, bunlar için uygun değildir . Donanım hızlandırmalı 3D grafikler ( LWJGL , JOGL ) için kütüphaneler de vardır . Oyun geliştirme topluluğunda popüler bir dil değil.

Yine de desteklenen platformlarınızı düşünmelisiniz. Windows ve Linux harika Java eklentilerine sahiptir, Mac iyi bir eklentiye sahiptir (yalnızca deneyimimde Safari'de tam hızda çalışır), ancak açıkçası iPad ve Google'ın Chrome OS gibi platformları tamamen kaçırılmayacaktır, çünkü muhtemelen yoktur ve muhtemelen üzerinde Java VM var.


Buna ek olarak, hedef pazar hakkında düşünmek zorunda - minecraft oyuncuları açıkça java.com gidip yükleyebilirsiniz, ancak "internet explorer kalabalık" bir sürü olmayabilir.
Jari Komppa

Bununla birlikte, Minecraft, bu kullanıcıların JRE'yi içeren ve bu tür bir yüklemeye ihtiyaç duymayan yürütülebilir sürümü indirebilmesi açısından iyi yapılmıştır; Sadece Çalışır ™.
Ricket

2
Bu java, kullanıcı bir şey yüklemeye zorlamadan tarayıcıda gpu erişmek için harika bir çözüm olduğunu düşünüyorum (% 80-85 kullanıcı java yüklü ... explorer noobs da dahil :))
Notabene

6

Oyun yazmak için Java kullanıyorum ve oyun yazmak için C ++ kullandım ve Java'nın güçlü ve zayıf yönlerinin farkında olduğunuz sürece Java'nın iyi olduğunu gördüm. Benim için büyük iki avantaj, Java'da programlama, geliştirme hızı ve konuşlandırılabilirlik / taşınabilirliktir. Derleme süreleri VC ++ 'dan çok daha hızlıdır (henüz XCode veya Clang için konuşamam), bu da sorunları daha hızlı çözebileceğim anlamına geliyor. Ayrıca, Eclipse sürekli olarak derlendiğinden, daha az yazım hatası türü yaparım. Ben asla 'sadece başka bir sistem veya derleyici üzerinde çalışır' bir C ++ kodu parçası yazmadım. Java'da bu normdur.

Öte yandan, Java'nın bazı büyük dezavantajları vardır. Verimlilik genellikle Java'yı kullanmamanın bir nedeni olarak bulunur, ancak belirli bir şekilde kodladığınız sürece Java'nın oldukça iyi performans gösterebileceğini buldum. Sorun şu ki, kodlamanız gereken kesin yol, bir çok Java halkının iyi tasarım olarak kabul edeceği şeye aykırıdır.
Java'nın kalbinde 'çöp toplayıcı', bellek yönetim sistemidir. Etkin kod yazarken, herhangi bir dilde her karede dinamik ayırma yapmaktan kaçınmak istersiniz ve bu özellikle Java için geçerlidir. Çöp toplayıcıyı özensiz yeni şeyler nedeniyle kapatırsanız, pürüzsüz kare hızlarını güle güle öpebilirsiniz. İkincisi (ve en sinir bozucu olarak) Java, 1. sınıf kullanıcı veri türlerini desteklemez. Java'daki her kullanıcı veri türü, esas olarak, öbekte tahsis edilen bir sınıfa işaretçi olarak başlatılır. Bu, bir dizi Vector3 nesnesi gibi şeylere sahip olamayacağınız ve bellekte aynı anda bulunduğunuz önbellek eşzamanlılığı için korkunçtur - bir dizi Vector3 işaretçisi olabilir, ancak bu aynı şey değildir. Genel olarak ofsetleri, bunun yerine ilkel tiplerin büyük dizilerine kullanmanız gerekir.


3

Bir web oyunu için Java uygulamalarında yanlış bir şey yok. Java'da açık kaynaklı bir roguelike oyunu ( Tyrant ) yazdım ve bir uygulama olarak çok iyi çalışıyor.

Deneyimlerime göre Java'nın bazı büyük artı noktaları:

  • Taşınabilirlik mükemmel - Tyrant'ın karmaşıklığı göz önüne alındığında, Windows, Mac ve Linux'ta iyi çalıştırmak için tam olarak aynı derlenmiş kodu almayı başardım.

  • Tarayıcı tuhaflıkları hakkında endişelenmenize gerek yok.

  • Biraz zekice, aynı kodu hem uygulama hem de bağımsız bir masaüstü uygulaması olarak çalıştırabilirsiniz.

  • Performans, modern bir JVM olduğunu varsayarak harika.

  • Çok çeşitli açık kaynak kütüphaneleri / API'leri vb.

Sadece aşağıdakilere dikkat edin:

  • Yerel dosya sisteminde veri depolamak veya yerel kütüphanelere erişmek gibi işlemleri yapmak istiyorsanız uygulamanızı imzalamanız / ayrıcalıklı izinler almanız gerekir. Bu, bazı kullanıcılar için bir engel olabilir.

  • Başlangıç ​​zamanı, Flash veya JavaScript'ten biraz daha yavaş olma eğilimindedir. Öte yandan, JVM çalışmaya başladıktan sonra performans daha iyidir ...

  • Java çöp toplanmış bir dildir, bu nedenle arada sırada çok hafif GC duraklamaları vardır. Sıradan / rol yapma / strateji oyunları için gerçekten bir sorun değil, ancak sürekli bir titreşimsiz 120 FP çerçevesini korumaya çalıştığınız yüksek performanslı 3D FPS başlıkları için bir sorun olabilir ...


1

Oyunun ücretsiz olmasını planlıyorsanız veya kendiniz para kazanmaya hazırsanız, Java iyidir. Ancak, Flash gibi yerleşik, geniş bir oyun sponsorluk modeli yoktur, bu yüzden nakit kazanmak biraz daha zor olacaktır.


Bir fırsat kokuyor muyum? :)
Ricket

Sponsorluk modelinin içerik oluşturucular için iyi bir teklif sunduğundan emin değilim. İşinizi makul bir fiyata satmak, reklamdan bir pittance yapan bir portal sitesinden bir pittance almaktan daha iyidir.
Luther

Luther: yeterince doğru. Bir modelin kurulması onun en iyisi olduğu anlamına gelmez.
Gregory Avery-Weir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.