Files
Terrarum/buildapp/instructions.md
2023-05-15 17:59:02 +09:00

3.8 KiB

Preparation

Download and unzip the JDKs to ~/Documents/openjdk/* for the appropriate operating systems first! JDKs can be downloaded on https://jdk.java.net/archive/.

The filenames must be:

Target OS/Arch filename
Linux AMD64 jdk-17.0.1-x86
Linux Aarch64 jdk-17.0.1-arm
Windows AMD64 jdk-17.0.1-windows
macOS Apple Silicon jdk-17.0.1.jdk-arm
macOS Intel jdk-17.0.1.jdk-x86

Then, on the terminal, run following commands:

jlink --module-path ~/Documents/openjdk/jdk-17.0.1-x86/jmods:mods  --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-linux-x86 --no-header-files --no-man-pages --strip-debug --compress=2
jlink --module-path ~/Documents/openjdk/jdk-17.0.1-arm/jmods:mods  --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-linux-arm --no-header-files --no-man-pages --strip-debug --compress=2
jlink --module-path ~/Documents/openjdk/jdk-17.0.1-windows/jmods:mods  --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-windows-x86 --no-header-files --no-man-pages --strip-debug --compress=2
jlink --module-path ~/Documents/openjdk/jdk-17.0.1.jdk-arm/Contents/Home/jmods:mods  --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-osx-arm --no-header-files --no-man-pages --strip-debug --compress=2
jlink --module-path ~/Documents/openjdk/jdk-17.0.1.jdk-x86/Contents/Home/jmods:mods  --add-modules java.base,java.desktop,java.logging,java.scripting,jdk.unsupported --output ~/Documents/Terrarum/out/runtime-osx-x86 --no-header-files --no-man-pages --strip-debug --compress=2

(note: matching the building machine with the target OS is highly recommended -- Use Linux for building linux x86/arm; Mac for building macOS x86/arm; Windows for building Windows Java Runtime)

This process assumes that the game does NOT use the Java 9+ modules and every single required libraries are fat-jar'd (their contents extracted right into the Jar)

Packaging

Create an output directory if there is none (project root/buildapp/out)

Before running the packaging script make sure:

  1. The required runtime must exist on (project root)/out/runtime-<linux|osx|windows>-<arm|x86> directory
  2. The build scripts are on a subdirectory of the project directory

To build, cd into the "(project root)/buildapp/", then execute the appropriate script.

The packaged application can be found on (project root)/buildapp/out/

OSX .app Packaging

Terrarum.*.app
+.icns          /* 512x512 PNG */
+Contents 
`Info.plist
 +MacOS
  `start_game_mac_*.sh    * permission: +x */

assets/TerrarumBuild.jar is the artifact built using the TerrarumBuild.

start_game_* files are on the root directory of the project; use them to build executable apps.

Hide the .jar within the subdirectory; users will think this file is the main executable and will try to execute it using whatever JVM they may (or may not) have.

OSX .icns creation

  1. Do this on a real macOS
  2. Create a folder icon.iconset, then cp the .png file as icon_512x512.png
  3. On Terminal, iconutil -c icns icon.iconset

https://gist.github.com/jamieweavis/b4c394607641e1280d447deed5fc85fc

Some Notes

  • Windows EXE creation is not there yet. Maybe use one of these?

Notes to Terrarum Programmers

By self-containing everything in one file, it is not possible to modify the base game easily. Modloading scheme must be extended to load from mutable directory such as %APPDATA%/Terrarum/mods.