An interesting idea to use portals instead of terminals.



  • TL;DR:

    Add a new pocket dimension of rooms in each shard. The world is mapped onto terrain layout of those rooms with one shard room per pocket squircle. Regular creep actions are used to conduct trades or terminal transfers. The center portal in each chunk is now permanently connected to portal squircle in the portal rooms. Using the portals is allows predictable long distance travel.


    What:

    Create a pocket dimension in each shard. The central portals would connect to the pocket dimension instead of each other. Each room in the pocket dimension maps to a full 10x10 chunk in the shard. The terrain walls are placed to mirror which rooms are connected to each other. Each room in the shard maps down to one squircle. Claimed rooms have a rampart placed over them. Rooms with a Terminal have an ephemeral terminal under the rampart preventing access to other players with the usual public / private mode.

    Creeps would get new intents to buy or sell from terminals within range. A buy intent is limited to the capacity a creep has and the credits available to the player. The credits are deducted and the resources are withdrawn from the terminal and transferred to the buying creep. Similarly for a sell intent from a creep.

    To make getting the central portal in each chunk would raise the bar for terminal and market use. So Terminal can used as a one way warp to the portal room.

    Why:

    • Local Combat
      It's been long argued that local combat is more fun. It's gotten to the point that the devs are revising the API for the terminal to limit the transfer rate. With the portal dimension blockades are feasible for both terminal transfers and market orders. Further the blockade is dynamic thing where a single lapse on the attacker doesn't completely open Terminal to a flood of resources. Further busting or blitzing a blockade are now options.

    • Market piracy
      There is very little incentive to get local players to cooperate with resources. It's easier to just use the magic global market. Yet another level of play is to intercept a player market caravans and plunder some resources.

    • Performance
      The market and terminal are currently global intents and must use the global processor. Avoiding the global processor increases the parallelism and remove once source of slow ticks.

    • Long distance hauling
      Long distance resource movement is hard and expensive and Terminal beaming is too easy and too efficient. Now players would be able implement long distance hauling as part of using their terminals to share resource between their rooms. Looting the corpse of fallen enemy and just get the resource into the portal dimension and get within range of you your terminals to drop it off.
      The 10 rooms is near the maximum influence players will usually allow creeps to wander. 5 is much more typical with 15 being absolute 1500 lifetime limit. Using portal rooms hop in then out extends the range to about 100 rooms.

    • Chunk differentiation: Many of the chunks are very uniform. The central chunks are slightly preferred for commoditiy access. The local market effect could also differentiate the chunks, with some having more diverse markets or proximity to pirates or tiggabot.

    • Chunk defense
      Players with higher GCL and rooms to spare can use their rooms to secure their local chuck to prevent intruders from portalling in. The ramparts over each claimed room can be used to deny access to chunk portal squircle.
      Newer players may also get in on the portal defense as their rampart are indestructible giving them a dominant defense

    Random boring details

    The portal room doesn't completely solve to the cross room coupling that the global apis cause. However, It does effectively chop it up into many pieces. This can be further improved by making all Terminal intents duplicate into their portal room as well as the players room (duplicated in the runner not the processor). The duplicate intents ensure the view of resources in consistent between the portal terminal and the room terminal with out needing to use the global processor

    The pocket dimension should be be "in" the shard. Drawing them in the world is interesting, but they could just as easily be drawn like shard in the UI.

    If the pocket dimension stuff works well, it might be an interesting way to update the intershard portals with a pocket shard.

    I have not considered whether the environment should be agro or not. I kinda think npc creeps would fit with the rest of the screeps theme. Maybe another incentive to wipe or cores is to keep your portal room clean.

    The shards are 20 x 20 chunks so the portal rooms would require 400 new rooms, so 4 chunks worth. I don't know how tight the cpu budget is for a shard but hopefully 400 chunk shard can handle 4 extra chunks. Alternatively it should be possible to fit 4 chunks into one room.

    Brief estimate of work to pull this off. This reuses a lot of existing systems, but new stuff will of course be needed.

    • new creep buy / sell intent
    • new Terminal warp intent (reuse existing portal code so they appear randomly in portal room?)
    • new ephemeral terminal structure (reuse graphics)
    • vet dual intent idea to avoid the global processor
    • implement dual intents for terminal intents.
    • script to create a room terrain based off of the chuck.
    • double check that rooms with owned structures owned by different users is ok (this doesn't occur anywhere else).