swarm-game / swarm

Resource gathering + programming game
Other
838 stars 52 forks source link

Environmental sensibilities #348

Open byorgey opened 2 years ago

byorgey commented 2 years ago

This is pretty vague, but I've found myself troubled by the "strip mining" aspect of resource-gathering games like Minecraft and Factorio, in which certain resources are non-renewable, and the only way to play the game is to simply strip the world of these resources, searching father and farther afield as you use up the resources near you. Factorio is particularly problematic, as you explicitly cause pollution which angers the native residents. But it's OK to strip the resources of an area, pollute it, and kill the natives when they get upset, because, you know, they are evil non-human savages! =(

Minecraft is a bit better --- there are renewable as well as non-renewable resources. But there doesn't seem to be any way to avoid using up resources like iron, coal, etc.

I would like to make it at least possible to play Swarm in a more "environmentally sensitive" way, whatever that might mean, and want to brainstorm some ideas or directions we could take this.

xsebek commented 2 years ago

We could also allow players to stick to renewables for the price of lower efficiency/speed.

For example, once we have iron and advanced recipes we could still allow players to make complex stuff from wooden gears. (DaVinci achievement?)

byorgey commented 2 years ago

Yes, and maybe there are other incentives to stick to renewables:

byorgey commented 2 years ago

Maybe there could be some kind of advanced "fusion reactor" or "matter condenser" device which allows you to do things like e.g. make iron out of wood, you know, by rearranging the fundamental subatomic particles.

byorgey commented 2 years ago

I had a potentially interesting idea, which goes something like

p3rsik commented 1 year ago

Hey, I'm new here, but have an idea for this issue :) What do you think of robots having a battery which needs to be recharged? That way you would need to setup recharging station in the world(or maybe extend poles, so that bots would be "wireless"'ly charged). And if you want to integrate the renewable vs non-renewable resource theme here, you could think about where this energy would come from(for example, coal power plant vs solar panels with batteries). This will also allow for the scenarios that @byorgey wrote about in here(#550), where you would have limited resources(limited battery charge in robots) to do complex and challenging tasks.

byorgey commented 1 year ago

@p3rsik I am not a fan of all robots having a battery which always needs to be recharged --- you would have to think about it constantly and it would become a sort of central, overriding concern, and one more thing that could go wrong. e.g. imagine you are coding a robot to do some complex task but then it fails in the middle because you forgot to allow for it to charge its battery sufficiently --- that would be super annoying because you are trying to work on this higher level of abstraction but then you keep having to worry about this low-level detail.

However, a battery mechanic could be interesting if it is relevant only in certain situations/devices. As a simple example, imagine if there was some other kind of high-powered drill which lets you drill faster, or maybe some special kind of treads that let you move faster, but they require a battery. So you could choose to use those but then you would have to worry about charging the battery, and about where the energy comes from.

And by the way, instead of having a battery device (which would have to have some special code to keep track of its "charge level"), we could just have energy entities, and recipes for producing energy in various ways (the recipes could require a battery device to be present). Then you could have e.g. 27 energy in your inventory, and using certain devices could consume energy (via a recipe, or via #1524 if we implement that).

p3rsik commented 1 year ago

@byorgey absolutely! We could take inspiration from Factorio bots here, where they go in the "slow" mode when the battery charge runs out. So thinking about energy can be only for the cases where you want "maximum perfomance" for the particular task, or something like that. Alternatively, there is a way of going with this whole "stages" idea, where you gradually develop technologies and unlock new capabilities. For example, installing a solar panel on the bot would allow it to operate in "perfomance" mode always, as opposed to bots that don't have it and must concern themselves with being energy-efficient.

I cannot talk about particular implementations yet, since I'm not yet familiar with the code enough, so I would skip that part of conversation, if you're okay with that.