Sandustry is a mining and automation game with pixel-based physics.

Wishlist on SteamJoin the Discord server

Falling sand

Everything in the game is part of a falling sand style simulation and it's up to you to curb the chaos.

Mining

Use various tools and weapons to mine and dig deeper and deeper for sand and raw materials.

Base-building

Setup your base and build a logistics network for transporting and refining sand.

Automation

Create an automated factory with increasingly intricate processing lines.

Exploration

Explore and discover temples and structures from an ancient civilization.

Bosses and puzzles

Fight bosses and solve puzzles to acquire key items.

Upgrades and tech

Unlock new refining methods and tech such as drones, new buildings and multistep processing. Upgrade your weapons and equipment.

Updated 3 days ago
StatusIn development
PlatformsHTML5
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorLantto
GenreSimulation
TagsAutomation, base-building, mining, Sandbox
LinksSteam

Development log

Comments

Log in with itch.io to leave a comment.

Maybe add an option to disable the lighting shaders when entering a cave? (WEB version) its a massive hit on performance

(2 edits)

Hey! Yes, good idea. Disabling shaders should be trivial to implement and I definitely need to add more options like that. Are you on a laptop with both integrated GPU and a dedicated graphics card? On my gaming laptop it defaults to the integrated GPU, so I need to manually set it to use the dedicated one. Otherwise I get similar performance issues.

(1 edit)

still get stuck on starting :(

Here is the console log. Can you find anything here?

Violation] Forced reflow while executing JavaScript took 54ms

js?id=G-36R7NPBMLS:539 [Violation] 'setTimeout' handler took 57ms

sandustry:1 Unchecked runtime.lastError: The message port closed before a response was received.

lib.min.js?1733736929:2 Unrecognized feature: 'monetization'.

xe @ lib.min.js?1733736929:2

He @ lib.min.js?1733736929:2

replaceWith @ lib.min.js?1733736929:2

(anonymous) @ game.min.js?1733736929:1

Deferred @ lib.min.js?1733736929:2

i.load_frame @ game.min.js?1733736929:1

(anonymous) @ game.min.js?1733736929:1

(anonymous) @ game.min.js?1733736929:1

(anonymous) @ bundle.min.js?1733736929:1

dispatch @ lib.min.js?1733736929:2

v.handle @ lib.min.js?1733736929:2

lib.min.js?1733736929:2 Unrecognized feature: 'xr'.

xe @ lib.min.js?1733736929:2

He @ lib.min.js?1733736929:2

replaceWith @ lib.min.js?1733736929:2

(anonymous) @ game.min.js?1733736929:1

Deferred @ lib.min.js?1733736929:2

i.load_frame @ game.min.js?1733736929:1

(anonymous) @ game.min.js?1733736929:1

(anonymous) @ game.min.js?1733736929:1

(anonymous) @ bundle.min.js?1733736929:1

dispatch @ lib.min.js?1733736929:2

v.handle @ lib.min.js?1733736929:2

lib.min.js?1733736929:2 Allow attribute will take precedence over 'allowfullscreen'.

xe @ lib.min.js?1733736929:2

He @ lib.min.js?1733736929:2

replaceWith @ lib.min.js?1733736929:2

(anonymous) @ game.min.js?1733736929:1

Deferred @ lib.min.js?1733736929:2

i.load_frame @ game.min.js?1733736929:1

(anonymous) @ game.min.js?1733736929:1

(anonymous) @ game.min.js?1733736929:1

(anonymous) @ bundle.min.js?1733736929:1

dispatch @ lib.min.js?1733736929:2

v.handle @ lib.min.js?1733736929:2

index.html:1 Unchecked runtime.lastError: The message port closed before a response was received.

bundle.js:2 createWorld 199.8200000000652

bundle.js:2 [Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952

(anonymous) @ bundle.js:2

mf @ bundle.js:2

(anonymous) @ bundle.js:2

(anonymous) @ bundle.js:2

(anonymous) @ bundle.js:2

o @ bundle.js:2

bundle.js:2 [Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952

(anonymous) @ bundle.js:2

mf @ bundle.js:2

(anonymous) @ bundle.js:2

(anonymous) @ bundle.js:2

(anonymous) @ bundle.js:2

o @ bundle.js:2

bundle.js:2 setupSession 145.53000000002794

[Violation] 'setInterval' handler took 317ms

Hey! Thank you. This is very useful. The error about ports closing seems like a breaking issue (since the game needs multithreading to work) but I'm not sure. Searching for it online brings up a lot of issues related to Chrome Extensions. Do you have any extension installed that could be the culprit?

(+1)

Interesting game, played through what is there so far. The sand physics is fun, the components to build from feel fitting together well to create interesting and functional contraptions. What I imagine would be challenging is to make the game mechanics (sand physics) fast enough for a solid, smoothly going game, it struggles a fair bit already for the later goals (was playing on Chromium).

Thank you! Yes, performance will definitely be challenging. In retrospect I've made many dumb choices when building the engine but hopefully I can mitigate it. Would be really sad if I had to add artificial restrictions just because the engine can't handle scaling a big factory.

Just a bit of curiosity - what this is programmed in? Seems like a fun bit of challenge to figure out how to push that core mechanics to be able to go far and beyond!

Hey! (Didn't see the reply until now.) It's all JavaScript. The biggest problem is that I can't share arbitrary memory between threads so I have this convoluted solution that would be completely unnecessary in other languages. The simulation wouldn't be possible without multithreading so it's kind of frustrating but still fun to work on!

(+1)

Very good game, love to see more, but can there be a way to get the save code, for example: if someone was to change the device they were playing on, they would have to restart, or was in incognito mode, or cleared cookies, but otherwise, good!

Thank you! Yeah, I totally agree. This version is an early playtest so it lacks a lot of Quality of Life features that I really need to fix. Let me know if you have any other feedback!

Are moving contraption planned?

Hey! Depends on what kind of contraptions you had in mind but I'm open for ideas and suggestions.

Like cars and rockets maybe even mechanical arms

(+1)

Very fun already! I look forward to the rest of the game :]

Thank you! :)

(1 edit) (+1)

Interesting concept. Love the physics simulation.

How can you make water vapor condense if it is trapped in caves?

Thank you!

You've actually highlighted an issue for which there's currently no good solution. I should probably add to the Itch page that this is a playtest of the alpha, so a lot of stuff is still missing. The idea is that you will eventually have a "freeze gun" that you can use to condense steam back into water manually.

(1 edit) (+1)

I was kind of expecting it to cool off after a while and condense by itself. Similar to how it behaves outside. I also tried to put snow there. Just sharing my thoughts.

guess the part with the teal colored wall is demo how to do off limits in the alpha. i was able to clip by moving objects. :-)

That makes sense to have it automatically condense by itself. Good suggestion!

Yup, that was supposed to be off-limits, so nice catch! :D Let me know if you find any other bugs—I'm sure there are plenty.

Deleted post