From a0905d5695a068a10b8eb3cbda0b9ea83c5ae0ad Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 9 Mar 2019 19:12:54 -0500 Subject: [PATCH] Faster, smaller server / Bundle check cleanup --- .gitignore | 1 + .../fonts/what}/NanumBarunGothic.ttf | Bin .../fonts/what}/font_latin (copy).ttf | Bin .../fonts/what}/font_latin.ttf | Bin .../fonts => assets-raw/fonts/what}/pixel.ttf | Bin .../src/io/anuke/mindustry/content/Zones.java | 4 +- .../io/anuke/mindustry/io/BundleLoader.java | 2 + core/src/io/anuke/mindustry/type/Item.java | 7 -- .../src/io/anuke/mindustry/type/UnitType.java | 7 -- .../mindustry/world/meta/BlockStats.java | 22 ----- .../world/meta/values/NumberValue.java | 4 - desktop/build.gradle | 68 +++++++-------- desktop/packr_minimize.json | 82 ++++++++++++++++++ server/build.gradle | 4 + 14 files changed, 124 insertions(+), 77 deletions(-) rename core/{assets/fonts => assets-raw/fonts/what}/NanumBarunGothic.ttf (100%) rename core/{assets/fonts => assets-raw/fonts/what}/font_latin (copy).ttf (100%) rename core/{assets/fonts => assets-raw/fonts/what}/font_latin.ttf (100%) rename core/{assets/fonts => assets-raw/fonts/what}/pixel.ttf (100%) create mode 100644 desktop/packr_minimize.json diff --git a/.gitignore b/.gitignore index b33484f175..00ff121460 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ logs/ /ios/src/io/anuke/mindustry/gen/ /core/src/io/anuke/mindustry/gen/ ios/robovm.properties +packr-out/ config/ *.gif diff --git a/core/assets/fonts/NanumBarunGothic.ttf b/core/assets-raw/fonts/what/NanumBarunGothic.ttf similarity index 100% rename from core/assets/fonts/NanumBarunGothic.ttf rename to core/assets-raw/fonts/what/NanumBarunGothic.ttf diff --git a/core/assets/fonts/font_latin (copy).ttf b/core/assets-raw/fonts/what/font_latin (copy).ttf similarity index 100% rename from core/assets/fonts/font_latin (copy).ttf rename to core/assets-raw/fonts/what/font_latin (copy).ttf diff --git a/core/assets/fonts/font_latin.ttf b/core/assets-raw/fonts/what/font_latin.ttf similarity index 100% rename from core/assets/fonts/font_latin.ttf rename to core/assets-raw/fonts/what/font_latin.ttf diff --git a/core/assets/fonts/pixel.ttf b/core/assets-raw/fonts/what/pixel.ttf similarity index 100% rename from core/assets/fonts/pixel.ttf rename to core/assets-raw/fonts/what/pixel.ttf diff --git a/core/src/io/anuke/mindustry/content/Zones.java b/core/src/io/anuke/mindustry/content/Zones.java index fae6d6ee30..cce57c87c7 100644 --- a/core/src/io/anuke/mindustry/content/Zones.java +++ b/core/src/io/anuke/mindustry/content/Zones.java @@ -19,8 +19,8 @@ public class Zones implements ContentList{ public void load(){ groundZero = new Zone("groundZero", new MapGenerator("groundZero", 1)){{ - baseLaunchCost = ItemStack.with(Items.copper, -50); - startingItems = ItemStack.list(Items.copper, 50); + baseLaunchCost = ItemStack.with(Items.copper, -100); + startingItems = ItemStack.list(Items.copper, 100); alwaysUnlocked = true; conditionWave = 5; launchPeriod = 5; diff --git a/core/src/io/anuke/mindustry/io/BundleLoader.java b/core/src/io/anuke/mindustry/io/BundleLoader.java index 497d7f14cb..ba11207bf1 100644 --- a/core/src/io/anuke/mindustry/io/BundleLoader.java +++ b/core/src/io/anuke/mindustry/io/BundleLoader.java @@ -39,6 +39,8 @@ public class BundleLoader{ } private static void loadBundle(){ + if(headless) return; + try{ //try loading external bundle FileHandle handle = Core.files.local("bundle"); diff --git a/core/src/io/anuke/mindustry/type/Item.java b/core/src/io/anuke/mindustry/type/Item.java index f1f63d560d..b11b5d0884 100644 --- a/core/src/io/anuke/mindustry/type/Item.java +++ b/core/src/io/anuke/mindustry/type/Item.java @@ -5,8 +5,6 @@ import io.anuke.arc.collection.Array; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.arc.util.Log; -import io.anuke.arc.util.Strings; import io.anuke.mindustry.Vars; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.graphics.Pal; @@ -42,11 +40,6 @@ public class Item extends UnlockableContent implements Comparable{ super(name); this.color = color; this.description = Core.bundle.getOrNull("item." + this.name + ".description"); - - if(!Core.bundle.has("item." + this.name + ".name")){ - Log.err("Warning: item '" + name + "' is missing a localized name. Add the following to bundle.properties:"); - Log.err("item." + this.name + ".name = " + Strings.capitalize(name.replace('-', '_'))); - } } public void load(){ diff --git a/core/src/io/anuke/mindustry/type/UnitType.java b/core/src/io/anuke/mindustry/type/UnitType.java index 0ffbc9f177..d187380fb0 100644 --- a/core/src/io/anuke/mindustry/type/UnitType.java +++ b/core/src/io/anuke/mindustry/type/UnitType.java @@ -5,8 +5,6 @@ import io.anuke.arc.collection.ObjectSet; import io.anuke.arc.function.Supplier; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.arc.util.Log; -import io.anuke.arc.util.Strings; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.entities.traits.TypeTrait; import io.anuke.mindustry.entities.type.BaseUnit; @@ -46,11 +44,6 @@ public class UnitType extends UnlockableContent{ this.description = Core.bundle.getOrNull("unit." + name + ".description"); TypeTrait.registerType(type, mainConstructor); - - if(!Core.bundle.has("unit." + this.name + ".name")){ - Log.err("Warning: unit '" + name + "' is missing a localized name. Add the follow to bundle.properties:"); - Log.err("unit." + this.name + ".name=" + Strings.capitalize(name.replace('-', '_'))); - } } @Override diff --git a/core/src/io/anuke/mindustry/world/meta/BlockStats.java b/core/src/io/anuke/mindustry/world/meta/BlockStats.java index 9dcd09db5e..d094b16672 100644 --- a/core/src/io/anuke/mindustry/world/meta/BlockStats.java +++ b/core/src/io/anuke/mindustry/world/meta/BlockStats.java @@ -1,20 +1,14 @@ package io.anuke.mindustry.world.meta; -import io.anuke.arc.Core; import io.anuke.arc.collection.ObjectMap.Entry; import io.anuke.arc.collection.OrderedMap; -import io.anuke.arc.util.Log; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.meta.values.*; -import java.util.Locale; - /**Hold and organizes a list of block stats.*/ public class BlockStats{ - private static final boolean errorWhenMissing = false; - private final OrderedMap> map = new OrderedMap<>(); private boolean dirty; @@ -50,22 +44,6 @@ public class BlockStats{ /**Adds a stat value.*/ public void add(BlockStat stat, StatValue value){ - if(!Core.bundle.has("blocks." + stat.name().toLowerCase(Locale.ROOT))){ - if(!errorWhenMissing){ - Log.err("Warning: No bundle entry for stat type \"" + stat + "\"!"); - }else{ - throw new RuntimeException("No bundle entry for stat type \"" + stat + "\"!"); - } - } - - if(!Core.bundle.has("category." + stat.category.name().toLowerCase(Locale.ROOT))){ - if(!errorWhenMissing){ - Log.err("Warning: No bundle entry for stat category \"" + stat.category + "\"!"); - }else{ - throw new RuntimeException("No bundle entry for stat category \"" + stat.category + "\"!"); - } - } - if(map.containsKey(stat.category) && map.get(stat.category).containsKey(stat)){ throw new RuntimeException("Duplicate stat entry: \"" + stat + "\" in block."); } diff --git a/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java b/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java index 8c8a058297..620bfc1186 100644 --- a/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java +++ b/core/src/io/anuke/mindustry/world/meta/values/NumberValue.java @@ -16,10 +16,6 @@ public class NumberValue implements StatValue{ public NumberValue(float value, StatUnit unit){ this.unit = unit; this.value = value; - - if(unit != StatUnit.none && unit.localized().contains("???")){ - throw new RuntimeException("No bundle definition found for unit: '" + unit + "'"); - } } @Override diff --git a/desktop/build.gradle b/desktop/build.gradle index 24358df109..c614bdfdaa 100644 --- a/desktop/build.gradle +++ b/desktop/build.gradle @@ -6,25 +6,24 @@ sourceSets.main.java.srcDirs = ["src/"] project.ext.mainClassName = "io.anuke.mindustry.desktop.DesktopLauncher" project.ext.assetsDir = new File("../core/assets") -def PACKR_DIR = "$System.env.PACKR_DIR" +import com.badlogicgames.packr.PackrConfig +import com.badlogicgames.packr.Packr + +def JDK_DIR = "$System.env.PACKR_DIR" def ICON_DIR = new File("core/assets/sprites/icon.icns") ext.getPlatform = { - if(project.hasProperty("platform")){ - def lc = platform.toLowerCase() - if(lc == "windows64"){ - return "windows64" - }else if(lc == "windows32"){ - return "windows32" - }else if(lc == "linux"){ - return "linux64" - }else if(lc == "mac"){ - return "mac" - }else{ - throw new InvalidUserDataException("Invalid platform. Set platform with -Pplatform=windows/linux/mac") - } + def lc = project.hasProperty("platform") ? platform.toLowerCase() : "" + if(lc == "windows64"){ + return PackrConfig.Platform.Windows64 + }else if(lc == "windows32"){ + return PackrConfig.Platform.Windows32 + }else if(lc == "linux"){ + return PackrConfig.Platform.Linux64 + }else if(lc == "mac"){ + return PackrConfig.Platform.MacOS }else{ - throw new InvalidUserDataException("No platform defined. Set platform with -Pplatform=windows/linux/mac") + throw new InvalidUserDataException("Invalid platform. Set platform with -Pplatform=windows64/windows32/linux/mac") } } @@ -80,27 +79,26 @@ task clearOut(type: Delete){ task packrCmd(){ doLast{ + def config = new PackrConfig() + config.with{ + config.executable = appName + verbose = true + platform = getPlatform() + bundleIdentifier = getPackage() + ".mac" + iconResource = ICON_DIR + outDir = file("packr-out/") + mainClass = project.ext.mainClassName + classpath = ["desktop/build/libs/desktop-release.jar"] + vmArgs = ["Djava.net.preferIPv4Stack=true"] + minimizeJre = "desktop/packr_minimize.json" + jdk = JDK_DIR + "jdk-${getPlatform().toString().toLowerCase()}.zip" - copy{ - into PACKR_DIR - from "build/libs/desktop-release.jar" + if(getPlatform() == PackrConfig.Platform.MacOS){ + vmArgs += "XstartOnFirstThread" + } } - exec{ - - commandLine("java", "-jar", PACKR_DIR + "packr.jar", - "--verbose", - "--bundle", getPackage() + ".mac", - "--platform", getPlatform(), - "--executable", appName, - "--output", "packr-out/", - "--mainclass", project.ext.mainClassName, - "--jdk", PACKR_DIR + "jdk-" + getPlatform() + ".zip", - "--icon", ICON_DIR.getAbsolutePath(), - "--vmargs", (getPlatform() == "mac" ? "XstartOnFirstThread" : "Xms256m"), - "Djava.net.preferIPv4Stack=true", - "--classpath", "--", PACKR_DIR + "config.json") - } + new Packr().pack(config) } } @@ -121,13 +119,13 @@ task fixWindows32(type: Copy){ dependsOn "packrCmd" into "packr-out/jre/bin/" - from PACKR_DIR + "zip.dll" + from JDK_DIR + "zip.dll" rename("zip.dll", "ojdkbuild_zlib.dll") doLast{ copy{ into "packr-out/jre/bin/" - from PACKR_DIR + "zip.dll" + from JDK_DIR + "zip.dll" } } } diff --git a/desktop/packr_minimize.json b/desktop/packr_minimize.json new file mode 100644 index 0000000000..0887fdf720 --- /dev/null +++ b/desktop/packr_minimize.json @@ -0,0 +1,82 @@ +{ + "reduce": [ + { + "archive": "jre/lib/rt.jar", + "paths": [ + + "javax/transaction", + "javax/tools", + "javax/swing", + "javax/sql", + "javax/smartcardio", + "javax/rmi", + "javax/print", + "javax/naming", + "javax/management", + "javax/lang", + "javax/jws", + "javax/swing", + "javax/imageio", + "javax/annotation", + "javax/activity", + "javax/activation", + "javax/accessibility", + "com/sun/corba", + "com/sun/jmx", + "com/sun/jndi", + "com/sun/xml", + "com/sun/script", + "com/sun/media", + "com/sun/naming", + "java/awt", + + "com/sun/org/apache/xpath", + + "com/sun/rowset", + "com/sun/script", + "sun/applet", + "sun/corba", + "sun/management" + ] + }, + { + "archive": "jre/lib/charsets.jar", + "paths": [ + ] + }, + { + "archive": "jre/lib/jsse.jar", + "paths": [ + ] + }, + { + "archive": "jre/lib/resources.jar", + "paths": [ + ] + } + ], + "remove": [ + { + "platform": "*", + "paths": [ + "jre/lib/rhino.jar" + ] + }, + { + "platform": "linux", + "paths": [ + "jre/lib/amd64/libawt.so", + "jre/lib/amd64/libawt_xawt.so", + "jre/lib/amd64/libjawt.so" + ] + }, + { + "platform": "windows", + "paths": [ + "jre/bin/*.exe", + "jre/bin/client", + "jre/bin/awt.dll" + ] + } + ] +} diff --git a/server/build.gradle b/server/build.gradle index 6f22ffa04c..51240b5170 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -31,6 +31,10 @@ task dist(type: Jar) { from files(sourceSets.main.output.resourcesDir) from {configurations.compile.collect {zipTree(it)}} from files(project.assetsDir) + exclude("sprites/**") + exclude("fonts/**") + exclude("com/badlogic/gdx/**") + exclude("bundles/**") writeVersion()