Purpur და Pufferfish ორივე Paper-ის fork-ია, რომლებიც იგივე plugin-ებს უშვებენ და იგივე სამყაროებს ტვირთავენ. Purpur ასობით გეიმფლეის გადამრთველს ამატებს ფაილში, სახელად purpur.yml - mob-ებზე ჯდომა, ექვსრიგიანი ender chest-ები, silk touch-ით აღებადი spawner-ები, სოფლელების ქცევა - და სხვა მხრივ Paper-ივით იქცევა. Pufferfish წარმადობის patch-ებს ამატებს, რომელთაგან ყველაზე ცნობილია Dynamic Activation of Brain, რომელიც შორს მყოფი mob-ების AI-ს უფრო იშვიათად ითვლის. არცერთი მათგანი ჯადოსნური აჩქარება არ არის: Purpur გადამრთველებისთვის არსებობს, Pufferfish vanilla-ს სიზუსტის ნაწილს tick-ის დროში ცვლის, და ორივე ერთი ნაბიჯით გაშორებს იმ პროექტს, რომელიც Minecraft-ის უსაფრთხოებისა და სტაბილურობის ბაგებს პირველი ასწორებს. თუ რომელიმე მათგანის კონკრეტული ფუნქცია არ გჭირდება, ჩვეულებრივი Paper კვლავ სწორი ნაგულისხმევი არჩევანია.
სად დგანან fork-ები გენეალოგიურ ხეში#
Minecraft-ის სერვერული პროგრამა fork-ების ჯაჭვია, და ამ ჯაჭვის გაგება ხსნის ყველა რისკს, რომელიც პოსტში მოგვიანებით გამოჩნდება.
ყოველი პროექტი იღებს მის ზემოთ მდგომს და საკუთარ patch-ებს ადებს. როცა Mojang ახალ ვერსიას გამოუშვებს, ჯერ Spigot ახლდება, მერე Paper, მერე კი fork-ები თავიანთ patch-ებს ახალ Paper-ზე გადაიტანენ. fork შეიძლება მხოლოდ იმდენად აქტუალური იყოს, რამდენადაც ის, რაზეც აგებულია, და ხშირად უფრო გვიანაა.
Purpur თავისი ისტორიის უმეტეს ნაწილში Pufferfish-ის patch-ებზე იყო აგებული და არა პირდაპირ Paper-ზე, რის გამოც მას Pufferfish-ის ზოგიერთი ოპტიმიზაციაც აქვს და საკუთარი ოფციებიც. ეს ურთიერთობა Minecraft-ის ვერსიებს შორის იცვლებოდა, ამიტომ წაიკითხე იმ build-ის დაგენერირებული კონფიგურაციის ფაილები, რომელსაც რეალურად ჩამოტვირთავ, ნაცვლად იმისა, რომ ივარაუდო, რომელ ფუნქციებს შეიცავს.
ხიდან ორი პრაქტიკული ფაქტი გამომდინარეობს. პირველი, ყველა plugin-ი, რომელიც Paper-ზე მუშაობს, ორივე fork-ზე მუშაობს, რადგან ორივე Paper-ის API-ს ხელუხლებლად ინარჩუნებს. მეორე, plugin-ი, რომელიც Purpur-ის საკუთარ გაფართოებულ API-ს იყენებს, მხოლოდ Purpur-ზე მუშაობს და არა Paper-ზე - იშვიათია, მაგრამ ღირს შემოწმება, სანამ ასეთზე დამოკიდებული გახდები.
Purpur: Paper გამოჩენილი გადამრთველებით#
Purpur-ის მთავარი არგუმენტი კონფიგურირებადობაა. ის Paper-ის ფაილების გვერდით დიდ purpur.yml-ს ამატებს, და მასში თითქმის ყველა ოფცია ნაგულისხმევად vanilla-ს ქცევაზეა, ასე რომ, Purpur-ის დაყენება და არაფრის შეცვლა გაძლევს სერვერს, რომელიც Paper-ივით თამაშობს. ყოველ ცვლილებას თავად რთავ.
ოფციების მცირე ნაწილი, რომლებსაც ხალხი რეალურად იყენებს:
settings: use-alternate-keepalive: false blocks: barrel: rows: 3 ender_chest: six-rows: falseworld-settings: default: mobs: villager: lobotomize: enabled: false check-interval: 100 phantom: ridable: false| ოფცია | ნაგულისხმევი | რას ცვლის |
|---|---|---|
settings.blocks.barrel.rows | 3 | კასრის ინვენტარის ზომა, 1-დან 6 რიგამდე |
settings.blocks.ender_chest.six-rows | false | ender chest-ს აორმაგებს |
settings.use-alternate-keepalive | false | keepalive-ებს უფრო ხშირად აგზავნის, შეიძლება არასტაბილურ კავშირებს უშველოს |
mobs.<mob>.ridable | false | მოთამაშეებს უნაგირით ამ mob-ზე ჯდომის საშუალებას აძლევს |
mobs.villager.lobotomize.enabled | false | თიშავს AI-ს სოფლელებისთვის, რომლებსაც მოძრაობა არ შეუძლიათ |
ჯდომის გადამრთველები თითოეულ mob-ზეა, რის გამოც purpur.yml ასეთი გრძელია - თითქმის ყველა mob-ს საკუთარი პარამეტრების ბლოკი აქვს ჯდომისთვის, სიცოცხლისთვის, გაჩენისა და ქცევისთვის. Purpur-ის საკუთარი დოკუმენტაცია ყველა მათგანს ჩამოთვლის, იმ ვერსიის ზუსტი key-ების სახელებით, რომელსაც უშვებ. იმ გვერდზე მოძებნე, გასაღების გამოცნობის ნაცვლად: Purpur შეცდომით დაწერილ ოფციას ჩუმად უგულებელყოფს, სერვერი კი ისე ეშვება, თითქოს არაფერი შეგიცვლია.
ორი ოფცია უფრო ახლოს დათვალიერებას იმსახურებს, რადგან ისინი ცვლის არა მხოლოდ იმას, თუ როგორ თამაშობს სერვერი, არამედ იმასაც, თუ როგორ მუშაობს.
სოფლელების ლობოტომია. სავაჭრო დარბაზი, სავსე ერთბლოკიან საკნებში ჩაკეტილი სოფლელებით, ერთ-ერთი ყველაზე ძვირი რამაა, რასაც survival სერვერი მასპინძლობს, რადგან ყოველი სოფლელი კვლავ ყოველ tick-ზე უშვებს გზის ძიებისა და სამუშაო ადგილის ლოგიკას. lobotomize.enabled: true-ით სოფლელს, რომელსაც მოძრაობა არ შეუძლია, AI ეთიშება, check-interval კი მართავს, რამდენად ხშირად ამოწმებს Purpur ხელახლა, ისევ ჩაკეტილია თუ არა. ვაჭრობა კვლავ მუშაობს, მაგრამ ზუსტად რას აკეთებს ლობოტომირებული სოფლელი - განსაკუთრებით მარაგის განახლება - ვერსიებს შორის შეიცვალა, ამიტომ მთელი დარბაზის გადაყვანამდე ერთ სოფლელზე გატესტე. სერვერზე რამდენიმე დიდი სავაჭრო დარბაზით ეს ერთ-ერთი ყველაზე იაფი რეალური მოგებაა.
ალტერნატიული keepalive. vanilla-ს სერვერი keepalive პაკეტს ფიქსირებული ინტერვალით აგზავნის და მოთამაშეს თიშავს, თუ მისი ერთადერთი პასუხი ძალიან გვიან მოვა. Purpur-ის ალტერნატივა მათ უფრო ხშირად აგზავნის და მხოლოდ მაშინ თიშავს, თუ timeout-ის განმავლობაში არცერთს უპასუხეს, რაც ამცირებს "Timed out" გაგდებებს არასტაბილური კავშირის მქონე მოთამაშეებისთვის. latency-ზე ის არაფერს აკეთებს.
Purpur ასევე ამატებს ბრძანებებს, რომლებიც vanilla-ს და Paper-ს არ აქვთ, მაგალითად /tpsbar, /rambar, /ping და /uptime. ისინი სასარგებლოა, და ესეც კიდევ ერთი რამაა, რაც შენს გუნდს მოენატრება, თუ ოდესმე Paper-ზე დაბრუნდები.
Pufferfish: წარმადობის patch-ები კომპრომისებით#
Pufferfish არის Airplane-ის, უფრო ადრეული წარმადობის fork-ის, მემკვიდრე და მას ამავე სახელის ჰოსტინგ კომპანია უვლის. ის Paper-ის API-ს ინარჩუნებს და tick-ის დროზეა ფოკუსირებული. მისი პარამეტრები pufferfish.yml-შია:
dab: enabled: false start-distance: 12 max-tick-freq: 20 activation-dist-mod: 8 blacklisted-entities: []enable-async-mob-spawning: trueenable-suffocation-optimization: trueinactive-goal-selector-throttle: trueDynamic Activation of Brain (DAB) მთავარი ფუნქციაა. Minecraft-ის ახალი mob-ები - სოფლელები, piglin-ები, axolotl-ები, თხები, ბაყაყები და სხვები - "ტვინის" სისტემას იყენებენ, რომლის დათვლაც ძვირია. DAB ამცირებს, რამდენად ხშირად ითვლება mob-ის ტვინი, რაც უფრო შორსაა ის უახლოეს მოთამაშისგან. start-distance-ის ფარგლებში (ბლოკებში) mob-ები ჩვეულებრივ იქცევიან. მის მიღმა ტვინის tick-ებს შორის ინტერვალი მანძილთან ერთად იზრდება, activation-dist-mod-ზე გაყოფილი, max-tick-freq tick-ის ჭერამდე. blacklisted-entities-ში მყოფი mob-ები არასოდეს იზღუდება.
კომპრომისი სახელშივეა. სოფლელი, რომელიც უახლოეს მოთამაშეს 40 ბლოკით არის დაშორებული, უფრო იშვიათად ფიქრობს. survival-ის თამაშის უმეტესობაში ამას ვერავინ ამჩნევს. ტექნიკური მოთამაშეებისთვის, რომლებსაც აქვთ iron farm, სოფლელების გამრავლების მანქანა ან raid farm, რომელიც შორ მანძილზე mob-ების გადაწყვეტილებებს ეყრდნობა, DAB-მა შეიძლება დიზაინი შეანელოს ან გააფუჭოს. გამოსავალია ან start-distance-ის გაზრდა, ან იმ entity-ს ტიპის შავ სიაში შეტანა, რომელზეც farm-ია დამოკიდებული, ან DAB-ის გამორთვა.
ასინქრონული mob-ების გაჩენა ბუნებრივი გაჩენის სამუშაოს ნაწილს მთავარი ნაკადიდან აშორებს. ის გაჩენის წესებს არ ცვლის, მაგრამ დროს ცვლის, და spawn-proofing-ის ძალიან ზუსტი ტესტები ზოგჯერ vanilla-ს არ ემთხვევა.
არააქტიური goal selector-ის შეზღუდვა აიძულებს entity-ებს, რომლებიც აქტივაციის რადიუსის გარეთ არიან, თავიანთი ძველი სტილის AI მიზნები უფრო იშვიათად შეასრულონ. ის ემთხვევა Paper-ის საკუთარ entity-ების აქტივაციის რადიუსის პარამეტრებს spigot.yml-ში - რომლებიც პირველ რიგში უნდა მოარგო, რადგან ისინი Paper-ზეც მოქმედებს.
მოგების ზომაში გულწრფელი იყავი. სერვერზე, სადაც ვიწრო ადგილი entity-ების AI-ა - ბევრი სოფლელი, piglin farm-ები, mob grinder-ები - Pufferfish-ის patch-ებს თითოეული tick-ის საგრძნობი წილის დაბრუნება შეუძლია. სერვერზე, სადაც ვიწრო ადგილი chunk-ების გენერაცია, plugin-ები, redstone ან view distance-ია, ისინი ცოტას ცვლის. spark-ის პროფილი გაჩვენებს, რომელ შემთხვევაში ხარ: თუ Villager და Brain frame-ები დომინირებს, Pufferfish-ის გატესტვა ღირს; თუ არა - არ ღირს.
fork-ის გაშვების რისკები#
არცერთი მათგანი არ არის მიზეზი, რომ Purpur ან Pufferfish არასოდეს გაუშვა. ესენი ის ხარჯებია, რომლებიც სასურველ ფუნქციასთან უნდა აწონო.
- ვერსიის ჩამორჩენა. Minecraft-ის ახალი რელიზი ჯერ Paper-ს აღწევს, მერე fork-ებს. განახლებული კლიენტის მქონე მოთამაშეები ვერ შემოვლენ, სანამ შენი სერვერი არ დაეწევა, თუ ხარვეზის გადასალახად ViaVersion-ს არ უშვებ. Pufferfish-ის უფასო build-ები, განსაკუთრებით, ზოგჯერ Paper-ს დიდად ჩამორჩებოდა.
- უსაფრთხოებისა და crash-ების შესწორებები გვიან მოდის. როცა Paper crash exploit-ს ან dupe-ს ასწორებს, fork-მა ჯერ rebase უნდა გააკეთოს, სანამ შენამდე მოაღწევს. როგორც წესი, ეს საათები ან დღეებია. ზოგჯერ მეტი.
- მხარდაჭერა fork-ს ეკუთვნის და არა Paper-ს. Paper-ის დეველოპერები Purpur-ზე ან Pufferfish-ზე პრობლემის დებაგს არ დაიწყებენ, და სამართლიანადაც - მათ ვერ გაარჩევენ, fork-ის patch-ებმა გამოიწვია თუ არა. ბაგები ჯერ ჩვეულებრივ Paper-ზე გაიმეორე და მერე შეატყობინე ზემოთ.
- ქცევის გადახრა. ყოველი ჩართული ოფცია vanilla-სგან განსხვავებაა, რომელსაც მოთამაშეები, სახელმძღვანელოები და farm-ების დიზაინები არ ელოდება. phantom-ებზე ჯდომა და ექვსრიგიანი ender chest-ები სახალისოა; farm-ის დიზაინი, რომელიც DAB-ის გამო ჩუმად ფუჭდება, შენს ტექნიკურ მოთამაშეებს მთელ შუადღეს დაუჯდება.
- მიტოვება. fork-ები მცირე რაოდენობის მომვლელებზეა დამოკიდებული. თუ ერთი გაჩერდება, მიგრაციას მის გრაფიკზე იღებ და არა შენსაზე.
- უფრო ღრმა fork-ები ყოველივე ზემოთქმულს ამრავლებს. Purpur-ის შემდგომი fork-ებიც არსებობს - Leaf, Gale, DivineMC და სხვები - რომლებიც ზემოდან მეტ patch-ს ადებენ, ხშირად ექსპერიმენტული მრავალნაკადიანობის ჩათვლით. ჯაჭვში ყოველი ნაბიჯი ქვემოთ ჩამორჩენას ამატებს და მხარდაჭერას აკლებს. ისინი შეიძლება სწრაფი იყოს; ისინი ასევე ის ადგილია, სადაც იშვიათი ბაგები ცხოვრობენ.
არჩევანი: Paper, Purpur თუ Pufferfish#
| გინდა | გაუშვი | რატომ |
|---|---|---|
| უსაფრთხო ნაგულისხმევი ნებისმიერი სერვერისთვის | Paper | პირველი ახლდება, ეტალონია plugin-ებისა და მხარდაჭერისთვის |
| გეიმფლეის ოფციები plugin-ების გარეშე | Purpur | mob-ებზე ჯდომა, ინვენტარის ზომები, mob-ების ქცევა, ყველაფერი config-ში |
| ნაკლები tick-ის დრო mob-ებით სავსე სერვერზე | Pufferfish ან Purpur | DAB და მასთან დაკავშირებული patch-ები |
| vanilla-ს ზუსტი მექანიკა ტექნიკური თამაშისთვის | Fabric Lithium-ით | Paper და მისი fork-ები კიდურა შემთხვევებს ცვლიან |
| იმაზე მეტი მოთამაშე, ვიდრე ერთი ნაკადი გაუძლებს | Velocity და რამდენიმე სერვერი, ან Folia | fork მთავარ ნაკადს არ აქრობს |
ბოლო ორი რიგი ყველაზე მნიშვნელოვანია. ტექნიკურ მოთამაშეებს, რომლებსაც redstone-ისა და farm-ების ზუსტი ქცევა აინტერესებთ, უკეთ მოემსახურება Fabric სერვერული წარმადობის mod-ებით, რომელიც vanilla-ს ქცევას ხელუხლებლად ტოვებს. და თუ ერთ ნაკადს გადაიზარდე, პასუხი proxy-ქსელია ან Folia, და არა იგივე ერთნაკადიანი დიზაინის სხვა fork. სერვერული პროგრამების უფრო ფართო შედარებისთვის იხილე Paper, Fabric თუ vanilla.
Paper-იდან გადასვლა და უკან#
რადგან ორივე fork Paper-ის სამყაროს სტრუქტურას და plugin API-ს ინარჩუნებს, გადასვლა jar-ის შეცვლაა.
- სერვერი სუფთად გააჩერე და დაელოდე, სანამ შენახვა დასრულდება.
- გააკეთე backup მანქანის გარეთ. სამყარო იგივე ფორმატისაა, მაგრამ აპირებ ქცევის შეცვლას, რომლის გაუქმებაც ყოველთვის ვერ მოხერხდება - ლობოტომირებული სავაჭრო დარბაზი ან mob, რომელზეც იჯდნენ, იქ რჩება, სადაც აღმოჩნდა.
- ჩამოტვირთე fork-ის build ზუსტად შენი Minecraft-ის ვერსიისთვის. Purpur build-ებს თავისი საიტით და ჩამოტვირთვის API-ით აქვეყნებს; Pufferfish - საკუთარი საიტიდან. ვერსიებს ნუ აურევ.
- შეცვალე სერვერის jar-ი და გაუშვი. fork საკუთარ config ფაილს (
purpur.ymlანpufferfish.yml) ქმნის შენი არსებულიserver.properties-ის,bukkit.yml-ის,spigot.yml-ის დაconfig/საქაღალდის გვერდით, რომლებსაც ის კვლავ კითხულობს. - წაიკითხე გაშვების log-ი plugin-ებზე, რომლებიც ვერ ჩაიტვირთა, და config-ის გაფრთხილებებზე, მერე კი ოფციები სათითაოდ შეცვალე.
საკუთარ მანქანაზე Purpur-ის build-ის ჩამოტვირთვა მისი ჩამოტვირთვის API-ით სკრიპტით შეიძლება:
$ curl -o server.jar https://api.purpurmc.org/v2/purpur/1.21.1/latest/download$ java -Xms4G -Xmx4G -jar server.jar --noguiPaper-ზე დაბრუნება იგივეა საპირისპიროდ. Paper purpur.yml-ს და pufferfish.yml-ს უგულებელყოფს, ამიტომ ადგილზე დატოვე, თუ დაბრუნება მოგინდება. უკან არ ბრუნდება ის მდგომარეობა, რომელიც fork-მა შექმნა: entity-ები, რომლებითაც უჩვეულო ადგილას იმგზავრეს, ინვენტარები, რომლებიც vanilla-ს ნებადართულზე დიდია (ექვსრიგიანი ender chest-ის მეოთხე-მეექვსე რიგებში მყოფი ნივთები კლასიკური შემთხვევაა - დაცალე ისინი უკან გადართვამდე), და ყველაფერი, რაც მხოლოდ Purpur-ის ბრძანებაზე იყო დამოკიდებული.
RE:NODE-ზე Minecraft-ის გეგმები Paper-ით და შესაბამისი Java-ს ვერსიით მოდის, რაც ამ პოსტის რეკომენდაციაა. თუ მის ნაცვლად Purpur ან Pufferfish გინდა, ატვირთე jar-ი file manager-ით ან SFTP-ით და Startup ჩანართი მასზე მიუთითე - დაშვებული სერვერული პროგრამების თეთრი სია არ არსებობს, და არც ერთი დაწკაპუნებით გადართვა. ჯერ backup გააკეთე; თამაშის გეგმებს აქვს backup-ის სლოტები, რომლებიც შეიძლება როტაციისგან დაიბლოკოს, სანამ წყვეტ, რჩება თუ არა fork-ი.
fork-ის კარგად გაშვება#
თუ მაინც უშვებ, რამდენიმე ჩვევა მას მოსაწყენს და მშვიდს ხდის:
- დააფიქსირე build-ი. ნუ მისცემ გაშვების სკრიპტს ყოველ ჩართვაზე "latest"-ის ჩამოტვირთვის უფლებას. fork-ის build-ები შეიძლება რეგრესიებს შეიცავდეს, შენ კი გინდა, თავად აირჩიო, როდის მიიღებ ახალს. წინა jar-ი მიმდინარის გვერდით შეინახე.
- ჩაიწერე ყოველი არანაგულისხმევი ოფციის ცვლილება. ექვსი თვის შემდეგ ვეღარავინ გაიხსენებს, რატომ შეიძლება phantom-ებზე ჯდომა ან რატომ შეწყვიტეს 30 ბლოკის მოშორებით მყოფმა სოფლელებმა გამრავლება. კომენტარის ბლოკი
purpur.yml-ის თავში არაფერი ღირს. - ადევნე თვალი fork-ის რელიზის შენიშვნებს უსაფრთხოების შესწორებებისა და rebase-ებისთვის, და Paper-ის განცხადებებსაც გაჰყევი, რადგან Paper-ის შესწორებებს ელოდები.
- ვერსიის განახლებამდე ასლზე გატესტე. Minecraft-ის ვერსიის განახლებები იმ თანმიმდევრობას აღწერს, რომელიც მუშაობს, და ის უცვლელად მოქმედებს.
- ყოველი ცვლილების შემდეგ გააკეთე პროფილირება. fork-ის ოფცია, რომელიც უნდა შველოდეს და არ შველის, ნიშანია, რომ ვიწრო ადგილი სხვაგანაა.
FAQ#
Purpur Paper-ზე სწრაფია?
თავისთავად არა. Purpur-ის საკუთარი ოფციები ძირითადად ნაგულისხმევად vanilla-ს ქცევაზეა, მისი წარმადობა კი Paper-ისას უახლოვდება. build-ები, რომლებიც Pufferfish-ის patch-ებს შეიცავს, mob-ებით სავსე სერვერებზე შეიძლება უფრო სწრაფი იყოს, როცა DAB-ის ან სოფლელების ლობოტომიის მსგავს ოფციებს ჩართავ, მაგრამ მოგება ამ ოფციებიდან მოდის და არა სახელიდან.
მუშაობს Paper-ის plugin-ები Purpur-სა და Pufferfish-ზე?
კი. ორივე Paper-ის API-ს ინარჩუნებს, ასე რომ, ნებისმიერი plugin-ი, რომელიც Paper-ზე მუშაობს, მათზეც მუშაობს. გამონაკლისია plugin-ი, რომელიც Purpur-ის გაფართოებულ API-ზეა დაწერილი და მხოლოდ Purpur-ზე მუშაობს. plugin-ების ავტორები ამას, როგორც წესი, მკაფიოდ წერენ.
შემიძლია Purpur-ის შემდეგ Paper-ზე დავბრუნდე?
კი. სამყაროს ფორმატი და საქაღალდეების სტრუქტურა იგივეა, Paper კი უბრალოდ უგულებელყოფს purpur.yml-ს. ჯერ დაცალე ექვსრიგიანი ender chest-ები და კასრების დამატებითი რიგები, რადგან Paper-ს ამ ნივთების დასადები ადგილი არ აქვს.
აფუჭებს Pufferfish-ის DAB farm-ებს?
შეიძლება. DAB ანელებს ტვინზე დაფუძნებული mob-ების AI-ს, რომლებიც მოთამაშეებისგან შორს არიან, რაც გავლენას ახდენს სოფლელების გამრავლების მანქანებზე, ზოგიერთ iron farm-სა და raid farm-ზე, რომლებიც მანძილზე მუშაობს. გაზარდე dab.start-distance, დაამატე შესაბამისი mob-ი dab.blacklisted-entities-ში, ან გამორთე DAB სერვერებზე, სადაც სერიოზული ტექნიკური მოთამაშეები არიან.
ახალი სერვერი fork-ზე უნდა დაიწყოს?
როგორც წესი, არა. დაიწყე Paper-ზე, მოარგე და გადაერთე მხოლოდ მაშინ, როცა fork-ის კონკრეტული ფუნქცია დაგჭირდება. fork, რომელიც იმიტომ აირჩიე, რომ უფრო სწრაფად ჟღერს, როგორც წესი, ვერსიის ჩამორჩენასა და მხარდაჭერის პრობლემებს ამატებს და ვერაფერს წყვეტს, რაც სერვერს რეალურად აწუხებს.




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