JavaおよびSteam JVMのデプロイメント


10

私は現在、ゲーム開発とSteam Greenlightへの展開のオプションを検討しています。特にlibGDXでJavaが好きで、特にクロスプラットフォームのAndroidの可能性があるので、SteamにJavaゲームをデプロイできることを理解しています。私のJavaゲームがC ++ Steamworks APIを呼び出すことができるように、ある種のラッパーを作成する必要があることにもとても満足しています。

私の質問は、私が遭遇する可能性のあるデプロイメントの問題についてです。具体的には、JREのクライアントマシンのインストール。多くのSteamインストーラーが.NETランタイムをチェックするのを見てきました。JREについても同様のチェックとインストールを行う必要がありますか?

Monogameを使用したC#のようなものと比較して、SteamでのJavaのデプロイがデプロイと保守の悪夢になるという明白な理由はありますか?

回答:


15

.NETやDirectXとは異なり、Steamで最近libGDXゲームをリリースした人として、Steamはアプリケーションにこれらのライブラリーの必要なバージョンを自動的にチェックしてダウンロードするオプションを提供していません。

Javaをシステムライブラリとしてインストールすることは、ほとんどの場合JRE、特にOracleをある種のアドウェア/セキュリティホールと見なし、自分のマシンにインストールしたくないので、ユーザーにとって邪魔です。デスクトップ上のJavaアプリケーションに対する偏見は依然として存在するため、ユーザーに配慮する必要があります。

libgdxのpackrアプリケーションを使用することをお勧めします。これは、ソフトウェアで使用および配布するために開いている適切なプライベートOpenJDKを使用して、jarおよびリソースを自動的にパックします。または、packrで使用している非公式のOpenJDKビルドを取得し、プロジェクトに含めることで、手動で行うこともできます。

私は個人的に、最新バージョンをダウンロードして、steamへの配布を含め、すべてを私のプロジェクトのGradleビルドスクリプトに含めて梱包しているので、後者のオプションを実行します。

独自のJRE / JDKを含めることは軽量で、ゲームに約80mbを追加するだけで、非侵襲的です。これにより、アプリケーションを実行しているJavaのバージョンが、システムが持っているものと競合するのではなく、常に必要なバージョンになることが保証されます。

編集:2017年3月13日

1年と少しの間、私はalexkaskoからの非公式ビルドの代わりにAzulのOpenJREを使用しています。エンタープライズ環境でも広く使用およびサポートされています。さらに、それらはJava 8以上をサポートします。私の切り替え時のように、非公式のビルドリポジトリバージョンはJava 7でスタックしていました。

私が切り替えたので、現在はオープンソースのリポジトリもあり、代わりにopenjdk / jreのコミュニティビルドバージョンを引き続き提供しています。どちらも良いです。


1

言語が必要とする場合、ユーザーのランタイムをチェックすることは絶対に問題ないと思います。.NET、Java、Python、Lua、またはランタイム環境を必要とする他のプログラミング言語では、ゲームがなければそれを実行できないためだと思います。

UXの懸念がある場合でも、心配しないでください。JREインストーラーはそれほど煩わしいものではなく、多くのゲームはランタイムインストールや複数の依存関係さえも必要としません。

法的な懸念に関して、あなたが法律のグレーゾーンまたはレッドゾーンにいるとは思いません。よると、ライセンスに関するFAQ、あなたは非常に単純に述べた項目に応じて、あなたとしているソフトウェアをJava環境を配布することができます。

ソフトウェアと一緒にJavaを配布できますか?
はい。Javaバイナリコードライセンスの契約条件を順守していれば、ソフトウェアをJavaに提供できます。

これは、情報に基づいた決定を行うために必要なすべての情報です。


2
ユーザーが最初にJREをインストールする必要がある場合、Steam OS認定は取得できません。ソース:t.co/cEboMGAR2O OpenJDKにバンドルできます。
Benedikt S. Vogler、2015年

他のランタイム環境とは異なり、Javaは複数のインストールをうまく処理しません。ユーザーがJava 7をインストールしていて、そのバージョンのいずれかがアプリケーションで利用できる必要がある場合、Java 8インストーラーを実行すると...そのアプリケーションが壊れてしまいます。この時点では、ターゲットJREの配布ははるかに優れたオプションです。
Cypher、2015年

0

一部のユーザーはJavaをインストールしていない可能性があり、SteamにはJavaをチェック/インストールするネイティブの方法があるとは思いません。ユーザーを苛立たせ、Steamのごく一部のゲームのみがJavaを必要とするためです。

ゲームを実行するためのJavaの一貫したビルドが常にあるように、移植可能なJavaランタイム環境を組み込んでみてください。あなたのニーズに合ったものがいくつかあると確信しています。


0

Java開発は、デプロイメントに関しては悪夢になる可能性があります。しかし、これを簡単にするためのツールがあります。

たとえばLaunch4j、最終的なゲームをパッケージ化するようなツールを使用できます。オプションで、完全に自己完結型のバイナリを作成するために、JREを含める(または含めない)ように指示できます。

このようにして、クライアントがインストールしたJREの種類や種類を気にする必要はありません。アプリをパッケージ化して出荷するだけです。欠点は、最終的なバイナリが大幅に大きくなることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.