@w4rl0ck Actually, I like this idea. Something like StructureSiege
which competes with the controller for control over the room, and should be somehow interacted as well. Does anyone want to elaborate this mechanic a bit?
Best posts made by artch
-
RE: PvP balancing: Reduce maxHits on walls/ramparts, controller downgrade time
-
PTR Changelog 2017-09-14: WebGL renderer (WIP)
This post describes changes on the Public Test Realm.
We're introducing a new WebGL game renderer based on PixiJS library. You can read more about the motivation behind it in the this blog post. In short, it allows to make game animations smoother, less CPU-consuming, and add epic visual effects.
This experimental feature is still work-in-progress. You can switch to the new renderer using this option in the sidebar:
Things to be done:
- Missing game object details and animations;
- Render quality is not good enough yet;
- Room dynamic lighting;
- Special effects (see examples here).
Since it's still in early development, there's no need to report missing features (e.g. incorrect objects behavior and animations), we're actively working on them. Instead, what we'd like to test is general WebGL compatibility on your setup. Please try this new WebGL display mode and give us feedback about your general experience using it.
Moving forward we want to take this new client one step further. We are considering open-sourcing the toolkit and adding an ability to create mods for Steam client. This will allow private server owners to easily modify game graphics on their servers, add special effects and animations. We also would like to explore the possibility to add room decorations and creep animations into the game. And PixiJS rendering capabilities will allow to make them really visually appealing.
-
RE: Future of Screeps: What do the devs envision?
I think there's two ways to do this, one of which is hosted and would require more work from the Screeps team, the other self hosted and would require less (it could even be a community based project).
True. And there is one more way - to improve Simulation mode so that it can persist game state, and allow this state to be shared to other users. A teacher would create a "task" or a "quest" for his students and see how they solve it. Such direct and easy approach might be even more suitable for in-class activities than managing a full-scale world, and it is completely free since it can be done via the web site registration only, Steam purchase is not required.
-
PTR Changelog 2017-09-25: WebAssembly support
This post describes changes on the Public Test Realm. The estimated launch date is December 14.
Enabled experimental WebAssembly support. WebAssembly is a binary compiled code format that allows to run C/C++ or Rust code (as well as other supported languages in the future) directly with native performance. Please refer to the WebAssembly documentation for more info.
This is an experimental feature. We need your feedback in order to decide if it worth it. Please share your experience of what you were able to build using WebAssembly.
Example
Here is a short example of how to compile C/C++ code using Emscripten and upload the binary file to Screeps.
Build
.wasm
fileYou can skip this step if you use an already compiled
.wasm
file from the web.Install Emsripten SDK using these instructions.
Write your native C function and save it as
addTwo.c
file:int addTwo(int a, int b) { return a + b; }
Compile it to
addTwo.wasm
using this command:emcc -s WASM=1 -s SIDE_MODULE=1 -O3 addTwo.c -o addTwo.wasm
Upload binary module
Using the in-game IDE
Add a new module
addTwo
with binary type using this switch:Upload your
addTwo.wasm
file as binary module contents, so that it looks as follows:Click the ️ button to commit your modules.
Using grunt-screeps
Switch your
grunt-screeps
to thebinary-upload
branch on GitHub:npm install screeps/grunt-screeps#binary-upload
Now all files with extensions other than
.js
will be uploaded as binary. Copy youraddTwo.wasm
file to your upload folder and modify theGruntfile.js
so that it includes.wasm
files as well:module.exports = function(grunt) { grunt.loadNpmTasks('grunt-screeps'); grunt.initConfig({ screeps: { options: { email: 'YOUR_EMAIL', password: 'YOUR_PASSWORD', branch: 'default', ptr: true }, dist: { files: [ { expand: true, cwd: 'dist/', src: ['**/*.{js,wasm}'], // <---- flatten: true } ] } } }); }
Run
grunt screeps
to commit your modules.Run your native module in Screeps
If you uploaded your binary module correctly, you should see the following in your in-game IDE:
Now you can use the following code to run your imported binary code in
main
using WebAssembly API:// This will return an ArrayBuffer with `addTwo.wasm` binary contents const bytecode = require('addTwo'); const wasmModule = new WebAssembly.Module(bytecode); const imports = {}; // Some predefined environment for Emscripten imports.env = { memoryBase: 0, tableBase: 0, memory: new WebAssembly.Memory({ initial: 256 }), table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' }) }; const wasmInstance = new WebAssembly.Instance(wasmModule, imports); console.log(wasmInstance.exports._addTwo(2,3));
-
RE: Any chance of power creeps in 2017?
It mostly depends on how quick we'll be able to integrate
isolated-vm
, since it's still in priority. Power creeps are in the backlog right after this. -
RE: PTR Changelog 2017-09-25: WebAssembly support
@shedletsky You don't need to know other languages, you are able to use them, that's a big difference. JavaScript is performant enough if used properly. But now you have a choice.
Supporting WebAssembly is just a side effect of upgrading to Node.js 8, which is inevitable since 8.x branch is now LTS (Long Term Support). WebAssembly is a new standard that is widely adopted in JavaScript world, it's not strictly related to C++, you can compile Rust or something else to it, and more languages will be supported soon. This way Screeps can (at last!) enable support of different languages besides JavaScript, and it's actually a good thing, it extends possible target audience. But you surely are not obliged to learn all these (potentially dozens of them) supported languages and are free to choose any particular language you like.
I would say that supporting WebAssembly and other languages through it may potentially become the biggest thing "making the actual game better".
-
RE: Please fix "reset storm" bucket filling
Oops, my mistake, the patch has not been deployed successfully. Should be fine now.
-
RE: Future of Screeps: What do the devs envision?
@shedletsky This idea might seem reasonable, but it has a major flaw in it - we will need to create an isolated shard then, without portals to the rest of the world, since otherwise it would look like pay-to-win. And you will end up playing with only small subset of players who are willing to pay more.
-
RE: New improved WebGL renderer
Update:
- Bugfixes.
- WebGL renderer is now turned on by default.
- New display options dialog:
-
RE: Experimental PVP API Bug
experimental/nukes
endpoint should work now. -
RE: PTR Changelog 2017-09-25: WebAssembly support
Added binary upload support to the in-game IDE:
This change will be deployed to live servers on December 14 along with upgrade to Node.js 8.
-
RE: PvP balancing: Reduce maxHits on walls/ramparts, controller downgrade time
I only want to note that the current mechanic is to lose 10%, since here were some incorrect statements that there is no lose at all. You can check it here https://github.com/screeps/engine/blob/19453d92fb2139f8f1b8cda47ea54983e149e44d/src/processor/intents/controllers/tick.js#L43
-
RE: PvP balancing: Reduce maxHits on walls/ramparts, controller downgrade time
Also, we need to consider power creeps in this regard. Some features may/should be moved to power skills rather than structure mechanics.
-
RE: PTR Changelog 2017-08-27: shards API
@tedivm I did read that before. Still -- sorry but no.
-
RE: PTR Changelog 2017-08-27: shards API
@dissi A creep will be moved to the other shard, and your script will start executing, but due to zero limit you will not regain your bucket, and when it is over, you will start receiving "bucket is empty" errors.
-
PTR Changelog 2017-08-31: controllers downgrade changes
This post describes changes on the Public Test Realm. The estimated launch date is September 19.
attackController
applies 1000 ticks ofupgradeBlocked
and decreases theticksToDowngrade
by300 * <CLAIM_parts>
ticks. The claimer creep will only need 1 tick to do this amount of damage. The creep will not be able to do another attack untilupgradeBlocked
is back to 0.upgradeController
restores 100 ticks ofticksToDowngrade
rather then resets it immediately.- While the controller is downgrading, it doesn't upgrade its level even when it has enough progress (progress is not lost, but accumulated without triggering the level up).
- Safe mode activation is not possible when the controller is downgraded for 5000 or more ticks.
-
RE: Shard Request: Minimum CPU on all shards
Multiple/single world aspect has nothing to with the CPU topic. It's all about physical connectivity (portals) rather than resources management implementation details. If you want to have 1,5,10,20 CPU on every shard in the game, just set it, you got the API. 12-hours timeout is not a game changer in any way.
-
PTR Changelog 2017-08-27: shards API
This post describes changes on the Public Test Realm. The estimated launch date is September 19.
- Added new global property
Game.cpu.shardLimits
. - Added new global method
Game.cpu.setShardLimits
. - Added UI for assigning CPU to the shards menu.
GCL will be shared between shards and doesn't need to be assigned to a specific shard.
- Added new global property