Java ve Steam JVM dağıtımı


10

Şu anda oyun geliştirme ve Steam Greenlight'a dağıtma seçeneklerimi düşünüyorum. Özellikle çapraz platform Android potansiyeli nedeniyle libGDX ile Java'yı gerçekten çok seviyorum ve Java oyunlarını Steam'e dağıtmanın mümkün olduğunu anlıyorum. Java oyunumun C ++ Steamworks API'sini arayabilmesi için bir çeşit sarıcı oluşturmak zorunda kaldığım için çok rahatım.

Sorum, hangi dağıtım sorunlarıyla karşılaşabileceğimle ilgili. Özellikle, istemci makinenin JRE kurulumu ile. Birçok Steam yükleyicisinin .NET çalışma zamanını kontrol ettiğini gördüm. JRE için benzer bir kontrol ve kurulum yapmalı mıyım?

Steam üzerinde Java dağıtımının Monogame kullanarak C # gibi bir şeyi dağıtmak ve sürdürmek için bir kabus olması için göze çarpan nedenler var mı?

Yanıtlar:


15

Yakın zamanda Steam'de bir libGDX oyunu yayınlayan biri olarak, .NET ve DirectX'in aksine, Steam, uygulamanızla bu kütüphanelerin ihtiyacınız olan sürümünü otomatik olarak kontrol etme ve indirme seçeneği sunmaz.

Kullanıcıların Java'yı bir sistem kütüphanesi olarak yüklemelerini sağlamak çok rahatsız edicidir, çünkü çoğu JRE'yi, özellikle Oracle'ı bir tür reklam yazılımı / güvenlik deliği olarak görür ve makinelerine yüklemek istemez. Masaüstündeki Java uygulamalarına yönelik hala bir damgalama var, bu yüzden kullanıcıyı düşünmelisiniz.

Ne tavsiye kullanıyor libgdx en packr uygulamasını otomatik olarak kullanmak ve yazılım ile dağıtmak için açık bir uygun, özel OpenJDK ile kavanoz ve kaynak paketi olacak. Alternatif olarak, packr'de kullandıkları gayri resmi OpenJDK yapısını alıp projenize dahil ederek manuel olarak yapabilirsiniz .

Kişisel olarak, son sürümü indirdiğimde ve buharı dağıtmak da dahil olmak üzere her şeyi paketlediğimden, projemin gradle oluşturma komut dosyasına dahil olan bu seçeneği kullanıyorum.

Kendi JRE / JDK'nızı dahil etmek hafiftir, oyununuza sadece 80mb ekler ve invaziv değildir. Bu ayrıca, uygulamanızı çalıştırdığınız Java sürümünün, sistemin sahip olduğu öğeyle çakışmak yerine her zaman ihtiyacınız olan sürüm olmasını sağlar.

Düzenleme: 13 Mart 2017

Bir yıldan fazla bir süredir alexkasko'nun resmi olmayan yapıları yerine Azul'un OpenJRE'sini kullanıyorum. Kurumsal ortamlarda bile yaygın olarak kullanılır ve desteklenirler. Buna ek olarak, Java 8 ve üstünü destekliyorlar, geçişim sırasında resmi olmayan derleme veri havuzu sürümleri Java 7'de sıkışmıştı.

Geçiş yaptığımdan beri, bunun yerine kullanmak istiyorsanız, artık openjdk / jre'nin topluluk tarafından oluşturulmuş sürümlerini sağlamaya devam eden bir açık kaynak havuzu da var. İkiside iyi.


1

Kullanıcının çalışma zamanını, dilin gerektirdiği göz önüne alındığında kontrol etmenin kesinlikle sorun olmadığını düşünüyorum. .NET, Java, Python, Lua veya bir çalışma zamanı ortamı gerektiren diğer programlama dillerinde, oyunun onsuz çalışamayacağı için düşünüyorum.

UX endişeleriniz varsa endişelenmeyin, JRE yükleyicisi çok müdahaleci değildir ve birçok oyun çalışma zamanı yüklemeleriyle, hatta birden fazla bağımlılıkla kaçar.

Yasal kaygılar açısından, kanunun gri veya kırmızı bölgelerinde olduğunuza inanmıyorum. Lisans SSS'ye göre , Java Ortamını yazılımınızla, aşağıdakileri belirten şekilde basitçe dağıtabilirsiniz:

Java'yı yazılımımla dağıtabilir miyim?
Evet, Java ikili kod lisansının hüküm ve koşullarına uymanız koşuluyla Java'ya yazılımınızı sağlayabilirsiniz.

Eğitimli bir karar vermek için ihtiyacınız olan tüm bilgiler bu olmalıdır.


2
Kullanıcının önce JRE'yi yüklemesi gerekiyorsa, Steam OS sertifikası alamazsınız. Kaynak: t.co/cEboMGAR2O OpenJDK ile paketleyebilirsiniz.
Benedikt S. Vogler

Diğer çalışma zamanı ortamlarının aksine, Java çoklu kurulumlarla çok iyi ilgilenmez. Bir kullanıcı Java 7 yüklüyse ve uygulamalarından biri için bu sürüme ihtiyaç duyuyorsa ve Java 8 yükleyicisini çalıştırıyorsanız ... o zaman bu uygulamayı kırdınız. Hedeflenen JRE'nin dağılımı bu noktada çok daha iyi bir seçenektir.
Cypher

0

Bazı kullanıcılar Java yüklü olmayabilir ve Steam'in Java'yı kontrol etmek / yüklemek için yerel bir yolu olduğuna inanmıyorum, çünkü bu kullanıcı için rahatsız edici olacaktır ve Steam'deki oyunların sadece küçük bir kısmı Java gerektirir.

Oyunu çalıştırmak için her zaman tutarlı bir Java derlemesine sahip olmanız için taşınabilir bir Java Çalışma Zamanı Ortamı eklemeyi deneyin, eminim ihtiyaçlarınızı karşılayacak bazı şeyler vardır.


0

Java geliştirme, konuşlandırma kadar kabus olabilir; ancak bunu kolaylaştırmak için araçlar vardır.

Örneğin, Launch4json oyununuzu paketlemek gibi bir araç kullanabilirsiniz ; isteğe bağlı olarak, tamamen bağımsız bir ikili dosya oluşturmak için JRE'yi (veya içermediğini) eklemesini söyleyebilirsiniz.

Bu şekilde, istemcinin JRE'leri yükleyip yüklemediğini veya neyin yüklediğini umursamazsınız; sadece uygulamanızı paketleyin ve gönderin. Dezavantajı, son ikili dosya önemli ölçüde daha büyük olacaktır.

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.