Don't Starve Together-ის dedicated სერვერი ერთი პროგრამა არ არის. ეს cluster-ია: საერთო კონფიგურაციის საქაღალდე და თითო სერვერული პროცესი ყოველ სამყაროზე. თითქმის ყველას ორი სჭირდება - Forest, როგორც Master shard, და Caves, როგორც მეორადი shard - და სწორედ ეს ერთი ფაქტი განასხვავებს DST-ის ჰოსტინგს ამ ბლოგზე აღწერილი ყველა სხვა თამაშისგან. ორი პროცესი, ორი პორტი, ორი მოდების ნაკრები, ერთი save. დაუმატე უფასო Klei cluster token, რომელსაც შენ მაგივრად ვერავინ შექმნის, და მთელი სურათი გაქვს. ეს გზამკვლევი გადის ყველა ფაილს, ყველა პარამეტრს და იმ შეცდომებს, რის გამოც ადამიანები უყურებენ სერვერს, რომელიც ირთვება და სიაში მაინც არ ჩნდება.
რა არის cluster: shard-ები, Master და Caves#
shard არის ერთი სერვერული პროცესი, რომელიც ერთ სამყაროს უშვებს. cluster არის shard-ების ერთობლიობა, რომლებსაც აქვთ საერთო სახელი, პაროლი, ადმინების სია და save. ზუსტად ერთი shard არის Master; დანარჩენები მას უერთდებიან. პირობითად, Master უშვებს Forest-ს, ხოლო ერთი მეორადი shard - Caves-ს, ამიტომ საქაღალდეებს ჩვეულებრივ Master და Caves ჰქვია.
როცა მოთამაშე ჩაყრილში ეშვება, ის იმავე სამყაროს ახალ ადგილს არ ტვირთავს. ის ერთ სერვერულ პროცესს წყდება და მეორეს უერთდება, პერსონაჟი კი shard-ებს შორის კავშირით გადაეცემა. ეს DST-ის ბევრ თავისებურებას ხსნის:
- Caves-ს აქვს საკუთარი დღეების მრიცხველი, სეზონის საკუთარი მდგომარეობა და სამყაროს საკუთარი პარამეტრები.
- Caves shard სულ მუშაობს, ქვემოთ ვინმე არის თუ არა.
- თუ Caves-ის პროცესი მკვდარია, ჩაყრილები გამოქვაბულების მიუწვდომლობას აცხადებს, Forest კი სრულიად მშვიდად განაგრძობს მუშაობას.
- rollback თითო shard-ზე ცალ-ცალკეა, სანამ ორივეს ერთად არ დააბრუნებ - ასე ხვდებიან ადამიანები Forest-ში 210-ე დღეზე და Caves-ში 195-ე დღეზე.
შეგიძლია Forest-ზე დაფუძნებული cluster გაუშვა და ის კარგად იმუშავებს; Caves shard არჩევითია. მაგრამ თამაშის გვიანდელი ნაწილის დიდი ნაწილი სწორედ იქაა, ამიტომ მიიჩნიე ის სტანდარტად და თავიდანვე ორი პროცესისთვის გათვალე რესურსები.
მოთხოვნები და რესურსების მოხმარება#
თითოეული shard ცალკე, ძირითადად ერთნაკადიანი პროცესია. ამიტომ ორ shard-ს ერთი სწრაფი ბირთვის ნაცვლად ორი ბირთვი უნდა - ეს უმეტესი გადარჩენის თამაშების რჩევის საპირისპიროა.
| კონფიგურაცია | RAM | CPU | შენიშვნები |
|---|---|---|---|
| მხოლოდ Forest, 1-4 მოთამაშე | 1 GB | 0.75-1 ბირთვი | ერთი პროცესი, პატარა სამყარო |
| Forest და Caves, 6-მდე | 2 GB | 1-1.5 ბირთვი | ჩვეულებრივი შემთხვევა |
| Forest და Caves, 8-10, რამდენიმე მოდი | 3-4 GB | 2 ბირთვი | ორივე shard ერთდროულად დატვირთულია |
| გრძელი სამყარო, 500+ დღე, მძიმე მოდები | 4-6 GB | 2+ ბირთვი | ობიექტების რაოდენობა იზრდება ყველაფერთან ერთად, რასაც აშენებ |
- მეხსიერება shard-ებს შორის ნაწილდება, დახვეწილ სამყაროში დაახლოებით თანაბრად. მხოლოდ Forest shard-ს დასაწყისში 512-700 MB კომფორტულად ჰყოფნის და იზრდება, რაც რუკა შეისწავლება და შენდება.
- CPU იხარჯება ობიექტების სიმულაციაზე, ხოლო DST-ის სამყაროები ობიექტებს დაუნდობლად აგროვებენ - ყოველი დაგდებული ნივთი, ყოველი დარგული ხე, ყოველი ნავი. მესამე ზაფხულში მყოფი სამყარო შესამჩნევად უფრო ძვირი ჯდება, ვიდრე ახალი.
- დისკი მცირეა. ინსტალაცია რამდენიმე გიგაბაიტია, save-ის მონაცემები კი მეგაბაიტებია და არა გიგაბაიტები.
- ქსელი ზომიერია და
tick_rate-სა და მოთამაშეების რაოდენობასთან ერთად იზრდება.
pause_when_empty = true არის პარამეტრი, რომელიც პატარა გეგმებს სიცოცხლისუნარიანს ხდის: როცა არავინ არის დაკავშირებული, სიმულაცია ჩერდება და ორივე shard თითქმის არაფერს ხარჯავს.
ინსტალაცია, Klei token და საქაღალდეების სტრუქტურა#
dedicated სერვერი უფასო ანონიმური SteamCMD ჩამოტვირთვაა, app id 343050. თამაში იმ ანგარიშზე გჭირდება, რომლითაც აყენებ, აუცილებელი არ არის.
$ steamcmd +force_install_dir /home/dst/server +login anonymous \ +app_update 343050 validate +quitშესრულებადი ფაილებია bin64/dontstarve_dedicated_server_nullrenderer_x64 და 32-ბიტიანი bin/dontstarve_dedicated_server_nullrenderer. ისინი საკუთარი საქაღალდიდან უნდა გაეშვას.
კონფიგურაცია ინსტალაციასთან არ ცხოვრობს. ის cluster-ის საქაღალდეშია, მომხმარებლის Klei დირექტორიაში:
~/.klei/DoNotStarveTogether/MyDediServer/ cluster.ini settings shared by every shard cluster_token.txt your Klei token, nothing else in the file adminlist.txt one Klei user id per line whitelist.txt blocklist.txt Master/ server.ini worldgenoverride.lua modoverrides.lua save/ Caves/ server.ini worldgenoverride.lua modoverrides.lua save/token არის ნაწილი, რომლის გამოტოვებაც არ შეიძლება. შედი Klei-ს ანგარიშების საიტზე, გახსენი Don't Starve Together-ის სერვერების განყოფილება, დაამატე სერვერი და დააკოპირე გაცემული token. ჩასვი ის cluster_token.txt-ში, როგორც ფაილის ერთადერთი შიგთავსი - ბრჭყალების და ბოლოში დამატებითი ტექსტის გარეშე. ის უფასოა, შენს Klei ანგარიშზეა მიბმული და Klei უარყოფს ყველა token-ს, რომელიც მან არ გასცა, სწორედ ამიტომ ვერც ერთი ჰოსტი ვერ შექმნის მას შენთვის. ერთი token-ით ორი ცოცხალი cluster-ის გაშვება ერთ-ერთს გათიშავს, ამიტომ ყოველ სერვერზე ცალკე token შექმენი.
RE:NODE ამას ინსტალაციის დაწყებამდე ითხოვს: Don't Starve Together ერთ-ერთია იმ მცირე რაოდენობის თამაშიდან, რომელსაც შენი საკუთარი credential სჭირდება; თავად სერვერი იქმნება, როგორც კი გადახდა დასრულდება, ინსტალაცია კი Setup ჩანართში ელოდება, სანამ token-ს ჩასვამ.
შემდეგ გაუშვი ორივე shard. შენს საკუთარ მანქანაზე ეს ორი ბრძანებაა, ჩვეულებრივ ორი სერვისი:
$ cd /home/dst/server/bin64$ ./dontstarve_dedicated_server_nullrenderer_x64 \ -console -cluster MyDediServer -shard Master$ ./dontstarve_dedicated_server_nullrenderer_x64 \ -console -cluster MyDediServer -shard Cavesსასარგებლო flag-ები: -console რთავს კონსოლის შეყვანას, -cluster ირჩევს cluster-ის საქაღალდეს, -shard ირჩევს shard-ის საქაღალდეს მის შიგნით, -persistent_storage_root მთელ Klei დირექტორიას სხვაგან გადააქვს, ხოლო -monitor_parent_process shard-ს აჩერებს, როცა მისი ზედამხედველი გაჩერდება - ეს ბრმად დარჩენილ Caves პროცესებს აჩერებს.
Caves shard-ს უნდა ეთქვას, რომ ახალი ტყის ნაცვლად გამოქვაბულების სამყარო შექმნას. ამას Caves საქაღალდეში მდებარე worldgenoverride.lua აკეთებს:
return { override_enabled = true, preset = "DST_CAVE",}Master-ის ექვივალენტი იყენებს preset = "SURVIVAL_TOGETHER"-ს. თუ აქ შეცდები, გექნება cluster ორი ტყით და გამოქვაბულების გარეშე, რასაც Caves სამყაროს თავიდან გენერაციის გარეშე ვერ გამოასწორებ.
cluster.ini, პარამეტრი პარამეტრზე#
ერთი ფაილი, ოთხი-ხუთი სექცია, საერთო cluster-ის ყველა shard-ისთვის.
[GAMEPLAY]game_mode = survivalmax_players = 6pvp = falsepause_when_empty = truevote_enabled = true[NETWORK]cluster_name = The Long Wintercluster_description = Cooperative, mods on, no griefingcluster_password = hollow-stalagmitecluster_intention = cooperativelan_only_cluster = falseoffline_cluster = falsetick_rate = 15whitelist_slots = 0autosaver_enabled = true[MISC]console_enabled = truemax_snapshots = 6[SHARD]shard_enabled = truebind_ip = 127.0.0.1master_ip = 127.0.0.1master_port = 10889cluster_key = a-long-random-string[STEAM]steam_group_only = falsesteam_group_id = 0steam_group_admins = false| პარამეტრი | ნაგულისხმევი | რას აკეთებს |
|---|---|---|
game_mode | survival | survival, endless ან wilderness |
max_players | 6 | ჯამში მთელ cluster-ზე და არა თითო shard-ზე |
pvp | false | მოთამაშეების დაზიანება |
pause_when_empty | false | ჩერდება სიმულაცია, როცა არავინაა ონლაინ |
vote_enabled | true | თამაშში kick და rollback კენჭისყრა |
cluster_intention | - | cooperative, social, competitive ან madness |
cluster_password | - | ცარიელი ნიშნავს, რომ ყველას შეუძლია შემოსვლა |
offline_cluster | false | Klei სერვისების, ბრაუზერში ჩვენების და მოდების გარეშე |
lan_only_cluster | false | მხოლოდ ლოკალური ქსელი |
tick_rate | 15 | სერვერის განახლება წამში |
whitelist_slots | 0 | whitelist-ში მყოფი მოთამაშეებისთვის დაცული ადგილები |
autosaver_enabled | true | save ყოველ დაღამებაზე |
console_enabled | true | რთავს თამაშის და სერვერის კონსოლს |
max_snapshots | 6 | რამდენი rollback წერტილი ინახება |
shard_enabled | false | ორ-shard-იანი cluster-ისთვის უნდა იყოს true |
master_port | 10889 | shard-იდან shard-მდე კავშირი და არა მოთამაშეების პორტი |
cluster_key | - | საერთო საიდუმლო shard-ებს შორის, ნებისმიერი სტრიქონი |
ამათგან ოთხი თითო წინადადებას იმსახურებს.
`shard_enabled`. თუ ის false-ია, Caves shard ჩაირთვება, Master-ს ვერ იპოვის და ადგილზე დარჩება. ეს ყველაზე გავრცელებული მიზეზია, როცა Caves-ის პროცესი მუშაობს, ჩაყრილები კი მაინც ამბობს, რომ გამოქვაბულები მიუწვდომელია.
`cluster_key` და `master_port`. shard-ები ერთმანეთს გასაღებით ამოიცნობენ და master_ip-ზე master_port-ით საუბრობენ. როცა ორივე shard ერთ მანქანაზეა, დატოვე ისინი 127.0.0.1-სა და 10889-ზე; ეს ტრაფიკი მანქანის გარეთ არასოდეს უნდა გავიდეს და გამოაშკარავებული არ უნდა იყოს.
`tick_rate`. თხუთმეტი ნაგულისხმევია და კოოპერატიული ჯგუფისთვის კარგია. 30-მდე ამაღლება ბრძოლას უფრო მკვეთრს ხდის და დაახლოებით ორჯერ ზრდის როგორც CPU-ს ხარჯს მოთამაშეზე, ისე გამტარუნარიანობას. პატარა გეგმაზე ეს გაცვლა ჩვეულებრივ არ ღირს.
`offline_cluster`. მისი true-ზე დაყენება cluster-ს Klei-სგან სრულად წყვეტს - token არ სჭირდება, სერვერების ბრაუზერში ჩანაწერი არ იქნება და workshop მოდებიც არ იმუშავებს. ეს LAN party-ისთვისაა და არა სერვერისთვის, რომელიც გინდა, რომ ხალხმა იპოვოს.
server.ini და პორტები, რომლებიც თითო shard-ს სჭირდება#
თითოეულ shard-ის საქაღალდეს საკუთარი server.ini აქვს და მნიშვნელობები shard-ებს შორის განსხვავებული უნდა იყოს:
[NETWORK]server_port = 10999[SHARD]is_master = true[STEAM]master_server_port = 27018authentication_port = 8768[ACCOUNT]encode_user_path = true[NETWORK]server_port = 10998[SHARD]is_master = falsename = Cavesid = 2[STEAM]master_server_port = 27019authentication_port = 8769[ACCOUNT]encode_user_path = true| პორტი | პროტოკოლი | დანიშნულება |
|---|---|---|
10999 | UDP | Master shard, პორტი, რომელსაც მოთამაშეები უერთდებიან |
10998 | UDP | Caves shard |
27018 / 27019 | UDP | Steam master server, თითო shard-ზე ერთი |
8768 / 8769 | UDP | Steam authentication, თითო shard-ზე ერთი |
10889 | UDP | shard-ებს შორის კავშირი, მხოლოდ loopback |
DST-ის ყველაფერი UDP-ზეა. თითოეულ shard-ს სჭირდება საკუთარი server_port, საკუთარი master_server_port და საკუთარი authentication_port, სხვა ყველა shard-ისგან განსხვავებული - ამ სამიდან რომელიმეს გაზიარება არის მიზეზი, რის გამოც ერთი shard ირთვება, მეორე კი ჩუმად არა. თუ გინდა, რომ LAN აღმოჩენა იმუშავოს, დატოვე server_port 10998-11018 დიაპაზონში; ინტერნეტ თამაშისთვის ნებისმიერი თავისუფალი პორტი კარგია. იმის მიზეზები, თუ რატომ არსებობს საერთოდ query ტიპის პორტები, აღწერილია პოსტში გეიმ სერვერის პორტები ახსნილი.
is_master არის ის, რაც shard-ს Master-ად აქცევს. ერთ cluster-ში ორი shard is_master = true-ით cluster-ია, რომელიც არ დაუკავშირდება. id თითო shard-ზე უნიკალური უნდა იყოს, ხოლო name არის იარლიყი, რომელსაც თამაში ამ სამყაროსთვის აჩვენებს.
პანელზე ამათ ხელით იმდენად ხშირად არ ცვლი, როგორც ფიქრობ - პორტები შენთვის გამოიყოფა. RE:NODE-ის Don't Starve Together გეგმებს ორი გამოყოფა მოჰყვება, ხოლო დამატებითი პორტები Network ჩანართზე ემატება და იშლება, თუ მესამე shard გინდა.
მოთამაშეები სერვერს თამაშის ბრაუზერში პოულობენ, სახელით გაფილტრულს. პირდაპირი დაკავშირებაც მუშაობს: გახსენი კონსოლი თამაშში backtick კლავიშით და გაუშვი c_connect("203.0.113.10", 10999, "hollow-stalagmite"). ეს საიმედო გზაა, როცა ბრაუზერი ნელია, და ერთადერთი გზა, თუ სია ჯერ არ განახლებულა.
ადმინები, whitelist და ბლოკის სია#
სამი უბრალო ტექსტური ფაილი cluster-ის საქაღალდეში, თითო Klei user id ხაზზე. Klei id-ები ასე გამოიყურება: KU_aB3dEf7h, და თითო ანგარიშზე უცვლელია.
KU_aB3dEf7hKU_9zQ2mNp1whitelist.txt whitelist_slots-თან მუშაობს: თუ ექვსმოთამაშიან სერვერზე whitelist_slots = 2-ს დააყენებ, ოთხი ადგილი ყველასთვის ღიაა, ორი კი ჩამოთვლილი მოთამაშეებისთვის რჩება, მაშინაც კი, როცა სერვერი სავსეა. blocklist.txt არის ban-ების სია და მას სერვერი წერს, როცა თამაშში ვინმეს ბანავ.
მოთამაშის id-ის გასაგებად საიმედო გზაა, ერთხელ შემოვიდეს და კონსოლში გაუშვას c_listallplayers(), რომელიც ყველა დაკავშირებულ მოთამაშეს მათი id-ით ბეჭდავს. მოთამაშეებს საკუთარი id Klei-ს ანგარიშის გვერდზეც შეუძლიათ ნახონ. ფაილები shard-ის დაწყებისას იკითხება, ამიტომ დაამატე id-ები და გადატვირთე, ან თამაშში დანიშნე და სერვერს ფაილი თვითონ ჩაწერინე.
კონსოლის ბრძანებები, rollback-ები და snapshot-ები#
DST-ის კონსოლი Lua-ა. ბრძანებები იწერება shard-ის კონსოლში - პანელის კონსოლის ველში, ან თამაშის კონსოლში, რომელსაც backtick-ით ხსნი, თუ ადმინი ხარ. თამაშში კონსოლს აქვს ლოკალური და დისტანციური რეჟიმი; დისტანციური ბრძანებას სერვერს უგზავნის, მათ შორის გადართვა კი control-ისა და backtick-ის ერთად დაჭერით ხდება. სერვერის ბრძანების ლოკალურ რეჟიმში გაშვება არის მიზეზი, რის გამოც არაფერი ხდება.
| ბრძანება | რას აკეთებს |
|---|---|
c_save() | save-ს მაშინვე წერს |
c_shutdown() | ინახავს და აჩერებს shard-ს |
c_shutdown(false) | აჩერებს შენახვის გარეშე |
c_rollback(1) | ამ shard-ს ერთი snapshot-ით უკან აბრუნებს |
c_regenerateworld() | შლის ამ სამყაროს და ახალს ქმნის |
c_reset() | shard-ს თავისი ბოლო save-იდან თავიდან ტვირთავს |
c_announce("text") | სერვერის შეტყობინება ყველასთვის |
c_listallplayers() | ყველა დაკავშირებული მოთამაშე თავისი Klei id-ით |
TheNet:Kick("KU_aB3dEf7h") | გააგდებს |
TheNet:Ban("KU_aB3dEf7h") | ბანავს და ბლოკის სიაში წერს |
c_spawn("deerclops") | prefab-ს ქმნის კურსორთან |
c_give("goldnugget", 10) | ნივთებს აძლევს არჩეულ მოთამაშეს |
c_freecrafting() | არჩეული მოთამაშისთვის უფასო crafting-ს რთავს და ითიშავს |
snapshot-ები DST-ის საკუთარი rollback წერტილებია, max_snapshots-ით შეზღუდული და shard-ის save საქაღალდეში ინახება. c_rollback(2) მათგან ორით უკან მიდის. ამის შესახებ ორი რამ ხალხს ჭირვებს. snapshot-ები თითო shard-ზეა, ამიტომ Forest-ის Caves-ის გარეშე დაბრუნება ორ სამყაროს სხვადასხვა დღეზე ტოვებს - დააბრუნე ორივე, სწრაფად ერთმანეთის მიყოლებით. და snapshot-ები იმავე დისკზე ცხოვრობს, რაზეც save, ამიტომ ისინი გიცავს ცუდი გადაწყვეტილებისგან და არა დაკარგული სერვერისგან.
ნამდვილი backup-ები სხვაგან უნდა იყოს. RE:NODE-ზე ყველა Don't Starve Together გეგმა შეიცავს backup slot-ებს, რომლებიც ინახება მანქანის გარეთ, რომელსაც იცავენ, და აღდგება ღილაკით, ხოლო Schedules ჩანართი cron გამოსახულებით აიღებს ერთს - ღამის ასლი და ერთი მოდის დაყენებამდე გონივრული მოდელია. Backup-ები, რომლებიც მართლა აღდგება ხსნის, რატომ არის აღდგენის ნახევარი ის ნახევარი, რომელიც მნიშვნელოვანია, ხოლო გეგმიური ამოცანები, რომლებიც ღირს შეიცავს კიდევ ბევრ მისაბაძ ნიმუშს.
მოდები dedicated cluster-ზე#
Workshop მოდები dedicated სერვერზე ორნაბიჯიანი საქმეა და რომელიმე ნაბიჯის გამოტოვება არის მიზეზი, რის გამოც უმეტესობის მოდები არ იტვირთება.
პირველი ნაბიჯი: უთხარი სერვერს, რომ ჩამოტვირთოს ისინი. თამაშის ინსტალაციის დირექტორიაში mods/dedicated_server_mods_setup.lua ჩამოთვლის, რა უნდა მოიტანოს SteamCMD-მ დაწყებისას:
ServerModSetup("1595631294")ServerModSetup("375850593")ServerModCollectionSetup("1234567890")რიცხვები workshop ფაილების id-ებია, აღებული მოდის workshop URL-ის ბოლოდან. ServerModCollectionSetup იღებს კოლექციის id-ს და ყველაფერს ჩამოიტანს, რაც მასშია, რაც დიდი სიის მოვლისთვის გაცილებით ადვილია.
მეორე ნაბიჯი: ჩართე ისინი თითო shard-ზე. ყოველი shard-ის საქაღალდეში არსებული modoverrides.lua წყვეტს, რომელი ჩამოტვირთული მოდი არის ნამდვილად ჩართული, და მათ კონფიგურაციასაც ატარებს:
return { ["workshop-1595631294"] = { enabled = true, configuration_options = { ["language"] = "en", }, }, ["workshop-375850593"] = { enabled = true, },}გასაღები არის სიტყვასიტყვითი სტრიქონი workshop-, რომელსაც id მოსდევს. ყველაფერი, რაც სამყაროს ცვლის, ერთსა და იმავე ჩანაწერს საჭიროებს როგორც Master/modoverrides.lua-ში, ისე Caves/modoverrides.lua-ში, იდენტური პარამეტრებით - ერთ shard-ზე ჩართული და მეორეზე არა მოდი იწვევს prefab-ების ნაკლებობას და ავარიებს, როცა მოთამაშე მათ შორის გადადის. ყველაზე მარტივი დისციპლინა არის, ერთი ფაილი გქონდეს და ორივე საქაღალდეში გადააკოპირო.
კლიენტებს შესვლისას შესაბამისი მოდების ავტომატურად ჩამოტვირთვა ევალებათ, სწორედ ამიტომ სჭირდება მოდიან cluster-ს offline_cluster = false. მოდები workshop-ზე განახლდება, როცა მათი ავტორები გამოაქვეყნებენ, ხოლო DST-ის განახლება მათ გარკვეულ ნაწილს გატეხავს, ამიტომ cluster-ს backup აიღე თამაშის patch-მდე და ნუ გაგიკვირდება, თუ პირველი გაშვება მის შემდეგ ჩავარდება. workshop კონტენტის ზოგადი მექანიკა სერვერებზე აღწერილია პოსტში Steam Workshop მოდები dedicated სერვერებზე, ხოლო აღდგენის წესი - პოსტში რა უნდა გააკეთო, როცა მოდის განახლება ყველაფერს ამსხვრევს.
პრობლემების გადაჭრა#
"Your server will not start without a token." cluster_token.txt არ არის, ცარიელია, არასწორ საქაღალდეშია, ან token-ის გარდა რამეს შეიცავს. ის cluster-ის საქაღალდეშია და არა shard-ის საქაღალდეში.
სერვერი მუშაობს, მაგრამ ბრაუზერში არ ჩანს. შეამოწმე, რომ offline_cluster და lan_only_cluster ორივე false-ია, token მოქმედია და იმავე token-ს სხვა ცოცხალი cluster არ იყენებს. სცადე c_connect თამაშის კონსოლიდან: თუ პირდაპირი დაკავშირება მუშაობს, სერვერი კარგადაა და მხოლოდ სიაშია პრობლემა.
გამოქვაბულები თამაშში მიუწვდომელია. ან Caves-ის პროცესი არ მუშაობს, ან კავშირია გაწყვეტილი. შეამოწმე shard_enabled = true cluster.ini-ში, is_master = false Caves/server.ini-ში, რომ ორივე shard-ს ერთი და იგივე cluster_key აქვს და რომ ორ shard-ს განსხვავებული server_port, master_server_port და authentication_port აქვს.
ერთი shard ირთვება, მეორე მაშინვე ითიშება. თითქმის ყოველთვის ორ server.ini ფაილს შორის პორტების კოლიზიაა, ან ორ shard-ს ერთნაირი id აქვს.
მოდები არ იტვირთება. დარწმუნდი, რომ id ჩანს როგორც dedicated_server_mods_setup.lua-ში, ისე თითოეულ modoverrides.lua-ში, რომ overrides-ში workshop- პრეფიქსი არის და cluster offline არ არის. shard-ის ლოგი ყოველ ჩატვირთულ მოდს სახელით ბეჭდავს.
სამყარო rollback-ის შემდეგ არასწორ დღეზეა. ერთი shard დააბრუნე. მეორეც იმავე რაოდენობის snapshot-ით დააბრუნე და ორივე გადატვირთე.
ორივე shard განმეორებით ირთვება თავიდან. პირველ რიგში მეხსიერების ლიმიტი შეამოწმე. ერთი shard-ისთვის გათვლილ cluster-ს ლიმიტთან შეაჩერებს, როგორც კი Caves დაგენერირდება, ხოლო crash loop ჩვეულებრივ რესურსების ამოწურვაა და არა კონფიგურაციის შეცდომა - რატომ იტვირთება შენი გეიმ სერვერი განუწყვეტლივ თავიდან გაჩვენებს, როგორ განასხვავო ისინი.
FAQ#
მჭირდება საკუთარი Klei token?
დიახ, და ის შენი უნდა იყოს. ის უფასოა შენი Klei ანგარიშის გვერდიდან და ერთ წუთს მოითხოვს, მაგრამ Klei უარყოფს ყველა token-ს, რომელიც ამ ანგარიშს არ გაუცია, ამიტომ ვერც ერთი ჰოსტი ვერ მოგაწვდის მას. ყოველ cluster-ზე, რომელსაც უშვებ, ცალკე token შექმენი.
შემიძლია Don't Starve Together გამოქვაბულების გარეშე გავუშვა?
დიახ. მხოლოდ Forest-ის cluster ერთი shard და ერთი პორტია და სრულად მუშაობს. კარგავ გამოქვაბულების კონტენტს, რაც შუა და გვიანდელი თამაშის უმეტესი ნაწილია, ხოლო გამოქვაბულების მოგვიანებით დამატება ნიშნავს ახალი გამოქვაბულების სამყაროს გენერაციას და არა არსებულის გამოჩენას.
რამდენი მოთამაშის დატევა შეუძლია DST სერვერს?
max_players ნაგულისხმევად 6-ია და შეიძლება გაიზარდოს. პრაქტიკული ზღვარი არის დახვეწილი სამყაროს CPU ხარჯი და ის, რამდენი griefing-ის კონტროლისთვის ხარ მზად; უმეტესი ჯგუფი 6-სა და 10-ს შორის ჩერდება. ლიმიტი მთელ cluster-ს ითვლის და არა თითოეულ shard-ს.
სად ცხოვრობს save სინამდვილეში?
save-ში, თითოეული shard-ის საქაღალდის შიგნით, cluster-ის დირექტორიაში. Forest-სა და Caves-ს ცალკე save მონაცემები აქვთ, სწორედ ამიტომ არის rollback-ები თითო shard-ზე. backup აიღე მთელი cluster-ის საქაღალდის და არა ერთი shard-ის.
რატომ მუშაობს ჩემი მოდები Forest-ზე და Caves-ს ამსხვრევს?
იმიტომ, რომ modoverrides.lua თითო shard-ზეა და ორი ფაილი ერთმანეთს დაშორდა. ნებისმიერი მოდი, რომელიც სამყაროზე ზემოქმედებს, ორივეში იდენტური კონფიგურაციით უნდა იყოს ჩართული, ან shard-ებს შორის გადამავალი მოთამაშე prefab-ებს შეხვდება, რომლებიც მხოლოდ ერთ მხარეს არსებობს.
უსაფრთხოა tick rate-ის ამაღლება?
უსაფრთხოა, მაგრამ ფასი აქვს. 15-დან 30-მდე გადასვლა დაახლოებით ორჯერ ზრდის CPU-სა და გამტარუნარიანობას მოთამაშეზე, პატარა გეგმაზე კი ეს სავსე სერვერზე ლაგად ჩანს და არა უფრო გლუვ ბრძოლად. სცადე შენს ჩვეულებრივ ჯგუფთან და დააბრუნე, თუ სერვერის გრაფიკი მაღლა მიდის.




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