Jotunn არ არის მოდი, რომელსაც თავისთავად აყენებ. ეს ბიბლიოთეკაა - "the Valheim Library" - რომელზეც სხვა მოდებია აგებული, და ის მოდიფიცირებული სერვერების უმეტესობაზე ხვდება, რადგან რომელიმე კონტენტის მოდმა ის დამოკიდებულებად მიუთითა. ის სამ რამეს აკეთებს, რასაც სერვერის მფლობელი ამჩნევს: არეგისტრირებს ახალ ნივთებს, ნაგებობის ნაწილებსა და არსებებს, რომლებსაც ეს მოდები ამატებს, დაკავშირებისას სერვერსა და კლიენტს შორის მოდების ვერსიებს ადარებს და თუ არ ემთხვევა, კავშირს წყვეტს, და მხოლოდ admin-ის config მნიშვნელობებს სერვერიდან ყველა კლიენტს უგზავნის. როცა მოთამაშე მოდიფიცირებული სერვერიდან kick-ს იღებს ფანჯრით, რომელშიც მოდები და ვერსიებია ჩამოთვლილი, kick-ს ძალიან ხშირად სწორედ Jotunn აძლევს - და ამას განზრახ აკეთებს. ეს პოსტი ხსნის, რა ხდება, როგორ წაიკითხო ეს და როგორ არ მისცე თავად Jotunn-ს შეუსაბამობად ქცევის საშუალება.
როგორ ტვირთავს BepInEx მოდებს საერთოდ, განხილულია Valheim სერვერის მოდები BepInEx-ით-ში. ეს პოსტი იქიდან აგრძელებს.
რას აკეთებს Jotunn მოდებისთვის#
Valheim-ს ოფიციალური მოდინგის API არ აქვს. ბიბლიოთეკის გარეშე ყოველ კონტენტის მოდს დამოუკიდებლად მოუწევდა იმის გარკვევა, როგორ ჩასვას ახალი ნივთი თამაშის ობიექტების ბაზაში სწორ მომენტში, როგორ გამოჩნდეს რეცეპტი სწორ crafting station-თან, როგორ დაამატოს თარგმანები და როგორ დაარეგისტრიროს ქსელური შეტყობინებები. Jotunn ამ სამუშაოს ერთხელ აკეთებს, მოდები კი მას იძახებენ.
ის manager-ებად არის ორგანიზებული, თითოეული ერთ სახის რამეზეა პასუხისმგებელი:
| Manager | რას ამუშავებს |
|---|---|
ItemManager | ახალი ნივთები, რეცეპტები, status effect-ები, ნივთების გარდაქმნა |
PieceManager | ასაშენებელი ნაწილები და hammer-ის კატეგორიები, რომლებშიც ისინი არიან |
PrefabManager | prefab-ების კლონირება და რეგისტრაცია, კონტენტის უმეტესობის საფუძველი |
CreatureManager | ახალი არსებები და მათი drop-ები |
ZoneManager | საკუთარი ლოკაციები და მცენარეულობა სამყაროს გენერაციაში |
LocalizationManager | თარგმანის სტრიქონები ყველა ენისთვის |
SynchronizationManager | config sync და admin-ის შემოწმებები სერვერსა და კლიენტებს შორის |
NetworkManager | საკუთარი RPC-ები, მოდის საკუთარი ქსელური შეტყობინებები |
CommandManager | console ბრძანებები, რომლებსაც მოდი ამატებს |
ამის უმეტესობა სერვერის მფლობელისთვის უხილავია, ერთი სასარგებლო გამონაკლისით: Jotunn-მა შემოიტანა "mock" მითითებები, როცა მოდი vanilla asset-ს მიმართავს placeholder სახელით JVLmock_ პრეფიქსით, რომელიც runtime-ში რეალური ობიექტით ჩანაცვლდება. თუ თამაშის განახლების შემდეგ მოდის asset-ები ვერ იხსნება, ეს პრეფიქსი შეიძლება log-ის შეცდომის ხაზებში დაინახო, და ის მიუთითებს მოდზე, რომელსაც განახლება სჭირდება, და არა შენს ინსტალაციაზე.
Jotunn Thunderstore-ზე გამოქვეყნებულია როგორც ValheimModding-Jotunn, დოკუმენტაციით valheim-modding.github.io/Jotunn-ზე. ის დამოკიდებულია BepInExPack Valheim-სა და HookGenPatcher-ზე (ValheimModding-HookGenPatcher), რომელიც პირველი გაშვებისას თამაშისთვის MMHOOK assembly-ებს აგენერირებს. mod manager ორივეს ავტომატურად აყენებს. ხელით Jotunn-ის .dll მიდის BepInEx/plugins-ში, HookGenPatcher კი BepInEx/patchers-ში - HookGenPatcher-ის არასწორ საქაღალდეში ჩადება იწვევს შეცდომებს, რომლებიც ისე გამოიყურება, თითქოს თავად Jotunn იყოს გატეხილი.
სად უნდა იყოს Jotunn დაყენებული#
Jotunn ყოველ კომპიუტერზე უნდა იყოს, რომელიც მასზე დამოკიდებულ მოდს უშვებს. პრაქტიკაში ეს ნიშნავს სერვერსა და ყველა კლიენტს, რადგან კონტენტის მოდები - Jotunn-ის მთავარი მომხმარებლები - თავად ორივე მხარეს სჭირდება.
მხოლოდ სერვერის მხარის მოდს, რომელიც Jotunn-ს იყენებს, Jotunn მხოლოდ სერვერზე სჭირდება. მხოლოდ კლიენტის მოდს, რომელიც მას იყენებს, მაგალითად ზოგიერთ ინტერფეისის მოდს, ის მხოლოდ კლიენტებზე სჭირდება. დამოკიდებულება მოდს მიჰყვება. ჩვეულებრივი სიურპრიზი არის ჯგუფი, რომელიც ფიქრობს, რომ "მხოლოდ სერვერის მოდებს" იყენებს, სანამ ვიღაც ერთ კონტენტის მოდს არ დაამატებს და Jotunn მასთან ერთად არ ჩამოვა, რის შემდეგაც სერვერზე შესვლა შეუძლებელია იმავე მოდის გარეშე ყველა კლიენტზე.
ამიტომაც კეტავენ Jotunn-ის მოდები Xbox-ისა და Game Pass-ის მოთამაშეებს: მათ ვერაფრის დაყენება შეუძლიათ, და Jotunn-ის შემოწმება მათ უარს ეტყვის, თუ მოდი აცხადებს, რომ ის ყველას უნდა ჰქონდეს. Valheim-ის crossplay და Xbox-ის მოთამაშეები განიხილავს, რისი გაშვება შეუძლია შერეულ ჯგუფს და რისი არა.
ვერსიის შემოწმება და რატომ აძლევს ის kick-ს#
როცა კლიენტი სერვერს უკავშირდება, Jotunn თითოეულ მხარეს ადგენს ჩატვირთული მოდების სიას, რომლებმაც network compatibility დონე გამოაცხადეს, მათი ვერსიებით, და ორივე სია ერთმანეთს ედარება. თუ ისინი ისე განსხვავდება, რაც მოდის თქმით მნიშვნელოვანია, კლიენტს კავშირი უწყდება და ეჩვენება ფანჯარა პრობლემების სიით.
ყოველი მოდი თავის მოთხოვნას კოდში ატრიბუტით აცხადებს. ორი ნაწილია მნიშვნელოვანი: ვის უნდა ჰქონდეს მოდი და რამდენად მკაცრად უნდა ემთხვეოდეს ვერსიები.
| თავსებადობის დონე | მნიშვნელობა |
|---|---|
NotEnforced | საერთოდ არ მოწმდება |
VersionCheckOnly | ედარება მხოლოდ მაშინ, თუ ორივე მხარეს აქვს |
EveryoneMustHaveMod | სერვერსაც და კლიენტსაც უნდა ჰქონდეს |
ClientMustHaveMod | კლიენტებს უნდა ჰქონდეთ; სერვერს არ სჭირდება |
ServerMustHaveMod | სერვერს უნდა ჰქონდეს; კლიენტებს არ სჭირდებათ |
| ვერსიის სიმკაცრე | შეუსაბამობა არის |
|---|---|
None | არასდროს პრობლემა |
Major | სხვა პირველი რიცხვი (1.x vs 2.x) |
Minor | სხვა პირველი ან მეორე რიცხვი (1.4 vs 1.5) |
Patch | ნებისმიერი განსხვავება (1.4.2 vs 1.4.3) |
ასე რომ, კონტენტის მოდი, რომელიც EveryoneMustHaveMod-ს აცხადებს Minor სიმკაცრით, 1.4.2-ზე მყოფ მოთამაშეს 1.4.3-ზე მყოფ სერვერზე უშვებს, მაგრამ 1.5.0-ს უარს ეუბნება. მოდი, რომელიც Patch სიმკაცრეს აცხადებს, ნებისმიერ განსხვავებას უარყოფს. მოდი, რომელიც არაფერს აცხადებს, Jotunn-ის შედარებაში საერთოდ არ მონაწილეობს - რაც არ ნიშნავს, რომ შეუსაბამობა უსაფრთხოა, მხოლოდ იმას, რომ Jotunn ამას არ გეტყვის.
ფანჯარა, რომელსაც მოთამაშე ხედავს, ჩამოთვლის თითოეულ პრობლემურ მოდს და რა იყო არასწორი: აკლია კლიენტზე, აკლია სერვერზე, ან ორივეზეა შეუთავსებელი ვერსიებით, ორივე ვერსიის ჩვენებით. ეს ფანჯარა მთელ პროცესში ყველაზე სასარგებლო რამაა, რადგან მოდს ასახელებს. სთხოვე მოთამაშეს screenshot და არა აღწერა.
გამოსავალი ყოველთვის ერთია: სიები დაამთხვიე. შემოწმების შესუსტებას ნუ ეცდები. ავტორებმა სიმკაცრე იმიტომ გამოაცხადეს, რომ შეუსაბამო ვერსია ნივთებს, რეცეპტებს ან სამყაროს ისე გატეხს, რაც უარყოფილ კავშირზე ბევრად უარესია. შეტყობინების წაკითხვისა და ნაკრებების დამთხვევის ნაბიჯ-ნაბიჯ აღწერა kick მოდის ვერსიის შეუსაბამობის გამო-შია.
თავად Jotunn როგორც შეუსაბამობა#
უხერხული შემთხვევაა, როცა კონტენტის ყველა მოდი ემთხვევა, Jotunn კი - არა. მოთამაშეს, რომელმაც თავის mod manager-ში ყველაფერი განაახლა, ახლა სერვერზე უფრო ახალი Jotunn აქვს. მხოლოდ ეს მისცემს თუ არა მას kick-ს, დამოკიდებულია Jotunn-ის შესაბამის ვერსიებზე და ეს release-ებს შორის განსხვავდებოდა - მაგრამ მაშინაც კი, როცა kick-ს არ აძლევს, კონტენტის მოდი, რომელიც Jotunn-ის უფრო ახალ ქცევაზეა აგებული, მეორე მხარეს ძველთან შეიძლება არასწორად მოიქცეს.
უსაფრთხო წესი მარტივია: Jotunn მოდების სიის ნაწილად ჩათვალე და სერვერსა და კლიენტებზე ერთსა და იმავე ვერსიაზე შეინარჩუნე. როცა ჯგუფი profile-ს mod manager-ით აზიარებს, Jotunn profile-შია, როგორც ნებისმიერი სხვა პაკეტი, და r2modman Valheim-ის ჯგუფებისთვის აჩვენებს, როგორ შეინარჩუნო ეს profile დაფიქსირებული.
იმის სანახავად, რა არის რეალურად გაშვებული თითოეულ მხარეს, BepInEx-ის log წაიკითხე. ყოველი plugin გაშვებისას თავისი ვერსიით არის ჩამოთვლილი:
# სერვერზე, სერვერის root საქაღალდიდან$ grep -o 'Loading \[[^]]*\]' BepInEx/LogOutput.logLoading [Jotunn 2.x.x]Loading [SomeContentMod 1.4.3]კლიენტზე იგივე ფაილი profile-ის BepInEx საქაღალდეშია, ერთი მოდიფიცირებული გაშვების შემდეგ. ორივე სია ხაზ-ხაზ შეადარე.
Config sync და მხოლოდ admin-ის პარამეტრები#
Jotunn მოდებს აძლევს საშუალებას, ზოგიერთი config მნიშვნელობა სერვერის ავტორიტეტული გახადონ. მოდი პარამეტრს მხოლოდ admin-ისად ნიშნავს და Jotunn-ის SynchronizationManager შემდეგ სამ რამეს აკეთებს:
- როცა კლიენტი უკავშირდება, ის ამ პარამეტრების სერვერის მნიშვნელობებს კლიენტს უგზავნის, რომელიც სესიის განმავლობაში მათ იყენებს საკუთარის ნაცვლად.
- დაკავშირებისას კლიენტს, რომელიც admin არ არის, მათი შეცვლა არ შეუძლია; თამაშის config editor-ში მნიშვნელობები ჩაკეტილად ჩანს.
- კლიენტს, რომელიც admin-ია, შეუძლია მათი შეცვლა თამაშში, და ცვლილება სერვერს ეგზავნება, იქ ინახება და ყველა სხვა დაკავშირებულ მოთამაშეს ეგზავნება.
admin-ის სტატუსი სერვერის adminlist.txt-დან მოდის, იმავე ფაილიდან, რომელსაც vanilla kick-ისა და ban-ისთვის იყენებს - სამი სიის ფაილი ID-ის ფორმატებს ხსნის. თუ admin-ს სინქრონიზებული პარამეტრის შეცვლა თამაშში არ შეუძლია, პირველი, რაც უნდა შეამოწმო, არის, არის თუ არა მისი ID ამ ფაილში იმ ფორმით, რომელსაც სერვერი ელის.
თამაშის editor, რომელსაც ხალხის უმეტესობა იყენებს, არის BepInEx Configuration Manager, რომელიც default-ად F1-ით იხსნება. ეს კლიენტის მხარის მოდია და არა Jotunn-ის ნაწილი, მაგრამ Jotunn-ის sync მას უერთდება. მის გარეშე admin-ებს მაინც შეუძლიათ სერვერის ფაილის შეცვლა BepInEx/config-ში და restart.
ორი შედეგი, რომელიც ღირს ცოდნად:
- სინქრონიზებული მნიშვნელობის შეცვლა კლიენტის config ფაილში სერვერზე არაფერს აკეთებს. ის დაკავშირებისას გადაიწერება. მოთამაშეები ზოგჯერ ამბობენ, რომ მოდი მათ ცვლილებას "უგულებელყოფს"; მიზეზი ეს არის.
- სერვერის config ფაილი არის ჩანაწერი. მისი backup სამყაროსთან ერთად გააკეთე, და როცა სერვერს გადაიტან,
BepInEx/configთან წაიღე, თორემ ყოველი სინქრონიზებული პარამეტრი მოდის default მნიშვნელობებს დაუბრუნდება.
ყველა მოდი Jotunn-ის sync-ს არ იყენებს. ზოგს საკუთარი სინქრონიზაცია აქვს, ყველაზე ხშირად ServerSync ბიბლიოთეკა, რომელიც მსგავსად, მაგრამ ცალკე იქცევა, ჩვეულებრივ მოდის საკუთარ config-ში Lock Configuration პარამეტრით. მოდის გვერდი ან მისი config-ის კომენტარები ამბობს, რომელს იყენებს.
Jotunn-ის განახლებულ მდგომარეობაში შენახვა#
Jotunn-ს Valheim-ის მოდინგის community უჭერს მხარს და ის ჩვეულებრივ თამაშის patch-ის შემდეგ პირველ განახლებულ პაკეტებს შორისაა, რადგან ძალიან ბევრი მოდია მასზე დამოკიდებული. თანმიმდევრობა patch-ის დღეს:
- ნუ განაახლებ სერვერს იმ წამს, როცა patch გამოვა. გააჩერე ის, გააკეთე სამყაროსა და მთელი
BepInExსაქაღალდის backup. - დაელოდე BepInExPack Valheim-ს (თუ patch-მა Unity შეცვალა), შემდეგ HookGenPatcher-სა და Jotunn-ს, შემდეგ კონტენტის მოდებს. კონტენტის მოდები თავიანთ დამოკიდებულებებში ხშირად Jotunn-ის მინიმალურ ვერსიას აფიქსირებენ, ამიტომ მათი პირველად განახლება მაინც შეუძლებელია.
- განაახლე სერვერი და მისი მოდები ერთად, გაუშვი და log-ში მოძებნე exception-ები და hook-ების გენერაციის დასრულება.
- ახალი მოდების profile ჯგუფს მხოლოდ მას შემდეგ გაუზიარე, რაც დადასტურდება, რომ სერვერი მუშაობს.
Jotunn ცდილობს უკუთავსებადი დარჩეს ერთი major ვერსიის ფარგლებში, ამიტომ ძველი Jotunn-ისთვის დაწერილი მოდი ჩვეულებრივ ახალთანაც მუშაობს. major ვერსიის ცვლილებამ შეიძლება ეს დაარღვიოს და ავტორები ამას თავიანთ changelog-ებში აღნიშნავენ. რა ვქნა, როცა მოდის განახლება რაღაცას ტეხავს ზოგადი პროცედურაა, როცა ზემოთ მოცემული თანმიმდევრობა ვერ გიშველის.
RE:NODE-ზე backup სლოტები Valheim-ის ყველა გეგმაშია შეტანილი, ამიტომ სანამ რამეს შეეხები, მოთხოვნისამებრ გააკეთე ერთი - მომუშავე Jotunn-ითა და მოდების ნაკრებით - და თუ განახლება ცუდად წავა, აღდგენა ერთი ღილაკია. backup-ის ჩაკეტვაც შეიძლება, რომ დაგეგმილმა backup-ებმა ის არ ჩაანაცვლოს, სანამ ჯერ კიდევ ტესტავ.
Jotunn-ის პრობლემების მოგვარება#
`Could not load [SomeMod] because it requires [com.jotunn.jotunn]`. Jotunn აკლია ან ვერ ჩაიტვირთა. დააყენე ის და შეამოწმე, რომ HookGenPatcher არის patchers-ში და არა plugins-ში.
Jotunn იტვირთება, მაგრამ თამაშის patch-ის შემდეგ გაშვებისას exception-ს ისვრის. Jotunn ამ თამაშის ვერსიისთვის ჯერ არ განახლებულა, ან HookGenPatcher-ის დაგენერირებული assembly-ები მოძველებულია. განაახლე ორივე; თუ ეს ჯერ შეუძლებელია, დამოკიდებული მოდების გარეშე იმუშავე, სანამ შესაძლებელი გახდება.
მოთამაშე დაკავშირებისას იღებს ფანჯარას მოდების სიით. ეს ვერსიის შემოწმებაა. ფანჯარაში სახელები და ვერსიები წაიკითხე და მისი profile სერვერს დაამთხვიე.
admin-ის ცვლილებები სინქრონიზებულ პარამეტრში არ ინახება. სერვერი მოთამაშეს admin-ად არ ცნობს, ან პარამეტრი არ არის ისეთი, რომელსაც მოდი მხოლოდ admin-ისად ნიშნავს. ჯერ adminlist.txt შეამოწმე.
გაშვებას რამდენიმე წუთი სჭირდება. HookGenPatcher-ის დაყენების ან განახლების შემდეგ, ან თამაშის patch-ის შემდეგ პირველი გაშვება hook assembly-ებს თავიდან აგენერირებს. შემდეგი გაშვებები უფრო სწრაფია. თუ ყოველი გაშვება ნელია, მოდები დათვალე და Jotunn-ს ნუ დაადანაშაულებ.
FAQ#
სჭირდებათ მოთამაშეებს Jotunn-ის დაყენება?
თუ რომელიმე მოდი, რომელიც მათ სჭირდებათ, მასზეა დამოკიდებული, კი. mod manager მას ავტომატურად აყენებს როგორც დამოკიდებულებას. მოთამაშეებს ის ცალკე მხოლოდ მაშინ სჭირდებათ, თუ სერვერზე რომელიმე მოდი აცხადებს, რომ ყველას უნდა ჰქონდეს, და ეს მოდი Jotunn-ს იყენებს.
შემიძლია Jotunn-ის ვერსიის შემოწმების გამორთვა?
config ფაილიდან - არა, და არც უნდა გინდოდეს. ყოველი მოდი თავის მოთხოვნას კოდში აცხადებს. შემოწმება არსებობს იმისთვის, რომ ნივთები, რეცეპტები და სამყაროს ობიექტები კომპიუტერებს შორის არ განსხვავდებოდეს.
Jotunn იგივეა, რაც JotunnLib?
JotunnLib ადრინდელი სახელი იყო. მიმდინარე პაკეტები Jotunn-ის სახელით ValheimModding-ისგან ქვეყნდება, ხოლო ძველი მოდები, რომლებიც JotunnLib-ს ახსენებენ, ჩვეულებრივ იმავე ბიბლიოთეკას გულისხმობენ.
აკლებს Jotunn სერვერს წარმადობას?
გაშვების შემდეგ ძალიან ცოტას. მისი მთავარი ფასი გაშვების დროა HookGenPatcher-ის გენერაციისა და კონტენტის რეგისტრაციის გამო, რაც მით უფრო მნიშვნელოვანია, რაც უფრო იზრდება მოდების სია.
რატომ სჭირდება Jotunn-ს HookGenPatcher?
Jotunn და მასზე აგებული ბევრი მოდი თამაშის მეთოდებზე მისაბმელად hook assembly-ებს იყენებს, რომლებიც თამაშის კოდიდან გენერირდება. HookGenPatcher ამ assembly-ებს გაშვებისას აგენერირებს და თამაშის განახლებისას თავიდან ქმნის.


