RE:NODE

RimWorld Multiplayer: Waiting for host to accept და desync-ები

ავტორი RE:NODE-ის გუნდი
17 წუთის საკითხავი


თუ მეგობარი RimWorld Multiplayer mod-ში "Waiting for host to accept"-ზე გაჭედილია, ე.ი. host-მა ის ჯერ არ შეუშვა. Steam-ით შეერთება ავტომატური არ არის: host-ს ეკრანზე მეგობრის სახელითა და Accept ღილაკით pop-up ჩანს, ან სია ჩატის ფანჯარაში, "Accept Steam players"-ის ქვეშ, და სანამ ღილაკს არ დააჭერს, არაფერი ხდება. თუ მოთხოვნა საერთოდ არ ჩანს, host Steam-ის ოფციის მონიშვნის გარეშე მასპინძლობს თამაშს. Desync-ები სულ სხვა პრობლემაა და სხვა წამალი სჭირდება: თითქმის ყველა მათგანი იმ mod-ებიდან, mod-ის პარამეტრებიდან ან თამაშის ფაილებიდან მოდის, რომლებიც სხვადასხვა მანქანაზე განსხვავდება, ან ისეთი mod-იდან, რომელიც Multiplayer-ის გუნდს ჯერ არ დაუპატჩავს, ან იქიდან, რომ ერთი მანქანა ზედმეტად ჩამორჩა. ეს სახელმძღვანელო გადის შეერთების ყველა ეტაპს, შეუსაბამობის ეკრანს, mod-ის მიერ ჩაწერილ desync ანგარიშს და ჩვევებს, რომლებიც გრძელ colony-ს სინქრონში ინახავს.

აქ ყველაფერი Multiplayer mod-ს ეხება (თავდაპირველად Zetrith-ის, ახლა rwmt გუნდის მიერ მხარდაჭერილს): ერთი საერთო colony, სადაც ყველა მანქანა ერთსა და იმავე სიმულაციას lockstep-ში აწარმოებს. იმისთვის, თუ რა არის ეს mod, რით განსხვავდება RimWorld Together-ისგან და რომელი მათგანის გაშვება შეიძლება სერვერზე, იხილე RimWorld multiplayer: mods, desyncs, hosting. ეს პოსტი იქ იწყება, სადაც ის მთავრდება - როცა mod უკვე დაყენებულია და რაღაც ჩაიშალა.

რა ხდება შეერთებისას#

Multiplayer თამაშში შეერთება ერთი ნაბიჯი არ არის. კლიენტი მთელ თანმიმდევრობას გადის და ჩატვირთვის ფანჯრის წარწერა ზუსტად გეუბნება, რომელ ეტაპზე გაიჭედა. თანმიმდევრობის ცოდნა "არ მუშაობს"-ს კონკრეტულ პრობლემად აქცევს.

ConnectingWaiting for host to acceptJoiningDownloadingWaiting for game dataJoining playerMultiplayer buttonSteam P2Psession requestHost gameAccept / RejectMod and config checkData mismatch screenGame datasave and join-pointSimulatingcatch up to host
A Steam join, step by step
წარწერა, რომელსაც ხედავრას ნიშნავსსად ეძებო
Connecting to a game hosted by...Steam host-თან სესიას ხსნისSteam online-ია, RimWorld-ის ერთი და იგივე build
Waiting for host to accepthost-ს შეერთების მოთხოვნა ელოდებაhost-ის ეკრანი
Joiningვერსიები და mod-ების სიები შედარდებაშეუსაბამობის ეკრანი, თუ გაიხსნა
Downloadingsave და config-ები გადმოდისfirewall, კავშირის ხარისხი
Waiting for game datahost გასაგზავნ მონაცემებს ამზადებსhost-ის წარმადობა, დიდი save-ები
Simulatinghost-ის tick-ს მიეწევიშენი CPU, join-point-ის პარამეტრი

Direct და LAN კავშირებისთვის accept ნაბიჯი საერთოდ არ არსებობს. ისინი პირდაპირ connecting-დან joining-ზე გადადიან და თუ ვერ ხერხდება, ჩვეულებრივ "Connection failed" ან "Connection timed out"-ით მთავრდება და არა ლოდინით.

"Waiting for host to accept"#

ეს შეტყობინება მხოლოდ Steam კავშირებზე ჩნდება და ნიშნავს, რომ შემომერთებელმა ყველაფერი სწორად გააკეთა. Steam peer-to-peer ქსელს სჭირდება, რომ მიმღებმა მხარემ ისეთი ადამიანის სესია მიიღოს, ვისთანაც ადრე არ უსაუბრია, და Multiplayer mod ამ გადაწყვეტილებას ჩუმად კი არ იღებს, host-ს უტოვებს.

მიმდინარე ვერსიებში host-ს მარჯვენა კიდიდან პატარა ფანჯარა შემოუცურდება მოთამაშის Steam-ის სახელითა და avatar-ით, წარწერით "wants to join your game" და ორი ღილაკით: Accept და Reject. იგივე მოლოდინში მყოფი მოთხოვნები ჩატის ფანჯარაშიც ჩანს (თამაშის დროს ეკრანის ზედა მარჯვენა კუთხეში), სათაურით "Accept Steam players" - იქ სახელზე დააჭირე და ადამიანს შეუშვებ. დაშვების შემდეგ host-ს შეტყობინება "Player has been accepted" მოუვა და შემომერთებელი mod-ების შემოწმებაზე გადადის.

საკონტროლო სია, როცა ვინმე უსასრულოდ ელოდება:

  1. host-მა თამაშს უნდა უყუროს. მოთხოვნა host-ის RimWorld-ის ფანჯარაში ამოხტება. თუ host Discord-ზეა გადასული, მოთხოვნა უპასუხოდ ელოდება.
  2. host-მა Steam ჩართულით უნდა გაუშვას თამაში. mod Steam მოთხოვნებს მხოლოდ მაშინ აყენებს რიგში, როცა ლოკალური სერვერი host-ის დიალოგში Steam-ის ოფციის მონიშვნით გაეშვა. მხოლოდ Direct-ით ან LAN-ით გაშვებული თამაში Steam მოთხოვნებს საერთოდ უგულებელყოფს, ამიტომ შემომერთებელი ელოდება და host-ის მხარეს არაფერი ჩნდება. დახურე სერვერი და თავიდან გაუშვი Steam მონიშნულით.
  3. ორივე მხარეს Steam უნდა იყოს გაშვებული და შესული. Steam-ის გზა მხოლოდ RimWorld-ის Steam ასლებზე მუშაობს. GOG და Epic ასლებმა Direct ან LAN უნდა გამოიყენონ.
  4. Steam-ით შედი და არა ID-ის ჩასმით. Steam-ის მეგობრების სიაში host-ზე მარჯვენა ღილაკი დააჭირე და Join Game აირჩიე, ან გამოიყენე Steam ჩანართი Multiplayer მენიუში. Steam მოწვევის მიღება თამაშის შიგნით ყოფნისას შეუძლებელია - mod გეტყვის, რომ ჯერ მენიუში გახვიდე.
  5. უარყოფილი მოთხოვნა ამ მცდელობისთვის საბოლოოა. თუ host-მა შემთხვევით Reject დააჭირა, ან შეერთება "Connection timed out"-ით დასრულდა, შემომერთებელმა მენიუდან ახალი კავშირი უნდა დაიწყოს.

თუ ფიქსირებულ ჯგუფს მასპინძლობ და დაგღალა დაჭერა, mod-ის პარამეტრებში (Options, Mod Settings, Multiplayer) არის Auto-accept Steam, რომელიც ნაგულისხმევად გამორთულია და ყოველ შემომავალ Steam კავშირის მოთხოვნას ავტომატურად იღებს. გამორთული დატოვე, თუ შენი თამაში იმ ადამიანებს ჩანს, ვისაც კარგად არ იცნობ - თამაშის პაროლი, რომელიც host-ის დიალოგში ისმება, უცხოების გარეთ დატოვების მეორე ნახევარია.

გაჭედვა Connecting, Downloading ან Simulating-ზე#

Direct კავშირები ნაგულისხმევად UDP პორტს 30502 იყენებს. host Direct ველში შეაქვს 0.0.0.0:30502 (ან უბრალოდ ტოვებს ნაგულისხმევს), რათა თამაში ყველა ინტერფეისზე უსმენდეს, თავის router-ზე UDP 30502-ს თავის PC-ზე გადამისამართებს და მეგობრებს თავის საჯარო IP-ს აძლევს. მეგობარი შემდეგ Direct ჩანართში წერს 203.0.113.10 ან 203.0.113.10:30502. თუ არ გამოდის, ჩვეულებრივი ეჭვმიტანილებია: UDP-ის ნაცვლად TCP-ზე დაყენებული forward, ძველ ლოკალურ IP-ზე მიმართული forward, RimWorld-ის დამბლოკავი Windows Firewall, ან carrier-grade NAT-ის მიღმა მყოფი ინტერნეტი, სადაც არცერთი forward არასდროს იმუშავებს. NAT and CGNAT for game hosts განმარტავს, როგორ გაარკვიო, port forwarding vs hosted servers კი იმას, რა გააკეთო. ვირტუალური LAN, მაგალითად Hamachi ან Radmin VPN, სადაც ორივე მოთამაშე LAN ოფციას იყენებს, სწორედ ის გამოსავალია, რომელსაც mod-ის საკუთარი FAQ გვთავაზობს.

მეთოდირა სჭირდებატიპური პრობლემა
SteamSteam ასლები, გაშვებული Steamმოთხოვნა არასდროს მიიღება
DirectUDP 30502 host-ზე ხელმისაწვდომიforward არ არის ან პროტოკოლი არასწორია
LANერთი ქსელი ან ვირტუალური LANგანსხვავებული subnet, firewall

Downloading-ზე გაჭედვა mod-ის FAQ-ის მიხედვით თითქმის ყოველთვის firewall-ია. სწრაფი ტესტი: ერთი მცდელობისთვის გამორთე firewall ორივე მანქანაზე; თუ შეერთება დასრულდა, დაამატე RimWorld (და Steam-ით შეერთებისას Steam) დაშვებულ აპლიკაციებში და firewall ისევ ჩართე.

Simulating-ზე გაჭედვა ნიშნავს, რომ save მოვიდა და შემომერთებელი მანქანა host-ს რომ დაეწიოს, tick-ებს თავიდან ითამაშებს. რამდენ ხანს გასტანს, join-point-ის ასაკზეა დამოკიდებული. host-ის პარამეტრი Auto join-points join-point-ს - ახალ snapshot-ს, საიდანაც ახალმოსულები იწყებენ - ნაგულისხმევად შეერთებისას და desync-ისას ქმნის, არჩევითად კი ყოველ autosave-ზეც. host-ს ასევე შეუძლია ჩატში /joinpoint აკრიფოს და მყისიერად შექმნას ერთი, რაც ყველაზე სწრაფი გამოსავალია, როცა მეგობარი წუთობით სიმულაციაზეა.

mod-ების სიისა და ვერსიების შეუსაბამობა#

როცა კლიენტი Joining ეტაპს აღწევს, თავს host-თან ადარებს. თუ რამე განსხვავდება, იხსნება Data mismatch ეკრანი ჩანართებით General, Mod list, Files და Configs, სადაც "Server" და "Your client" გვერდიგვერდ ჩანს. წაიკითხე და ნუ დახურავ; ის პრობლემას სახელით ასახელებს.

  • RimWorld-ის ვერსია ან Multiplayer-ის ვერსია განსხვავდება. ორივე ნაჩვენებია. Multiplayer-ის განსხვავებული build შეიძლება ასევე "Wrong protocol version"-ად ან პაკეტის შეცდომად "You are probably using a different Multiplayer version than the host!" გამოჩნდეს. განაახლე mod ორივე მხარეს - Steam-ზე, თუ განახლებაზე უარს ამბობს, გააუქმე და თავიდან გამოიწერე - და დარწმუნდი, რომ ყველა RimWorld-ის ერთსა და იმავე build-ს იყენებს. mod მხოლოდ მიმდინარე მთავარ ვერსიას მიჰყვება (წერის დროს 1.6) და RimWorld-ის patch-ის შემდეგ შესაძლოა დრო გავიდეს, სანამ შესაბამისი Multiplayer გამოვა.
  • "Mod lists differ. The game needs to be restarted." გამოიყენე Apply server's mod list, რომელიც შენს აქტიურ სიას host-ისით ანაცვლებს, შემდეგ Restart; ჩატვირთვის შემდეგ თამაში თავად გაგაერთებს. თუ mod-ები აკლია, Subscribe to missing Workshop-ზე არსებულს გამოიწერს და ფონურად ჩამოტვირთავს. რაც Workshop-ზე არ არის, ხელით უნდა დააყენო.
  • "Mods match but their order doesn't." იგივე გამოსავალი: გამოიყენე სერვერის mod-ების სია და გადატვირთე. ჩატვირთვის რიგი სიმულაციის ნაწილია.
  • Files აჩვენებს mod-ის ფაილებს, რომლებიც აღნიშნულია როგორც Missing, Added ან Modified. ისინი ხელით გასასწორებელია და ჩვეულებრივ mod-ის განახლების ნარჩენებია, ან ორი მოთამაშე ერთი mod-ის სხვადასხვა ვერსიაზეა. გადააყენე ან თავიდან გამოიწერე პრობლემური mod. თუ ეს Core ან DLC-ა, წაშალე ეს საქაღალდე და Steam-ში გადაამოწმე თამაშის ფაილები - შენი save-ები სხვაგან ინახება და ხელუხლებელი რჩება. სხვაობა host-ის მხარეც შეიძლება იყოს.

თვით Multiplayer-ს სიაში მკაცრად განსაზღვრული ადგილი აქვს: მის ზემოთ Harmony და Prepatcher (მკაცრი დამოკიდებულება), შემდეგ Core და DLC-ები, შემდეგ Multiplayer პირდაპირ მათ ქვემოთ და Multiplayer Compatibility მის უშუალოდ შემდეგ. Multiplayer-ც და მისი compatibility mod-იც აცხადებენ, რომ HugsLib-სა და Vanilla Expanded Framework-მდე იტვირთებიან, ამიტომ თუ ისინი მათ ზემოთ დგანან, რაღაც რიგს არ მისდევს.

code
HarmonyCoreRoyalty / Ideology / Biotech / Anomaly / Odyssey (the ones you own)PrepatcherMultiplayerMultiplayer CompatibilityHugsLibVanilla Expanded Framework and everything else

ყველა DLC, რომელიც host-ზე ჩართულია, ყველა მოთამაშესაც უნდა ჰქონდეს ჩართული. mod-ის FAQ ამაზე აშკარაა, ხოლო ზედმეტი DLC-ით აქტიური მოთამაშე მოთამაშეა სხვა mod-ების სიით.

Config-ების სინქრონიზაცია და Configs ჩანართი#

mod-ის პარამეტრები სიმულაციის ისეთივე ნაწილია, როგორც თავად mod-ები. mod, რომელიც რეიდზე ერთ მანქანაზე 20%-იანი, მეორეზე კი 25%-იანი პარამეტრით აგდებს კამათელს, რამდენიმე წუთში ორ განსხვავებულ colony-ს ქმნის.

host-ის დიალოგში არის Sync configs, ნაგულისხმევად ჩართული, რომელიც შემომერთებლებს host-ის mod-ის კონფიგურაციის ფაილების ჩამოტვირთვის საშუალებას აძლევს. შეუსაბამობის ეკრანზე ის Apply server's configs-ად ჩანს და დროებითია: host-ის config-ები გამოიყენება RimWorld-ის გადატვირთვამდე და შენი საკუთარი ფაილები არ იწერება თავზე. სხვისი config-ებით მუშაობისას ღილაკი Active configs გახსენებს, რომელი თამაშიდანაა ისინი. თუ host-მა სინქრონიზაცია გამორთო, Configs ჩანართი წერს "Config sync disabled by the host" და ყველა მოთამაშემ პარამეტრები ხელით უნდა შეათანხმოს.

დატოვე ჩართული, თუ საპირისპირო მიზეზი არ გაქვს. ერთადერთი რეალური მიზეზი თავად mod-ის tooltip-შია: ზოგი config ფაილი მგრძნობიარე მონაცემებს შეიცავს, მაგალითად streamer-ის ინტეგრაციის mod-ების API token-ებს, და სინქრონიზაცია მათ ყველას უგზავნის, ვინც შემოდის.

რატომ ხდება desync-ები#

Multiplayer mod თამაშის მდგომარეობას ქსელით არ აგზავნის. ის აგზავნის ბრძანებებს - ამ pawn-ის draft, იმ bill-ის შეცვლა - დალუქულს იმ tick-ით, რომელზეც უნდა შესრულდეს, და ყველა მანქანა სრულ სიმულაციას თავად აწარმოებს. Desync არის მომენტი, როცა mod ამჩნევს, რომ ორი მანქანა აღარ თანხმდება. ის რეგულარული ინტერვალებით ადარებს თამაშის მდგომარეობის checksum-ებს და როცა ისინი განსხვავდება, თამაში ჩერდება და აჩვენებს "The game state has desynced."

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

  1. შეუსაბამო mod-ები, ფაილები ან config-ები. ზემოთ განვიხილეთ. თუ შეერთების შემოწმება გაიარა, ეს მიზეზები შეერთების დროს გამორიცხულია, მაგრამ ერთ მანქანაზე შემდეგ განახლებული mod მათ ისევ აბრუნებს.
  2. mod-ები, რომლებიც Multiplayer-ის გუნდს არ დაუპატჩავს. mod, რომელიც საკუთარ შემთხვევითობას იყენებს, რეალურ დროს ხმარობს ან თამაშს საკუთარი UI-დან ცვლის სინქრონიზებული ბრძანების გარეშე, დესინქრონიზდება მაშინაც კი, როცა ყველას იდენტური ასლი აქვს. Multiplayer Compatibility mod-ს პოპულარული mod-ების გრძელი სიის patch-ები აქვს; დანარჩენებს კი აქვთ საზოგადოების მიერ დადგენილი შეფასება 0-დან 4-მდე, რომელიც თამაშში ჩანს (პარამეტრი Show crowd-sourced compat info) და community-ის ცხრილშიც. იმიზნე 4-ს; 3 მიიღე მხოლოდ მაშინ, თუ შენიშვნებში წერია, რომ patch არსებობს.
  3. მანქანა ჩამორჩება. ჩატის ფანჯარა ყველა მოთამაშის ping-ს და იმას აჩვენებს, რამდენი tick-ით ჩამორჩება. მოთამაშეს, რომლის PC-ს ტემპი არ მიჰყვება, ეს წარწერა ეჩვენება: "You are N ticks behind. Consider lowering the game speed." დიდი colony-ის superfast სიჩქარით გაშვება მანქანაზე, რომელიც მას ვერ უძლებს, უბედურების თხოვნაა.
  4. Dev mode-ის არასწორი გამოყენება. ნივთების გაჩენა debug ხელსაწყოებით mod-ის საკუთარი Dev Mode პარამეტრის გარეთ თამაშს დესინქრონიზებს. გამოიყენე host-ის დიალოგის Dev Mode ოფცია (Host Only ან Everyone), რომ debug მოქმედებები სინქრონიზებულ გზას გაჰყვეს. mod-ის FAQ ასახელებს, რომ ideology-ის რედაქტირება dev mode-ში გარანტირებულ desync-ს იწვევს.
  5. კონტენტი, რომელიც მხოლოდ ნაწილობრივ არის მხარდაჭერილი. DLC-ის ზოგი სისტემა და multifaction თამაში ჯერ დამუშავების პროცესშია. FAQ-ში Anomaly ნაწილობრივ მომუშავედ და multifaction დასამუშავებლად იყო ნახსენები; შეამოწმე მიმდინარე შენიშვნები შენი ვერსიისთვის.

Desync ანგარიშის წაკითხვა#

როცა desync-ის ფანჯარა იხსნება, მას ხუთი ღილაკი აქვს: Try resync, Save, Chat, Open info folder და Quit. Try resync თამაშს host-ის მდგომარეობიდან თავიდან გაერთებს და როცა მიზეზი ერთჯერადი იყო, ყველას სწრაფად აბრუნებს თამაშში. Open info folder რამდენიმე წამით ნაცრისფერია წარწერით "Waiting for data from the host", სანამ ანგარიში იწერება - გასვლამდე ცოტა ხანს მიეცი დრო.

ანგარიში არის zip, სახელად Desync-01.zip, Desync-02.zip და ასე შემდეგ, საქაღალდეში MpDesyncs, RimWorld-ის save data საქაღალდის შიგნით, Saves-ისა და Config-ის გვერდით. mod ათ ყველაზე ახალს ინახავს და უფრო ძველებს შლის, ამიტომ თუ ანგარიშის შენახვა გინდა, გადაიტანე სადმე უსაფრთხო ადგილას.

პლატფორმაRimWorld-ის save data საქაღალდე
Windows%USERPROFILE%\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios
Linux~/.config/unity3d/Ludeon Studios/RimWorld by Ludeon Studios
macOS~/Library/Application Support/RimWorld

zip-ის შიგნით, მიმდინარე build-ებში:

code
desync_info                summary: tick data, versions, debug options, hardwarelocal_traces.txt           stack traces from your machine around the divergencehost_traces.txt            the same from the host, if it arrived in timelocal_jitted_methods.txt   methods compiled on your sidehost_jitted_methods.txt    the same from the hostlocal_logs.txt             your log, when availablelocal_metadata.txt         mod list and environmentreplay.rwmts               a replay, only when that setting is on

desync_info ის ნაწილია, რომლის წაკითხვაც ადამიანს შეუძლია. ის ჩაწერს, იყო თუ არა arbiter დაკავშირებული, ბოლო tick-ს, რომელზეც ყველა ჯერ კიდევ თანხმდებოდა, Multiplayer-ისა და RimWorld-ის ვერსიებს, იყო თუ არა ჩართული dev mode ან debug build, მოთამაშეთა რაოდენობას, იყო თუ არა აქტიური async time და multifaction, და CPU-ს, GPU-ს, მეხსიერებასა და ოპერაციულ სისტემას. ვინმესთვის გაგზავნამდე შეადარე ვერსიების ხაზები და debug ოფციები სხვა მოთამაშეების ანგარიშებს - იქ შეუსაბამობა პასუხია და stack trace-ის წაკითხვა აღარავის დასჭირდება.

trace ფაილები საინტერესო ნაწილია იმისთვის, ვინც ბაგს ასწორებს. ისინი აჩვენებს, რომელი კოდი იღებდა შემთხვევით რიცხვებს თითოეულ მხარეს იმ tick-ის გარშემო, სადაც ორი მანქანა გაიყო, ამიტომ პირველი განსხვავებული trace ჩვეულებრივ პასუხისმგებელ mod-ს ასახელებს. თუ პირველივე განსხვავებულ ხაზებში mod-ის namespace ჩანს, მოხსენებამდე Multiplayer Discord-ში ან იმ mod-ის გვერდზე მოძებნე ცნობილი პრობლემა. trace-ები იწერება მხოლოდ მაშინ, როცა host-ს ჩართული აქვს Desync traces (ნაგულისხმევად ჩართულია), და mod აღნიშნავს, რომ trace-ინგი არ მუშაობს 32-ბიტიან ან ARM პროცესორებზე, რაც Apple Silicon Mac-ებსაც მოიცავს.

Arbiter და როგორ შევადგინოთ სასარგებლო მოხსენება#

host-ის დიალოგის ოფცია Run Arbiter host-ის მანქანაზე RimWorld-ის მეორე, ფონურ ასლს უშვებს, რომელიც დამატებით ნეიტრალურ კლიენტად თამაშობს. desync-ისას ის შუამავლის როლს ასრულებს: ორის ნაცვლად სამი მანქანით ცხადი ხდება, ვისი მდგომარეობა გახდა არასწორი. host-ს რეალური მეხსიერება და CPU უჯდება, რადგან ეს თამაშის კიდევ ერთი ასლია, ამიტომ ჩართე, როცა განმეორებად desync-ს მისდევ და არა ყოველი სესიისთვის.

მოხსენება, რომელზეც maintainer-ებს მუშაობა შეუძლიათ, ოთხ რამეს შეიცავს: zip-ებს ორივე მხრიდან (host და მოთამაშე, რომელიც დესინქრონიზდა), mod-ების სიას, რა ხდებოდა თამაშში იმ მომენტში და მეორდება თუ არა. mod-ის Workshop-ის დისკუსია ითხოვს, რომ მოხსენებამდე arbiter-ით და მის გარეშე გატესტო, რათა გატეხილი save გამოირიცხოს. თუ desync ყოველთვის ერთსა და იმავე მომენტში ხდება, როცა გარკვეულ save-ს ტვირთავ, ეს აუცილებლად დაწერე - ეს ყველაზე ღირებულია, რაც ბაგ-რეპორტში შეიძლება იყოს.

ჩვევები, რომლებიც colony-ს თამაშად ინახავს#

გრძელი Multiplayer კამპანიების მოთამაშე ჯგუფების უმეტესობა ერთსა და იმავე წესებამდე მიდის:

  1. გაყინე mod-ების სია colony-ის დაწყებამდე. შეთანხმდით, გამოაქვეყნეთ Steam collection და ყველამ ზუსტად ის გამოიწეროს. კამპანიის შუაში mod-ის დამატება შესაძლებელია; მოხსნა კი ჩვეულებრივ save-ს ტეხავს.
  2. არ დაუშვა Workshop-ის განახლებების სიურპრიზი. mod, რომელიც ერთ მოთამაშეს ღამით განახლდა, მეორე საღამოს შეუსაბამობაა. სესიამდე host-მა განახლებები შეამოწმოს და ყველამ Steam გადატვირთოს, რომ დაემთხვეს. What to do when a mod update breaks უკან დაბრუნებას ეხება.
  3. რამის დამატებამდე შეამოწმე თავსებადობა. ჯერ mod-ის შეფასება მოძებნე. შეფასება 1 ან 2 ნიშნავს, რომ დესინქრონიზდება; ფაილების დამთხვევა ამას ვერ გამოასწორებს.
  4. თამაში ყველაზე ნელ მანქანას მოარგე. გამოიყენე დროის კონტროლი Lowest wins, რომ ყველაზე ნელმა მოთამაშემ დაადგინოს ტემპი, ან დიდ ბრძოლებში სიჩქარე დაბლა დაიჭირე.
  5. პაუზა შეერთებისას და desync-ისას. ორივე ნაგულისხმევად ჩართულია. დატოვე ჩართული, რომ desync რამდენიმე თამაშისშიდა საათის განმავლობაში არ გაგრძელდეს, სანამ ვინმე შეამჩნევს.
  6. autosave-ები ახლოს-ახლოს გქონდეს. host-ის autosave-ის ინტერვალი თამაშისშიდა დღეებში ან რეალურ წუთებში შეიძლება დაყენდეს; ყოველ 10-15 რეალურ წუთში ნიშნავს, რომ მდგომარეობის დამზიანებელი desync ძალიან ცოტა გიჯდება. პარამეტრი Autosave slots (ნაგულისხმევად 5) აკონტროლებს, რამდენი ინახება.
  7. გამოიყენე ჩატის ბრძანებები. host-ს აქვს /joinpoint, /kick <username> და /stop. მოთამაშის გაგდება, რომლის თამაშიც სულ ჩამორჩება, და ახალი join-point-იდან თავიდან შემოშვება ხშირად სრულ resync-ზე სწრაფია.

არსებობს თუ არა dedicated server?#

თავისი ცხოვრების უმეტესი ნაწილი პასუხი მკაფიო "არა" იყო: host-ის RimWorld ასლი იყო სერვერი და colony ჩერდებოდა, როცა host გადიოდა. ეს იცვლება. Release 0.11.5-მა დაამატა standalone server-ის bootstrap სამუშაო და პროექტის განვითარების ("continuous") build-ები ახლა Server-beta.zip-ს შეიცავს Windows და Linux build-ებით. ის მხოლოდ Direct-ზე უსმენს - Steam ქსელი და arbiter მხარდაჭერილი არ არის - თავისი საქაღალდიდან კითხულობს settings.toml-ს და save.zip-ს, ხოლო თუ ისინი არ არის, პირველ მოთამაშეს ელოდება, რომ RimWorld-ის შიგნიდან თამაში მოაწყოს. გამოშვების შენიშვნები მას ტესტირებისთვის განკუთვნილად აღწერს, ამიტომ ექსპერიმენტულად მიიჩნიე და მოელოდე ცვლილებებს.

თუ მისი სინჯვა გინდა, დაგჭირდება მანქანა, რომელიც ჩართული რჩება და UDP 30502 შენი მოთამაშეებისთვის ღიაა. VDS აშკარა სახლია - choosing between a VDS and a game panel განმარტავს კომპრომისს - ხოლო game server ports explained პორტის ხელმისაწვდომობას ეხება. ყველა მოთამაშეს მაინც იდენტური mod-ების სია სჭირდება; სერვერი ამ მოთხოვნას არანაირად არ ცვლის.

თუ შენი ჯგუფი სინამდვილეში სამყაროს ეძებს, რომელიც გრძელდება, სანამ ხალხი მოდის და მიდის, ეს ის პრობლემაა, რომელსაც RimWorld Together წყვეტს და სწორედ ამას ყიდიან game host-ები როგორც RimWorld ჰოსტინგს. RE:NODE-ის RimWorld ხაზი სწორედ ასეთ მუდმივ სერვერს უშვებს, mod-ებით, რომლებიც file manager-ით ან SFTP-ით იტვირთება, და backup slot-ებით, რომლებიც მანქანის გარეთ ინახება; Multiplayer mod-ს ის არ მასპინძლობს.

FAQ#

რატომ ხედავს ჩემი მეგობარი "Waiting for host to accept"-ს, მე კი მოთხოვნას არასდროს ვიღებ?

შენ Steam ჩართულით არ მასპინძლობ. mod Steam შეერთების მოთხოვნებს მხოლოდ მაშინ უსმენს, როცა Steam-ის ოფცია host-ის დიალოგში მონიშნული იყო. დახურე სერვერი, თავიდან გაუშვი Steam ჩართულით და Accept pop-up გამოჩნდება.

შემიძლია accept ნაბიჯის გამორთვა?

დიახ. Multiplayer mod-ის პარამეტრებში ჩართე Auto-accept Steam. მაშინ ყოველი Steam კავშირის მოთხოვნა დაჭერის გარეშე მიიღება, ამიტომ დააყენე თამაშის პაროლი, თუ შენი თამაში შენი ჯგუფის გარეთ მყოფ ადამიანებს ჩანს.

Try resync პროგრესს კარგავს?

ის შენ host-ის მიმდინარე მდგომარეობიდან გტვირთავს, ამიტომ ყველაფერი, რაც მხოლოდ შენს გახლეჩილ ასლზე მოხდა, იკარგება, მაგრამ საერთო colony უკან არ ბრუნდება. თუ resync განუწყვეტლივ ვერ ხერხდება, host-მა უნდა შეინახოს, ყველამ გავიდეს და სესია ამ save-იდან თავიდან გაიშვას.

ყველას ერთი და იგივე mod-ები გვაქვს და მაინც ვიდესინქრონიზებთ. რატომ?

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

შეუძლიათ თუ არა GOG ან Epic მოთამაშეებს Steam host-თან შეერთება?

Steam-ით არა. მათ Direct-ით (UDP 30502 host-ზე ხელმისაწვდომი) ან LAN-ით უნდა დაუკავშირდნენ, ვირტუალური LAN-ით, მაგალითად Radmin VPN-ით ან Hamachi-თი, ჩათვლით. ყველას მაინც RimWorld-ის ერთი და იგივე build და mod-ები სჭირდება.

სად ინახება desync ანგარიშები?

საქაღალდეში MpDesyncs RimWorld-ის save data საქაღალდის შიგნით, Desync-NN.zip ფაილებად. desync-ის ფანჯარაში ღილაკი Open info folder მას პირდაპირ ხსნის.