Dedicated Multiplayer Server Guide
Re: Dedicated Multiplayer Server Guide
On, i have now a char but get Stuck in the other one !
I try now to delete him again
I try now to delete him again
Re: Dedicated Multiplayer Server Guide
Code: Select all
eysho@dev:~/private/factorio_alpha_x64_0.11.5$ wc -l /var/www/vhosts/factorio/private/factorio_alpha_x64_0.11.5/factorio-current.log | grep -o "[0-9]\+"
7
64
0
11
5
eysho@dev:~/private/factorio_alpha_x64_0.11.5$ ./pauser
./pauser: line 11: 7
64
0
11
5: syntax error in expression (error token is "64
0
11
5")
eysho@dev:~/private/factorio_alpha_x64_0.11.5$
Re: Dedicated Multiplayer Server Guide
Ok now i have the problem that not 2 players can connect simul. anny idea why?
The peer broke, and he show the ip from the guy thats allready in, for no peer to ip. XX User 1 . But why peer to user. and not to server?
The user connect and then the console reload he show User () and user x and y , and reload.
The peer broke, and he show the ip from the guy thats allready in, for no peer to ip. XX User 1 . But why peer to user. and not to server?
The user connect and then the console reload he show User () and user x and y , and reload.
Re: Dedicated Multiplayer Server Guide
Hello, for your pauser script, what is your Operating System ?
can you add :
And for your last problem I don't know maybe a 0.11.5 bug (I know there is some problems with 0.11.4 and 0.11.5)
I don't know how the multiplayer works, but maybe there is a problem between user 1 and user 2 ? Are you on the same network ? maybe a firewall problem ?
can you add :
in the script ?wc -l /var/www/vhosts/factorio/private/factorio_alpha_x64_0.11.5/factorio-current.log | grep -o "[0-9]\+" | head -1
And for your last problem I don't know maybe a 0.11.5 bug (I know there is some problems with 0.11.4 and 0.11.5)
I don't know what do you mean.The user connect and then the console reload he show User () and user x and y , and reload.
I don't know how the multiplayer works, but maybe there is a problem between user 1 and user 2 ? Are you on the same network ? maybe a firewall problem ?
Re: Dedicated Multiplayer Server Guide
Ok after i edit the pasuer looks so :
bkg@dev:~/private/server/factorio.bkg.me/v0.11.3$ ./pauser_v0.11.3
QUITS: 1
JOINS: 1
JOINSGAME:1
BOOT : Pause on Boot
./pauser_v0.11.3: line 44: bc: command not found
./pauser_v0.11.3: line 45: bc: command not found
Usage: mousemove [options] <x> <y>
-c, --clearmodifiers - reset active modifiers (alt, etc) while typing
--screen SCREEN - which screen to move on, default is current screen
--sync - only exit once the mouse has moved
-w, --window <windowid> - specify a window to move relative to.
You specified the wrong number of args (expected 2 coordinates or 'restore').
Paused
0
QUITS: 0
JOINS: 0
JOINSGAME:0
0
bkg@dev:~/private/server/factorio.bkg.me/v0.11.3$ ./pauser_v0.11.3
QUITS: 1
JOINS: 1
JOINSGAME:1
BOOT : Pause on Boot
./pauser_v0.11.3: line 44: bc: command not found
./pauser_v0.11.3: line 45: bc: command not found
Usage: mousemove [options] <x> <y>
-c, --clearmodifiers - reset active modifiers (alt, etc) while typing
--screen SCREEN - which screen to move on, default is current screen
--sync - only exit once the mouse has moved
-w, --window <windowid> - specify a window to move relative to.
You specified the wrong number of args (expected 2 coordinates or 'restore').
Paused
0
QUITS: 0
JOINS: 0
JOINSGAME:0
0
Re: Dedicated Multiplayer Server Guide
you need to install bc
:
Code: Select all
apt-get install bc
Re: Dedicated Multiplayer Server Guide
Parsing the log seems like such a ghetto hack.. Why not just have the client do the pausing/unpausing directly from the game?
EDIT: And by 'client' I mean the 'dedicated server'
EDIT: And by 'client' I mean the 'dedicated server'
Re: Dedicated Multiplayer Server Guide
All this guide is a hack waiting for an official release.
Dedicaced server mode is not supported by the game, and the multiplayer is really buggy.
We parse the log to see when a player connect and we pause/unpause the game. It works, so why do you want to do it in another way ?
How ?
If you know how to do it in another way you can share the information
Dedicaced server mode is not supported by the game, and the multiplayer is really buggy.
We parse the log to see when a player connect and we pause/unpause the game. It works, so why do you want to do it in another way ?
Code: Select all
directly from the game?
If you know how to do it in another way you can share the information
Re: Dedicated Multiplayer Server Guide
All you're doing is counting the number of players by parsing the log, no? Why not just use the built-in LUA scripting to simply check if(games.players.length == 1) { game.pause(); } else { game.unpause() }
Re: Dedicated Multiplayer Server Guide
unfortunately there is no such functionif(games.players.length == 1) { game.pause(); } else { game.unpause() }
i tried to reduce game speed to 0.1(it's minimum)
but i'm not too good in lua to do it, so just nothing happens
is there someone who got working solution for 0.11.13 without using xdotool?
Re: Dedicated Multiplayer Server Guide
Got everything working well except for the pauser script. It's not tracking joins, shows 0, then when I quit it counts a quit, and puts the total to -1.Alkalyne wrote:I just made a change in the startfactorio script :
That's allows to restart factorio easily using the last autosave.Code: Select all
name=$(find /path/to/factorio/saves -type f -printf '%T@ %f\n' | sort -n | tail -1 | cut -f2- -d" ")
NOTE : The pauser script don't work, since the key Shift+space does not pause the game in multiplayer since 11.2 ( )
But with the autosave I just need to stop the game to start it later
EDIT :
I have updated the pauser script, now it will pause the game :Code: Select all
#!/bin/bash PATHTOLOG="/var/www/factorio/factorio-current.log" OLDPLAYERCOUNT=0 PLAYERCOUNT=0 NUMBEROFLINESOLD=0 while :; do #get the current nuber of log entries NUMBEROFLINES=$(wc -l /var/www/factorio/factorio-current.log | grep -o "[0-9]\+") ABSOLUTELINES=$((NUMBEROFLINES-NUMBEROFLINESOLD)) #only look at new lines TAILEDLOG=$(tail -$ABSOLUTELINES $PATHTOLOG) #grab Joins PlayerJoinGame JOINSGAME=$(echo $TAILEDLOG | grep "MultiplayerManager changing state from(InGameSendingMap) to(InGame)" | wc -l | grep -o "[0-9]\+") #grab peer leaving QUITS=$(echo $TAILEDLOG | grep "PlayerLeaveGame" | wc -l | grep -o "[0-9]\+") #grab peer timeout DROPOUTS=$(echo $TAILEDLOG | grep "is not responding, dropping" | wc -l | grep -o "[0-9]\+") BOOT=$(echo $TAILEDLOG | grep "MultiplayerManager changing state from(CreatingGame) to(InGame)" | wc -l | grep -o "[0-9]\+") QUITS=$((QUITS+DROPOUTS)) echo "QUITS: "$QUITS JOINS=$((JOINSGAME)) echo "JOINS: "$JOINS echo "JOINSGAME:"$JOINSGAME PLAYERCOUNT=$((PLAYERCOUNT+JOINS)) PLAYERCOUNT=$((PLAYERCOUNT-QUITS)) if [ $BOOT -eq 1 ] then echo "BOOT : Pause on Boot" WID=$(xdotool search Factorio 2>/dev/null) xdotool windowactivate --sync $WID unset x y w h #need to press Escape once because of the Audio popup xdotool key Escape sleep 1 xdotool key Escape sleep 1 eval $(xwininfo -id $(xdotool getactivewindow) | sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \ -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \ -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \ -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" ) width=`echo "0.5 * $w" | bc` height=`echo "0.45 * $h" | bc` xdotool mousemove --window $WID $width $height xdotool click 1 sleep 1 xdotool key Escape echo "Paused" fi if [ $PLAYERCOUNT -eq 1 -a $OLDPLAYERCOUNT -eq 0 ] then echo "detected players, unpausing" WID=$(xdotool search Factorio 2>/dev/null) xdotool windowactivate --sync $WID unset x y w h xdotool key Escape sleep 1 eval $(xwininfo -id $(xdotool getactivewindow) | sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \ -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \ -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \ -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" ) width=`echo "0.5 * $w" | bc` height=`echo "0.45 * $h" | bc` xdotool mousemove --window $WID $width $height xdotool click 1 sleep 1 xdotool key Escape fi if [ $PLAYERCOUNT -eq 0 -a $OLDPLAYERCOUNT -eq 1 ] then echo "0 players, pausing" WID=$(xdotool search Factorio 2>/dev/null) xdotool windowactivate --sync $WID unset x y w h xdotool key Escape sleep 1 eval $(xwininfo -id $(xdotool getactivewindow) | sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \ -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \ -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \ -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" ) width=`echo "0.5 * $w" | bc` height=`echo "0.45 * $h" | bc` xdotool mousemove --window $WID $width $height xdotool click 1 sleep 1 xdotool key Escape fi #REMOVE the following line if you don't want to see current players. echo $PLAYERCOUNT OLDPLAYERCOUNT=$PLAYERCOUNT NUMBEROFLINESOLD=$NUMBEROFLINES #change to number of seconds between player count update [default: 1 sec] sleep 1 done
Pretty sure I should see the pauser script pausing the game though, before I jump on and I'm not seeing that. I received some errors launching startxfce4 but I'm unable to tell if it's properly working or not, are there logs I can find, or a specific message I should be seeing?
Running this on .14, any ideas?
Re: Dedicated Multiplayer Server Guide
nimh, put metal plates in a box with an inserter outputting onto a 500 tile long belt then back into a box.. start the system, let it run 1/4 of the way down the belt, leave the game, wait a few minutes, join back.. If the plates reached the end and were put into the end box then the game didn't pause, if you come back in and the plates are only 1/4 of the way down the belt then you know the game paused..
At least I think that would work... haha
At least I think that would work... haha
Re: Dedicated Multiplayer Server Guide
Oh nice, that's a good way to check it's pausing. Going to give this entire set-up another try and see if I can get it working. The pauser script is really the key to all of this though, without it, the biters just get worse and worse while the server stays up. Coming back to a map with 2-3 full days worth of biter spawn can be a headache.Piranha wrote:nimh, put metal plates in a box with an inserter outputting onto a 500 tile long belt then back into a box.. start the system, let it run 1/4 of the way down the belt, leave the game, wait a few minutes, join back.. If the plates reached the end and were put into the end box then the game didn't pause, if you come back in and the plates are only 1/4 of the way down the belt then you know the game paused..
At least I think that would work... haha
Re: Dedicated Multiplayer Server Guide
Hello everybody !
After following this guide and updated it to work with the version 0.11.20, everything work fine for me and my friend.
But is was before the tragedy...
Something that I forgot to check was the automatic save game.. And you know what ? The automatic save game is not working, so we are... F**KED
Does the automatic save game is not working because some of black magic or is it caused by the "--mp-load-game" parameter ?
It could be good if a person with a purple alien icon can answer about this
And by the way, can we have more information about a command only launcher of the game ? Or the possibility to put the game in a pause state with a mod (game.pause ?
edit: the log refer to "Verbose Synchronizer.cpp:294: [...] Processing synchronizer action(BeginPause)..."
It shouldn't be that much too complicate to make this action(BeginPause) callable by a mod devs nope ?
).
By the way² : is there a possibility to trigger the save-gaming with a mod ? I saw the "game.save()" method but it seems to set the path of the save game only (not sure about this!)
Thank you in advance for the future answers !
After following this guide and updated it to work with the version 0.11.20, everything work fine for me and my friend.
But is was before the tragedy...
Something that I forgot to check was the automatic save game.. And you know what ? The automatic save game is not working, so we are... F**KED
Does the automatic save game is not working because some of black magic or is it caused by the "--mp-load-game" parameter ?
It could be good if a person with a purple alien icon can answer about this
And by the way, can we have more information about a command only launcher of the game ? Or the possibility to put the game in a pause state with a mod (game.pause ?
edit: the log refer to "Verbose Synchronizer.cpp:294: [...] Processing synchronizer action(BeginPause)..."
It shouldn't be that much too complicate to make this action(BeginPause) callable by a mod devs nope ?
).
By the way² : is there a possibility to trigger the save-gaming with a mod ? I saw the "game.save()" method but it seems to set the path of the save game only (not sure about this!)
Thank you in advance for the future answers !
Interested by modding, multiplayer and often active on IRC
No native English speaker.
No native English speaker.
Re: Dedicated Multiplayer Server Guide
Hello,
When I started (few month ago) to run my dedicaced server the Autosave was working fine.
Maybe the game does not have the right to write in the save directory ? Try to change this.
You need to check logs, maybe you can see where is the problem.
When I started (few month ago) to run my dedicaced server the Autosave was working fine.
Maybe the game does not have the right to write in the save directory ? Try to change this.
You need to check logs, maybe you can see where is the problem.
Re: Dedicated Multiplayer Server Guide
Hmm, I'm almost sure that the folder have rwx for everything (chmod 777 if you know what i mean) but I admit not having paid attention to logs about autosaves
I'll check it when i can and edit this post if i found something interesting
I'll check it when i can and edit this post if i found something interesting
Interested by modding, multiplayer and often active on IRC
No native English speaker.
No native English speaker.
Re: Dedicated Multiplayer Server Guide
just wanted to add a note for linux server admins who usually run headless; as you know, you won't have an xorg.conf or any video device. but if you just install the dummy device and use the follow xorg.conf you shouldn't have any problems. i use debian, so this should be similar or identical to ubuntu.
/etc/X11/xorg.conf:
also note that running xset without previously specifying a display in the same session will spit out an error. either export DISPLAY or just prepend the command with just-in-time environment variables, as usual:
Code: Select all
apt-get install xserver-xorg-video-dummy
Code: Select all
Section "Monitor"
Identifier "Monitor0"
EndSection
Section "Device"
Identifier "Card0"
Option "NoDDC" "true"
Option "IgnoreEDID" "true"
Driver "dummy"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
EndSection
Code: Select all
DISPLAY=:10 xset s off
High load on Factorio Server
Hi there!
First of all, thanks for this guide!
I tried to run this on my root server and ran into a few problems.
After starting the game, factorio used 8 cores with an average of 80% load on each core.
At first I would recommend using openbox rather than xfce. It's just a windowmanager and more lightweight than xfce.
But the most important thing is: Most root server come without a graphic card, which means that everything is rendered with your CPU!! To mitigate this drawback I resized the factorio window inside the dummy screen to 1 pixel. A size every CPU can handle .
Here are my scripts. Btw: I used tmux instead of screen, since it's IMO more convenient.
https://github.com/Nukesor/gamescripts/ ... actorio.sh
https://github.com/Nukesor/gamescripts/ ... Startup.sh
There are also some scripts for clientside restart of the server or map syncing. Hope it helps .
Nuke
First of all, thanks for this guide!
I tried to run this on my root server and ran into a few problems.
After starting the game, factorio used 8 cores with an average of 80% load on each core.
At first I would recommend using openbox rather than xfce. It's just a windowmanager and more lightweight than xfce.
But the most important thing is: Most root server come without a graphic card, which means that everything is rendered with your CPU!! To mitigate this drawback I resized the factorio window inside the dummy screen to 1 pixel. A size every CPU can handle .
Here are my scripts. Btw: I used tmux instead of screen, since it's IMO more convenient.
https://github.com/Nukesor/gamescripts/ ... actorio.sh
Code: Select all
#!/bin/bash
# New tmux session for x server
tmux new -d -s x
tmux send -t x sudo SPACE Xorg SPACE -noreset SPACE +extension SPACE GLX SPACE +extension SPACE RANDR SPACE +extension SPACE RENDER SPACE -logfile SPACE ./factorio/10.log SPACE -config SPACE ./factorio/xorg.conf SPACE :10 ENTER
# Attach to session for entering sudo password.
# Session can be left with CTRL+b +d
tmux attach -t x
https://github.com/Nukesor/gamescripts/ ... Startup.sh
Code: Select all
#!/bin/bash
# Start openbox Window Manager in new tmux session
tmux new -d -s openbox
tmux send -t openbox export SPACE DISPLAY=:10 ENTER
tmux send -t openbox exec SPACE openbox-session ENTER
# Disable Screensaver
xset s off
# Start factorio in new tmux session
tmux new -d -s factorio
tmux send -t factorio export SPACE DISPLAY=:10 ENTER
tmux send -t factorio factorio/bin/x64/factorio SPACE --mp-load-game SPACE world.zip ENTER
# Wait for the game starting up and opening the window
sleep 3
export DISPLAY=:10
# Get the Window ID
WID=$(xdotool search --name "Factorio 0.11.22")
# Resize the Window to 1x1 Pixel
xdotool windowsize $WID 1 1
Nuke
Re: Dedicated Multiplayer Server Guide
im getting these errors , i assume its cause im running a debian os...
any info guys ?
any info guys ?
Code: Select all
/var/games/Factorio/bin/x64/factorio: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /var/games/Factorio/bin/x
64/factorio)
/var/games/Factorio/bin/x64/factorio: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /var/games/Factorio/bin/x
64/factorio)
/var/games/Factorio/bin/x64/factorio: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by /var/games/Factorio/bin/x
64/factorio)
Re: Dedicated Multiplayer Server Guide
It's because you don't have the lastest version of libc.so (required by factorio), it's not available in wheezy with apt-get because wheezy is oldstable
I know you can force the install of a new version but I don't remember how
I know you can force the install of a new version but I don't remember how