I got a bit longwinded. Feel free to just skip to the questions at the bottom if you don’t care for the background .
I plan to release a game on steam which clearly will involve some effort to make that happen. From a java perspective that is a topic that isn’t well documented but clearly many people have done successfully, so I thought I would ask for other peoples experiences and maybe learns from from that (before I ragequit and throw my game in the bin…)
Maybe a bit of background. I developed a libgdx game for mobile, but towards the horrible last 10% got a bit burnt out and took a little timeout. Coming back I decided that I should release it on Steam first, since the game has been developed and tested on Mac all the time and is quite fun that way, so why not?
I have now tested out different approaches where non really worked well.
The things that I think is clear:
- To reach a lot of eyeballs for PC, Mac and Linux, Steam is really the way to go if you can stomach the initial cost $.
- Steam setup is not pain-free, but has plenty documentation and is not java specific, so no urgent help is needed there.
- For java steamwork integration, steamworks4j is the way to go, and is quite clear how that is done except for possibly debugging.
- For deploying java games to Steam, you bundle (platform specific) jre with the game.
Now for the questions:
Is there any current instructions/guide for the rest of the work to get a java game onto steam, or are you willing to share your findings and gothchas? Only thing I could find was outdated and limited in scope: https://www.gamasutra.com/blogs/ChrisMoeller/20160531/273771/Releasing_The_Hinterlands_on_Steam_LibGDX_Java_game.php
What is the current best tool for packaging a game? Different for different platforms? packr and jpackage looked most promising, but I got non to really work well…
Should one package the game into a platform specific application (.exe, .app, .bin or similar)? Is it possible or even a better solution to just launch the game with “java -jar MyGame.jar” and only package jre and .jar?
Independent 32 and 64 bit versions? Or just one?
How do you persist user-configurations? I used Gdx.files.local(“configs/user-configs.properties”); which works fine for most things (at least PC, Android, iOS) except when packaged into .app using certain packagers…
Lwjgl2 or lwjgl3 (especially for mac)? (I want to be able to set game to fullscreen as well)
What jre version would you suggest to bundle? Different for different platforms? Specifically regarding size, performance, legal aspects and compatibility for lwjgl3, mac and linux and compatibility with packager and lwjgl launch on Mac.
Should one care about compressing the jre and obfuscating my jar?
I will launch my game later for Android and iOS, and Mac version is running in development. Is it worth the extra pain (setup, support and so on) to release for Mac and Linux do you think?
Feel free to answer only some question or just give your input in general. Everything of interest. You gradle script “push to steam” would be much appreciated