RE:NODE

Minecraft10 წუთის საკითხავი

Minecraft-ის proximity voice chat სერვერზე

Proximity voice chat Minecraft სერვერზე Simple Voice Chat-ით: UDP პორტი, voice_host, კონფიგურაციის გასაღებები, ჯგუფები, Bedrock-ის შეზღუდვები და მუშაობა proxy-ის უკან.

0 მკითხველი

Proximity voice chat Minecraft-ში ნიშნავს mod-ს ან plugin-ს სერვერზე და შესაბამის mod-ს ყველა მოთამაშის კლიენტზე. Simple Voice Chat არის ის, რომელსაც სერვერების უმეტესობა იყენებს: Paper-ზე plugin-ად მუშაობს, Fabric-ზე, NeoForge-სა და Forge-ზე კი mod-ად, და მას სჭირდება ერთი დამატებითი რამ, რასაც გზამკვლევების უმეტესობა გვერდს უვლის - საკუთარი UDP პორტი, ნაგულისხმევად 24454, რომელიც ინტერნეტიდან მისაწვდომი უნდა იყოს. დააყენე სერვერის მხარე, გახსენი ან გამოყავი პორტი, უთხარი plugin-ს მისამართი, რომელიც მოთამაშეებმა უნდა გამოიყენონ, თუ თამაშის მისამართისგან განსხვავდება, და ყველა მოთამაშეს კლიენტის mod დააყენებინე. Bedrock მოთამაშეები, რომლებიც Geyser-ით შემოდიან, მას საერთოდ ვერ გამოიყენებენ, და ეს შეზღუდვა უნდა გაიგო, სანამ საზოგადოებას ხმის გარშემო ააშენებ.

როგორ მუშაობს proximity voice#

Minecraft-ს საკუთარი ხმა არ აქვს, ამიტომ ხმის mod-ები თამაშის კავშირის გვერდით მეორე არხს უშვებენ:

თამაშის პროტოკოლი, TCPაუდიო პაკეტები, UDPვინ სად არისაუდიო რადიუსშიმოთამაშის კლიენტითამაში + ხმის modMinecraft სერვერიTCP 25565ხმის სერვერიUDP 24454ახლომყოფი მოთამაშეესმის მანძილით
თამაშისა და ხმის ტრაფიკი ცალკე გზებით მიდის

კლიენტის mod შენს მიკროფონს იჭერს, Opus-ით აკოდირებს და UDP-ით ხმის სერვერს უგზავნის, რომელიც Minecraft სერვერის პროცესის შიგნით მუშაობს. სერვერმა ყველა მოთამაშის პოზიცია იცის, ამიტომ შენს აუდიოს მხოლოდ რადიუსში მყოფ მოთამაშეებს გადასცემს, მათი კლიენტები კი მას შენი მიმართულებიდან და მანძილით მიქრობით უკრავენ. თამაშის კავშირი ხმის სესიის შესათანხმებლად გამოიყენება - კლიენტი მისი მეშვეობით იგებს ხმის არხის მისამართსა და secret-ს - მაგრამ აუდიო თამაშის TCP კავშირით არასოდეს მიდის.

UDP ხმისთვის სწორი არჩევანია: დაკარგული პაკეტი გამოტოვებული მარცვალია და არა გაჩერება, სანამ ხელახლა იგზავნება. ფასი ისაა, რომ ეს ცალკე პორტი და ცალკე პროტოკოლია, რაც სწორედ ის არის, რაც firewall-ის წესებს და პანელის allocation-ებს ავიწყდებათ. TCP თუ UDP თამაშის სერვერებისთვის ხსნის, რატომ.

Simple Voice Chat, Plasmo Voice და ალტერნატივები#

ვარიანტისერვერის მხარეკლიენტის მხარეშენიშვნა
Simple Voice ChatPaper plugin, ან Fabric/NeoForge/Forge modMod აუცილებელიაყველაზე გავრცელებული, ბევრი addon
Plasmo VoicePaper plugin, ან modMod აუცილებელიაAddon-ების სხვა ეკოსისტემა, საკუთარი კონფიგურაცია
Discord ან სხვა ხმოვანი აპებიარაფერიარაფერიProximity არ არის, მაგრამ ყველასთვის მუშაობს

Simple Voice Chat (henkelmax-ისგან) ნაგულისხმევი არჩევანია, რადგან ყველა პლატფორმაზეა, მარტივი კონფიგურაცია აქვს და proximity-ის გარდა ჯგუფებსაც უჭერს მხარს. Plasmo Voice მთავარი ალტერნატივაა მსგავსი არქიტექტურით და addon-ების საკუთარი ნაკრებით; ქვემოთ აღწერილი პორტისა და კავშირის პრინციპები მასზეც ვრცელდება, საკუთარი კონფიგურაციის ფაილითა და გასაღებებით.

Proximity voice ცვლის იმას, როგორ თამაშობენ სერვერზე. Survival სერვერები ისე სოციალური ხდება, როგორც ტექსტური ჩატი ვერასოდეს ახერხებს; roleplay და საშინელებათა რუკები სხვა თამაშებად იქცევა. ის ასევე ცვლის მოდერაციას, რაზეც ქვემოთ ვისაუბრებთ.

Simple Voice Chat-ის დაყენება სერვერზე#

Paper-ზე: ჩამოტვირთე Simple Voice Chat-ის Bukkit/Paper build შენი Minecraft ვერსიისთვის და jar ჩადე plugins/-ში. Fabric-ზე ან NeoForge-ზე: შენი loader-ის mod build მიდის mods/-ში, Fabric API-სთან ერთად, თუ mod-ის გვერდი ამბობს, რომ საჭიროა.

ერთხელ გაუშვი სერვერი. კონფიგურაცია აქ იქმნება:

პლატფორმაკონფიგურაციის ფაილი
Paper, Spigotplugins/voicechat/voicechat-server.properties
Fabric, NeoForge, Forgeconfig/voicechat/voicechat-server.properties

მნიშვნელოვანი გასაღებები:

voicechat-server.properties
port=24454bind_address=voice_host=max_voice_distance=48.0whisper_distance=24.0codec=VOIPmtu_size=1024keep_alive=1000enable_groups=trueallow_recording=trueforce_voice_chat=false

რას აკონტროლებს თითოეული გასაღები:

  • `port` - UDP პორტი, რომელზეც ხმის სერვერი უსმენს. ახალი ვერსიები -1-საც იღებს, რაც ნიშნავს "იგივე პორტის ნომერი, რაც Minecraft სერვერს აქვს", და ეს მუშაობს, რადგან თამაში TCP-ს იყენებს, ხმა კი UDP-ს იმავე ნომერზე. სასარგებლოა თუ არა, შენს ჰოსტზეა დამოკიდებული - იხილე შემდეგი სექცია.
  • `bind_address` - რომელ ლოკალურ მისამართზე უსმინოს. ცარიელი ნიშნავს ყველას. ცარიელი დატოვე, თუ არ იცი, რომ მანქანას რამდენიმე მისამართი აქვს და კონკრეტული გჭირდება.
  • `voice_host` - მისამართი, რომელსაც კლიენტები ხმისთვის უნდა დაუკავშირდნენ, თუ ის განსხვავდება იმ მისამართისგან, რომლითაც თამაშში შევიდნენ. ცარიელი ნიშნავს "იგივე host, რაც თამაშს, port-ზე". დეტალურად ქვემოთაა.
  • `max_voice_distance` - რამდენ ბლოკზე ვრცელდება ჩვეულებრივი ლაპარაკი. ნაგულისხმევია 48. ნაკლები საუბრებს უფრო ლოკალურს ხდის და ხალხმრავალ spawn-ებს უფრო მშვიდს.
  • `whisper_distance` - რადიუსი ჩურჩულისას.
  • `codec` - VOIP, AUDIO ან RESTRICTED_LOWDELAY. VOIP მეტყველებაზეა მორგებული და სწორი ნაგულისხმევია.
  • `mtu_size` - პაკეტის მაქსიმალური ზომა. შეამცირე, თუ ხმა უკავშირდება, მაგრამ ზოგიერთ ქსელში აუდიო წყდება.
  • `enable_groups` - მოთამაშეებს საშუალებას აძლევს, შექმნან ჯგუფები, რომლებიც მანძილის მიუხედავად საუბრობენ. პოპულარულია; გამორთე, თუ მკაცრად proximity ხმა გინდა.
  • `allow_recording` - შეუძლიათ თუ არა კლიენტებს ხმის ჩაწერა. ზოგიერთი საზოგადოება მას თიშავს.
  • `force_voice_chat` - აგდებს მოთამაშეებს, რომლებიც mod-ის გარეშე შემოდიან. გამოიყენე მხოლოდ მაშინ, თუ ხმა სერვერისთვის მართლა აუცილებელია.

ზუსტი ნაგულისხმევები გამოშვებებს შორის იცვლება; გენერირებული ფაილი დაკომენტარებულია და შენი ვერსიისთვის ავტორიტეტია. ცვლილებების შემდეგ გადატვირთე.

პორტი და voice_host#

როცა ხმა არ უკავშირდება, ეს თითქმის ყოველთვის პორტის პრობლემაა. კლიენტი ხმის მისამართს სერვერისგან იღებს და მასზე UDP-ს აგზავნის; თუ იქ მისაწვდომი არაფერი უსმენს, კლიენტი აჩვენებს "voice chat not connected" მდგომარეობას, თამაში კი იდეალურად მუშაობს.

საკუთარ მანქანაზე გახსენი 24454/udp firewall-ში და, თუ სახლიდან ჰოსტავ, router-ზე გადაამისამართე. პანელ ჰოსტზე ხმის პორტისთვის allocation გჭირდება, რადგან თითოეულ სერვერს მხოლოდ მისთვის გამოყოფილ პორტებზე მოსმენა შეუძლია. RE:NODE-ზე Minecraft გეგმებს ერთი პორტი მოჰყვება, მეორეს კი Network ჩანართზე დაამატებ; port მოცემულ ნომერზე დააყენე.

ეს ნომერი ხშირად 24454 არ არის. ჰოსტები იმას გამოყოფენ, რაც თავისუფალია, ამიტომ შენი ხმის პორტი შეიძლება 25632 იყოს, თამაში კი 25565-ზე. port გამოყოფილ ნომერზე დააყენე. კლიენტები მას სერვერისგან ავტომატურად იგებენ, ამიტომ მოთამაშეებს არაფრის აკრეფა არ სჭირდებათ.

voice_host საჭიროა, როცა მისამართი, რომლითაც მოთამაშეები თამაშს წვდებიან, ის მისამართი არ არის, სადაც ხმა უნდა წავიდეს. გავრცელებული შემთხვევები:

  1. SRV ჩანაწერი ან დომენი. მოთამაშეები შედიან mc.example.com-ზე, რომელიც SRV-ით node.host.example:25565-ზე გადადის. ხმა ნაგულისხმევად იმ host-ზე მიდის, რომელსაც კლიენტი დაუკავშირდა - რაც მუშაობს, თუ mc.example.com-ს იმავე მანქანაზე მიმავალი A ჩანაწერიც აქვს, და ჩავარდება, თუ მხოლოდ SRV-ა. voice_host დააყენე მისამართზე, რომელიც პირდაპირ გადაიჭრება.
  2. წინ proxy. მოთამაშეები proxy-ს უკავშირდებიან, ხმა კი backend-ზე მუშაობს. თითოეულ backend-ზე voice_host დააყენე backend-ის საჯარო მისამართსა და ხმის პორტზე (შემდეგი სექცია).
  3. გვირაბი ან გადამისამართების სერვისი. თამაშის მისამართი გვირაბს ეკუთვნის, ხმის პორტი იქ არ არსებობს. voice_host დააყენე იქ, სადაც UDP პორტი რეალურად მისაწვდომია.
properties
voice_host=play.example.com:25632

voice_host შეიძლება პორტს შეიცავდეს, რაც კლიენტებისთვის ნათქვამ ნომერში port-ს გადაფარავს. თუ აქ hostname-ს ჩასვამ, ის სერვერის მისამართზე უნდა გადაიჭრას; DNS ჩანაწერების ახსნა და SRV ჩანაწერები Minecraft-ისთვის ხსნის, რატომ არ არის მხოლოდ SRV ჩანაწერები საკმარისი არაფრისთვის, თავად თამაშის გარდა.

კლიენტები, ვერსიები და Bedrock მოთამაშეები#

ყველა მოთამაშეს, ვისაც ხმა უნდა, სჭირდება Simple Voice Chat-ის კლიენტის mod თავისი Minecraft ვერსიისა და loader-ისთვის: Fabric (Fabric API-თ), NeoForge ან Forge. Vanilla კლიენტებს ხმის გამოყენება საერთოდ არ შეუძლიათ; თამაში მაინც შეუძლიათ, მაგრამ არც ესმით და არც ისმით, თუ force_voice_chat მათ საერთოდ არ შეუშვებს.

  • ვერსიები თავსებადი უნდა იყოს. Mod-ის ქსელური პროტოკოლი დროდადრო იცვლება. კლიენტის mod, რომელიც სერვერისაზე ბევრად ძველი ან ახალია, შეიძლება თამაშს დაუკავშირდეს, მაგრამ ხმის გაშვება ვერ შეძლოს. მოთამაშეებს უთხარი, რომელი ვერსია დააყენონ.
  • Modpack-ები, რომლებიც კლიენტზე Simple Voice Chat-ს შეიცავს, ამას შენ ნაცვლად აკეთებს, რაც ერთ-ერთი მიზეზია, რის გამოც ხმა mod-იან სერვერებზე გავრცელებულია.
  • Paper სერვერებსაც ყველა მოთამაშეზე კლიენტის mod სჭირდება; plugin მხოლოდ სერვერის ნახევარია.

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

ხმა proxy-ის უკან#

Velocity-ის ან BungeeCord-ის ქსელზე proxy Minecraft-ის ტრაფიკს გადასცემს და არა ხმის UDP-ს. მის ასამუშავებლად ორი გზაა:

ხმა თითოეულ backend-ზე, პირდაპირი წვდომით. თითოეული backend Simple Voice Chat-ს საკუთარ გამოყოფილ UDP პორტზე უშვებს, voice_host-ით, რომელიც ამ backend-ის საჯარო მისამართსა და პორტზეა დაყენებული. როცა მოთამაშე სერვერს ცვლის, მისი კლიენტი ხმას ახალ backend-ს ხელახლა აკავშირებს. ეს ყველაზე მარტივი მოწყობაა პანელ ჰოსტზე, სადაც თითოეული backend საკუთარი სერვერია საკუთარი allocation-ებით.

ხმა proxy-ს გავლით. Simple Voice Chat-ს ახალ ვერსიებში proxy-ის მხარდაჭერა აქვს, რომელიც ხმას proxy-ს გავლით გადასცემს, ასე რომ მოთამაშეებს მხოლოდ proxy-ის მისამართის წვდომა სჭირდებათ. შენი ვერსიისთვის mod-ის დოკუმენტაცია შეამოწმე: მას სჭირდება შესაბამისი build proxy-ზე და სწორი voice_host კონფიგურაცია backend-ებზე, და ის აუდიოს გზას proxy-ს უმატებს.

ორივე შემთხვევაში ხმა თითო backend-ზეა: lobby-ში მყოფებს survival-ში მყოფი მოთამაშეები არ ესმით. ჯგუფებიც სერვერებს შორის არ გადადის. Velocity ქსელის გზამკვლევი ქსელის დანარჩენ მოწყობას განიხილავს.

გამტარუნარიანობა, CPU და ზომა#

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

სად გროვდება:

  • ხალხმრავალი spawn-ები. ოცდაათი მოთამაშე ერთ ადგილას, ყველა ერთმანეთის რადიუსში, ნიშნავს, რომ ყოველი პაკეტი ოცდაცხრა ადამიანთან მიდის. გამტარუნარიანობა დაახლოებით ხალხის რაოდენობის კვადრატით იზრდება. დაბალი max_voice_distance ეხმარება.
  • ჯგუფები ყველა წევრს მანძილის მიუხედავად უგზავნის.

მიუხედავად ამისა, ასმოთამაშიანი სერვერი ხმით თამაშის სერვერების სტანდარტებით ზომიერი დატვირთვაა. გამტარუნარიანობა თითო მოთამაშეზე მას სხვა თამაშების კონტექსტში აყენებს.

მოდერაცია, addon-ები და უფლებები#

ხმის მოდერაცია ტექსტისაზე რთულია: ლოგი არ არის და ერთადერთი მტკიცებულება ჩანაწერებია. ამისთვის მოემზადე:

  • უფლებები. Paper-ზე plugin-ს აქვს permission node-ები, როგორიცაა voicechat.listen, voicechat.speak და voicechat.groups, რომლებიც LuckPerms-ით შეგიძლია ჯგუფს ან ცალკეულ მოთამაშეს ჩამოართვა - ფაქტობრივად ხმოვანი mute.
  • წესები. დაწერე ხმის წესები: მიკროფონით მუსიკა არა, ყვირილი არა, შეურაცხყოფა არა. მოთამაშეებმა უნდა იცოდნენ, რომ ხმაზე საჩივრებს ისევე სერიოზულად ეკიდებიან, როგორც ჩატზე.
  • მტკიცებულება. allow_recording=true-ით მოთამაშეებს ჩაწერა და კლიპების გაგზავნა შეუძლიათ. ეს მოდერაციისთვის სასარგებლოა და კონფიდენციალურობის საკითხიცაა; წესებში ახსენე.

იმავე ეკოსისტემის პოპულარული addon-ებია AudioPlayer (საკუთარი მუსიკის დისკები და თხის რქები, რომლებიც ხმით იკვრება) და Voice Chat Interaction (ხმა sculk სენსორებს ააქტიურებს), პლუს კლიენტის მხარის ხმის mod-ები, რომლებიც ექოსა და დახშობას ამატებს. სერვერის მხარის addon-ები მთავარი plugin-ის ან mod-ის გვერდით მიდის; კლიენტის მხარისა თითოეული მოთამაშის არჩევანია.

პრობლემების მოგვარება#

ხმის ხატულა ყველასთვის "not connected"-ს აჩვენებს. პორტი მისაწვდომი არ არის. შეამოწმე allocation, შეამოწმე, რომ port მას ემთხვევა, შეამოწმე, რომ UDP-ა, და გადატვირთე. გაშვებისას სერვერის კონსოლში მოძებნე ხაზი, სადაც ხმის სერვერი პორტს აცხადებს, რომელზეც უსმენს.

მუშაობს იმავე ქსელში მყოფი მოთამაშეებისთვის, სხვებისთვის არა. სახლის ჰოსტინგი პორტით, რომელიც მხოლოდ TCP-სთვისაა გადამისამართებული, ან voice_host, რომელიც ლოკალურ მისამართზე მიუთითებს.

მუშაობს IP-ზე, დომენზე არა. დომენი მხოლოდ SRV-ა. voice_host A ჩანაწერის მქონე hostname-ზე ან IP-ზე დააყენე.

უკავშირდება, მაგრამ აუდიო წყდება. პაკეტების დაკარგვა ან ფრაგმენტაცია. შეამცირე mtu_size და შეამოწმე მოთამაშის საკუთარი კავშირი - დაყოვნება, jitter და პაკეტების დაკარგვა აჩვენებს, როგორ გაარჩიო.

ერთი მოთამაშე ვერ უკავშირდება, დანარჩენები კი კი. მისი კლიენტის mod-ის ვერსია შეუთავსებელია, ან მისი ქსელი გამავალ UDP-ს ბლოკავს (ზოგიერთი სკოლისა და ოფისის ქსელი ასე აკეთებს).

ქსელში სერვერის შეცვლის შემდეგ ხმა წყდება. ახალი backend-ის voice_host არასწორია ან მისი პორტი გამოყოფილი არ არის.

FAQ#

რომელ პორტს იყენებს Simple Voice Chat?

ნაგულისხმევად UDP 24454-ს, რომელსაც voicechat-server.properties-ში port განსაზღვრავს. ჰოსტინგზე ჩვეულებრივ ის დამატებითი პორტია, რომელიც გამოგიყვეს, და სერვერი კლიენტებს სწორს ავტომატურად ეუბნება.

მოთამაშეებს რამის დაყენება სჭირდებათ?

დიახ. ყველა მოთამაშეს, ვისაც ხმა უნდა, სჭირდება Simple Voice Chat-ის კლიენტის mod თავისი Minecraft ვერსიისა და loader-ისთვის. მის გარეშე მოთამაშეებს თამაში შეუძლიათ, მაგრამ ვერც გაიგონებენ და ვერც ილაპარაკებენ.

შეუძლიათ Bedrock მოთამაშეებს proximity voice-ის გამოყენება Geyser სერვერზე?

არა. Bedrock კლიენტები Java mod-ს ვერ ტვირთავენ. მათ სერვერზე Geyser-ით თამაში შეუძლიათ, მაგრამ ხმაზე წვდომა არ აქვთ; თუ მათი ჩართვა აუცილებელია, გარე ხმოვანი აპი გამოიყენე.

იწვევს ხმოვანი ჩატი სერვერის ლაგს?

ნებისმიერ ნორმალურ მოწყობაში არა. ხმის სერვერი მთავარი thread-ის გარეთ მუშაობს და მხოლოდ პაკეტებს გადასცემს. გარკვეულ გამტარუნარიანობას იყენებს, რომელიც ხალხმრავლობასთან ერთად იზრდება, მაგრამ TPS-ზე არ მოქმედებს.

შემიძლია Simple Voice Chat Paper სერვერზე mod-ების გარეშე გამოვიყენო?

სერვერის მხარე ჩვეულებრივი Paper plugin-ია, ამიტომ სერვერს mod loader არ სჭირდება. მოთამაშეებს მაინც სჭირდებათ კლიენტის mod, რაც ნიშნავს mod-იან კლიენტს, მაგალითად Fabric-ს დაყენებული mod-ით.


კომენტარები

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

0/2000