Killing Floor 2-ში მუტატორი არის UnrealScript-ის კლასი, რომელიც მიმდინარე რეჟიმის წესებს ცვლის, საკუთარი თამაშის რეჟიმი კი კლასია, რომელიც რეჟიმს მთლიანად ანაცვლებს. ორივე გაშვების ხაზიდან იტვირთება: ?Mutator=Package.ClassName (რამდენიმე, მძიმით გამოყოფილი ერთი პარამეტრის შიგნით) და ?Game=Package.ClassName. პაკეტი Workshop-ით მოდის - ჩამოთვლილია item id-ით PCServer-KFEngine.ini-ში და შემდეგ გაშვებაზე იტვირთება KFGame/Cache-ში - შემოსული მოთამაშეები კი იგივე ელემენტებს Steam-იდან იღებენ. ყველაფერი, რაც Tripwire-ის whitelist-ში არ არის, სერვერს Unranked-ად აქცევს, ასე რომ მოთამაშეები მასზე perk XP-ს ვერ აგროვებენ. სანამ რამეს დააინსტალირებ, გადაწყვიტე, Ranked სერვერს უშვებ თუ მოდიფიცირებულს, რადგან ორივე ერთად ვერ იქნები.
საბაზისო სერვერი - ინსტალაცია, მთავარი ini ფაილები, web admin, პორტები, workshop-ის რუკები - მოცემულია Killing Floor 2-ის სერვერის გზამკვლევში. ეს პოსტი ყველაფერია, რაც ამის ზემოთაა: როგორ იტვირთება მუტატორები და რეჟიმები, პოპულარული მათგანი და მათი ფასი, სირთულის მართვის რეჟიმის სწორად გაშვება და ჩვეულებრივი გაუმართაობების გამოსწორება.
მუტატორები და თამაშის რეჟიმები#
გაშვების ხაზი ასახელებს რუკას, შემდეგ კი URL-ის სტილის ოფციებს:
$ ./KFGameSteamServer.bin.x86_64 \ KF-BurningParis?Game=KFGameContent.KFGameInfo_Survival?Difficulty=3?GameLength=1?Mutator=PackageA.MutA,PackageB.MutB \ -Port=7777 -QueryPort=27015?Game= ირჩევს game info კლასს - კოდს, რომელიც განსაზღვრავს, რა არის მატჩი. სტანდარტულები KFGameContent-შია: KFGameInfo_Survival, KFGameInfo_Endless, KFGameInfo_WeeklySurvival, KFGameInfo_Objective და KFGameInfo_VersusSurvival. საკუთარი რეჟიმი უბრალოდ სხვა კლასია სხვა პაკეტში და ის სტანდარტულს სრულად ანაცვლებს - ტალღების ლოგიკას, გაჩენას, trader-ს, ზოგჯერ perk-ებსა და მაღაზიასაც.
?Mutator= ერთ ან რამდენიმე მუტატორის კლასს ტვირთავს მიმდინარე რეჟიმის თავზე. მუტატორი თამაშის მოვლენებს ებმება - მოთამაშის გაჩენა, Zed-ის გაჩენა, ტალღის დაწყება, დაზიანების მიყენება - და შედეგს ცვლის. მუტატორები ერთმანეთს ემატება, რაც მათი ძლიერი მხარეცაა და კონფლიქტების უმეტესობის წყაროც.
| საკუთარი თამაშის რეჟიმი | მუტატორი | |
|---|---|---|
| იტვირთება | ?Game=Package.Class | ?Mutator=Package.Class |
| რამდენი | ზუსტად ერთი | რამდენიმე, მძიმით გამოყოფილი |
| მოქმედების არე | ანაცვლებს რეჟიმს | ცვლის რეჟიმს |
| ტიპური გამოყენება | სირთულის მართვა, endless გადაკეთებები | მოთამაშეების რაოდენობა, trader-ის დრო, მოხერხებულობა |
| კონფლიქტის რისკი | დაბალი სტანდარტულ მუტატორებთან, უფრო მაღალი სხვებთან | იზრდება ყოველ დამატებულთან ერთად |
სინტაქსის ხაფანგი, რომელშიც ხალხი ვარდება: რამდენიმე მუტატორი ერთ ?Mutator=-ში იწერება, მძიმით გამოყოფილი. თუ ხაზზე ?Mutator=-ს ორჯერ გაიმეორებ, მხოლოდ ერთი დარჩება.
საიდან მოდის კოდი: Workshop და ხელით ინსტალაცია#
მუტატორები და რეჟიმები პაკეტებია - კომპილირებული .u ფაილები, ზოგჯერ გვერდით კონტენტის პაკეტებით. სერვერზე მათი მოხვედრის ორი გზა არსებობს.
Workshop-ით, ჩვეულებრივი გზა. ჩამოთვალე თითოეული item id engine ini-ში, თითო ხაზი თითო ელემენტზე:
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]ServerSubscribedWorkshopItems=1111111111ServerSubscribedWorkshopItems=2222222222[IpDrv.TcpNetDriver]DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownloadზემოთ მოცემული id-ები ჩანაცვლებებია - ნამდვილები ელემენტის Workshop-ის URL-იდან აიღე. შემდეგ გაშვებაზე სერვერი თითოეულ ელემენტს KFGame/Cache/<id>/-ში ჩამოტვირთავს. შემოსულ მოთამაშეებს იგივე ელემენტებზე მიუთითებენ და Steam მათ ჩამოტვირთავს - სწორედ ასე აღწევს ხალხამდე მუტატორის კლიენტის მხარის ნაწილები (HUD, მენიუ, იარაღის საკუთარი მოდელი). DownloadManagers ხაზი ამ სექციაში პირველი ჩანაწერი უნდა იყოს, როგორც მთავარ გზამკვლევშია ახსნილი.
ხელით, პაკეტის ფაილების სერვერის კონტენტის საქაღალდეებში მოთავსებით. ეს მუშაობს წმინდად სერვერის მხარის კოდისთვის და შენი საკუთარი build-ებისთვის, მაგრამ კლიენტები ამით ვერაფერს იღებენ - ყველაფერი, რასაც კლიენტის მხარის კომპონენტი აქვს, ფუჭდება ყველა მოთამაშისთვის, ვისაც ფაილები უკვე არ აქვს.
რომელი გზაც არ უნდა იყოს, პაკეტის სახელი ?Mutator=Package.Class-ში არის .u ფაილის სახელი გაფართოების გარეშე, კლასის სახელს კი ავტორი ასახელებს. სერიოზული მოდების Workshop-ის აღწერებში ზუსტი სტრიქონია მითითებული, რომელიც უნდა ჩასვა. დააკოპირე ის და ნუ გამოიცნობ ელემენტის სათაურიდან; სათაური და პაკეტი იშვიათად ემთხვევა.
Ranked, Unranked და whitelist#
Tripwire დამტკიცებული მოდიფიკაციების whitelist-ს აწარმოებს. სერვერი, რომელიც მხოლოდ სტანდარტულ კონტენტსა და whitelist-ში შეყვანილ მუტატორებს უშვებს, Ranked რჩება: მოთამაშეები perk XP-ს აგროვებენ და სერვერს ოფიციალურივით ეპყრობიან. გაუშვი რაიმე სიის გარეთ და სერვერი Unranked ხდება, და მასზე თამაშისას XP-ს ვერავინ აგროვებს.
ეს მოდიფიცირებული Killing Floor 2-ის ჰოსტინგის ყველაზე მნიშვნელოვანი ფაქტია, რადგან perk-ების პროგრესი არის ის, რის გამოც მოთამაშეების უმეტესობა საერთოდ თამაშობს. სამი შედეგი:
- სახელში თქვი. მოთამაშეები კითხვით ფილტრავენ. "Unranked" ან "Custom"
ServerName-ში გიხსნის საჩივრების ნაკადისგან იმ ხალხისგან, ვინც perk-ის ასამაღლებლად შემოვიდა. - ბევრი პოპულარული მოდი თავისი ბუნებით Unranked-ია. სირთულის გადაკეთებები, მოთამაშეების გაზრდილი რაოდენობა და endless გადამუშავებები ცვლის ბალანსს, რომლის მიხედვითაც XP გროვდება. მათმა მოთამაშეებმა ეს იციან და ეთანხმებიან.
- ზოგიერთი პატარა მუტატორი whitelist-შია. თუ Ranked-ად დარჩენა გინდა, ინსტალაციამდე შეამოწმე ელემენტის გვერდი და Tripwire-ის მიმდინარე სია; სტატუსი თამაშის განახლებებს შორის შეიძლება შეიცვალოს.
პროგრესი თითოეული მოთამაშის Steam-ის ანგარიშზე ინახება და არა შენს სერვერზე, ამიტომ Unranked საღამო არავის არაფერს ართმევს. უბრალოდ არაფერს უმატებს.
მოთამაშეების რაოდენობის გაზრდა#
Survival-ში ექვსი მოთამაშის ზღვარს თამაშის რეჟიმი აწესებს და არა ძრავი, რის გამოც მხოლოდ MaxPlayers-ის შეცვლა არ მუშაობს. საზოგადოებები, რომლებსაც co-op-ში რვა ან თორმეტი მოთამაშე უნდათ, max-players მუტატორს იყენებენ, პლუს HUD-ის ან scoreboard-ის მუტატორს, რომ დამატებითი მოთამაშეები ინტერფეისში გამოჩნდნენ. ჩვეულებრივი სქემაა:
- გამოაწერინე სერვერს მუტატორი და დაამატე
?Mutator=-ში. - დააყენე სამიზნე მოთამაშეების რაოდენობა იქ, სადაც მუტატორის დოკუმენტაცია ამბობს - ჩვეულებრივ
?MaxPlayers=გაშვების ხაზზე ან გასაღები იმ ini ფაილში, რომელსაც ის ქმნის. - დაამატე scoreboard-ის ან HUD-ის მუტატორი, თუ მთავარი ამას თავად არ აკეთებს.
- გადატვირთე და შეამოწმე რეალური მოთამაშეებით და არა მხოლოდ ბრაუზერში ნაჩვენები რიცხვით.
გულწრფელი იყავი საკუთარ თავთან იმაზე, რას უკეთებს ეს თამაშს. ტალღის ზომა, dosh და ბოსის სიცოცხლე ექვს მოთამაშემდე სკალირდება; თორმეტზე თითოეული მოთამაშე ნაკლებ Zed-ს და მეტ ფულს ხედავს, ასე რომ თამაში უფრო ადვილი და ხმაურიანი ხდება. ქვემოთ აღწერილი სირთულის მართვის რეჟიმები გამოწვევის დაბრუნების გზაა. CPU-ს ხარჯი მოთამაშეებთან და Zed-ებთან ერთად იზრდება; თორმეტმოთამაშიანი სერვერი დიდი ტალღებით Hell on Earth-ზე ერთი ნაკადისთვის რეალური დატვირთვაა. რომელს უნდა უყურო, განხილულია სტატიაში CPU თუ RAM სათამაშო სერვერებისთვის.
Controlled Difficulty და სხვა საკუთარი რეჟიმები#
Controlled Difficulty
Controlled Difficulty (CD) ყველაზე ცნობილი საკუთარი რეჟიმია და გამოცდილი ჯგუფების სტანდარტი. ის Survival-ს ანაცვლებს ვერსიით, სადაც გაჩენის თითქმის ყველა ცვლადი ხელმისაწვდომია: რამდენი Zed არის ცოცხალი ერთდროულად, რა სისწრაფით ჩნდებიან, გაჩენის ციკლი (Zed-ების რომელი ტიპები რომელ ტალღებში მოდის), რამდენ ხანს რჩება trader ღია, რომელი ბოსი ჩნდება.
ის იტვირთება როგორც game კლასი და არა როგორც მუტატორი. არსებობს რამდენიმე მხარდაჭერილი build, სხვადასხვა ავტორის გამოქვეყნებული, და ისინი პაკეტის სხვადასხვა სახელს იყენებენ - ჩვეულებრივ რაღაც ControlledDifficulty_<Author>.CD_Survival-ის მსგავსს. გამოიყენე ზუსტი სტრიქონი იმ build-ის Workshop-ის გვერდიდან, რომელსაც გამოიწერ:
KF-BioticsLab?Game=<CDPackage>.CD_Survival?Difficulty=3?GameLength=2?SpawnCycle=basic_moderateპარამეტრები, რომლებსაც CD-ის build-ები ჩვეულებრივ ხელმისაწვდომს ხდის, მოიცავს SpawnCycle, MaxMonsters, CohortSize, SpawnPoll, WaveSizeFakes, TraderTime და Boss. მათი დაყენება შეიძლება გაშვების ხაზზე ან ini-ში, რომელსაც რეჟიმი პირველ გაშვებაზე წერს, და build-ების უმეტესობა მოთამაშეებს ჩატში მიმდინარე მნიშვნელობების ნახვის საშუალებასაც აძლევს. სახელები და ნაგულისხმევი მნიშვნელობები build-ებს შორის განსხვავდება, ამიტომ build-ის დოკუმენტაცია წაიკითხე და არა სხვისთვის დაწერილი გზამკვლევი.
რამდენიმე პრაქტიკული შენიშვნა:
- გაჩენის ციკლები ამის გულია. ციკლი Zed-ების ზუსტ ნარევს ტალღა-ტალღა განსაზღვრავს. საზოგადოებები ციკლების სახელებს ერთმანეთს უზიარებენ; ჯგუფი, რომელსაც მუდმივი გამოწვევა უნდა, ერთს ირჩევს და მასზე რჩება.
- `WaveSizeFakes` ტალღის ზომას ისე ზრდის, თითქოს მეტი მოთამაშე იყოს. ასე იღებს ოთხკაციანი ჯგუფი ექვსკაციან ან უფრო დიდ ტალღას.
- CD Unranked-ია. ყველამ, ვინც მას თამაშობს, ეს იცის, ახალმა მოთამაშეებმა კი შეიძლება არ იცოდნენ.
- მაღალი `MaxMonsters`-ისას CPU-ს უყურე. CD საშუალებას გაძლევს რუკაზე ერთდროულად გაცილებით მეტი Zed განათავსო, ვიდრე სტანდარტულ Survival-ში. სერვერის თამაშის ნაკადი თითოეულზე იხდის.
Endless გადაკეთებები და სხვა რეჟიმები
CD-ის გარდა Workshop-ში არის სრული endless გადამუშავებები - ყველაზე ცნობილი Zedternal-ია - რომლებიც perk-ებს, trader-სა და პროგრესს საკუთარი სისტემებით ანაცვლებს ძალიან გრძელი სესიებისთვის. ისინი იტვირთება ?Game=-ით ელემენტის გვერდზე მითითებული კლასის გამოყენებით, ჩვეულებრივ საკუთარ ini-ის მორგებას საჭიროებს და Unranked-ია. გრძელ სესიაზე მეხსიერების ზრდას ელოდე და სესიებს შორის გადატვირთვა დაგეგმე; დროის შერჩევა განხილულია სტატიაში გადატვირთვის განრიგები, რომლებიც ეხმარება.
ერთ სერვერზე ერთი საკუთარი რეჟიმი აირჩიე. ორი game კლასი ერთად ვერ იმუშავებს, ხოლო სტანდარტული Survival-ისთვის დაწერილი მუტატორები საკუთარ რეჟიმში შეიძლება საერთოდ არ მუშაობდეს - CD ან endless სერვერზე დამატებამდე თითოეული მუტატორის გვერდზე თავსებადობის შენიშვნები შეამოწმე.
მუტატორების კონფიგურაცია და კონფლიქტების თავიდან აცილება#
მუტატორები, რომლებსაც პარამეტრები აქვს, ჩვეულებრივ KFGame/Config/-ში საკუთარ ini ფაილს ქმნიან პირველ გაშვებაზე, როცა მუტატორი ჩატვირთულია. ფაილის სახელი მოდზეა დამოკიდებული. აქაც იგივე წესი მოქმედებს, რაც მთავარ კონფიგურაციაზე: ერთხელ გაუშვი, სუფთად გააჩერე, მერე შეცვალე, რადგან გაშვებული სერვერი გათიშვისას თავის კონფიგს უკან წერს.
1. Add the item id to PCServer-KFEngine.ini2. Add Package.Class to ?Mutator= or ?Game=3. Start, wait for the map to load, read the log4. Stop cleanly5. Edit the new ini file the mod created6. Start again and test in a real matchკონფლიქტები ხდება, როცა ორი მუტატორი ერთსა და იმავეს ცვლის - ორი, რომელიც ორივე გაჩენას არეგულირებს, ორი, რომელიც ორივე scoreboard-ს ანაცვლებს, max-players მუტატორი და საკუთარი რეჟიმი, რომელსაც საკუთარი მოთამაშეების ლიმიტი აქვს. სიმპტომები მერყეობს იქიდან, რომ ერთი მეორეს ჩუმად აუქმებს, ტალღის დაწყებისას შეცდომებამდე. კონფლიქტის პოვნის მეთოდი მოსაწყენი და საიმედოა:
- ამოიღე ყველა მუტატორი. დარწმუნდი, რომ სერვერი სუფთად მუშაობს.
- დააბრუნე ისინი სათითაოდ, თითოეულის შემდეგ გადატვირთე და შეამოწმე.
- როცა რამე გაფუჭდება, ბოლოს დამატებული მონაწილეობს; შეამოწმე ის თითოეულ დანარჩენთან წყვილ-წყვილად.
მუშა გაშვების ხაზი სადმე სერვერის გარეთ ჩაიწერე, Workshop-ის id-ებითა და თარიღით. როცა ავტორი ელემენტს განაახლებს და სერვერი მეორე დილით გაფუჭდება, სწორედ ეს ჩანაწერია უკან დაბრუნების გზა. ზოგადი სახელმძღვანელოა რა ქნა, როცა მოდის განახლება რამეს აფუჭებს, მოკლე სიის არგუმენტი კი - მოდიფიცირებული სერვერის სისუფთავე.
განახლებები და Workshop-ის ცვლილებები#
მოდიფიცირებულ Killing Floor 2-ის სერვერს ორი სახის განახლება ხვდება:
- თამაშის განახლებები. Tripwire-ის პატჩებმა შეიძლება კომპილირებული მუტატორები გააფუჭოს, სანამ მათი ავტორები ხელახლა არ ააწყობენ. განაახლე სერვერი, შემდეგ ხელახლა გახსნამდე თითოეული მუტატორის გვერდი და ლოგი შეამოწმე.
- Workshop-ის განახლებები. როცა ავტორი ხელახლა აქვეყნებს, სერვერი ახალ ვერსიას შემდეგ გაშვებაზე იღებს, მოთამაშეები კი - შემდეგ შემოსვლაზე. გაფუჭებული განახლება შენი მხრიდან ყოველგვარი მოქმედების გარეშე მოდის.
დაცვა არის backup ყოველი ცვლილებისა და ყოველი პატჩის წინ. Killing Floor 2-ის სერვერის მთელი მდგომარეობა არის KFGame/Config/ პლუს ის, რაც ხელით მოათავსე; ქეში შეიძლება ხელახლა ჩამოიტვირთოს. RE:NODE-ზე backup-ის სლოტები Killing Floor 2-ის ყველა გეგმას მოყვება და ერთი ღილაკით აღდგება, Schedules ჩანართს კი შეუძლია ღამის backup გააკეთოს და სერვერი დადგენილ საათზე გადატვირთოს, რომ Workshop-ის ცვლილებები პროგნოზირებად დროს მოვიდეს და არა ტალღის შუაში.
პრობლემების მოგვარება#
მუტატორი ჩამოთვლილია, მაგრამ არაფერი იცვლება. ის არ ჩაიტვირთა. ლოგში პაკეტის სახელი მოძებნე. ჩვეულებრივი მიზეზები: არასწორი Package.Class სტრიქონი, Workshop-ის ელემენტის ჩამოტვირთვა ვერ მოხერხდა, ან მეორე ?Mutator=-მა პირველი ჩაანაცვლა.
მოთამაშეები ჩატვირთვაზე იჭედებიან ან შემოსვლისას აგდებს. მუტატორს კლიენტის მხარის კონტენტი აქვს და მათი ჩამოტვირთვა ვერ მოხერხდა, ან DownloadManagers ხაზი აკლია ან პირველი არ არის.
სერვერი Unranked გახდა. მასზე რაღაც whitelist-ში არ არის. ამოიღე მუტატორები სათითაოდ, რომ იპოვო რომელი, ან მიიღე ეს და სერვერის სახელში თქვი.
MaxPlayers იგნორირებულია. რეჟიმის ზღვარი მაინც მოქმედებს. გამოიყენე max-players მუტატორი და შეამოწმე, ხომ არ აწესებს საკუთარი რეჟიმი თავის ლიმიტს.
მუტატორის ini-ში პარამეტრები უკან ბრუნდება. სერვერი გაშვებული იყო, როცა ცვლიდი. გააჩერე, შეცვალე, გაუშვი.
ტალღის დაწყებისას ავარია ან შეცდომები. ორი მუტატორი კონფლიქტშია, ან მუტატორი საკუთარ რეჟიმთან შეუთავსებელია. გაყავი ორად, როგორც ზემოთაა აღწერილი.
ლაგი გვიან ტალღებში საკუთარი რეჟიმით. ერთი ბირთვისთვის ერთდროულად ზედმეტად ბევრი ცოცხალი Zed. უფრო დიდი გეგმის ყიდვამდე რეჟიმის ერთდროულად ცოცხალი Zed-ების პარამეტრი შეამცირე.
FAQ#
როგორ დავამატო ერთზე მეტი მუტატორი KF2 სერვერზე?
ჩასვი ყველა ერთ ?Mutator= ოფციაში, მძიმით გამოყოფილი: ?Mutator=PackageA.MutA,PackageB.MutB. ?Mutator=-ის გამეორება მხოლოდ ერთს ტოვებს.
მუტატორები ჩემს სერვერს Unranked-ად აქცევს?
ნებისმიერი მოდიფიკაცია, რომელიც Tripwire-ის whitelist-ში არ არის, აქცევს. Unranked სერვერზე მოთამაშეები perk XP-ს ვერ აგროვებენ. ზოგიერთი პატარა მუტატორი whitelist-შია; სირთულისა და მოთამაშეების რაოდენობის მოდების უმეტესობა - არა.
მოთამაშეებს მუტატორების თავად დაინსტალირება სჭირდებათ?
არა. თუ მუტატორი Workshop-ით მიეწოდება და download manager კონფიგურირებულია, შემოსული მოთამაშეები მას Steam-იდან ავტომატურად იღებენ. ხელით დაინსტალირებული პაკეტები კლიენტებს არ ეგზავნება.
რა განსხვავებაა ?Game=-სა და ?Mutator=-ს შორის?
?Game= თამაშის რეჟიმის კლასს ირჩევს და რეჟიმს მთლიანად ანაცვლებს; ის მხოლოდ ერთი შეიძლება იყოს. ?Mutator= მიმდინარე რეჟიმის თავზე მოდიფიკაციებს ამატებს, და რამდენიმე შეიძლება ჩაიტვირთოს.
Controlled Difficulty მუტატორია?
ის საკუთარი თამაშის რეჟიმია, რომელიც ?Game=-ით და იმ build-ის კლასით იტვირთება, რომელსაც გამოიწერ. სხვადასხვა build პაკეტის სხვადასხვა სახელს იყენებს, ამიტომ ზუსტი სტრიქონი Workshop-ის გვერდიდან დააკოპირე.
შემიძლია 12-მოთამაშიანი Survival სერვერის გაშვება?
კი, max-players მუტატორით და ჩვეულებრივ scoreboard-ის გამოსწორებით. ის Unranked იქნება, და მოთამაშეების დიდ რაოდენობაზე თამაში ადვილდება, თუ სირთულის მართვის რეჟიმს არ დაამატებ.




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