summarylogtreecommitdiffstats
path: root/starsector.sh
blob: c41d1783fb025ee1c7957a0a1ad6fb5e2277bf0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/usr/bin/env bash

set -euo pipefail

state_dir="${XDG_DATA_HOME:-"$HOME/.local/share"}/starsector"
saves_path="${state_dir}/saves"
mods_path="${state_dir}/mods"
screenshots_path="${state_dir}/screenshots"
log_path="$state_dir"

mkdir -p "$saves_path"
mkdir -p "$mods_path"
mkdir -p "$screenshots_path"
mkdir -p "$log_path"

classpath="$(find '/usr/share/java/starsector' -type f -name '*.jar' | paste -sd ':')"

config_path="${XDG_CONFIG_HOME:-"$HOME/.config"}/starsector"
startup_config="${config_path}/startup.sh"

jvm_args=(-Xms2048m -Xmx2048m -Xss4m)
program_args=()

if [ -r "$startup_config" ]
then
  . "$startup_config"
fi

cd /usr/share/starsector
exec java \
  -Dfile.encoding=UTF-8 \
  -noverify \
  -XX:+UnlockDiagnosticVMOptions \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+ShowCodeDetailsInExceptionMessages \
  -XX:+ExtensiveErrorReports \
  -XX:+ShowMessageBoxOnError \
  -XX:+PrintCommandLineFlags \
  -XX:+TieredCompilation \
  -XX:-UseCondCardMark \
  -Xlog:async \
  -XX:+UseFastStosb \
  -XX:+AlwaysCompileLoopMethods \
  -XX:TieredStopAtLevel=4 \
  -XX:TrimNativeHeapInterval=60000 \
  -XX:+UseCriticalCompilerThreadPriority \
  -XX:+UseCriticalJavaThreadPriority \
  -XX:UseAVX=3 \
  -XX:AVX3Threshold=0 \
  -XX:UseSSE=4 \
  -XX:+UseSSE42Intrinsics \
  -XX:+UseCompressedOops \
  -XX:+UseCompressedClassPointers \
  -XX:+UseFMA \
  -XX:+UseBMI1Instructions \
  -XX:+UseBMI2Instructions \
  -XX:+UseCLMUL \
  -XX:+UseFastUnorderedTimeStamps \
  -XX:+UseUnalignedLoadStores \
  -XX:+UseXMMForArrayCopy \
  -XX:+UseXMMForObjInit \
  -XX:+UseXmmI2D \
  -XX:+UseXmmI2F \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:+ParallelRefProcEnabled \
  -XX:+UseShenandoahGC \
  -XX:ShenandoahGCMode=iu \
  -XX:ShenandoahGCHeuristics=compact \
  -XX:ShenandoahAllocationThreshold=85 \
  -XX:ShenandoahGuaranteedGCInterval=0 \
  -XX:+ZeroTLAB \
  -XX:+SegmentedCodeCache \
  -XX:+AlwaysAtomicAccesses \
  -XX:+UseStringDeduplication \
  -XX:-DontCompileHugeMethods \
  -XX:Tier0Delay=1 \
  -XX:+UseFPUForSpilling \
  -XX:+EnableVectorAggressiveReboxing \
  -XX:+EnableVectorReboxing \
  -XX:+EnableVectorSupport \
  -XX:-AlignVector \
  -XX:TieredOldPercentage=10000 \
  -XX:Tier0ProfilingStartPercentage=2000 \
  -XX:IncreaseFirstTierCompileThresholdAt=99 \
  -XX:InterpreterProfilePercentage=99 \
  -XX:+UseVectorCmov \
  -XX:+UseVectorStubs \
  -XX:ReferencesPerThread=0 \
  -XX:MaxGCPauseMillis=10 \
  -XX:-EnableThreadSMRStatistics \
  -XX:+UseUnalignedAccesses \
  -XX:PerMethodRecompilationCutoff=100000 \
  -XX:ProfileMaturityPercentage=100 \
  -XX:NmethodSweepActivity=1 \
  -XX:ThreadPriorityPolicy=1 \
  -XX:ReservedCodeCacheSize=256m \
  -XX:+PrintCodeCache \
  -XX:-UseDynamicNumberOfCompilerThreads \
  -XX:CompilerDirectivesFile=./compiler_directives.txt \
  -Djava.library.path=/usr/lib/starsector \
  -XX:-BytecodeVerificationLocal \
  -XX:-BytecodeVerificationRemote \
  -Djava.util.Arrays.useLegacyMergeSort=true \
  --enable-preview \
  --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
  --add-opens=java.base/java.nio=ALL-UNNAMED \
  --add-opens=java.base/java.nio.Buffer.UNSAFE=ALL-UNNAMED \
  --add-opens=java.base/java.util=ALL-UNNAMED \
  --add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
  --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED \
  --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED \
  --add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
  --add-opens=java.base/java.lang.ref=ALL-UNNAMED \
  --add-opens=java.base/java.text=ALL-UNNAMED \
  --add-opens=java.desktop/java.awt.font=ALL-UNNAMED \
  --add-opens=java.desktop/java.awt.Rectangle=ALL-UNNAMED \
  --add-opens=java.desktop/java.awt=ALL-UNNAMED \
  --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
  --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
  --add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
  -Dcom.fs.starfarer.settings.paths.saves="${saves_path}" \
  -Dcom.fs.starfarer.settings.paths.screenshots="${screenshots_path}" \
  -Dcom.fs.starfarer.settings.paths.mods="${mods_path}" \
  -Dcom.fs.starfarer.settings.paths.logs="${log_path}" \
  -Dcom.fs.starfarer.settings.linux=true \
  -classpath "${classpath}" \
  "${jvm_args[@]}" \
  com.fs.starfarer.StarfarerLauncher \
  "${program_args[@]}" \
  "$@"