An intersting gamemode idea...



  • I'm not a paid player. I can't get multiple rooms and power creeps, which are major parts of gameplay. So I have a new request: Survival single player. What is this? Its the same as the persistent world, but your by yourself, except for invader npcs and bots (or examples of players codes) you want. It should be free due to the server runs on your computer, but you can trade for your world (with other players), and there should be a Global power level and ect. (Note, the powercreeps are the same but only for your world.) How does this sound? I hope this get considered soon.



  • I think you can do much of that now with a private server on your local machine. The process could be streamlined (at least it was clunky last time I set one up).

    Contributing to the GPL, GCL, or trades from ScreepsWorld is a no-go (too easy to cheat). Copying the Screeps-World market info into a private server could be interesting, though.

    My final thought about about free players on shard 3. I thought the only limit was 20 CPU, and rooms and power creeps was only matter of grinding up your GCL and GPL?



  • How would you do that in your browser? (no downloads, on a chromebook)



  • The browser only driver is not opensource. I don't think the dev's want to opensource it either. But there nothing stopping anyone from writing an in browser driver.

    That driver would then need to connect to the actual market apis and download the info needed to "sync" with Screeps-World. There have been similar-ish efforts in the past to create sim that could be pointed at an existing room and copy everything there.

    If you're willing to go a little more crazy, there might be a way use the existing in-browser sim with #client-abuse and slurp the needed market in. But #client-abuse is inherently fragile, I wouldn't recommend it long term.



  • How would you use #client-abuse?



  • Ask in the #client-abuse channels. I think there is a shared repo somewhere.

    The high level idea is that console.log logs directly into the DOM. So if you log a <script>alert("hello world")</script> your browser will pop up an alert. From there #client-abuse has figured out how to get the browser and your screeps code to communicate back an forth.



  • How would you use that to get a market?



  • Here is my off the cuff design of how to add market data into Sim.

    • Use #client-abuse to inject javascript into the browser client.
    • The user screeps code creates two functions: abuseclientmarket and ingestmarket.
    • The human loads their screeps script up in the Sim and executes abuseclientmarket in the web client console.
    • The injected javascript "borrows" the browser's credentials of the browser to query to the market REST api.
    • The injected script then creates a web client console command to ingestmarket with the JSON data from the market.
    • ingestmarket uses the JSON data to create an api compatible fake of the real Game.market api.
    • The fake market updates / removes orders etc as the user interacts with the fake api.

    This could also be done offline without #client-abuse. Scrape the market REST api into a JSON string. Then paste that string into your screeps code. Then whenever you want to play with the market call injestmarket. The market data will be as stale as your last scrape.

    A key limitation is that there is no way for the Sim to affect the real Screeps World market in any way. The Sim is just getting a local copy.

    👍