Развертывание Java и Steam JVM

10

В настоящее время я рассматриваю свои варианты разработки игр и развертывания в Steam Greenlight. Мне очень нравится Java с libGDX, особенно из-за его кроссплатформенного потенциала Android, и я понимаю, что возможно развертывание Java-игр в Steam. Мне также очень удобно создавать какую-то оболочку, чтобы моя Java-игра могла вызывать API C ++ Steamworks.

Мой вопрос о том, с какими проблемами развертывания я могу столкнуться. В частности, с установкой клиентского компьютера JRE. Я видел, как многие установщики Steam проверяли наличие среды выполнения .NET. Должен ли я сделать аналогичную проверку и установить JRE?

Есть ли явные причины, по которым развертывание Java в Steam было бы кошмаром для развертывания и поддержки чего-то вроде C # с использованием Monogame?

spectacularbob
источник

Ответы:

15

Как тот, кто недавно выпустил игру libGDX в Steam, в отличие от .NET и DirectX, Steam не предоставляет вашему приложению опцию для автоматической проверки и загрузки необходимой вам версии этих библиотек.

Для пользователя является навязчивым сделать так, чтобы он устанавливал Java как системную библиотеку, поскольку большинство все еще рассматривают JRE, особенно Oracle, как своего рода дыру в рекламе и безопасности и не хотят устанавливать ее на своем компьютере. Все еще существует клеймо к Java-приложениям на рабочем столе, поэтому вы должны быть внимательны к пользователю.

Я рекомендую использовать пакетное приложение libgdx , которое автоматически упакует ваш jar и ресурсы в соответствующий, приватный OpenJDK, который открыт для использования и распространения с вашим программным обеспечением. Кроме того, вы можете сделать это вручную, взяв неофициальную сборку OpenJDK, которую они используют в Packr, и включив ее в ваш проект.

Лично я использую последний вариант, так как загружаю последнюю версию и упаковываю все, включая распространение в steam, все это включено в скрипт сборки gradle моего проекта.

Включая ваш собственный JRE / JDK, он легок, добавляет в вашу игру всего около 80 Мб и неинвазивен. Это также гарантирует, что версия Java, с которой вы запускаете свое приложение, всегда является версией, которая вам нужна, а не конфликтует с тем, что имеет система.

Изменить: 13 марта 2017 г.

Чуть больше года я использую OpenJRE от Azul вместо неофициальных сборок от alexkasko. Они широко используются и поддерживаются даже в корпоративных средах. Кроме того, они поддерживают Java 8 и выше, где на момент моего переключения неофициальные версии репозитория сборок были привязаны к Java 7.

С тех пор как я перешел, теперь есть и репозиторий с открытым исходным кодом , который продолжает предоставлять созданные сообществом версии openjdk / jre, если вы хотите использовать это вместо этого. Оба хорошие.

nhydock
источник
1

Я думаю, что это абсолютно нормально для проверки времени выполнения пользователя, учитывая язык требует. Я думаю, что в .NET, Java, Python, Lua или других языках программирования, которые требуют среды выполнения, просто потому, что игра не может работать без нее.

Если у вас есть проблемы с UX, не беспокойтесь, установщик JRE не слишком навязчив, и многие игры избегают установки во время выполнения или даже нескольких зависимостей.

С точки зрения правовых проблем, я не верю, что вы находитесь в каких-либо серых или красных зонах закона. Согласно FAQ по лицензии , вы можете просто распространять Java-среду с вашим программным обеспечением, в соответствии с пунктом:

Могу ли я распространять Java с моим программным обеспечением?
Да, вы можете обеспечить Java своим программным обеспечением при условии соблюдения вами условий лицензии на двоичный код Java

Это должна быть вся информация, необходимая для принятия обоснованного решения.

Кап-кап
источник
2
Если пользователь сначала должен установить JRE, вы не получите сертификацию Steam OS. Источник: t.co/cEboMGAR2O Вы можете связать его с OpenJDK.
Бенедикт С. Фоглер
В отличие от других сред выполнения, Java не очень хорошо справляется с несколькими установками. Если у пользователя установлена ​​Java 7 и ему нужна эта версия для одного из его приложений, и вы запускаете установщик Java 8 ... тогда вы просто сломали это приложение. Распределение целевой JRE - намного лучший выбор в этом пункте.
Cypher
0

У некоторых пользователей может не быть установленной Java, и я не верю, что в Steam есть собственный способ проверки / установки Java, поскольку это будет раздражать пользователя, и только небольшая часть игр в Steam требует Java.

Попробуйте включить переносимую Java Runtime Environment, чтобы у вас всегда была согласованная сборка Java для запуска игры, я уверен, что есть такие, которые удовлетворят ваши потребности.

Сид Ламберт
источник
0

Разработка Java может быть кошмаром, насколько развертывание; но есть инструменты, чтобы сделать это проще.

Например, вы можете использовать такой инструмент, как Launch4jупаковка вашей финальной игры; При желании вы можете указать, чтобы он включал JRE (или нет), чтобы создать полностью автономный двоичный файл.

Таким образом, вас не волнует, установлены ли или какие JRE установлены клиентом; Вы просто упаковываете свое приложение и отправляете его. Недостатком является то, что ваш окончательный двоичный файл будет значительно больше.

ashes999
источник