rudimentary deploy system

This commit is contained in:
minjaesong
2022-01-24 00:29:56 +09:00
parent 367271c5ea
commit ee8da4df84
26 changed files with 163 additions and 81 deletions

74
.idea/artifacts/Runtime.xml generated Normal file
View File

@@ -0,0 +1,74 @@
<component name="ArtifactManager">
<artifact type="jlink" name="Runtime">
<output-path>$PROJECT_DIR$/out/artifacts/Runtime</output-path>
<properties id="jlink-properties">
<options>
<option name="compressionLevel" value="2" />
<option name="verbose" value="true" />
</options>
</properties>
<root id="root">
<element id="module-output" name="terrarum.terrarum" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.2.3-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.2.3-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.3-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.2.3-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.2.3-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jlayer-1.0.1-gdx.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jorbis-0.0.17.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-codec-1.15.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-core-2.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.10.0-natives-desktop.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/GetCpuName.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-68.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-21.1.0-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-21.1.0-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jxinput-1.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-test.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-csv-1.8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/prtree.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/Terrarum_Joise.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerrarumSansBitmap.jar" path-in-jar="/" />
</root>
</artifact>
</component>

View File

@@ -5,7 +5,6 @@
<element id="directory" name="META-INF">
<element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
</element>
<element id="module-output" name="ingamemodule_basegame" />
<element id="module-output" name="terrarum.terrarum" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.10.0.jar" path-in-jar="/" />
@@ -59,7 +58,6 @@
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-csv-1.8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/prtree.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerranVirtualDisk.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/Terrarum_Joise.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerrarumSansBitmap.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-21.1.0.jar" path-in-jar="/" />

View File

@@ -1,14 +0,0 @@
<component name="libraryTable">
<library name="ibm.icu.icu4j" type="repository">
<properties maven-id="com.ibm.icu:icu4j:70.1" />
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/icu4j-70.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/lib/icu4j-70.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/lib/icu4j-70.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -1,20 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="App" type="Application" factoryName="Application">
<option name="ALTERNATIVE_JRE_PATH" value="1.8.0_242" />
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.App" />
<module name="terrarum.terrarum" />
<option name="VM_PARAMETERS" value="-ea" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="net.torvald.terrarum.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
<option name="BuildArtifacts" enabled="true">
<artifact name="ModuleComputers" />
</option>
</method>
</configuration>
</component>

16
.idea/runConfigurations/Terrarum.xml generated Normal file
View File

@@ -0,0 +1,16 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Terrarum" type="JarApplication">
<option name="JAR_PATH" value="$PROJECT_DIR$/out/TerrarumBuild.jar" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="11" />
<module name="terrarum.terrarum" />
<method v="2">
<option name="BuildArtifacts" enabled="true">
<artifact name="ModuleComputers" />
<artifact name="TerrarumBuild" />
</option>
</method>
</configuration>
</component>

View File

@@ -0,0 +1,15 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Terrarum (no DEV MODE)" type="JarApplication">
<option name="JAR_PATH" value="$PROJECT_DIR$/out/TerrarumBuild.jar" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="11" />
<module name="terrarum.terrarum" />
<method v="2">
<option name="BuildArtifacts" enabled="true">
<artifact name="ModuleComputers" />
<artifact name="TerrarumBuild" />
</option>
</method>
</configuration>
</component>

View File

@@ -9,7 +9,6 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="ModuleComputersLib" level="project" />
<orderEntry type="module" module-name="terrarum.terrarum" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
<orderEntry type="library" name="com.badlogicgames.gdx:gdx-backend-lwjgl3:1.10.0" level="project" />
<orderEntry type="library" name="com.badlogicgames.gdx:gdx:1.10.0" level="project" />
<orderEntry type="library" name="graalvm-js-21.1.0 and graalvm-js-scriptengine-21.1.0" level="project" />

View File

@@ -12,7 +12,7 @@ class EntryPoint : ModuleEntryPoint() {
override fun invoke() {
ModMgr.GameItemLoader.invoke(moduleName)
println("[${moduleName[0].uppercase()}${moduleName.substring(1)}] Dirtboard(tm) go drrrrr")
println("[${moduleName[0].toUpperCase()}${moduleName.substring(1)}] Dirtboard(tm) go drrrrr")
}
override fun dispose() {

View File

@@ -1,26 +0,0 @@
## Minimum requirements ##
* Processor with 2.4 GHz speed
* GeForce MX 150
* 4 GB of RAM
* 4 GB of free disk space
* Windows Vista/Mac OS X Lion or higher (Mac OS X Snow Leopard is incompatible with a shader the game uses)
* PC: Java 8
## Recommended requirements ##
* Processor with 3.0 GHz speed, 4 threads available
* GPU that can support OpenGL 2.1, is capable of 4K texture
* 8 GB of RAM
* 8 GB of free disk space
* Windows Vista/Mac OS X Lion or higher
* PC: Java 8
## Tested environments ##
(to devs: please extend this list with your test results!)
* MacBookPro9,2 (MacBook Pro 13 inch mid-2012) -- shader don't work
* Intel 6700K, nVidia GTX970, Windows 10 -- fully works
* Intel 6600, nVidia GT 710, Windows 8 -- unplayable framerate
* Intel 8265U, Intel UHD620/nVidia MX 250, Windows 10 -- fully works with Intel iGPU (24 fps), fully works with MX 250 (66 fps)

View File

@@ -0,0 +1,32 @@
### Preparation
Download and unzip the JDK for the appropriate operation systems first! JDKs can be downloaded on https://jdk.java.net/archive/.
Then, on the terminal, run following commands:
jlink --add-modules java.base,java.desktop,java.logging,jdk.unsupported --output /home/installed/Documents/Terrarum/out/runtime-linux --no-header-files --no-man-pages --strip-debug --compress=2
jlink --module-path /home/installed/Documents/openjdk/jdk-11.0.2-windows/jmods:mods --add-modules java.base,java.desktop,java.logging,jdk.unsupported --output /home/installed/Documents/Terrarum/out/runtime-windows --no-header-files --no-man-pages --strip-debug --compress=2
jlink --module-path /home/installed/Documents/openjdk/jdk-11.0.2.jdk-mac/Contents/Home/jmods:mods --add-modules java.base,java.desktop,java.logging,jdk.unsupported --output /home/installed/Documents/Terrarum/out/runtime-osx --no-header-files --no-man-pages --strip-debug --compress=2
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; its contents shall be:
```
+assets
+runtime-linux
+runtime-osx
+runtime-windows
start_game_linux.sh
start_game_mac.sh
start_game_windows.bat
TerrarumBuild.jar
```
whereas `runtime-*` are runtime directories generated from the commands above, `TerrarumBuild.jar` is the artifact built using the TerrarumBuild.
`start_game_*` files are on the root directory of the project; you only need to simply copy them over.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 KiB

View File

@@ -1,11 +1,15 @@
module terrarum.terrarum {
// java
requires java.base;
requires java.desktop;
requires java.logging;
requires jdk.unsupported; // sun.misc.Unsafe
// kotlin
requires kotlin.stdlib;
requires kotlin.test;
requires kotlin.reflect;
requires kotlin.stdlib.jdk8;
// gdx
requires gdx;
@@ -16,15 +20,16 @@ module terrarum.terrarum {
// terrarum
requires TerrarumSansBitmap;
requires TerranVirtualDisk;
requires Terrarum.Joise;
// etc
requires GetCpuName;
requires kotlinx.serialization.core.jvm;
requires kotlinx.serialization.json;
requires kotlinx.serialization.json.jvm;
requires org.apache.commons.codec;
requires commons.csv;
requires jxinput;
requires org.graalvm.sdk;
requires com.ibm.icu;
requires org.lwjgl.opengl;
exports net.torvald.terrarum;
}

View File

@@ -49,7 +49,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
const val VERSION_RAW = 0x00030000
// Commit counts up to the Release 0.3: 2257 (plz update!)
// Commit counts up to the Release 0.3: 2259 (plz update!)
//////////////////////////////////////////////////////////
// CONFIGURATION FOR TILE MAKER //

View File

@@ -1,11 +1,11 @@
package net.torvald.terrarum.debuggerapp
import net.torvald.terrarum.TerrarumAppConfiguration
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.savegame.EntryFile
import net.torvald.terrarum.savegame.VDUtil
import net.torvald.terrarum.savegame.VirtualDisk
import net.torvald.terrarum.savegame.diskIDtoReadableFilename
import net.torvald.terrarum.serialise.Common
import java.io.File
import java.io.PrintStream
import java.nio.charset.Charset
@@ -110,7 +110,7 @@ class SavegameCracker(
it.call(this, args)
}
catch (e: Throwable) {
val error = e.cause ?: e
val error = (e.cause ?: e) as java.lang.Throwable
printerrln("Error -- ${error}")
error.printStackTrace(stderr)
printerrln("Error -- ${error}")

View File

@@ -6,7 +6,6 @@ import java.util.*
import java.util.logging.Level
import java.util.zip.GZIPInputStream
import java.util.zip.GZIPOutputStream
import javax.naming.OperationNotSupportedException
import kotlin.experimental.and
/**
@@ -499,7 +498,7 @@ object VDUtil {
}
fun ByteArray64.toIntBig(): Int {
if (this.size != 4L)
throw OperationNotSupportedException("ByteArray is not Int")
throw UnsupportedOperationException("ByteArray is not Int")
var i = 0
var c = 0
@@ -508,7 +507,7 @@ object VDUtil {
}
fun ByteArray64.toLongBig(): Long {
if (this.size != 8L)
throw OperationNotSupportedException("ByteArray is not Long")
throw UnsupportedOperationException("ByteArray is not Long")
var i = 0L
var c = 0
@@ -517,7 +516,7 @@ object VDUtil {
}
fun ByteArray64.toInt48Big(): Long {
if (this.size != 6L)
throw OperationNotSupportedException("ByteArray is not Long")
throw UnsupportedOperationException("ByteArray is not Long")
var i = 0L
var c = 0
@@ -526,7 +525,7 @@ object VDUtil {
}
fun ByteArray64.toShortBig(): Short {
if (this.size != 2L)
throw OperationNotSupportedException("ByteArray is not Short")
throw UnsupportedOperationException("ByteArray is not Short")
return (this[0].toUint().shl(256) + this[1].toUint()).toShort()
}

View File

@@ -13,7 +13,6 @@ import net.torvald.terrarum.*
import net.torvald.terrarum.gamecontroller.*
import net.torvald.terrarum.utils.Clipboard
import net.torvald.terrarumsansbitmap.gdx.CodepointSequence
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.toJavaString
import kotlin.streams.toList
@@ -382,7 +381,7 @@ class UIItemTextLineInput(
}
}
private fun String.toCodePoints() = this.codePoints().toList().filter { it > 0 }.toList()
private fun String.toCodePoints() = (this as java.lang.CharSequence).codePoints().toList().filter { it > 0 }.toList()
private fun endComposing(force: Boolean = false) {
getIME(force)?.let {

3
start_game_linux.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
./runtime-linux/bin/java -Xms1G -Xmx6G -jar TerrarumBuild.jar

3
start_game_mac.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
./runtime-osx/bin/java -Xms1G -Xmx6G -jar TerrarumBuild.jar

1
start_game_windows.bat Executable file
View File

@@ -0,0 +1 @@
runtime-windows\bin\java -Xms1G -Xmx6G -jar TerrarumBuild.jar

View File

@@ -16,13 +16,11 @@
<orderEntry type="library" name="TerrarumSansBitmap" level="project" />
<orderEntry type="library" name="commons-codec:commons-codec:1.15" level="project" />
<orderEntry type="library" name="org.apache.commons:commons-csv:1.8" level="project" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
<orderEntry type="library" name="gdx-controllers-core-2.2.1" level="project" />
<orderEntry type="library" name="gdx-controllers-desktop-2.2.1" level="project" />
<orderEntry type="library" name="jxinput-1.0.0" level="project" />
<orderEntry type="library" name="gdx-platform-1.10.0-natives-desktop" level="project" />
<orderEntry type="library" name="graalvm-js-21.1.0 and graalvm-js-scriptengine-21.1.0" level="project" />
<orderEntry type="library" name="jetbrains.kotlinx.coroutines.core" level="project" />
<orderEntry type="library" name="ibm.icu.icu4j" level="project" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
</component>
</module>