RE:NODE

სახელმძღვანელოები15 წუთის საკითხავი

Factorio headless სერვერი: დაყენება, პარამეტრები და ადმინები

როგორ გაუშვა Factorio headless სერვერი სწორად: ჩამოტვირთვა, რუკის შექმნა, server-settings.json-ის ყველა გასაღები, პორტები, ადმინები, RCON, ავტოშენახვა და გავრცელებული შეცდომები.

1 მკითხველი

Factorio-ს headless სერვერი factorio.com-დან ცალკე ჩამოსატვირთი პაკეტია და არა თამაშის Steam-ის ასლი გამორთული გრაფიკით. დაარქივებული დაახლოებით 57 MB-ია, დაყენებული კი 300 MB-ზე ნაკლებს იკავებს; არც გრაფიკული დრაივერი სჭირდება და არც Steam-ის ანგარიში, ოთხკაციან რუკას კი მშვიდად ემსახურება 1 GB მეხსიერებაში. მთელი მისი კონფიგურაცია ერთ JSON ფაილსა და რამდენიმე ბრძანების არგუმენტზეა დამოკიდებული. ეს გზამკვლევი ყველაფერს ფარავს: დაყენებას, რუკის შექმნას, server-settings.json-ის ყველა გასაღებს, პორტს, ადმინების ფაილებს, RCON-ს და ავტოშენახვის ქცევას, რომელიც განსაზღვრავს, რამდენ პროგრესს დაგიკარგავს ავარია.

რა არის Factorio headless სერვერი#

Factorio-ს მულტიპლეერი დეტერმინისტული lockstep-ია. სერვერი შენ არ გიგზავნის სამყაროს მდგომარეობას; ის აგროვებს ყველას შეყვანას, აწერს მას tick-ის ნომერს და უკან ყველას უგზავნის. შემდეგ ყველა მანქანა - სერვერიც და კლიენტებიც - ერთსა და იმავე სიმულაციას აწარმოებს და ერთსა და იმავე შედეგამდე მიდის. სწორედ ეს ერთი გადაწყვეტილება განმარტავს თითქმის ყველაფერს, რაც ქვემოთ წერია:

  • თითო მოთამაშის გამტარუნარიანობა მცირეა. შენ ობიექტების პოზიციებს კი არა, კლავიშების დაჭერებს აგზავნი. დატვირთული რვაკაციანი თამაში თითოეულ მიმართულებით წამში რამდენიმე ათეულ კილობაიტს იყენებს.
  • შესვლა ძვირია. ახალ მოთამაშეს მთელი რუკა უნდა მისცე, სანამ ის სიმულაციის გაშვებას შეძლებს. ეს save ფაილის ერთიანი გადაცემაა, სწორედ ამიტომ არის პარამეტრების ფაილში ატვირთვის ლიმიტები.
  • ყველა ერთსა და იმავე mod-ს იყენებს, ერთსა და იმავე ვერსიებში, თორემ ვერავინ დაკავშირდება. Factorio-ში მხოლოდ კლიენტის მხარეს არსებული mod არ არსებობს. mod განსაზღვრებით სიმულაციას ცვლის.
  • სერვერს თავისით უნდა შეეძლოს ტემპის დაჭერა. თუ სერვერი წამში 60 განახლებას ვერ აღწევს, თამაში ყველასთვის ნელდება. კლიენტები, რომლებიც ძალიან ჩამორჩებიან, გამოირიცხებიან და რუკის თავიდან ჩამოტვირთვა უწევთ.

headless build-ს არც რენდერერი აქვს, არც აუდიო და არც sprite atlas, სწორედ ამიტომ მისი მეხსიერების მოხმარება ერთი და იმავე save-ზე დესკტოპის თამაშისაზე გაცილებით დაბალია. მას ეკრანის სურათების გადაღება არ შეუძლია, რუკის რედაქტორს ვერ გაუშვებ და GUI mod-ის პარამეტრების ფანჯარასაც ვერ აჩვენებს - ამის პრაქტიკული შედეგები ქვემოთ mod-ების ნაწილშია.

მოთხოვნები და რესურსების მოხმარება#

Factorio ერთ-ერთი ყველაზე ნაკლებმომთხოვნი თამაშია ჰოსტინგისთვის, სანამ უცებ არ გახდება მომთხოვნი. ახალი რუკა ოთხი ადამიანით წვრილმანია. იმავე რუკას სამასი საათის შემდეგ, ათასი მატარებლითა და ორმოცი ათასი ბოტით, ერთ ბირთვს მთლიანად დაატვირთავს.

ეტაპიRAMCPUშენიშვნები
ახალი რუკა, 1-4 მოთამაშე1 GB1 ბირთვიკომფორტულია პირველი გავლისთვის
თამაშის შუა ეტაპი, 4-8 მოთამაშე2 GB1.5 ბირთვიმატარებლები დადიან, პირველი რაკეტა ახლოსაა
დიდი ბაზა, 8-16 მოთამაშე3-4 GB2 ბირთვიsave ფაილები 40 MB-ზე მეტია
Space Age ან დიდი overhaul პაკეტი4-6 GB2+ ბირთვი, სწრაფირამდენიმე surface ყველაფერს ამრავლებს
Megabase6-8 GBყველაზე სწრაფი ერთი ბირთვი, რასაც იყიდიმხოლოდ სიხშირე ეხმარება
  • CPU: განახლების ციკლი პრაქტიკულად ერთნაკადიანია. ორ ბირთვზე მეტი თითქმის არაფერს გაძლევს; ყველაფერს სიხშირე და cache წყვეტს. სერვერს, რომელიც წამში 45 განახლებამდე ჩამოვარდა, ბირთვების დამატება ვერ უშველის.
  • დისკი: დაყენება 300 MB-ზე ნაკლებია. save ფაილები 2-5 MB-იდან იწყება და აღმოჩენილ ტერიტორიასთან ერთად იზრდება - შუა ეტაპზე 20-40 MB ნორმალურია, megabase-ები კი 100 MB-ს სცილდება. გაამრავლე ავტოშენახვის სლოტების რაოდენობაზე, რადგან ისინი ყველა ერთდროულად დისკზე ინახება.
  • ქსელი: დაბალი და სტაბილური, ყოველი შესვლისას მოკლე მატებით. თუ მოთამაშისთვის რუკის ჩამოტვირთვა ნელია, ეს სწორედ max_upload_in_kilobytes_per_second აკეთებს იმას, რაც შენ უთხარი.

მეხსიერება ის რესურსია, რომელიც ხალხს ყველაზე მეტად უკვირს, რადგან Factorio მთელ რუკას RAM-ში ინახავს და არასოდეს უშვებს. radar-ით კვლევა, მეორე surface-ის დამატება ან რუკის გენერაციის mod-ის ჩართვა მას სამუდამოდ ზრდის. თუ კონტეინერი თამაშის შუაში მეხსიერების ლიმიტზე გაჩერდა, ბოლო ავტოშენახვის შემდეგ ყველაფერს კარგავ, ამიტომ ზომა იმის მიხედვით აირჩიე, სად მიდის ბაზა და არა სადაა ახლა. CPU თუ RAM გეიმ სერვერებისთვის ამ შემთხვევაზე პირდაპირ ვრცელდება: სანამ მეორეს იყიდი, გაარკვიე, რომელი გელევა რეალურად.

დაყენება და რუკის შექმნა#

headless პაკეტი Steam-ზე არ არის და მისთვის SteamCMD-ის app id არ არსებობს. მას factorio.com-იდან პირდაპირ ჩამოტვირთავ. stable მიმდინარე სტაბილურ build-ს გაძლევს; თუ შენი ჯგუფი ექსპერიმენტულ ვერსიაზეა, stable-ის ადგილას latest ჩასვი.

bash
$ curl -L -o factorio-headless.tar.xz \    https://factorio.com/get-download/stable/headless/linux64$ tar -xJf factorio-headless.tar.xz -C /opt$ /opt/factorio/bin/x64/factorio --version

პაკეტი თვითკმარია. მისი config-path.cfg მოდის use-system-read-write-data-directories=false-ით, რაც ნიშნავს, რომ save-ები, mod-ები, კონფიგურაცია და ლოგები ~/.factorio-ში კი არა, /opt/factorio-ში ინახება. ამის ცოდნა ღირს, სანამ save ფაილს არასწორ ადგილას დაიწყებ ძებნას.

code
/opt/factorio/  bin/x64/factorio          the server binary  config/config.ini         generated on first run  data/                     base game data and the example JSON files  mods/                     mods go here  saves/                    save files and autosaves  factorio-current.log      the log, with factorio-previous.log beside it

data/-ში ოთხი სანიმუშო ფაილი მოდის: server-settings.example.json, map-gen-settings.example.json, map-settings.example.json და server-whitelist.example.json. დააკოპირე ის ფაილები, რომლებიც გჭირდება, და ნიმუშებს ადგილზე ნუ ცვლი, რადგან თამაშის განახლება მათ გადააწერს.

headless სერვერს გაშვებისას რუკის გენერაცია Minecraft-ის სერვერივით არ შეუძლია. save-ს ჯერ ცალკე ბრძანებით ქმნი:

bash
$ cd /opt/factorio$ cp data/server-settings.example.json data/server-settings.json$ cp data/map-gen-settings.example.json data/map-gen-settings.json$ ./bin/x64/factorio --create ./saves/world.zip \    --map-gen-settings ./data/map-gen-settings.json \    --map-settings ./data/map-settings.json

map-gen-settings.json შეიცავს იმას, რასაც ახალი თამაშის ეკრანზე ირჩევ: რელიეფსა და მადნის სიხშირეს, ზომასა და სიმდიდრეს, წყალს, საწყის ტერიტორიას, cliff-ების პარამეტრებსა და მტრის ბაზების პარამეტრებს. map-settings.json კი იმას შეიცავს, რაც თამაშის დროს იცვლება: დაბინძურების გავრცელებას, მტრის ევოლუციასა და გაფართოებას, path finding-ის ბიუჯეტებსა და steering-ს. ორივე არასავალდებულოა - გამოტოვებისას ნაგულისხმევ პარამეტრებს მიიღებ - მაგრამ რუკის გენერაციის ნაწილი მხოლოდ შექმნისას დგინდება, ამიტომ ახლა ერთი წუთი ღირს.

შემდეგ სერვერს უშვებ:

bash
$ ./bin/x64/factorio --start-server ./saves/world.zip \    --server-settings ./data/server-settings.json \    --server-adminlist ./data/server-adminlist.json \    --port 34197 --console-log ./logs/console.log

ჰოსტინგზე რეალურად გჭირდება --start-server-load-latest, რადგან ის saves/-ში ყველაზე ახალ ფაილს ტვირთავს, ავტოშენახვებიც ჩათვლით. ეს ნიშნავს, რომ ავარიის შემდეგ გადატვირთვა ყველაზე ახალ ავტოშენახვას აიღებს და არა იმ save-ს, რომელიც სამი კვირის წინ დაასახელე.

პანელზე დაფუძნებულ ჰოსტინგზე არაფერს აკრეფ. დაყენება შენ მაგივრად ხდება და იგივე არგუმენტები Startup ჩანართზე ველებად ჩანს - RE:NODE-ზე რუკა პირველ ჩატვირთვაზე გენერირდება, პარამეტრების ფაილი კი უკვე დგას და სერვერისთვის თამაშის პაროლიც შექმნილია.

server-settings.json ხაზ-ხაზ#

ეს მთელი კონფიგურაციაა. სანიმუშო ფაილი _comment_ გასაღებებითაა სავსე, რომელსაც სერვერი უგულებელყოფს, ამიტომ შეგიძლია წაშალო ან დატოვო.

გასაღებინაგულისხმევირას აკეთებს
name-სახელი საჯარო სერვერების სიაში
description-მეორე ხაზი სიაში
tags[]საძიებო თეგები სიისთვის, სტრიქონების მასივი
max_players00 ნიშნავს ულიმიტოს. ადმინები სავსე სერვერზეც შედიან
visibility.publictrueაქვეყნებს ოფიციალურ matching სერვერზე
visibility.lantrueაგზავნის სიგნალს ლოკალურ ქსელში
username / password-შენი factorio.com-ის ლოგინი, public-ისთვის აუცილებელია
token-password-ის ნაცვლად გამოიყენება, იღებ factorio.com-ის პროფილიდან
game_password-რასაც მოთამაშეები შესასვლელად აკრეფენ
require_user_verificationtrueმხოლოდ სწორი factorio.com ანგარიშის მქონე კლიენტები
max_upload_in_kilobytes_per_second00 ნიშნავს ულიმიტოს. ზღუდავს რუკის გადაცემას შემოსულ მოთამაშეებზე
max_upload_slots5რამდენ მოთამაშეს შეუძლია რუკის ერთდროულად ჩამოტვირთვა
minimum_latency_in_ticks0ხელოვნური დაყოვნების ქვედა ზღვარი. ერთი tick დაახლოებით 16 ms-ია
max_heartbeats_per_second60ქსელის tick-ის სიხშირე, მინიმუმი 6, მაქსიმუმი 240
ignore_player_limit_for_returning_playersfalseძველ მოთამაშეებს max_players-ის გვერდით უშვებს
allow_commandsadmins-onlytrue, false ან admins-only
autosave_interval10წუთები ავტოშენახვებს შორის
autosave_slots5ავტოშენახვები ამდენ ფაილს შორის ბრუნავს
afk_autokick_interval0უმოქმედობის წუთები გაგდებამდე. 0 არასოდეს აგდებს
auto_pausetrueაპაუზებს თამაშს, როცა არავინ არის დაკავშირებული
auto_pause_when_players_connectfalseაპაუზებს, სანამ ვინმე რუკას ჩამოტვირთავს
only_admins_can_pause_the_gametrueსაჯარო თამაშს ვერავინ დააპაუზებს
autosave_only_on_servertrueკლიენტები საკუთარ ავტოშენახვებს არ წერენ
non_blocking_savingfalseინახავს fork-ით, თამაშის გაყინვის გარეშე. ექსპერიმენტულია

ბოლოში მდგარი ოთხი segment_size გასაღები განსაზღვრავს, რამხელა ნაწილებად იჭრება ქსელის შეტყობინებები მოთამაშეების რაოდენობის ცვლილებასთან ერთად. ნუ შეეხები, თუ დიდ საჯარო სერვერზე კავშირის წყვეტას არ არჩევ; მათი გაზრდა სერვერის ატვირთვის მოთხოვნას ზრდის და სუსტი კავშირის მქონე მოთამაშეებისთვის შეიძლება ვითარება გააუარესოს.

ამათგან ოთხი წყვეტს, კარგად მუშაობს თუ არა შენი სერვერი:

`visibility.public` `username`-თან და `token`-თან ერთად. საჯარო სერვერმა factorio.com-ზე ავტორიზაცია უნდა გაიაროს. token-ი აიღე factorio.com-ის შენი პროფილის გვერდიდან და ჩასვი token-ში და არა ანგარიშის პაროლი. თუ მონაცემები არასწორია, სერვერი მაინც ჩაირთვება და პირდაპირი კავშირისთვის იმუშავებს - უბრალოდ matching სერვერის შეცდომას დაწერს და სიაში არასოდეს გამოჩნდება. ხალხი ერთ საათს firewall-ის წესებზე ხარჯავს იმისთვის, რაც token-ში შეცდომაა.

`auto_pause`. ნაგულისხმევად ჩართულია და თითქმის ყველა კერძო ჯგუფისთვის სწორია: როცა არავინ არის დაკავშირებული, თამაში წინ აღარ მიდის, ამიტომ ბიტერები არ ვითარდებიან და დაბინძურება არ ვრცელდება, სანამ გძინავს. გამორთე მხოლოდ მაშინ, თუ გინდა, რომ ქარხანა უყურადღებოდ იმუშაოს, და გახსოვდეს, რომ დაპაუზებული სერვერიც თავის მეხსიერებას იყენებს.

`allow_commands`. admins-only გონივრული ნაგულისხმევია. /c-ის ნებისმიერი გამოყენება save-ს სამუდამოდ ნიშნავს როგორც ბრძანებებგამოყენებულს, რაც მასზე ყველასთვის achievement-ებს ზღუდავს. /silent-command და /measured-command იგივე ეფექტს იძლევა.

`autosave_interval`. ათი წუთი ნაგულისხმევია და გონივრული კომპრომისია. დიდი რუკის შენახვა თამაშს წამით ბლოკავს - megabase-ზე შესამჩნევი გაყინვაა - და ცდუნება ინტერვალის გაზრდისკენ არის. გაუძელი: ინტერვალი სწორედ იმდენ პროგრესს უდრის, რამდენსაც არასუფთა გაჩერება გიჯდება.

პორტები, შესვლა და საჯარო სია#

პორტიპროტოკოლიდანიშნულება
34197UDPთამაშის ტრაფიკი. ერთადერთი პორტი, რომელიც თავად თამაშს სჭირდება
27015TCPRCON, თუ ჩართავ. ნებისმიერი პორტი ივარგებს

Factorio ერთ UDP პორტს იყენებს და სხვა არაფერს. ცალკე query პორტი არ არსებობს, რის გამოც ის firewall-ის მხრივ ერთ-ერთი ყველაზე მარტივი თამაშია - და ესეც ნიშნავს, რომ მხოლოდ TCP წესი უხმოდ მოგცემს სერვერს, რომელიც მუშაობს და მიუწვდომელია. გეიმ სერვერის პორტები ახსნილი გვიხსნის, რატომ არის ეს შეცდომა ასე გავრცელებული.

საჯარო თამაშების ძებნამისამართი და თეგებიdirect UDPავტოშენახვა ყოველ 10 წუთშირუკის გადაცემაSave ფაილიიგზავნება შესვლისასFactorio კლიენტი2.0.xfactorio.commatching სერვერიHeadless სერვერიUDP 34197
როგორ პოულობს მოთამაშე Factorio სერვერს და როგორ უერთდება

შესვლის სამი გზა არსებობს:

  1. პირდაპირი დაკავშირება. Multiplayer, შემდეგ Connect to address, შემდეგ 203.0.113.10:34197. ყოველთვის მუშაობს, სერვერზე factorio.com-ის ლოგინი არ სჭირდება და პირველი, რაც უნდა გამოსცადო, სწორედ ესაა.
  2. საჯარო სია. სჭირდება visibility.public, სწორი მონაცემები და ჩართული require_user_verification. ახალი სერვერები ერთი-ორი წუთის განმავლობაში ჩნდება.
  3. LAN. visibility.lan სიგნალს მხოლოდ ლოკალურ ქსელში აგზავნის. ჰოსტინგის სერვერზე უადგილოა.

შესვლა მყისიერი არ არის. კლიენტი მთელ save-ს ჩამოტვირთავს, რაც მომწიფებულ რუკაზე ათეულობით მეგაბაიტია, შემდეგ კი მიმდინარე tick-ს გაუსწორდება. თუ ეს დაწევა ძალიან გრძელდება, შესვლა ვერ ხერხდება და თავიდან ცდილობს. დატვირთულ სერვერზე max_upload_slots-ის 2-მდე ან 3-მდე დაწევა ყოველ ცალკეულ შესვლას აჩქარებს, ოღონდ მათ რიგში აყენებს.

ადმინები, whitelist და ბანები#

სამი JSON ფაილია, ყველა factorio.com-ის მომხმარებლის სახელების უბრალო მასივია და ყველა არგუმენტებით გადაეცემა:

server-adminlist.json
["kovarex", "Rseding91"]
bash
$ ./bin/x64/factorio --start-server ./saves/world.zip \    --server-settings ./data/server-settings.json \    --server-adminlist ./data/server-adminlist.json \    --server-banlist ./data/server-banlist.json \    --server-whitelist ./data/server-whitelist.json \    --use-server-whitelist

whitelist მხოლოდ მაშინ მოქმედებს, როცა --use-server-whitelist არის მითითებული; ფაილი მარტო არაფერს აკეთებს. ban სია იღებს ან უბრალო სახელებს, ან ობიექტებს username-ითა და reason-ით. სამივეს სერვერი უკან თავად წერს, როცა შესაბამის კონსოლის ბრძანებებს იყენებ, ამიტომ სერვერის მუშაობისას ხელით ნუ შეასწორებ, თორემ შენი ცვლილება შემდეგ /ban-ზე გადაიწერება.

მომხმარებლის სახელები აქ factorio.com-ის ანგარიშების სახელებია, სწორედ ამიტომ არის require_user_verification მნიშვნელოვანი: გამორთული ვერიფიკაციისას ნებისმიერს შეუძლია ნებისმიერი სახელი მოირგოს და შენი ადმინების სია მხოლოდ დეკორაცია ხდება.

კონსოლის ბრძანებები და RCON#

headless სერვერი ბრძანებებს სტანდარტული შეყვანიდან კითხულობს, რაც პანელზე კონსოლის ველია. მუშაობს ყველაფერი, რასაც თამაშში მყოფი ადმინი აკრეფს, ოღონდ წინა slash არჩევითი არ არის - გამოიყენე slash.

ბრძანებარას აკეთებს
/playersჩამოთვლის მოთამაშეებს, არგუმენტად online ან count
/adminsაჩვენებს ადმინების სიას
/promote <name>მოთამაშეს ადმინად აქცევს ამ სესიისთვის და ფაილისთვის
/demote <name>ადმინობას ართმევს
/kick <name> <reason>გააგდებს
/ban <name> <reason>დაბანავს და ban სიას ჩაწერს
/unban <name>ბანს მოხსნის
/banlistბეჭდავს ან არედაქტირებს ban სიას
/whitelist add|remove|get|clearმართავს whitelist-ს
/mute <name>მოთამაშეს ჩატის გამოყენებას უკრძალავს
/server-saveმყისიერად ინახავს, ავტოშენახვის ლოდინის გარეშე
/config get <key>კითხულობს მოქმედ პარამეტრს
/config set <key> <value>ცვლის ერთს, გადატვირთვის გარეშე
/timeრამდენი ხანია რუკა მუშაობს
/evolutionმტრის ევოლუციის მიმდინარე ფაქტორი და რა ამოძრავებს მას
/seedრუკის seed-ი
/versionbuild-ის ნომერი

/config ის ბრძანებაა, რომელიც დასამახსოვრებელია, რადგან მუშა თამაშზე server-settings.json-ის მნიშვნელობებს ცვლის. გასაღებები JSON-ის ქვედა ტირეების ნაცვლად დეფისებს იყენებს: allow-commands, autosave-interval, autosave-only-on-server, afk-auto-kick, game-password, ignore-player-limit-for-returning-players, max-players, max-upload-slots, max-upload-speed, non-blocking-saving, only-admins-can-pause, require-user-verification, visibility-lan, visibility-public. ამრიგად, /config set max-players 12 მყისიერად მოქმედებს, /config get game-password კი გეუბნება, რა პაროლია სინამდვილეში, როცა ვერავინ იხსენებს.

RCON ორი არგუმენტით ირთვება და სტანდარტულ Source RCON პროტოკოლს TCP-ზე ესაუბრება, ამიტომ rcon-cli, mcrcon და ყველა Discord bridge, რომელიც Minecraft-ს უჭერს მხარს, მასთან იმუშავებს:

bash
$ ./bin/x64/factorio --start-server ./saves/world.zip \    --server-settings ./data/server-settings.json \    --rcon-port 27015 --rcon-password "a-long-random-string"

RCON-ს არც სიხშირის შეზღუდვა აქვს და არც მეორე ფაქტორი, და მასში გაგზავნილი ყველაფერი ადმინის უფლებებით სრულდება. არასოდეს გახსნა ის ინტერნეტში მისახვედრი პაროლით - RCON უსაფრთხოდ გაუმართაობის ვარიანტებს სათანადოდ განიხილავს.

save-ები, ავტოშენახვები და განახლებები#

Factorio saves/-ში წერს _autosave1.zip-დან _autosave5.zip-მდე და სლოტებს შორის ბრუნავს. დატვირთულ რუკაზე თავად შენახვა ყველა მოთამაშისთვის შესამჩნევი გაყინვაა, რაც უსაფრთხოების საფასურია.

  • სუფთა გაჩერება ინახავს. პროცესისთვის interrupt-ის გაგზავნა ან პანელზე Stop-ის დაჭერა რუკას გასვლამდე წერს. სანამ დასრულებულად ჩათვლი, ლოგში save-ის ხაზს დაელოდე.
  • kill არ ინახავს. კონტეინერის მოკვლა, მეხსიერების ამოწურვა ან ჰოსტის ავარია ავტოშენახვის ერთ სრულ ინტერვალამდე გაკარგვინებს.
  • `--start-server-load-latest` უსაფრთხოების ბადეა. მის გარეშე გადატვირთვა დასახელებულ ფაილს ტვირთავს და სამი საათის ავტოშენახვებს უხმოდ უგულებელყოფს.
  • ავტოშენახვები backup არ არის. ისინი იმავე დისკზე ინახება, სადაც დასაცავი save, და სლოტების ბრუნვის გამო შეუმჩნეველი დაზიანება ერთ საათში გადაიწერება. გააკეთე ნამდვილი ასლები სხვაგან და დროდადრო აღადგინე ერთ-ერთი, რომ დარწმუნდე, მუშაობს - სწორედ ეს არის backup-ები, რომლებიც მართლა აღდგება მთელი არგუმენტი.

განახლება ახალი headless პაკეტის ხელით ჩამოტვირთვაა და ძველზე გახსნა; headless build-ს ავტომატური განმაახლებელი არ აქვს, კლიენტი და სერვერი კი დასაკავშირებლად ზუსტად ერთსა და იმავე ვერსიაზე უნდა იყვნენ. RE:NODE-ზე Factorio-ს ყველა გეგმაში შემავალი backup სლოტები "განახლებამდე" ასლს ფარავს, Schedules ჩანართი კი cron გამოსახულებით ყოველდღიურ backup-სა და ყოველკვირეულ restart-ს შენი დასწრების გარეშე ასრულებს.

mod-ები mods/-ში ცხოვრობს .zip ფაილებად სახელით ModName_1.2.3.zip, mods/mod-list.json კი განსაზღვრავს, რომელია ჩართული. როცა კლიენტი mod-იან სერვერს უერთდება, თამაში შესაბამისი mod-ების ავტომატურად ჩამოტვირთვასა და ჩართვას გვთავაზობს, ამიტომ მოთამაშეებს არაფრის ხელით დაყენება არ სჭირდებათ, სანამ mod-ები ოფიციალურ პორტალზეა. დეტალები, mod-ების განახლების სიხშირეზე ზემოქმედების ჩათვლით, Factorio mod-ები და UPS სერვერზე-შია.

პრობლემების მოგვარება#

სერვერი საჯარო სიაში არ ჩანს. თითქმის ყოველთვის factorio.com-ის მონაცემებია. ლოგში მოძებნე matching სერვერის შეცდომა, დარწმუნდი, რომ visibility.public არის true, და გამოიყენე პროფილიდან აღებული token-ი და არა პაროლი. ჯერ პირდაპირი დაკავშირებით გამოსცადე: თუ ის მუშაობს, სერვერი კარგადაა.

"Map version is not compatible" ან პირდაპირი ვერსიების შეუსაბამობა. კლიენტი განახლდა, სერვერი კი - არა. ორივე ზუსტად ერთი და იმავე build-ზე უნდა იყოს. თუ mod-ებს იყენებ, ისინი სერვერზე ადრე განაახლე და არა მის შემდეგ.

მოთამაშეებს დიდი რუკის ჩამოტვირთვისას timeout აქვთ. გაზარდე max_upload_in_kilobytes_per_second, თუ დააყენე, ან შეამცირე max_upload_slots, რომ არხს ნაკლები გადაცემა ინაწილებდეს. მოთამაშე, რომელიც უკვე ერთხელ შემოვიდა, მხოლოდ სხვაობას ჩამოტვირთავს, ამიტომ პირველი შესვლა ყოველთვის ყველაზე რთულია.

ყველა წამში 45 განახლებაზეა. სერვერს რუკის საკმარისად სწრაფად სიმულაცია არ შეუძლია. ქსელში ვერაფერი ამას ვერ გამოასწორებს. ეს არის mod-ები და UPS პოსტის მთელი თემა.

სერვერი რამდენიმე წუთში ერთხელ თავად გადაიტვირთება. ჩვეულებრივ კონტეინერის მეხსიერების ლიმიტს შენახვისას აღწევს, რადგან შენახვას ხანმოკლედ მეტი მეხსიერება სჭირდება, ვიდრე მუშაობას. შეამოწმე, გადატვირთვები ავტოშენახვის ინტერვალის გარშემო ჯგუფდება თუ არა, და შემდეგ ან ლიმიტი გაზარდე, ან non_blocking_saving გამორთე, თუ ის ჩართე. რატომ იტვირთება შენი გეიმ სერვერი განუწყვეტლივ გვიჩვენებს, როგორ წაიკითხო კანონზომიერება.

რუკა თავიდან დაიწყო. გაშვების ბრძანებაში დარჩენილი --create ან ბრძანება, რომელიც არარსებულ save გზას უთითებს. ძველი ფაილი ჩვეულებრივ ისევ saves/-შია.

ბრძანებები არაფერს აკეთებს. allow_commands არის admins-only და შენ ადმინების სიაში არ ხარ, ან კონსოლში slash-ის გარეშე წერ.

FAQ#

headless სერვერის გასაშვებად Factorio-ს ყიდვა მჭირდება?

არა. headless პაკეტი უფასო ჩამოსატვირთია და სერვერს ლიცენზია არ სჭირდება. factorio.com-ის ანგარიში საჭიროა მხოლოდ სერვერის საჯარო სიაში გამოსაქვეყნებლად, თითოეულ მოთამაშეს კი, ცხადია, თამაშის საკუთარი ასლი სჭირდება.

შემიძლია headless სერვერი ჩემი Steam-ის დაყენებიდან გავუშვა?

არა. Steam სრულ თამაშს აწვდის, რომელიც გრაფიკიანი სხვა build-ია. შეგიძლია თამაშის შიგნიდან ჰოსტინგი, მაგრამ ეს რუკას ერთი ადამიანის მანქანას მიაბამს და ის წასვლისას დაპაუზდება. headless პაკეტი ცალკე, სწორი ჩამოტვირთვაა.

რამდენი მოთამაშის დატევა შეუძლია Factorio სერვერს?

max_players ნაგულისხმევად ულიმიტოა, პრაქტიკული ზღვარი კი სიმულაციაა და არა მოთამაშეების რაოდენობა. ოცი ადამიანი მოკრძალებულ ბაზაზე კარგადაა. იგივე ოცი megabase-ზე - არა, რადგან ყველა კლიენტმა ერთსა და იმავე განახლების სიხშირეს უნდა აუწყოს ფეხი.

სად ვიპოვო შესვლის პაროლი?

კონსოლში /config get game-password მას ბეჭდავს, server-settings.json-ში კი game_password აყენებს. მისი შეცვლა /config set game-password-ით მყისიერად, გადატვირთვის გარეშე მოქმედებს.

რატომ დავკარგეთ თხუთმეტი წუთი ავარიის შემდეგ?

რუკა ავტოშენახვის ტაიმერით იწერება და არა განუწყვეტლივ. ყველაფერი ბოლო ავტოშენახვის შემდეგ მხოლოდ მეხსიერებაში არსებობდა. დაწიე autosave_interval, გამოიყენე --start-server-load-latest, რომ გადატვირთვამ ყველაზე ახალი ფაილი აიღოს, და სერვერი შეძლებისდაგვარად სუფთად გააჩერე.

სერვერს იგივე mod-ები სჭირდება, რაც კლიენტებს?

დიახ, ზუსტად იგივე mod-ები ზუსტად იმავე ვერსიებში. Factorio-ს მხოლოდ კლიენტის მხარეს არსებული mod-ები არ აქვს, რადგან ყოველი mod სიმულაციას ცვლის. კლიენტი შემოგთავაზებს ავტომატურ სინქრონიზაციას ყველაფერთან, რაც mod პორტალზეა გამოქვეყნებული.


კომენტარები

სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.

0/2000