SCP: Secret Laboratory-ის dedicated server უფასო SteamCMD ჩამოტვირთვაა (app id 996560), აქვს ნატიურ Linux build-ი, ერთ UDP პორტზე უსმენს და ოცსლოტიან სერვერზე 4 GB მეხსიერებაშიც მშვენივრად მუშაობს. ამავე დროს ეს ყველაზე კაპრიზული სერვერია ამ კატეგორიაში: თამაშის ბინარულ ფაილს პირდაპირ არ უშვებ, უშვებ შემფუთავს, სახელად LocalAdmin; კონფიგურაცია install საქაღალდეში კი არა, შენს მომხმარებლის პროფილშია და თითო პორტზე ცალკე საქაღალდეს იყოფა; ხოლო ოფიციალური plugin framework ახლა თავად სერვერის build-შია ჩაშენებული, რაც ერთ წელზე ძველი ყველა მოდის გზამკვლევის მუშაობას ჩუმად ცვლის. აქ ყველაფერია, იმ თანმიმდევრობით, როგორითაც დაგჭირდება.
რა არის dedicated server და რას აკეთებს#
სერვერი headless Unity build-ია. ის ერთ ობიექტს ამუშავებს, ერთ რაუნდს ერთდროულად, რაუნდის დასრულებისას თავიდან იწყებს და იტევს max_players ადამიანს, რაც ნაგულისხმევად 20-ია. პრაქტიკული ზედა ზღვარი სამოცია და ვერიფიცირებული სერვერისთვის დოკუმენტირებული მაქსიმუმიც ეს არის. თამაში დაახლოებით ოცი-ოცდათხუთმეტი მოთამაშისთვისაა დაბალანსებული, ხოლო სამოცსლოტიანი სერვერი უფრო დიდ თამაშს კი არა, სხვა თამაშს ჰგავს.
რას იღებ პირდაპირ, ერთი plugin-ის გარეშეც:
- Remote Admin - რეალური უფლებების სისტემა დასახელებული როლებით, badge-ებით, kick power-ით და ოცდაცხრა ცალკეული უფლებით.
- ბანები და whitelist-ები უბრალო ტექსტური ფაილების სახით, user ID-ისა და IP-ის მიხედვით.
- დიდი გეიმფლეის კონფიგურაცია, რომელიც მოიცავს respawn ტალღებს, warhead-ს, დეკონტამინაციას, friendly fire-ს, გამძლეობას, AFK-ის გაგდებასა და spawn-ის დაცვას.
- friendly-fire დეტექტორი, რომელიც თვითონ დაბანავს გუნდელების მკვლელებს, ოთხი დამოუკიდებელი დეტექტორითა და მოქნილი ზღვრებით.
- გეობლოკი, rate limit-ები, გაფორმებამდელი გამოწვევები და report webhook Discord-ისთვის.
- idle mode, რომელიც tick rate-ს 1-მდე ამცირებს, როცა არავინ არის დაკავშირებული.
რაც არ აქვს, ეს Source-ის მსგავსი RCON-ია. ადმინისტრირება ხდება თამაშში Remote Admin პანელით, მანქანაზე LocalAdmin კონსოლით და არჩევითი query პორტით, რომელიც ნაგულისხმევად გამორთულია. დანარჩენს plugin-ები ამატებს.
მოთხოვნები და რესურსების მოხმარება#
Northwood ერთ მკაცრ რიცხვს აქვეყნებს: ვერიფიცირებულ სერვერს სჭირდება მინიმუმ 2 ფიზიკური ბირთვი, 4 GB მეხსიერება და 20 GB საცავი. ეს ქვედა ზღვარია და არა რეკომენდაცია, და ის ემთხვევა იმას, რასაც უბრალო ოცსლოტიანი სერვერი სინამდვილეში ხარჯავს.
| კონფიგურაცია | RAM | CPU | შენიშვნა |
|---|---|---|---|
| 20 სლოტი, vanilla | 4 GB | 2 ბირთვი | დოკუმენტირებული მინიმუმი და ჩვეულებრივი სერვერი |
| 30-40 სლოტი, vanilla | 5-6 GB | 2-2.5 ბირთვი | კომფორტული მარაგი |
| 20-30 სლოტი plugin-ებით | 6-8 GB | 2.5-3 ბირთვი | ცვლადი plugin-ებია და არა მოთამაშეები |
| 60 სლოტი | 8-10 GB | 3 ბირთვი | ვერიფიცირებული სერვერის დოკუმენტირებული მაქსიმუმი |
- CPU: რაუნდის სიმულაცია ერთ thread-ზე მუშაობს, ამიტომ tick rate-ს ერთი ბირთვის სიხშირე განსაზღვრავს და არა ბირთვების რაოდენობა.
server_tickrateნაგულისხმევად60-ია; თუ მანქანას მისი შენარჩუნება არ შეუძლია, სერვერი გაფრთხილებას არ გაძლევს, უბრალოდ ჩამორჩება. - დისკი: install მცირეა, იზრდება რაუნდის ლოგები. LocalAdmin მათ თავად გაგიწმენდს - სწორედ ამისთვის არსებობს
delete_old_round_logsდაround_logs_expiration_days. - ქსელი: თითო მოთამაშეზე მსუბუქია, ტრანსპორტი კი LiteNetLib-ია UDP-ზე. აქ სქელი არხი არაფერს სჭირდება.
პატიოსანი პასუხი ზომაზე: თუ plugin-ებით დატვირთული სერვერი ნელია, თითქმის ყოველთვის plugin-ებია მიზეზი და არა მოთამაშეების რაოდენობა. რას ნიშნავს tick rate სინამდვილეში განმარტავს, რატომ არის ეს რიცხვი მნიშვნელოვანი და რას გრძნობს მოთამაშე, როცა ის ეცემა.
ინსტალაცია და გაშვება LocalAdmin-ით#
ანონიმური SteamCMD, ანგარიშის და token-ის გარეშე:
$ steamcmd +force_install_dir /home/scpsl/server +login anonymous \ +app_update 996560 validate +quitSteamCMD განმარტებული ზოგად ფორმას ფარავს. install-ში გექნება თამაშის ბინარული ფაილი - Linux-ზე SCPSL.x86_64, Windows-ზე SCPSL.exe - და შემფუთავი, LocalAdmin ან LocalAdmin.exe. უშვებ შემფუთავს და არა თამაშს. LocalAdmin პირველ პოზიციურ არგუმენტად პორტს იღებს, სერვერს აღადგენს, როცა ის ვარდება, ლოგებს ინახავს და კონსოლს გაძლევს:
$ cd /home/scpsl/server$ ./LocalAdmin 7777თუ პორტს არ მიუთითებ, ის ინტერაქტიულად გკითხავს, ნაგულისხმევი 7777-ია. პირველ გაშვებაზე კონფიგურაციის wizard-ს გაგატარებს და ქვემოთ აღწერილ ფაილებს ჩაწერს. ყველაფერში, რაც უყურადღებოდ გაეშვება, დაგჭირდება --acceptEULA (ან გარემოს ცვლადი ACCEPT_SCPSL_EULA=TRUE), ხოლო --config <path>, თუ კონფიგურაციას საკუთარ ადგილას ინახავ.
LocalAdmin-ს საკუთარი ბრძანებები აქვს, თამაშისგან განცალკევებული: exit, restart, forcerestart, resave, help და p ჩაშენებული plugin manager-ისთვის. ის ასევე კითხულობს config/laargs.txt-ს დამატებითი გაშვების არგუმენტებისთვის, რაც start სკრიპტზე უფრო მოწესრიგებული ადგილია მათთვის.
სად ინახება კონფიგურაციის ფაილები სინამდვილეში#
install საქაღალდეში არა. ძირი შენი მომხმარებლის პროფილია:
| პლატფორმა | ძირი |
|---|---|
| Linux | ~/.config/SCP Secret Laboratory/ |
| Windows | %AppData%\SCP Secret Laboratory\ |
ამ ძირის ქვეშ config/ თითო პორტზე ცალკე საქაღალდეს ინახავს, ამიტომ ერთ install-ს რამდენიმე სერვერის გაშვება შეუძლია სრულიად განცალკევებული პარამეტრებით:
config/ config_localadmin_global.txt laargs.txt 7777/ config_gameplay.txt config_remoteadmin.txt config_localadmin.txt config_sharing.txt UserIDBans.txt IPBans.txt UserIDWhitelist.txt UserIDReservedSlots.txtარის ერთი გადაფარვა, რომლის ცოდნაც ღირს, რადგან თითქმის ყველა გეიმ პანელი მას იყენებს. თუ სერვერის სამუშაო საქაღალდეში არსებული ფაილი hoster_policy.txt შეიცავს ხაზს gamedir_for_configs: true, მთელი ძირი მომხმარებლის პროფილიდან სერვერის საქაღალდის შიგნით არსებულ AppData/-ში გადადის. სწორედ ამიტომ შეიძლება გზამკვლევის გზები იმას არ ემთხვეოდეს, რასაც ფაილების მენეჯერში ხედავ, და ამიტომ არის პასუხი კითხვაზე „სად არის ჩემი კონფიგურაცია“ ჰოსტინგზე ჩვეულებრივ „მოძებნე AppData საქაღალდე ბინარულ ფაილთან“. RE:NODE-ზე მას ბრაუზერის ფაილების მენეჯერში ან SFTP-ით იპოვი, ბრაუზერის რედაქტორი კი სინტაქსს გაგიმუქებს.
config_sharing.txt მეორეა, რაც უნდა იცოდე: ის განსაზღვრავს, რომელი საქაღალდიდან იკითხება ბანის, mute-ის, whitelist-ისა და დარეზერვებული სლოტების ფაილები, ამიტომ რამდენიმე პორტს ერთი ბანის სია შეიძლება ჰქონდეს. თითო პორტზე ცალკე მხოლოდ ნაგულისხმევია.
`motd.txt` არ არსებობს. აღწერა, რომელსაც მოთამაშეები ბრაუზერში ხედავენ, მოდის serverinfo_pastebin_id-დან, რაც იმ Pastebin ჩანაწერის ID-ია, რომელსაც სერვერი იღებს. ეს ყველას ერთხელ ეჭირება.
config_gameplay.txt, მნიშვნელოვანი პარამეტრები#
სინტაქსია key: value, ერთი თითო ხაზზე, და ორწერტილის შემდეგ ჰარი აუცილებელია - parser ორწერტილითა და მას მიყოლებული ჰარით კვეთს, ამიტომ key:value ჩუმად იგნორირდება. სწორედ ეს ერთი დეტალი იწვევს „ჩემი პარამეტრი არაფერს აკეთებს“ ტიპის ჩივილებს ფაილში ყველაზე ხშირად.
ფაილი გრძელია. ეს არის ის პარამეტრები, რომლებიც წყვეტს, როგორი იქნება შენი სერვერი:
server_name: Facility 07max_players: 20server_tickrate: 60serverinfo_pastebin_id: 7wV681fTcontact_email: admin@example.comfriendly_fire: falsefriendly_fire_multiplier: 0.4auto_round_restart_time: 10end_round_on_one_player: falserestart_after_rounds: 0online_mode: trueenable_whitelist: falseip_banning: trueafk_time: 90spawn_protect_enabled: falsespawn_protect_time: 8idle_mode_enabled: trueidle_mode_time: 5000idle_mode_tickrate: 1enable_query: falseდაჯგუფებული ფუნქციის მიხედვით:
| სფერო | გასაღებები |
|---|---|
| იდენტობა | server_name, serverinfo_pastebin_id, contact_email, max_players |
| რაუნდის დინება | auto_round_restart_time, end_round_on_one_player, restart_after_rounds, lobby_waiting_time, enable_fast_round_restart |
| Respawn-ები | minimum_MTF_time_to_spawn (280), maximum_MTF_time_to_spawn (350), maximum_MTF_respawn_amount (15), respawn_tickets_enable |
| Warhead | warhead_tminus_start_duration (90), auto_warhead_start_minutes, lock_gates_on_countdown, open_doors_on_countdown |
| დეკონტამინაცია | disable_decontamination, auto_decon_broadcast_enabled |
| Friendly fire | friendly_fire, friendly_fire_multiplier (0.4), ff_detector_* ოჯახი |
| წვდომა | online_mode, enable_whitelist, ip_banning, same_account_joining, geoblocking_mode |
| Idle და AFK | idle_mode_enabled, idle_mode_time, idle_mode_tickrate, afk_time, constantly_check_afk |
რამდენიმე შენიშვნა, რომელთაგან თითოეული ერთ საღამოს გიხსნის. idle_mode_enabled: true არის პარამეტრი, რომელიც ცარიელ სერვერს არაფრად ხდის: როცა ხუთი წამი არავინ არის, ის წამში ერთ tick-მდე ეცემა. friendly-fire დეტექტორი მართლაც კარგია და მართლაც აგრესიული - ff_detector_spawn_enabled ნაგულისხმევად ჩართულია და spawn-ოთახის შემთხვევით შეცდომაზეც დააბანავებს ადამიანს, ამიტომ კარების გახსნამდე წაიკითხე _kills, _damage და _ban_time მნიშვნელობები. enable_whitelist: true და UserIDWhitelist.txt, თითო ჩანაწერი თითო ხაზზე ფორმით 76561198071934271@steam ან 274613382353518592@discord, პირადი სერვერის გაშვების უმარტივესი გზაა.
ერთი შესწორება ბევრ ძველ გზამკვლევში: smart_class_picker, human_class_ratio და scp_ratio მიმდინარე კონფიგურაციის ნაწილი არ არის. კლასების განაწილებას განსაზღვრავს team_respawn_queue - ციფრების სტრიქონი, სადაც თითო ციფრი კლასის სლოტია - და server_forced_class. თუ კონფიგურაციის შაბლონში ძველ გასაღებებს ნახავ, ის რამდენიმე მთავარი ვერსიის წინანდელ build-ზეა დაწერილი და დანარჩენიც, ალბათ, მოძველებულია.
Remote Admin: როლები, წევრები და უფლებები#
config_remoteadmin.txt არის ადგილი, სადაც საკუთარ თავს ადმინად ნიშნავ, და მისი ფორმატი იმდენად უჩვეულოა, რომ ზუსტად უნდა გაითვალისწინო. სამი ნაწილი: ვინ რომელ როლშია, როგორ გამოიყურება თითოეული როლი და რომელი როლი რომელ უფლებას ფლობს.
Members: - 76561198801452050@steam: owner - 2141379914474455080@discord: moderatorowner_badge: SERVER OWNERowner_color: redowner_cover: trueowner_hidden: falseowner_kick_power: 255owner_required_kick_power: 255Permissions: - AdminChat: [owner, moderator] - KickingAndShortTermBanning: [owner, moderator] - PlayersManagement: [owner] - ServerConsoleCommands: [owner]წევრის ID იღებს სუფიქსს, რომელიც ამბობს, რომელი identity provider-ია: @steam 17-ციფრიანი SteamID64-ისთვის, @discord Discord snowflake-ისთვის, @northwood Northwood ანგარიშისთვის. როლის პარამეტრებს წინ უძღვის როლის სახელი და ქვედა ტირე - აქ $ სინტაქსი არ არსებობს, რასაც არ უნდა ამბობდეს ძველი გზამკვლევი. უფლებები ჩამოთვლილია იმის საპირისპიროდ, რასაც ხალხი ელოდება: ერთი ხაზი თითო უფლებაზე, სადაც დასახელებულია ყველა როლი, რომელსაც ის აქვს, როლების სახელებს შორის მძიმით და ჰარით.
kick_power და required_kick_power ის ნაწილია, რომელზეც ფიქრი ღირს. როლს შეუძლია გააგდოს ან დააბანოს მხოლოდ ის, ვისი required_kick_power მისი kick_power-ის ტოლია ან ნაკლები, ასე უშლი ხელს უმცროს მოდერატორს, დააბანოს მფლობელი. ეს იგივე მინიმალური პრივილეგიის აზროვნებაა, რაც subuser-ები და მინიმალური პრივილეგია პანელის მხარეს ითხოვს, და იმავე სიფრთხილეს იმსახურებს.
ოცდაცხრა უფლებაა. ყველაზე ხშირად გასაცემი: AdminChat, KickingAndShortTermBanning, BanningUpToDay, LongTermBanning, PlayersManagement, GameplayData, Overwatch, Noclip, ForceclassSelf, GivingItems, RoundEvents, WarheadEvents, Broadcasting. სამს სიფრთხილე სჭირდება, რადგან ფაქტობრივად root-ია: PermissionsManagement ამ ფაილის ეფექტის გადაწერის საშუალებას აძლევს, ServerConfigs გეიმფლეის კონფიგურაციის შეცვლას, ხოლო ServerConsoleCommands სერვერის კონსოლს გადასცემს.
რედაქტირების შემდეგ გაუშვი reload rolesconfig და არა restart, ხოლო შედეგი თამაშში შეამოწმე ბრძანებით perm.
ბრძანებები, რომლებსაც მართლა გამოიყენებ#
Remote Admin თამაშში ნაგულისხმევად M-ით იხსნება. პანელი უმეტესად ღილაკებია, ქვემოთ ტექსტური კონსოლით. დასამახსოვრებელი ბრძანებები:
| ბრძანება | სინტაქსი |
|---|---|
| ადმინის ჩატი | @<text> |
broadcast / bc | broadcast <seconds> <text> |
ban | ban <playerID> <length> |
oban | oban <userID|steamID|discordID> <duration> <reason> |
unban | unban id <playerID> ან unban ip <address> |
cassie | cassie <words> |
disarm / release | disarm <playerID> / release <playerID> |
hp | hp <playerID> <value> |
setgroup | setgroup <playerID> <group_name> |
ffd | ffd status / ffd pause / ffd unpause |
roundtime / rt | roundtime |
stopnextround | stopnextround |
config / cfg | config reload / config value <option> |
perm | perm |
help | help <command> |
oban არის ის, რასაც ხალხი ეძებს და ვერ პოულობს: უკვე გასული ადამიანის დასაბანად საჭიროა ოფლაინ ბანის ბრძანება და მისი ID და არა მოთამაშეების სია. cassie განცხადებების სისტემაა და სარგებლიანზე უფრო გასართობია, თუმცა cassie და უკუთვლა restart-ამდე ხალხის გაფრთხილების ცივილური გზაა.
დანარჩენი ბრძანებები და მათი ზუსტი არგუმენტები build-ებს შორის იმაზე მეტად იცვლება, ვიდრე გინდა. შენს სერვერზე help არის ავტორიტეტული; ბლოგიდან აღებული ბრძანებების სია - არა. ესეც ამ სიას ეხება.
სერვერების სია, ვერიფიკაცია და შენი IP მისამართი#
online_mode: true სერვერს Northwood-ის ცენტრალურ სერვერებთან აკავშირებს, სწორედ ეს აჩენს მას ბრაუზერში. API გასაღები და game server token არ არსებობს. სამაგიეროდ არსებობს ვერიფიკაცია, და ის აქ ყველა სხვა თამაშისგან განსხვავებულად მუშაობს: ვერიფიკაცია გაიცემა IPv4 მისამართზე და არა ანგარიშზე ან დომენის სახელზე.
განაცხადისთვის გაუშვი !verify static ან !verify dynamic LocalAdmin კონსოლში, ან მისწერე Northwood-ის მიერ გამოქვეყნებულ მისამართზე, და რამდენიმე სამუშაო დღე დაელოდე. მოთხოვნები საჯარო და კონკრეტულია: თითქმის უწყვეტი uptime, მინიმუმ ორი ფიზიკური ბირთვი და 4 GB მეხსიერება, არაუმეტეს სამოცი სლოტი, სწორად შევსებული server_name, serverinfo_pastebin_id, contact_email და max_players, გარე ქსელიდან ხელმისაწვდომობა და პერსონალის საკონტაქტო მონაცემები pastebin-ის ინფორმაციაში.
შედეგი, რომელზეც არავინ საუბრობს, სანამ არ დაგჭირდება: თუ შენი სერვერი საჯარო IPv4-ს სხვა სერვერებთან იზიარებს, მისამართი შესაძლოა უკვე სხვისთვის იყოს ვერიფიცირებული და შეცდომა, რომელსაც მიიღებ, არის „Port Not Registered“ ახსნის გარეშე. ჰკითხე შენს ჰოსტს, რა მისამართი აქვს შენს სერვერს და გაზიარებულია თუ არა, განაცხადამდე და არა მის შემდეგ. დომენებიც არ მიიღება ვერიფიკაციისთვის, ამიტომ A ჩანაწერი მოთამაშეებისთვის მოხერხებულობაა და მეტი არაფერი.
| პორტი | პროტოკოლი | დანიშნულება |
|---|---|---|
7777 | UDP | თამაშის ტრაფიკი, ერთადერთი პორტი, რომელიც უნდა გახსნა |
game port + query_port_shift | TCP | Query, მხოლოდ თუ enable_query: true |
პორტების სია სწორედ ესაა, და ამის პირდაპირ თქმა ღირს, რადგან ხალხი მეორე პორტს დაეძებს. TCP პორტი, რომელსაც LocalAdmin თამაშის პროცესთან სასაუბროდ იყენებს, loopback-ზეა მიბმული ეფემერულ ნომერზე და ისეთი არ არის, რასაც forward-ს გაუკეთებ ან დააკონფიგურირებ. გეიმ სერვერის პორტები განმარტებული ხსნის, რატომ აქვს უმეტეს თამაშს ამაზე მეტი პორტი და რატომ არა ამას.
Plugin-ები: LabAPI და EXILED#
სწორედ აქ არის დაახლოებით ერთ წელზე ძველი ყველა გზამკვლევი მცდარი, ამიტომ ზუსტად უნდა ვთქვათ.
LabAPI Northwood-ის ოფიციალური framework-ია და ის უკვე დაყენებულია. LabAPI.dll ყველა dedicated server build-შია. ჩამოსატვირთი არაფერია. Plugin-ები DLL ფაილებია, რომლებსაც იმავე პროფილის ძირის საქაღალდეებში ყრი, სადაც კონფიგურაციებია:
LabAPI/plugins/global/ loaded on every portLabAPI/plugins/<port>/ loaded on that port onlyLabAPI/dependencies/global/ shared librariesLabAPI/configs/<port>/<PluginName>/*.ymlLabAPI/LabApi-<port>.yml the loader's own configLocalAdmin-ის plugin manager (p install, p list, p update) plugin-ებს ოფიციალური კატალოგიდან თავად ჩამოტვირთავს და ჩააწყობს, თითო პორტის საქაღალდეებში ჩაწერით. loader-ის საკუთარი კონფიგურაცია განსაზღვრავს, რომელი საქაღალდეები იძებნება და, რაც მნიშვნელოვანია, LoadUnsupportedPlugins-ს, რომელიც ნაგულისხმევად false-ია და loader-ს აიძულებს, უარი თქვას plugin-ზე, რომელიც LabAPI-ის სხვა მთავარ ვერსიაზეა აგებული. ეს უარი თვისებაა და არა ხარვეზი - განსხვავებაა plugin-ს შორის, რომელიც არ იტვირთება, და plugin-ს შორის, რომელიც იტვირთება და რაუნდს ანადგურებს.
EXILED არის community framework, და მე-9 ვერსიიდან ის LabAPI-ის plugin-ია და არა მისი კონკურენტი. მისი loader DLL LabAPI/plugins/global/-შია და საკუთარ ხეს მოაქვს:
| რა | სად |
|---|---|
| ძირი | ~/.config/EXILED/ ან %AppData%\EXILED\ |
| Plugin DLL-ები | EXILED/Plugins/ |
| Plugin-ების dependency-ები | EXILED/Plugins/dependencies/ |
| კონფიგურაცია თითო პორტზე | EXILED/Configs/<port>-config.yml |
| Remote Admin-ის ლოგი | EXILED/<port>-RemoteAdminLog.txt |
ის ინსტალდება Exiled.Installer-Linux-ით ან Exiled.Installer-Win.exe-ით, სერვერის საქაღალდეზე --path-ით მიმართული, ხოლო --target-port მას გლობალურად კი არა, კონკრეტულ პორტზე დააყენებს. ორი რამ, რასაც ძველი გზამკვლევები ცდება: EXILED 9 Assembly-CSharp.dll-ს აღარ ამოწმებს და plugin-ები კონფიგურაციების გვერდით არსებულ Plugins საქაღალდეში არ მიდის. თუ გზამკვლევი რომელიმეს გირჩევს, ის EXILED 8-ს ან უფრო ძველს აღწერს.
რადგან EXILED LabAPI-ის plugin-ია, ისინი აგებით თანაარსებობს - სერვერს შეუძლია ერთდროულად ატვირთოს ნატიური LabAPI plugin-ებიც და EXILED plugin-ებიც. ფასი ისაა, რომ LabAPI-ის მთავარი ვერსიის ცვლილება მთელ EXILED-ის სტეკს ერთბაშად ამტვრევს და არა თითო plugin-ს.
აღნიშვნის ღირსია, ყველა ოფიციალურ plugin კატალოგშია: CedMod ვებ-ბაზაზე მოდერაციისთვის, ბანებისა და უფლებებისთვის; AdminTools დამატებითი ადმინის ბრძანებებისა და ლოგირებისთვის; UncomplicatedCustomRoles YAML-ში აღწერილი საკუთარი როლებისთვის; SCPStats სერვერებს შორის სტატისტიკისა და Discord-ის როლების სინქრონიზაციისთვის. ყველაფერი, რასაც დააყენებ, სერვერის სრული ნდობით მუშაობს, ამიტომ მოდიფიცირებული სერვერის სისუფთავე აქ უფრო მეტად მოქმედებს, ვიდრე უმეტეს თამაშში.
განახლებები, პრობლემების გადაჭრა და ხშირი შეცდომები#
SCP: Secret Laboratory ყოველ თვე-ორ თვეში ერთხელ გამოსცემს პატარა რელიზს, SteamCMD მას წამში იღებს, ხოლო ძველ build-ზე დაკომპილირებული plugin-ები მუშაობას წყვეტს. თუ სერვერი ავტომატურად ახლდება, სამუშაო სამშაბათის შუადღეს შეიძლება გატყდეს. აღდგენის თანმიმდევრობა არის რა უნდა გააკეთო, როცა mod-ის განახლება ყველაფერს არღვევს; მოკლედ: შეინახე მოქმედი plugin-ის საქაღალდის ასლი და plugin-ები განაახლე სერვერის restart-ამდე და არა მის შემდეგ.
პარამეტრი `config_gameplay.txt`-ში არაფერს აკეთებს. დაწერე key:value. სჭირდება key: value ჰარით.
სერვერი ბრაუზერში საერთოდ არ ჩანს. online_mode არის false, ან UDP 7777 მიუწვდომელია.
სერვერი ბრაუზერშია, მაგრამ ძიებით ვერავინ პოულობს. სახელი. პროცენტული ზომის ტეგები, მაგალითად <size=20%>, და უჩვეულო სიმბოლოები ძიების დამთხვევას აჩერებს. თავიდან აკრიფე server_name უბრალო ტექსტით.
„Port Not Registered“ ვერიფიკაციისას. IPv4 მისამართი უკვე ვერიფიცირებულია, ჩვეულებრივ სხვა სერვერზე, რომელიც მას იზიარებს. ეს ჰოსტის კითხვაა და არა კონფიგურაციის.
`Method not found` ან `MissingMethodException` ლოგში განახლების შემდეგ. plugin assembly წინა build-ზეა აგებული. განაახლე ან წაშალე.
`DllNotFoundException` გაშვებისას. მინიმალურ Linux image-ზე სისტემური ბიბლიოთეკა აკლია. დააყენე dependency-ები, რომლებსაც სერვერი ელოდება და ნუ შემოუვლი.
LocalAdmin 100% CPU-ზეა, როცა არავინ არის ონლაინ. standard input-ზე ტერმინალი არ არის. გაუშვი screen-ში ან tmux-ში.
კონფიგურაციის ფაილები თავიდან იწყება. ორი სერვერი ერთ პორტის საქაღალდეს იზიარებს, ან სერვერი ჩაწერისას წმინდად გაჩერების ნაცვლად მოკლეს.
RE:NODE-ზე კონსოლი LocalAdmin კონსოლია ისტორიითა და tab-ით შევსებით, გეგმები კონფიგურაციისა და plugin-ის საქაღალდეებისთვის backup სლოტებს მოიცავს, ხოლო Schedules ტაბს cron გამოსახულებით ყოველდღიური restart-ის გაშვება შეუძლია - რაც ამ თამაშისთვის ღირს, როგორც მეხსიერების გამო, ისე განახლებების მისაღებად მომენტის ასარჩევად. crash loop ავტომატურად შეიმჩნევა: საათში სამი restart გაფრთხილებას აჩენს და ticket-ს ხსნის, იმის ნაცვლად, რომ Discord-იდან გაიგო. restart-ის ჰიგიენა ზოგადად აღწერილია restart გრაფიკები, რომლებიც გეხმარება.
FAQ#
რამდენი RAM სჭირდება SCP: Secret Laboratory-ის სერვერს?
ოთხი GB და ორი ფიზიკური ბირთვი ვერიფიცირებული სერვერის დოკუმენტირებული მინიმუმია და vanilla ოცსლოტიანი რაუნდისთვის მართლა საკმარისია. მას plugin-ები ზრდის: ძლიერ მოდიფიცირებულ სერვერს იმავე მოთამაშეების რაოდენობაზე ექვსიდან რვამდე შეიძლება დასჭირდეს.
აქვს თუ არა SCP: Secret Laboratory-ს RCON?
არა. არსებობს არჩევითი query პორტი, ნაგულისხმევად გამორთული, თამაშში Remote Admin პანელი და თავად მანქანაზე LocalAdmin კონსოლი. პრაქტიკაში დისტანციური ადმინისტრირება ნიშნავს Remote Admin-ს სწორად დაკონფიგურირებული როლით, ან plugin-ს, როგორიც CedMod-ია, რომელიც ვებ პანელს ამატებს.
როგორ დავნიშნო საკუთარი თავი ადმინად?
დაამატე შენი SteamID64 config_remoteadmin.txt-ის Members სიაში როგორც - <id>@steam: owner, აღწერე owner_* როლის პარამეტრები, ჩამოთვალე owner ყოველ უფლებაში, რომელიც გინდა, და გაუშვი reload rolesconfig. შეამოწმე, რომ იმუშავა, თამაშში ბრძანებით perm.
რატომ არ არის ჩემი სერვერი ვერიფიცირებული და აქვს თუ არა ამას მნიშვნელობა?
ვერიფიკაცია გაიცემა IPv4 მისამართზე ხელით განხილვის შემდეგ და დღეები სჭირდება. არავერიფიცირებული სერვერი მაინც მუშაობს და მაინც ჩანს, მაგრამ ვერიფიცირების ნიშანსა და მასთან დაკავშირებულ ნდობას ვერ იღებს. ყველაზე ხშირი დაბრკოლებაა, რომ მისამართი უკვე სხვისთვის არის ვერიფიცირებული.
LabAPI გამოვიყენო თუ EXILED?
ფაქტობრივად ორივე. LabAPI ოფიციალურია და უკვე დაყენებულია, ამიტომ მისთვის დაწერილი plugin ყველაზე დაბალი მოვლის ვარიანტია. EXILED-ს plugin-ების უფრო დიდი არქივი აქვს და ახლა თავადაც LabAPI-ის plugin-ად მუშაობს, ამიტომ მისი დამატება კიდევ ერთ ფენას გიჯდება, რომელიც მთავარ განახლებაზე შეიძლება გატყდეს.
რა არის მოთამაშეების მაქსიმალური რაოდენობა?
სამოცი ვერიფიცირებული სერვერისთვის, და ეს ზოგადადაც პრაქტიკული ზღვარია. ნაგულისხმევი ოცია, ხოლო ოცი-ოცდათხუთმეტი ის დიაპაზონია, სადაც თამაში მართლა დაბალანსებულია. რიცხვის გაზრდა ობიექტს უფრო დიდს არ ხდის.




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