Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rebalancing Ender Modems #955

Open
SquidDev opened this issue Nov 20, 2021 · 70 comments
Open

Rebalancing Ender Modems #955

SquidDev opened this issue Nov 20, 2021 · 70 comments
Labels
area-Minecraft This affects CC's Minecraft-specific content. enhancement An extension of a feature or a new feature. feedback wanted Tell me what you want, what you really really want.

Comments

@SquidDev
Copy link
Member

SquidDev commented Nov 20, 2021

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:

  • One can build a single GPS tower at spawn and cater to the whole server.
  • Wireless networking is entirely trivialised, as everyone (well, every turtle) gets a wireless modem.

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:

  • 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 modem1.

  • 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.

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 it2. 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?

Footnotes

  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.

@SquidDev SquidDev added enhancement An extension of a feature or a new feature. feedback wanted Tell me what you want, what you really really want. area-Minecraft This affects CC's Minecraft-specific content. labels Nov 20, 2021
@EmmaKnijn
Copy link

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
Copy link
Member Author

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
Copy link

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
Copy link

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
Copy link
Member Author

SquidDev commented Nov 20, 2021

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 mod1. Ender modems do add something, but also undermine a whole bunch of other features, and that irks me.

Footnotes

  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
Copy link
Contributor

Jummit commented Nov 20, 2021

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
Copy link
Contributor

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
Copy link
Contributor

SkyTheCodeMaster commented Nov 20, 2021

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
Copy link

migeyel commented Nov 20, 2021

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
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

Lupus590 commented Nov 20, 2021

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
Copy link
Member Author

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
Copy link
Contributor

More suggestions from discord:

  • default range of the ender modem is the same as a normal modem and doesn't consume water, extra distance does consume water.
  • no water in the nether, modem setups in the nether may be too difficult
  • separate long-range modems from cross-dimensional modems
  • cross-dimension messages need ender pearls to transmit
    • if we don't have a specialised cross-dim modem then a function to set this behaviour would be nice, not all messages need to go cross-dim and not eating all the pearls would be nice

@Lupus590
Copy link
Contributor

Lupus590 commented Nov 20, 2021

which I know were mentioned elsewhere.

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

@Lupus590
Copy link
Contributor

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
Copy link

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
Copy link
Contributor

SirEdvin commented Nov 20, 2021

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
Copy link
Contributor

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
Copy link
Contributor

@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
Copy link

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
Copy link
Contributor

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 SquidDev pinned this issue Nov 22, 2021
@SquidDev
Copy link
Member Author

[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
Copy link
Contributor

Wojbie commented Nov 22, 2021

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
Copy link

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
Copy link

KnightMiner commented Nov 26, 2021

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
Copy link

@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
Copy link
Contributor

SirEdvin commented Jan 19, 2023

'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
Copy link
Contributor

[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.

@EmmaKnijn
Copy link

@Lupus590 Yup, SquidDev has talked about how this should be a tweak.

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.

@powerboat9
Copy link
Contributor

Maybe give ender modems only ~16 times the range of a normal modem, but allow them to spoof their location? An ender modem at (0, 64, 0) in the overworld could be reconfigured to act as if it was at (5000, 64, 5000) in the nether for the purposes of range/distance calculation. You'd have to use some offset based off the modem's position and rotation.

@EmmaKnijn
Copy link

@powerboat9 Why would spoofing the location help? That is just a sidegrade from the current modem, can just grab enough modems, place them centrally and repeat commands, infinite range in theory

@EmmaKnijn
Copy link

I'd propose a larger range, and mapping the ender modem to be in the end and nether. In the end just a direct map and in the nether a 8x map. In case of the modem being placed in the nether just scale the map 8x down for the other dimensions

@powerboat9
Copy link
Contributor

@powerboat9 Why would spoofing the location help? That is just a sidegrade from the current modem, can just grab enough modems, place them centrally and repeat commands, infinite range in theory

You can always get practically infinite range by placing enough modems. Location spoofing would add a directional element to long range ender modem usage, incentivizing the creation of more complex repeater networks for long distance communication (one ender modem for settlement 1 <-> 2, one for 1 <-> 3, one with a custom program to track the player and their pocket computer, one to handle settlement 1 <-> blaze farm, etc.).

@osmarks
Copy link
Contributor

osmarks commented Feb 1, 2023

Configurable locations are an interesting intermediate point between linked modems and the current anywhere-to-anywhere thing.

@rdrpenguin04
Copy link

Would 1.20 be a good update to do this on?

@ajh123
Copy link

ajh123 commented Jun 9, 2023

Would 1.20 be a good update to do this on?

Probably, its a nice round number.

@SquidDev
Copy link
Member Author

One can build a single GPS tower at spawn and cater to the whole server.

One of the major blockers I've had here is what to do about GPS. I don't feel great about how trivial GPS is right now, but having access to GPS everywhere is incredibly useful, especially for pocket computers.

The design in the OP makes ender modems (or ansibles, following Wojbie's suggestion) a one-way long-range modem, which means that GPS would no longer work from normal wireless modems (as the initial PING would never be received). However, I was discussing this elsewhere, and it occurred to me that we could still allow for server-wide GPS if GPS hosts broadcasted a position packet periodically (every second or so). This way normal wireless modems will still receive the position packet and so will be able to trilaterate, just with higher latency.

Obviously we can't actually enforce how often the position packet is broadcast (you could write a program to do it every tick). Which is a bit of a shame - it would give you a nice tradeoff of local GPS (immediate) vs server wide (some delay, and thus less accurate) - but I don't think there's any way we can practically limit the number of modem messages if someone really wants to send them.

@powerboat9
Copy link
Contributor

Could modems have a distance beyond which messages to/from them don't come with distance information? It would prevent GPS from working at longer ranges, but keep long range message transmission.

@Lupus590
Copy link
Contributor

Lupus590 commented Jan 20, 2024

Maybe ender modems don't have a distance return value at all and thus can't be used for GPS.

@osmarks
Copy link
Contributor

osmarks commented Jan 20, 2024

Distances at long ranges could have added noise (scaling with distance), but this would break a lot of things and require smarter numerical algorithms in GPS.

@powerboat9
Copy link
Contributor

Distances at long ranges could have added noise (scaling with distance), but this would break a lot of things and require smarter numerical algorithms in GPS.

That would incentivize modem spam in order to average out the noise, unless the noise could be made systematic.

@EmmaKnijn
Copy link

I just thought of a couple things, including adding latency, adding packet loss (both depending on range from an ender modem) along with decreasing overall range.
You could also change the throughput of modem messages scaling with distance.
While offering upgrades with something like nether stars increasing one parameter a bit per nether star.
This is more akin to a real life cellular network and is reasonably easily balanced by changing base stats and upgrade amounts.

@KnightMiner
Copy link

I would be warry of any solution which just requires the player to add more ender modems to compensate. A lot of people download programs, so such a thing would just lead to more ticking block entities for the same result.

@osmarks
Copy link
Contributor

osmarks commented Jan 23, 2024

You could design against modem spam by doing things like limiting transmissions in an area by channel or group of channels and making distance errors systematic and variable by location, but at some point you would just be reinventing real-world radio and it could get annoying.

@powerboat9
Copy link
Contributor

Ender modems being able to spoof their location would work well with a smaller distance measurement range, especially if time/energy is required to retarget ender modems. You could still set up a GPS for your pocket computer (location spoofing with small changes in location over time), but multiple GPS towers would be incentivized.

@powerboat9
Copy link
Contributor

On second thought, GPS which dynamically retargets a pocket computer as described above would require knowledge of the pocket computer's current location, requiring some form of GPS access to begin with

@MageCoven
Copy link

I am very much in favor of adding a config for making Ender Modems only talk with other Ender Modems. It would make it very easy to balance them on a per server basis, especially if recipes can be modified with data packs. Making it a config will let the players make the choice of keeping it as it was or to use the change.

Since Wireless Modems have a longer range the higher up they are it would allow for some variable distance and additional difficulty in setup of relays that can cover an area. Although I don't even know how practical it would be with the current implementation of the variable range since I never had a reason to use it due to Ender Modems.

One could even have an area that is covered by a bunch of Wireless Modems and a central server that has both an Ender Modem and a Wireless Modem to talk between areas when there is a vast distance/different dimensions.

The GPS script could also probably be changed so that it would work more like how satellites work with only needing a connection to the closest three and outside the area it would need an Ender Modem to work. Although this would probably lead to Ender Modems being spammed whenever GPS is needed, but I suppose that if the server owner wants to avoid Ender Modem spam then they could change the recipe themselves.

Making it an opt-in option would also solve compatibility since it would have to be up to the server owner whether to change it or not.

@powerboat9
Copy link
Contributor

Another possibility would be using the communication range of the normal wireless modem during normal<->ender modem communication.

As a separate suggestion, in order to allow GPS to continue working, ender modems could be allowed to "overcharge" themselves for a single transmission. The transmission would have to be limited in size (number or <=32 byte string?) and would start a (~5 second? ~10 second? ~30 second?) cool down before the modem could be used again, but would bypass ender modem nerfs. This would incentivize local GPS relative to global GPS, but allow global GPS to still work in a limited fashion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-Minecraft This affects CC's Minecraft-specific content. enhancement An extension of a feature or a new feature. feedback wanted Tell me what you want, what you really really want.
Projects
None yet
Development

No branches or pull requests