Posts made by akuukis
-
RE: PvP Game discussion
I would like to revive this thread, so I will what I understand from all comments so far:
* It is easier to wipe player than to take single room (and thus big players are de-facto immortal)
* It should be easier to take single room than to wipe player
* 2 week holding by attackers is not fair against insta-reset by defenders
* It shouldn't be more complicated
* One 'correct way' of waging war shouldn't be enforced
* Rooms shouldn't be steamrolled (even against 'few hours a week' player)
* Is screeps fully PvP-based strategic game with conquests (part of community) or semi PvP-based sandbox game with PvP arena fights (Artem)?
Also from another thread about SWW1 we have learned that there are various playstyles, where "Culture is a lighthearted civilized collection of city states (Greek), TK is a barbarian horde (Germanic) and SUN is a militaristic empire (Roman)". And of course each of these playstyles would prefer different attacker-defender balance. I personally advocate for...
* more dynamic wars and against immortality, where single rooms change hands casually but players respawn rarely. For me this is the first beauty of screeps - survival in diverse universe.
* perseverance of player diversity. For me this is the second beauty of screeps - survival in diverse universe.
* simplicity. I think it is critical to ease automation and make everyone better at survival in screeps universe.
* wider strategic and tactical options. I think it is critical to make screeps universe more diverse.
I think that root controller won't solve this. I really liked the idea by @Dissi that creates more fixed points in times on which people can act (fun), and by @tedivm that attacks mean something (simple, easier to take single room). Here is my combined proposal that tries to take the best of both:
const DECAY_OFFSET = 1500; // Some ticks to wait since last upgrade to start decay controller
const DECAY_AMOUNT = 50; // Some amount at which controller loses points per tick
const DECAY_THRESHOLD = 0.25; // Some percent at which decay doesn't decay at decayAmount rate but drops to 0 and lowers RCL.
const CONTROLLER_LEVELS.8 = 32805000; // some amount RCL 8 controller continues to accumulate pointsExample #1: Attacker wants to conquer fully filled RCL 8 room and destroys everything in it. Defender retaliates DECAY_OFFSET/2 ticks later, kills attackers, puts 1 energy into controller and DECAY_OFFSET is reset, no controller points are lost. Attacker successfully attacks again before defender builds defenses. The rest of defender raids with intention to reset DECAY_OFFSET are unsuccessful so he prepares for a big battle several days later just before DECAY_THRESHOLD will be reached. Defender successfully kills attackers, and starts building both defenses and upgrading controller to buy time. Attacker is aware of opportunity to burn DECAY_THRESHOLD amount of controller points, so he calls in friends, kills defenders, waits until DECAY_THRESHOLD is reached and room drops to fully filled RCL 7. --- From that point on, everything repeats but with shorter periods. Both sides are motivated to fight for the room and are rewarded for that. Simpler, more balanced and motivating, and taking a room becomes easier than wiping a player.
Example #2: Underdog is up to bite a big player. He watches one room that just turned RCL 7. Underdog prepares a high burst army and waits until that RCL 7 gets just below DECAY_THRESHOLD controller points. Then he launches the attack, luckily gets through and after DECAY_OFFSET instantly burns all constroller points and drops room to RCL 6. Big player soon after gets army together and easily regains room. --- Well timed attack can cause big costs so that even underdogs can at least hinder big players. More fun.
Extra ideas:
* Make controller to drop energy at DECAY_DROP rate as it loses controller points, and drop a proportional pile when threshold is triggered. Could also be intentionally used by defender as "emergency funds" in case he runs out of energy under siege.
* Make creep.attackController part to fasten the process.
* In case of respawn don't release ownership of rooms but transfer ownership to dummy player, so respawns don't free up rooms instantly. Probably with -1 RCL penalty to prevent respawn spam.
What do you think about this?
-
RE: Request: Ranking by GCL
@Xist , cool work! Can you put that on the github?
-
Server freeze with TooAngel's mod
Installed Build31 with iKlem script and with TooAngel mod that added a user. I added bot twice and got two new users, so far so good. They operated for 20-100 ticks and then server froze. Restarted server, worked for another 20-100 ticks. Restarted again and now it worked for 73 ticks. Logs are below.
$ cat engine_main.log
...
Main loop reset! Stage: waitForUsers$ cat engine_processor1.log
...
Storage connection lost { Error: connect ECONNREFUSED 127.0.0.1:21027
at Object.exports._errnoException (util.js:1026:11)
at exports._exceptionWithHostPort (util.js:1049:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1085:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 21027 }
Connecting to storage$ cat engine_runner1.log
...
Storage connection lost { Error: connect ECONNREFUSED 127.0.0.1:21027
at Object.exports._errnoException (util.js:1026:11)
at exports._exceptionWithHostPort (util.js:1049:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1085:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 21027 }
Connecting to storage$ cat storage.log
screeps@debian-512mb-screeps001:~/iKlem_server$ cat screeps/server/logs/1478558565024/storage.log
Loading mods from "/home/screeps/iKlem_server/screeps/server/mods/mods.json"
- /home/screeps/iKlem_server/screeps/server/mods/bot.js
Starting storage server
Storage listening on 21027
[127.0.0.1:47889] Incoming connection
[127.0.0.1:47890] Incoming connection
[127.0.0.1:47891] Incoming connection
[127.0.0.1:47892] Incoming connection
[127.0.0.1:47893] Incoming connection
[127.0.0.1:47894] Incoming connection
[127.0.0.1:47896] Incoming connection
[127.0.0.1:47897] Incoming connection
Loading mods from "/home/screeps/iKlem_server/screeps/server/mods/mods.json"
- /home/screeps/iKlem_server/screeps/server/mods/bot.js
Starting storage server
Storage listening on 21027
[127.0.0.1:47907] Incoming connection
[127.0.0.1:47908] Incoming connection
[127.0.0.1:47909] Incoming connection
[127.0.0.1:47910] Incoming connection
[127.0.0.1:47911] Incoming connection
[127.0.0.1:47912] Incoming connection
[127.0.0.1:47913] Incoming connection
[127.0.0.1:47914] Incoming connection -
RE: Error in Storage since build 29
Nuked folder, redownloaded screeps and everything works now.
-
RE: Error in Storage since build 29
Oh, didn't notice comment. I tried but copied something wrong, so I will nuke the folder and start over, but that's for later.
-
Error in Storage since build 29
I just rebuilt my dedicated server using scripts here and now get error in storage.log
Loading mods in 'mods'
Starting storage server
Storage listening on 21027
[127.0.0.1:43513] Incoming connection
[127.0.0.1:43514] Incoming connection
[127.0.0.1:43515] Incoming connection
[127.0.0.1:43516] Incoming connection
[127.0.0.1:43517] Incoming connection
[127.0.0.1:43518] Incoming connection
TypeError: Cannot read property 'get' of null
at dbEnvGet (/home/screeps/screeps/server/modules/storage/lib/db.js:298:47)
at Proto.apply (/home/screeps/screeps/server/modules/storage/node_modules/dnode-protocol/index.js:123:13)
at Proto.handle (/home/screeps/screeps/server/modules/storage/node_modules/dnode-protocol/index.js:99:19)
at D.dnode.handle (/home/screeps/screeps/server/modules/storage/node_modules/dnode/lib/dnode.js:140:21)
at D.dnode.write (/home/screeps/screeps/server/modules/storage/node_modules/dnode/lib/dnode.js:106:22)
at Socket.ondata (_stream_readable.js:555:20)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
/home/screeps/screeps/server/modules/storage/lib/db.js:50
var values = env.get(1);
^
TypeError: Cannot read property 'get' of null
at Timeout.envCleanExpired [as _onTimeout] (/home/screeps/screeps/server/modules/storage/lib/db.js:50:21)
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5) -
Working dedicated server on Debian 8.6 x64
Got it working on Debian x64. I want to share my scripts how I did it, it is like @coteyr said here but more detailed.
## Set up dedicated screeps server.
# Tested only on Debian 8.6 x64 with 512mb.
## Dependencies
# To install steam, see https://wiki.debian.org/Steam
sudo apt-get install unzip git build-essential
## Setup node
# Probably not the simplest way but it works.
# Remove everything related to node, so that `node`, `nodejs`, `npm`, `n` or `node-gyp` is not found.
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
sudo aptitude install -y nodejs
sudo npm install npm@latest -g
sudo npm install node-gyp@latest -g
node -v # v6.9.1
npm -v # 3.10.9
node-gyp -v # v3.4.0
## Create user who will run server
adduser screeps
sudo su screeps# get ~/steamworks_sdk_137.zip from your steam developer account. It has to be v1.37!
## Set variables
STEAM_USER=
BETA_INVITE_CODE=
## Setup greenworks
cd ~
git clone https://github.com/greenheartgames/greenworks.git
cd greenworks/deps/
unzip ~/steamworks_sdk_137.zip
mv sdk steamworks_sdk
cd ..
npm install # if errors, do you have correct version of node and SDK?
## Setup steamcmd
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
rm -rf steamcmd
mkdir ~/steamcmd
cd ~/steamcmd
tar -xvzf ../steamcmd_linux.tar.gz
## Setup screeps for first time. It will ask password and always slows for 5-15min in the middle of download.
~/steamcmd/steamcmd.sh +force_install_dir ~/screeps +login $STEAM_USER +app_update 464350 -beta Server -betapassword $BETA_INVITE_CODE validate +exit
## Setup config: add steam_api_key from https://steamcommunity.com/dev/apikey
cd ~/screeps/server/
nano .screepsrc
## Setup launch scripts.
echo '#!/bin/bash
cd ~/steamcmd/
./steamcmd.sh +force_install_dir ~/screeps +login '$STEAM_USER' +app_update 464350 -beta Server -betapassword '$BETA_INVITE_CODE' validate +exit
cd ~/screeps/server
cp ~/greenworks/build/Release/greenworks-linux64.node ~/screeps/server/modules/backend/greenworks/lib/greenworks-linux64.node
for M in modules/*/
do
pushd $M
rm node_modules -Rf
npm install
npm build
popd
done
pushd modules/driver/native/
node-gyp configure
node-gyp build
popd
rm logs/* -Rf
node modules/launcher/bin/screeps.js start' > ~/rebuild_server.sh
chmod +x ~/rebuild_server.sh
echo '#!/bin/bash
cd ~/screeps/server
node modules/launcher/bin/screeps.js start' > ~/launch_server.sh
chmod +x ~/launch_server.sh
## Start server!
~/rebuild_server.sh
# ~/launch_server.sh -
RE: Dedicated Server
Got greenwork to build, problem was too new steamworks_sdk. I updated your part
# Remove everything related to node, so that `node`, `nodejs`, `npm`, `n` or `node-gyp` is not found.
# Probably not the simplest way but it works.
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo aptitude install -y nodejs
sudo npm install npm@latest -g
sudo npm install node-gyp@latest -g
node -v # v6.9.1
npm -v # 3.10.9
node-gyp -v # v3.4git clone https://github.com/greenheartgames/greenworks.git
cd greenworks/deps/
unzip ~/path-to/steamworks_sdk_137.zip # It has to be v1.37 and you have to get this from your steam developer account
mv sdk steamworks_sdk
cd ..
npm install -
RE: Dedicated Server
What version of node are you using? For me on
$ uname -a
Linux G5070 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linuxgreenwork can't `npm install` work with neither of
gyp ERR! node -v v6.9.1
gyp ERR! node-gyp -v v3.4.0nor
gyp ERR! node -v v0.10.29
gyp ERR! node-gyp -v v0.12.2 -
RE: lib error
Your last snippet doesn't work in my case.
~/.local/share/Steam/steamapps/common/Screeps/server
~/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native ~/.local/share/Steam/steamapps/common/Screeps/server
gyp info it worked if it ends with ok
gyp info using node-gyp@0.12.2
gyp info using node@0.10.29 | linux | x64
gyp info spawn python
gyp info spawn args [ '/usr/share/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/usr/share/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/usr/include/nodejs/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/usr/include/nodejs',
gyp info spawn args '-Dmodule_root_dir=/home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native',
gyp info spawn args '--depth=.',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.' ]
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@0.12.2
gyp info using node@0.10.29 | linux | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native/build'
CXX(target) Release/obj.target/native/src/main.o
In file included from ../src/main.cc:1:0:
../../node_modules/nan/nan.h:324:47: error: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’
static const unsigned kReplaceInvalidUtf8 = v8::String::REPLACE_INVALID_UTF8;
^
In file included from ../src/main.cc:2:0:
../src/pf.h: In member function ‘void screeps::open_closed_t::clear()’:
../src/pf.h:161:9: error: ‘numeric_limits’ is not a member of ‘std’
if (std::numeric_limits<unsigned int>::max() - 2 <= marker) {
^
../src/pf.h:161:29: error: expected primary-expression before ‘unsigned’
if (std::numeric_limits<unsigned int>::max() - 2 <= marker) {
^
../src/pf.h:161:29: error: expected ‘)’ before ‘unsigned’
../src/pf.h: At global scope:
../src/pf.h:383:61: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
const cost_t obstacle = std::numeric_limits<cost_t>::max();
^
../src/pf.h:383:28: error: ‘numeric_limits’ is not a member of ‘std’
const cost_t obstacle = std::numeric_limits<cost_t>::max();
^
../src/pf.h:383:54: error: expected primary-expression before ‘>’ token
const cost_t obstacle = std::numeric_limits<cost_t>::max();
^
../src/pf.h:383:55: error: ‘::max’ has not been declared
const cost_t obstacle = std::numeric_limits<cost_t>::max();
^
../src/pf.h:383:55: note: suggested alternative:
In file included from /usr/include/c++/4.9/algorithm:61:0,
from ../../node_modules/nan/nan.h:50,
from ../src/main.cc:1:
/usr/include/c++/4.9/bits/stl_algobase.h:261:5: note: ‘std::max’
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
^
native.target.mk:83: recipe for target 'Release/obj.target/native/src/main.o' failed
make: *** [Release/obj.target/native/src/main.o] Error 1
make: Leaving directory '/home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:809:12)
gyp ERR! System Linux 3.16.0-4-amd64
gyp ERR! command "nodejs" "/usr/bin/node-gyp" "build"
gyp ERR! cwd /home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native
gyp ERR! node -v v0.10.29
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok
~/.local/share/Steam/steamapps/common/Screeps/server -
RE: Linux build throwing steamworks errors
Seems that I already have it.
libstdc++6 is already the newest version.
-
RE: Linux build throwing steamworks errors
Just updated screeps in steam and I still receive the same error, but elsewhere.
ELECTRON_ASAR.js:178
return old.apply(this, arguments)
^
Error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/native/build/Release/native.node)
at Error (native)
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:178:20)
at Object.Module._extensions..node (module.js:583:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:178:20)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.require (module.js:483:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/kalvis/.local/share/Steam/steamapps/common/Screeps/server/modules/driver/lib/index.js:876:18)
ELECTRON_ASAR.js:178
return old.apply(this, arguments) -
Got Terminal badge when unsuccessfully started server.
Got Terminal badge when unsuccessfully started server, but I have never built nor sent anything on terminal. It read "Terminal sends any resources to a Terminal in another room."
-
RE: Linux build throwing steamworks errors
+1, the same on Debian 8.6
Linux G5070 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux
-
Steam downloads at 10KB/s
Hello,
Can't wait to launch server, but steam downloads update around 10KB/s, while another game updated at 1.5MB/s.
Is that just for me?
EDIT: after 15minutes it jumped back to normal speed. Probably just me.
-
RE: Change error notification behaviour
Yes, I was talking about changing it mid-script
-
RE: PTR Changelog 2016-09-21
> My point is that the nuke change finally gives attackers some real options. No room is unassailable, which is good.
I agree to this. If someone is willing to spend a fortune then there should be a way, and of course there should be counter-measures to diminish the effects and make it even more costly. Sooner or later someone will throw 20+ nukes to a single room but that's excessive fortune and defender may even be better off rebuilding, not defending it.
More strategic options, more fun!
-
RE: Privacy options to battle metagaming
+1
I agree that noone should be able to connect screep-me with outside-world-me unless I explicitly allowed that by giving email or making steam profile public.
As for incognito, I'd like to have a fresh start even if my GCL restarts. For newbies it won't make a huge difference anyway, and that's a great way to change icons, e.g. after coming back to screeps after a extended pause.