#Mindustry

148 messages · Page 1 of 1 (latest)

gleaming citrus
#

Mindustry is an open-source sandbox tower-defense game focused on resource management and automation. It plays similarly to Factorio. Players design factories, build supply chains, and defend against waves of enemies using strategic planning and custom defenses. It offers campaign, multiplayer, and creative modes for diverse gameplay.

@blazing acorn and I worked on this together, bringing (what i believe) is the first libGDX/Java game to Portmaster. 🎉

Installation:

Update: It's done, just get it on PortMaster.

Notes:

  • This game has pretty high RAM usage, but will boot on 1 GB devices (just barely). You might rarely run out of RAM on very very big builds though. Adding swap can help.
  • I added a software cursor for platforms that don't support cursors. If you see two cursors, please report, so i can exclude your platform.
  • Graphics settings are turned all the way down for a smoother experience, hopefully hitting 60fps almost all the time. Feel free to adjust.
  • You can update the game by replacing the Mindustry.jar file with a different version. It will be patched on next startup. There are shader compatibility problems with the latest nightly version. Your milage may vary.
  • The UI may be too big, you can adjust this in the graphics settings.

Recommended UI scale settings:
480x320: 0.5x
640x480: 0.7x
720x720: 0.8x
higher: 1x or higher

#

Controls (oh lord):

left analog stick: mouse
right analog stick: ship movement
dpad left/right: block selection left right
dpad up/down: block category selection up down
a: left click (place block)
b: right click (cancel)
x: slow mouse cursor
y: pick block
start: pause
guide/home: esc

l1: Command mode / Boost
l2: Control Unit
l3: select all units
l4: select all unit factories

select+X/B: zoom in/out, rotate left/right
select+Y: pickup cargo
select+A: drop cargo
select+l1: respawn

All other combinations (l3, r3, select+l2/r1/r2) are bound to buttons in gptokeyb but not in-game. Feel free to rebind to any shortcut keys are helpful to you 🙂

#

Tests

[X] ArkOS
[X] AmberELEC
[X] Rocknix
[X] MuOS
[X] Knulli
[X] Crossmix

Platforms:
[X] libmali
[X] Panfrost

Resolutions:
[X] 480x320
[X] 640x480
[X] 720x720
[X] Higher resolutions

#

.

#

Yes! You just need the runtime and the port zip.

#

Silly question, but does panfrost not support OpenGL ES 3.2?

#

Dang. Then I'm afraid the game will never work on panfrost without significant reworking. The game itself only uses GLES 2 features, but uses GLES 3.2 shaders...

#

Or does glxinfo say something about supporting GLSL ES or ESSL 3.2?

#

I'll experiment if i can get away with downgrading to a GLES 3.1 context so this hack isn't needed.

#

Absolutely! Shattered Pixel Dungeon already works (has some performance issues though). Pokewilds is feasible too.

#

Yup, every libGDX game does. Not a huge issue, it can be patched out, that's what i did for Mindustry. And that patch would be universal across all libGDX games, so it should be easy for others to apply.

main torrent
#

it is not working for me on Knulli

#
[root@KNULLI /userdata/roms/ports/mindustry]# cat log.txt
   808664  01-18-2025 15:37   libarcarm64.so
    64504  01-18-2025 15:37   libarc-filedialogsarm64.so
   493856  01-18-2025 15:37   libarc-freetypearm64.so
   330128  01-18-2025 15:37   libsdl-arcarm64.so
umount: /userdata/system/zulu17.54.21-ca-jre17.0.13-linux.aarch64: not mounted.
Error: libX11.so.6: cannot open shared object file: No such file or directory
System does not have X11 libraries. Adding ours to LD_LIBRARY_PATH.
java: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
Running in UINPUT output mode.
Running in Fake Keyboard mode
Using ConfigFile ./mindustry.gptk
Joystick 0 has game controller name 'Deeplay-keys'
#

why it is looking for java in /userdata/system?

#

I have java here:

[root@KNULLI /userdata/system/.local/share/PortMaster/libs]# ls
frt_3.5.2.squashfs  mono-6.12.0.122-aarch64.squashfs  solarus-1.6.5.squashfs  zulu17.54.21-ca-jre17.0.13-linux.aarch64.squashfs
gleaming citrus
main torrent
#

sure

#

yep! it works

#

I`ll try it on TV screen when I get home

gleaming citrus
#

Awesome, updating the zip right now. What device did you test?

main torrent
#

rg35xxh with Knulli

#

it seems a little dead now, no response by ssh, I guess not enough ram

#

knulli is too heavy

#

I`ll add swap

gleaming citrus
#

There's very little i can do about ram usage sadly

main torrent
#

that's expected, I have swap toggle in favorites

gleaming citrus
#

Updated the zip with the panfrost gles override and the typo fix. Marking both panfrost and knulli off 🙂

main torrent
gleaming citrus
#

muOS h700

main torrent
#

muos as usual the best

gleaming citrus
#

There's also like 75MB of RAM just missing on ArkOS...?

main torrent
#

what if this is because it has "RGA is a separate 2D raster graphic acceleration unit"

#

rockchip thing, as I understand

#

maybe this is why many emulators where faster on arkos then on rocknix, but actually I can't find much information about this RGA thing

#

you also tried pokemmo?

#

I had no luck

gleaming citrus
main torrent
#

😄

gleaming citrus
#

This patch doesn't work with any other games right now, it should be easy to adjust though to make a universal patch.
You'll also have to check if the .jar includes any x64 only .so libraries and replace them

#

I tried pokemmo but gave up because i couldn't easily find replacement libraries

eager mortar
#

seems like im missing something on my TSP (crossmix)

mount: mounting /mnt/SDCARD/Apps/PortMaster/PortMaster/libs/zulu17.54.21-ca-jre17.0.13-linux.aarch64.squashfs on //zulu17.54.21-ca-jre17.0.13-linux.aarch64 failed: No such file or directory
/mnt/SDCARD/System/lib/libX11.so.6```
#

yes i have installed the squashfs file

#

i put it into the autoinstall folder for portmaster as described, it gave me a success for it when i ran portmaster to autoinstall it and mindustry

#

ah it might not like that its a (1) named file by accident

#

let me just fix that and try again

#

Uh renaming it to remove the (1) fixes it

That was simple

#

yea im tying to fix that atm, mouse is offset too wich is annoying

#

there we go found the fullscreen button hitbox

#

yep

#

runs pretty well too, granted early game stuff is hardly a challenge
but it direly needs a scrollwheel bind so you can zoom as the game requires it at stages like the research tree

main torrent
#

select + x/b

eager mortar
#

that bind does nothing for me

gleaming citrus
# eager mortar

I'll turn on fullscreen by default in the next version.

About the bind: On ports that use hotkeys, what's usually your hotkey?

eager mortar
gleaming citrus
#

What buttons do you use to exit games?

eager mortar
#

usually Select is bound to ESC, if all fails its Start+Select for a force quit

gleaming citrus
#

Yeah, I that case, select+x/b really should work.... Hmmm

eager mortar
#

looking at the binds, i dont think my TSP knows what to do w/ "HK"

gleaming citrus
#

gptokeyb automatically assigns a hotkey, normally "back" (aka select).
That's why I ask what buttons you use to quit, because that's hotkey+start.

The fact that hotkey buttons don't work honestly suggests a problem with the CFW...

eager mortar
#

yea possible

gleaming citrus
#

Or did you accidentally reset the controls in Mindustry?

eager mortar
#

dont think so?

#

this might just be a wierd CFW issue as the start select combo works just fine but all others dont

blazing acorn
gleaming citrus
#

From my experiments, it's always been select

blazing acorn
#

I never now 😅

gleaming citrus
eager mortar
gleaming citrus
eager mortar
#

oh hey it... seems to work now
Select Y zooms out, Select A in

#

buuuut i cant scroll the tech tree or zoom it ThinkLoss

#

it might have they keys rotated btw, A might be B and X might be Y

#

the TSP layout is
X
YA
B

gleaming citrus
gleaming citrus
eager mortar
#

its just how the keys get interpreted by software compared to what they say on the key, its a nintendo layout but games treat it like an Xbox controller, not the biggest deal tbh

#

just something i need to keep in mind

#

i could get some stickers 😄

gleaming citrus
#

Oh you mean the physical buttons are in different locations?

eager mortar
#

yes

gleaming citrus
#

Oh man, that's unfortunate.

eager mortar
blazing acorn
#

To rebind for a specific port

#

If you rebind before gptokeyb it applies to gptokeyb and the game

gleaming citrus
# eager mortar

Strange 😅

But yeah I'm definitely going to add the extra line to the script. The map is more of a starting point anyway. Everyone plays this game differently, and there's so much more you could bind to keys.

blazing acorn
#

I dunno what we need here

eager mortar
#

the port seems to run well tho, despite being a lower mid range 1gb handheld
so thats good news

blazing acorn
#

Regarding the memory I know there is the zram option in knulli

#

Could help a bit

#

Another option is to stop ES before launching the game

#

And starting it after

gleaming citrus
#

The screenshots in this thread were actually taken on a rk3326 1GB device with emulationstation running in the background. So it's definitely possible to run more complex builds on this.

eager mortar
#

an R36s? :P

gleaming citrus
half current
#

Two awesome games at the same day? Super late Christmas or something.

main torrent
#

How to make cursor slower ? usually I increase mouse_scale and this helps but now it is already 20000 and this not slow enough

#

I think I do it wrong

#
r3 = mouse_slow
mouse_slow_scale = 30

doesnt' work either

#

I am sorry I am stupid, it works 😄

gleaming citrus
#

Local multiplayer between devices over wifi!
RG40XX-H is hosting

eager mortar
#

sick

civic relic
#

Wait... you figured out how to port .JAR games?!

#

There are SO many from old mobile games that could be really fun. I'm sure this will open up a lot of opportunities

#

Like assasins creed for instance

#

Having then in PM and not J2ME would be sooooo much nicer

#

J2ME Controls suck though

#

Like a lot

#

It's still difficult. Having them on PM, mapped and ready to run would be awesome. Hope to see more of these

#

Literally 1000s of games

#

Hahaha

gleaming citrus
civic relic
#

Oh OK. Well they're JAR files so I didn't realize

#

So no assasins creed ,(

#

Still, a ton of really cool MODERN Java games though. Really great work man.

gleaming citrus
#

That's incredible wow. That's on Panfrost, but I'm pretty sure Minecraft works with GL4ES aswell. Might be worth a shot to just try. Hmmm

#

How's it managing with the 1GB RAM?

vale sparrow
#

Can the same method be used to run Pixel Dungeon on non-Rocknix CFW?.. it seems only Rocknix can run Pixel Dungeon using JDK + Wayland..

#

When I saw that this was also a Java game, it reminded me of Pixel Dungeon.

harsh ingot
#

oh daym, can I tell him? 😄

gleaming citrus
#

Sure lol

dire void
harsh ingot
vale sparrow
#

Wow, I can't believe it's real..

gleaming citrus
#

It's a similar method but not the same, more universal than single game patches. It'll take a little bit more time to cook though. I was hoping to get a lot of it done today, but alas I'm back in bed with the flu....

vale sparrow
#

Health is the most important thing—thank you both for your work!

civic relic
harsh ingot
#

You will have to wait

civic relic
harsh ingot
gleaming citrus
#

I've updated the Mindustry port one last time, to fix the control and fullscreen issues with CrossMix.
I've also tested it on AmberElec on my R36S, seems to work fine. 480x360 and 720x720 devices were tested internally by @blazing acorn at some point so i think we're good to go here.

I'll submit a PR soon to get this onto Portmaster. Thanks everyone for testing 🙂 Hoping for many more Java/libGDX ports in the near future!

https://drive.google.com/file/d/1Hf28fY__swMh8srcH3BF9AQ_IQes8-po/view?usp=sharing

blazing acorn
harsh ingot
#

Yep, that was on my oga

gleaming citrus
#

Awesome thank you!

civic relic
#

Good to pr?

blazing acorn
#

Already PR’ed

dusty glacier
#

Port looks great, tried on an rg35xxsp, clearly need a controller to play tho 😅

#

works with one!

gleaming citrus
leaden dune