cc-tweaked / CC-Tweaked

Just another ComputerCraft fork
https://tweaked.cc
889 stars 207 forks source link

Rebalancing Ender Modems #955

Open SquidDev opened 2 years ago

SquidDev commented 2 years ago

TLDR: Ender modems are OP.

CC 1.6 introduced the repeat program, which allows rednet to relay messages between computers. The intent here was to allow more long-distance wireless communication through the use of repeater stations. However, 18 months later CC introduced ender modems, which allow for infinite range communication, making both wired modems and the repeat system obsolete.

Nowadays there's very little reason to craft a normal wireless modem, aside from very early game. This has several side effects:

This has undoubtedly made things easier and more accessible, and so I don't think there's any harm leaving things as is. However, modded Minecraft (tech mods especially) is basically a big infrastructure management game. It makes me sad that CC trivialised one of its hardest problems, and it would be nice to rebalance things.

I think I'd propose the following changes:

Basically what I'm trying to encourage is having to think about (and build) infrastructure around your turtle setups. You can't just plonk down a few turtles and set your mining swarm loose. You need to place down an ender modem to communicate with them over a long distance, need to make sure they stay within range of the repeater station. Maybe you need a GPS tower too?

I don't know, maybe this is just adding complexity for the sake of it[^2]. I'm very wary that what I'm suggesting here is making things actively harder for the player, maybe it's just too late to change things. Thoughts?

[^1]: While the BitNet Communication Tower is not the aesthetic I'm going for, I do really like the concept and mechanics - definitely an inspiration here. [^2]: And I'm very aware that CC (CC:T especially) has far more OP features. Looking at you item transfer.

EmmaKnijn commented 2 years ago

I do agree that this should happen, would also add some extra challenges to write code for. Only concern I have is world compatibility. Big servers have a ton of ender modems and that should be accounted for when rebalancing this.

SquidDev commented 2 years ago

I think the plan would be to make this change in a major Minecraft version (so 1.18 or 1.19). Most people don't tend to upgrade worlds between versions, and those that do expect some level of breakage. I suppose we could convert all ender modem upgrades to normal ones in this case, though would rather avoid it.

asiekierka commented 2 years ago

Alternatively, make ender modem turtle and pocket computer upgrades creative-only. This way, world compatibility is preserved and modpacks can add recipes for these if they want the unbalanced lifestyle.

Either way, it's surprising to see "ComputerCraft" and "rebalancing" in the same sentence. While I like the idea, one has to ask themselves if every Minecraft mod has to be perfectly balanced.

EmmaKnijn commented 2 years ago

That could work, world compatibility is preserved, but ender modem upgrades can be used whenever you need to, either enabled by the server owner, or you.

SquidDev commented 2 years ago

Alternatively, make ender modem turtle and pocket computer upgrades creative-only. This way, world compatibility is preserved and modpacks can add recipes for these if they want the unbalanced lifestyle.

Yeah, that's a fair point. CC's upgrade system isn't really data-driven enough to enable that right now, but probably should look into changing that too. Would mean we can replace/supplement the CraftTweaker integration with something more vanilla-esque.

Either way, it's surprising to see "ComputerCraft" and "rebalancing" in the same sentence. While I like the idea, one has to ask themselves if every Minecraft mod has to be perfectly balanced.

Oh, this isn't the start of a nerfing spree or anything. I'm well aware that CC has plenty of other unbalanced features, I just think in most cases they add something to the mod[^1]. Ender modems do add something, but also undermine a whole bunch of other features, and that irks me.

[^1]: As mentioned in the OP, item transfer is super broken but unlocks so much it's Worth It. Turtles too, though probably less so in today's modded landscape.

Jummit commented 2 years ago

Nowadays there's very little reason to craft a normal wireless modem, aside from very early game.

Isn't that the case for non-advanced items too? I don't think there is a reason to craft them in any modpack aside from very early game. This makes me wonder if nerfing modems is the right choice.

Lupus590 commented 2 years ago

Continuing this slightly off-topic discussion of not crafting non-advanced items in the late game, I rarely craft advanced versions of things. I don't use monitors (advanced or not) and a lot of my programs don't have fancy UI systems that need mouse support or colours. I make for ender modems for my GPS and repeater setup and that's it for advanced items I believe.

It might be that I'm bad at collecting resources, or that some people are used to more than ore doubling, or maybe I just like being resource-efficient. That said, before I stopped playing my 1.16.5 world I was overflowing with gold.

SkyTheCodeMaster commented 2 years ago

Personally, I think that any changes should be reversible via config, because I personally love how ender modems are. I do agree that they should only have infinite range when talking to other ender modems, the infinite range for even normal modems is a bit weird to me.

The turtle/pocket limitations should definitely be put into the config so that players/servers like myself can enable them for turtle/pocket computers. For me, the only peripheral I ever put on pockets is an ender modem, because that's what I think is the only suitable peripheral for them, without communication they basically become useless.

Of course, this can all be bypassed with websockets, but who would do that? (I think this would be a fun project to get around these limitations, provided you have a server capable of hosting a websocket bridge thing.)

migeyel commented 2 years ago

Of course, this can all be bypassed with websockets, but who would do that?

I feel that if the way the rebalancing is implemented isn't fun to do then everyone will eventually get tired and defer to using some websocket server hosted by someone else.

Lupus590 commented 2 years ago

People have been talking on discord about adding resource consumption for ender modems (one even suggested being able to change the number of resources consumed to increase the range of the ender modem - if the range of the modems changes).

This idea gave me an idea of making ender modems water-cooled, CC can already move items and fluids, and turtles can collect water from the world. So using just CC one could feed the new modem buckets of water, and if another mod adds a tank that can empty buckets then CC can use that to move fluid water into the new modem.

SkyTheCodeMaster commented 2 years ago

Then what? Add a condenser block that turns steam into water and create a closed cooling loop? Condenser has to be placed in water maybe... that actually sounds like a fun addition.

Lupus590 commented 2 years ago

Water is infinite so I would just have the modem void the appropriate amount when it sends a message.

The appropriate amount decided by the range, which could be changed via a function on the peripheral.

SquidDev commented 2 years ago

Isn't that the case for non-advanced items too?

Yes, though I feel maybe less seriously? I very rarely craft advanced turtles for instance, can get away with normal ones.

[Websockets]

I'm choosing to ignore websockets as I think by using them instead of rednet you're already making a conscious decision to sidestep CC's mechanics. GPS aside, there's very little reason why you wouldn't use them already - they're better than modems in every way!

[Water cooling]

I really don't want to add any new mechanics here, just tweak existing ones. Same goes for energy costs, which I know were mentioned elsewhere.

Lupus590 commented 2 years ago

More suggestions from discord:

Lupus590 commented 2 years ago

which I know were mentioned elsewhere.

discord, it's what gave me the idea of water cooling

Lupus590 commented 2 years ago

Another mechanic idea, what if ender modems need to be in the same plane for long-distance messages? This would mean that they would need to share 2 of either their x, y, z positions.

KnightMiner commented 2 years ago

I like the original idea of only allowing infinite distance if both modems are ender modems. It means there is a reason to update to ender modems everywhere, or you can save on resources by setting up relay towers near large areas of modems.

For the idea of disallowing it on turtles, I feel the best approach is splitting the turtle peripheral custom recipe into a recipe for each peripheral. It is relatively trivial with how crafting table recipes are set up to define custom serializers for recipes, so a format of ingredient -> peripheral would allow easily changing or disabling individual peripheral recipes. I have a lot of experience with custom recipe serializers if you want some pointers on this idea. What this would mean is you could either disable or enable turtle ender modems by default, then make a datapack for the other behavior.


Another mechanic idea, what if ender modems need to be in the same plane for long-distance messages? This would mean that they would need to share 2 of either their x, y, z positions.

This is an interesting idea, though worth asking, are you still expecting ender modems to only work with ender modems? Or is this just for mismatching modems?

SirEdvin commented 2 years ago

Personally, I understand problem, but I don't like suggested solution.

Both solution will lead us to just setup additional computer to be a relay from infinite network to finite once for turtles. Pocket computers will be just smashed away, they are not very useful now and with this changes they can only serve like limited remotes, which is not so cool, as infinite remotes.

If we need a to add network complexity, maybe, we should rework network somehow and force players to run satellites to serve like infinite network and make them to collapse time by time? But I guess, this is really will be another mod

Lupus590 commented 2 years ago

I'm starting to really like the infinite plane idea, it's still quite easy to set up a repeater network for server-wide comms but means that one GPS array can't cover the whole server anymore. Yes, setting up that repeater network might be a bit more difficult and expensive, but that's arguably the goal of this change.

@KnightMiner If I was implementing this then I would have it that longer than normal modem range would require a shared plane. My intent would be to make it a CC like narrow beamed communication method. These ender modems would essentially have a normal modem built into them as well.

As for if a normal modem would be able to receive those long-ranged beamed messages, I'd defer to the community opinion on that, in my mind the CC way would be to allow them to receive those messages, but with how I have in my head of those beamed messages working, I feel like they should be incompatible.

@SirEdvin If your remote control program uses rednet then you can use the repeat program to extend its range. So I don't think pocket computers will become any less useful than they already aren't. Also, the idea of satellites collapsing doesn't sound very CC like.

SirEdvin commented 2 years ago

@Lupus590 how does repeat program extend its range? I mean, if we speaking about mp server, when you can't have chunk loaded every 64-128 blocks

KnightMiner commented 2 years ago

Both solution will lead us to just setup additional computer to be a relay from infinite network to finite once for turtles. Pocket computers will be just smashed away, they are not very useful now and with this changes they can only serve like limited remotes, which is not so cool, as infinite remotes.

Why does this change negatively affect pocket computers? Just put an ender modem on your pocket computer (if that is not supported yet, might be worth supporting). In my mind, the proposed change only actually nerfs a type of computer if you disallow ender modems on turtles. Otherwise you have all functionality that existed before as long as you use ender modems everywhere. Makes their increased cost mean more.

SkyTheCodeMaster commented 2 years ago

In the very first post, one of the proposed changes is removing ender modems from pocket computers.

Remove ender modem turtle and pocket computer upgrades.

SquidDev commented 2 years ago

[Planar modems]

I really don't want to add any new mechanics here, just tweak existing ones. Not that I think they're bad suggestions, just don't think suitable for this change.

[Pocket computers]

This is true, and not something I'd really considered - was mostly thinking about turtles here. Obviously one can draw real-life parallels here - my phone doesn't work in the middle of nowhere - but that's not really been much of a concern within CC.

I guess I'm kinda hoping that #861 balances things out here - pocket computers become more useful in some ways and less useful in others? Hehe, no clue.

Wojbie commented 2 years ago

I think I'd propose the following changes:

* Remove ender modem turtle and pocket computer upgrades. Ender Modems can now only be used as in-world peripherals. We might want to remodel and rename them so they more obviously distinct from the wireless modem[1](#user-content-fn-1-1e8b5b2a5c5d9882b48dae62fd07a04e).

* Ender modems now only have infinite range when talking to other ender modems. When talking to wireless modems, they use the distance of the wireless modem instead. We might want to adjust the max distances of wireless modems to account for this.

I thought about this over the weekend and in my opinion this might just be best solution? For rebrand/rename i would propose "Ender Ansible" to differentiate it from normal modems and explain why they communicate on separate network.

In fact I propose going for 2 extra limitations to flesh it out.

  1. Ansibles speak only to Ansibles and Modems speak only to Modems. Removing ability to cross talk would make it more clean break between two systems. (After all they are different technologies)
  2. Replace "Eye of Ender" in recipe of Ender Ansible with "End Crystal" (Might even be part of new model if its not too cursed to implement. It would fit ansible theme.) This slightly increases the price of making one and requires a bit more work then just slaughtering the end and some blazes while not making the cost be too much..

Additionally i do agree that increasing the ranges of normal modems would make this changes seem more fair. (Changing the range math is already a must with upcoming world height change anyways.)

All of this would mean that everyone base/common existing spot will have either Ansible <-> Modem relay or GPS Satellite with that functionality. Basically making it so if someone wants to be able to use pocket everywhere they go they have to either use infrastructure someone else made (be it using build in repeater program or custom ones) or build their own if they don't trust them.

On side note for backwards compatibility ender modems should stay ingame but be rendered uncraftable and have their functionality be limited to normal modem.. This would make sure someone can bring world over to next version (and back) and not have to replace all the modems they have ever placed (or have on turtles/pockets). Kinda backwards compatibility?

EmmaKnijn commented 2 years ago
2. Replace "Eye of Ender" in recipe of Ender Ansible with "End Crystal" (Might even be part of new model if its not too cursed to implement. It would fit ansible theme.) This slightly increases the price of making one and requires a bit more work then just slaughtering the end and some blazes while not making the cost be too much.

On some servers the nether is semi broken, ghasts don't spawn, maybe a way to make ender modems or "Ansibles" with different recipes, changeable in config. Would be easy enough to manage in a sever environment i think.

KnightMiner commented 2 years ago

On some servers the nether is semi broken, ghasts don't spawn

Sounds like a problem with the server. I don't think mods should be balanced around "some" servers being broken.

maybe a way to make ender modems or "Ansibles" with different recipes, changeable in config. Would be easy enough to manage in a sever environment i think.

Isn't that what datapacks are for?

EmmaKnijn commented 2 years ago

Isn't that what datapacks are for?

AFAIK datapacks don't exist on 1.12.2

EmmaKnijn commented 2 years ago

Nvm wojbie just told me this change was for 1.17.1 onwards so that point doesn't stand

RGFTheCoder commented 2 years ago

Personally, I would want ender modems to have a limited range identical to regular wireless (maybe a bit larger), but they can go across dimensions. This means an ender modem at 100,100 in the overworld could talk to one at 100,100 in the nether, but not to one at 100,1000 in the overworld. (Not applying nether scaling since many dimensions don't have it.

SquidDev commented 2 years ago

I don't think directly mapping locations really makes sense. Aside from the nether, where you'd definitely expect them to apply nether scaling, there's also dimensions where you can't access all locations (e.g. compact machines), and so you need infinite distance.

ramonGonzEdu commented 2 years ago

With compact machines, one could just match the location in the overworld, or possibly add a modem which can be linked to 1 other modem wirelessly, rather than an infinite amount.

SquidDev commented 2 years ago

"math the location in the overworld"?

Lupus590 commented 2 years ago

"math the location in the overworld"?

You know, life, the universe, everything == 42 it's basically addition. 😛

SkyTheCodeMaster commented 2 years ago

I still definitely think that all of this should be behind a config, or even just a datapack to bring back old ender modems I love how the current ender modems are, for obvious reasons, and I'd really hate for them to change.

ramonGonzEdu commented 2 years ago

"math the location in the overworld"?

*Match

KMorris29 commented 2 years ago

As someone working off-and-on with an adventure map featuring remote-controlled turtles, the first change gives me concern. I do understand that my use-case is pretty rare, and that the repeat function is pretty useless right now... so I am of the camp that if you do change ender modems, you should also add a creative-only "infinite modem", which literally just acts like the current ender ones, and can still be given to turtles/pocket comps. The change to make ender modems only high range if talking to other ender modems though? 100% support.

ramonGonzEdu commented 2 years ago

Another mechanic idea, what if ender modems need to be in the same plane for long-distance messages? This would mean that they would need to share 2 of either their x, y, z positions.

This would mean that you'd need occasional gps towers (since they can't be on the same plane), but could get away with a 384 block tall tower at spawn and have each computer on repeat. Thats only ~3000 gold ingots (~3000 iron, ~400 redstone, ~400 ender eyes), which is relatively easy to get with the nether gold and turtles.

LoganDark commented 2 years ago

With compact machines, one could just match the location in the overworld, or possibly add a modem which can be linked to 1 other modem wirelessly, rather than an infinite amount.

I'd appreciate modems that can be permanently linked to one another, but I'd use it for using pocket computers as a remote control. If this is something @SquidDev would be interested in I can draft up a feature request for it.

DVD-DAVIDE commented 2 years ago

I like @Wojbie idea of Ender Modems (or Ender Ansibles) having their own network/frequency and being more expensive, and I think one could also make them unavailable for turtles (so you have to create a local wireless modem system), but pocket computers should have it available as an option. For example, I might want it to tell me what's happening at my home while I'm away/exploring/etc, and one can't really bring computers and modems to have a relay every few blocks.

m-doescode commented 2 years ago

While I understand the concern as to how OP ender modems currently are, I'm sure if it was pushed straight into default it would break a lot of programs, worlds, and servers.

If it is going to eventually be added, I hope it will be behind a config. E.g. "enable_limited_ender_modems" or something.

Or, if it for sure will be pushed into default, at least give us the ability to switch back to how it was in the config. Much like how the turtle fueling can be turned off by setting "need_fuel" to false in config.

promitheas-nikou commented 2 years ago

You don't have to remove ender modem functionality, just make it very difficult to use them: you can for example require a multiblock (or something else, if that doesn't fit in with the mod's style) to use the ender modem, and also require nether star in crafting recipe, or consume fuel to send data.

Also, wired modems are not at all obsolete. They must be used to access peripherals, and they also allow players to create hidden networks (e.g. in a secret base), unlike the wireless and ender modem, which can easily be located.

osmarks commented 2 years ago

Perhaps it would be cool to make ender modems work like OC linked cards - you make them in pairs and each pair can communicate only with the other one. This would incentivize development of actual routing systems. The existing ender modems could remain as a creative item.

Anything running on consumables would be really impractical without extra mods, and adding nether stars just seems boring.

promitheas-nikou commented 2 years ago

It seems weird though, that turtles require fuel to operate, and computers don't. Maybe at least the ender modem should require some fuel (or even RF, but that seems unlikely)

itisluiz commented 2 years ago

Multidimensionally wise, we could have wireless messaging go through portals, so the distance to a modem to another dimension would be the sum of the distances from both modems to their nearest (linked) portals. Though if you were to allow signals to enter more multiple portals (overworld -> nether -> overworld) for example, you could have your signal extended due to the (1:8) nether ratio.

osmarks commented 2 years ago

That might not interact well with modded "portals" like ExU deep dark ones and compact machines (I don't know if these are relevant after 1.12, but I'm sure there are similar things).

ajh123 commented 1 year ago

Another mechanic idea, what if ender modems need to be in the same plane for long-distance messages? This would mean that they would need to share 2 of either their x, y, z positions.

But then one could make a 'Great Wall of Ender Modems' to bypass this, but they will need to gather the resources in survival.

For modpacks, if an energy mod is installed (many use simple Forge Energy), then computers and peripherals (and Ender Modems? )could consume energy. This would mean in modpacks a player can't just get a computer in the first night, as they need to power it. Also the amount of energy that is consumed should be able to be changed in the config, like the Turtle's fuel.

Also, because we have dyeable Turtles can we have dyeable Network Cables, which different colours won't join. This may make people want to use Network Cables as they can run them in parallel in tighter spaces.

kristibektashi commented 1 year ago

I believe there should be a "Linked modem" of some sort similar to Linked Card from OpenComputers that is crafted in pairs and each one only communicates with it's pair.

EmmaKnijn commented 1 year ago

@kristibektashi @osmarks I'm wondering how linked modems rebalance the ender modems in general, considering they would be a seperate block, they might replace ender modems but that would create issues with existing servers: Where would you link the replaced modems. In case of a seperate recipe, how would you compensate for the price difference

For modpacks, if an energy mod is installed (many use simple Forge Energy), then computers and peripherals (and Ender Modems? )could consume energy.

As far as I know CC has been a standalone mod for ages, I don't think this is a good solution, @promitheas-nikou is on the right track though, although its not perfect, fuel can be produced in mass very easily with CC, a seperate fuel item also doesn't seem great though

I think multiblock structures would be out of place as well.

Removing the ender modem from turtles and pocket computers is an option, but on a turtle you could make the ender modem pull from the turtle's fuel, decreasing complexity.

Moving the ender modem to a config option or the creative menu seems like a good idea in general, transition for servers would be less harsh that way

I've heard some people say this shouldn't be rebalanced because websockets exist, and I don't really agree with that. Websockets require real life hardware that costs real life money, thus shouldn't really be compared with ender modems

SirEdvin commented 1 year ago

'm wondering how linked modems rebalance the ender modems in general, considering they would be a seperate block

They will allow to archive same result as current ender modem, but will require a bit of setup to connect to distance networks.

Lupus590 commented 1 year ago

[Removing ender modems] would create issues with existing servers @EmmaKnijn

This kind of change is very likely to be done over an MC major version change and be marked as not allowing clean forward compatibility, which I believe is the norm for MC mods (to have breaking changes lining up with big MC updates). I doubt that SquidDev would put this in a regular release without warning.