Skip to content
Skip to content
Bloga Dön
Minecraft'in C++ Tabanlı Alternatif İstemcisi: Polymer'i Keş

Minecraft'in C++ Tabanlı Alternatif İstemcisi: Polymer'i Keş

Alexandru Maftei
Alexandru Maftei
@ice
Updated
2 görüntüleme
TL;DR:Polymer, Vulkan renderleme kullanarak çevrimdışı sunucular için optimize edilmiş parça yükleme ve spektratör kameraya sahip bir C++ Minecraft istemcisidir. Kendi dünyanızda bu deneysel görüntüleyicinin nasıl derleneceğini, kuruluşunu ve kullanımını öğrenin.
🐙 Açık kaynaklı Minecraft projesi

atxi/Polymer

Geliştirme devam eden C++ ve Vulkan kullanarak yapılan Minecraft istemcisi.

⭐ 135 yıldız💻 C++📜 MIT
GitHub'da Görüntüle ↗

Polymer, çevrimdışı sunucularda dünya görüntüleme için tasarlanmış, Vulkan renderleme kullanan bir C++ Minecraft istemcisidir. Spektratör kameraya, optimize edilmiş parça yüklemesine ve Minecraft 1.21.4 desteğine sahiptir. Vanilla istemcinin kamerayı takip etme sorunlarından kaçınmak veya alternatif istemcilerin renderleme yönetimini keşfetmek istiyorsanız, denemeye değer.

Neyin İçinde

Projenin temel önemi: Java istemciyi çalıştırmak yerine, sunucunuza bağlanıp Vulkan kullanarak dünyayı renderleyen bir derlenmiş yürütülebilir dosyası başlatırsınız. Proje, grafik optimizasyonuna ilgi gösteren bir geliştirici tarafından tamamen C++ ile yazılmıştır. Ancak orijinal Minecraft varlıklarını indirir, dünya geometrisini oluşturur ve her şeyi spektratör perspektifinden gösterir - uçurur, parça yüklenirken bakar.

Zamanında, yalnızca çevrimdışı sunucularla sınırlı. Çevrimiçi mod planlandı, ancak henüz uygulanmadı.

Polymer'in farklı yapan şey, bir lançer veya mod olmamasıdır. Minecraft renderleme işleminin nasıl çalışabileceğinin yerinden yeniden yazılmasıdır. En son sürüm (v0.0.5), Minecraft 1.21.4 desteğini içerir ve bazı ciddi optimizasyonları içerir: görünmeyen blokları atlamak için parça bağlantısı grafikleri, parça görüş alanınıza girinceye kadar mesh oluşturmayı erteleme ve 4x çok örnekleme anti-aliasing. Kağıda göre, bu, ağır dünyalarda renderleme performansı giúp yardımcı olabilecek türdür.


Neden İsteyebilirsiniz

Sönük cevap: çoğu oyuncu buna ihtiyaç duymaz. Hayatta kalma veya yaratma modu için vanilla istemcinin yerini almaz. Blokları kıpmaz, yerleştirmez veya geleneksel olarak dünya ile etkileşime geçemezsiniz. Bakıyorsunuz, inşa etmiyorsunuz.

Ama bir kez de, çok yıllık bir SMP dünyasını açmaya çalıştınız - Örneğin, onlarca parça boyunca dağılmış 10,000'den fazla özel bina. Vanilla istemcinin havalanabileceğini bilirsiniz. Parça yüklemesi kesintileri, render hataları. Oynanamayacak değil, ancak pürüzsüz değil. Polymer, farklı bir renderleme管道 kullanarak bazı bu sorunları atlar. Ayrıca grafik programlamaya ilgi duyanlar için caziptir: Minecraft renderleme完全 olarak yeniden uygulandığının kanıtı.

Farklı bir açık angle: bir sunucu çalıştırıyorsanız ve performans endişeleri olmadan sinematik ekran görüntüleri almak veya dünya turu yapmak istiyorsanız, Polymer'in sadece spektratör tasarımı, görsellerle etkileşimli olmayan bir seçenek sağlar. Dünyayı yüklersiniz, uçarsınız, ekran görüntülerinizi alırsınız, bitti. Hiçbir dosya değişikliği, hiçbir mod görsellerle karışmaz.


Polymer'ı Çalıştırma

Burada öğrenme eğrisi başlar. Polymer bir mod paketi veya lançer değildir. Kaynak kodundan derlemeniz gerekir.

Windows'da proses şöyle görünür:

bash
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S . --preset msvc

Sonra oluşturulan `build/polymer.sln`'yi Visual Studio'da açın ve x64 Release modunda derleyin. MSVC 2022 veya Clang ile birlikte CMake 3.28 veya daha yeni bir versiyona ihtiyacınız vardır. Son derlenen yürütülebilir dosya `build/Release` klasöründe bulunur.

Şemaları derlemek için Vulkan SDK (özellikle `glslc`) gerekir. LunarG'den alın, `VULKAN_SDK` çevre değişkeninizi ayarlayın, ardından `compile_shaders.bat` çalıştırın. Bu, grafik geliştirmeyleustomed olmadığınız takdirde normal oyun kurulumlarında olmayan ek bir derleme adımdır.

Linux slightly daha basittir, ancak önce sistem bağımlılıkları gerekir:

bash
sudo apt-get install libglfw3 libglfw3-dev glslang-tools
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S .
cd build && make

Derlenen yürütülebilir dosya `build/bin` klasöründe bulunur. Şemaları derlemek için `compile_shaders.sh` çalıştırın.

Çalıştırmadan önce `blocks-1.21.4.json` dosyasını alın - GitHub yayın sayfalarından veya Minecraft'i veri oluşturucu ile çalıştırarak oluşturulabilir. İstemciyi çalıştırmak istediğiniz konuma yerleştirin. İlk çalıştırıldığında, Polymer resmi Minecraft kaynak sunucusundan oyun varlıklarını (görseller, sesler, modeller) indirir ve yerel olarak `~/.polymer/` (Linux) veya `%appdata%/Polymer/` (Windows) klasöründe önbelleğe alır.

Varsayılan olarak, Polymer localhost'a 'polymer' kullanıcısı olarak bağlanmaya çalışır. Sunucunuz çevrimdışı modda olmalıdır. Bu ayarları komut satırı bayrakları ile geçersiz kılabilirsin:

bash
polymer.exe -u KullanıcıAdınız -s 192.168.1.100:25565

Kritik bir ayrıntı: parçaların uçururken yüklenmesini görmek için sunucuda spektratör modunda olmalısınız. Gerçekten de, sunucu sizi hayatta kalma moduna yerleştirirseniz, yalnızca önceden yüklenmiş parçaları görebilirsiniz, bu çok faydalı değildir. Sunucu konsoluna girin veya `/gamemode spectator` kullanın.


Not Edilmeye Değer Özellikler

Ayrıca dikkat çekici olan, parça bağlantısı grafikleridir. Geleneksel renderleyiciler, görünmeyenleri bile dahil olmak üzere her blok yüzeyini çizer. Polymer, gerçekten görünen parçaları hesaplar ve iç yüzeylerin geometrisini atlar. Bu, GPU'nun işleme altına alması gereken şeyi azaltır.

Gezinme mesh oluşturma da zekidir. Parçaları yüklenir yüklenmez mesh oluşturmak yerine, yalnızca görüş alanınıza girdiğinde mesh oluşturur. Binlerce parçaya sahip sunucularda, görüntüleyeceğiniz parçaları görmezsiniz, bu da bellek ve CPU döngüsü tasarrufu sağlar.

4x çok örnekleme anti-aliasing, vanilla ayarlarına göre keskin kenarları daha iyi pürüzsüzleştirir, ancak bu, GPU'nuzun bağlı olarak performans maliyeti taşır. Arayüz metinlerinin ve animasyon zamanlamasının pürüzsüz olması, su animasyonu ve tekstür karıştırma gibi şeyleri keskin hissetmek istiyorsanız dikkat çekicidir.

Performans, donanımınıza göre büyük ölçüde değişecektir. Geliştiriciler principalmente Windows test etti; Linux çalışır, ancak ağır olarak optimize edilmez. Son birkaç yılın orta seviye GPU'su ile sorun yaşamazsınız. Eski entegre grafik kartları yüksek çekme mesafeleriyle mücadele edecek.


Sorunlar ve Sınırlamalar

Polymer erken aşamadaki bir yazılımdır. Bug'lar ve eksik özellikler beklenmelidir.

Hizmetler, çarpışma algılamaları, oyuncu etkileşimleri yoktur. Blokları kıpmaz, yerleştirmez, sandık açamaz veya geleneksel olarak dünya ile etkileşime geçemezsiniz. Gerçek oyun için alternatif bir istemci arıyorsanız, bu değildir. Kullanım amacı, keşif ve görselleştirme amaçlıdır.

Çevrimiçi sunucular henüz çalışmaz. Bu, bir hard sınırlamadır - kod kimlik doğrulamasını işlemez. Polymer'i jemand else's çevrimiçi sunucusuna bağlarsanız, bağlantınız kesilir. Yalnızca `online-mode=false` ile `server.properties` çalışır.

Windows, birincil geliştirme platformudur. Linux derlemeleri çalışır, ancak weniger testing alır. Mac desteği belirlenmemiştir (derleme sistemi GLFW'yi hedefler, macOS'u destekler, ancak çalışıp çalışmadığını onaylayan kimse yoktur).

Derleme prosesi kendisi karizmatik. CMake, Visual Studio proje dosyaları veya şema derlemesiyle aşina değilseniz, ortam değişkenlerini ve eksik bağımlılıkları hata ayıklamak için zaman geçireceksiniz. Bu, bir klick ile kurulum değildir.


Üçüncü Parti İstemcileri ve Anti-Hissardan

⚠️
Dikkat çoklu oyuncu sunucularının çoğu, modifed istemcileri ve özel Minecraft bültenlerini tespit eden veya yasaklayan anti-hissar sistemleri kullanır. Polymer, spektratör-sonly ve kötü niyete sahip olmasa da, bazı sunucular herhangi bir non-vanilla istemciyi ihlal olarak tedavi eder. Kimin sunucusuna bağlanmadan önce kurallarını kontrol edin. Bir merak projesi için sevdiğiniz bir sunucudan yasaklanma değiller.

Polymer'i kaldırmak temizdir. Yürütülebilir dosya bağımsızdır ve varlıklar yerel olarak önbelleğe alınır. Yürütülebilir dosyasını ve `~/.polymer/` veya `%appdata%/Polymer/` klasörünü silin, bitti. Hiçbir şey vanilla Minecraft kurulumunuza enjekte edilmez.


Bilinen Diğer Projeler

Polymer'i ilginse, bu alanda birkaç alternatif vardır. Minetest, Minecraft'ten ilham alan bir voxel oyun motorudur, ancak kendisi Minecraft değildir - daha çok oyunlar oluşturmak için bir kum torudur. Chunky, Minecraft dünyalarının yüksek kaliteli statik görüntülerini oluşturan bir renderleme aracıdır, ancak gerçek zamanlı değildir ve istemci değildir. VoxelMap, vanilla istemciye minimap ve yolculuk işlevselliği ekleyen bir moddur, ancak bir överlay, yerinden yeniden yazılmış değildir.

Polymer, yerinden yazılmış bir C++ istemci olarak modern grafik API'leriyle独 bir duruma sahiptir. Bu, çekiciliği ve sınırlamalarının aynı zamanda temel nedenidir - modlardan daha az özellik, ancak potansiyel olarak daha iyi performans ve daha deneysel renderleme teknikleri.

Dünya gezinirken karakterinizin nasıl görüneceğini özelleştirmek istiyorsanız, Minecraft Skin Creator - benzersiz bir görünüm tasarlayabilirsiniz. Ayrıca, sunucu iletişimi veya bina etiketleri planlıyorsanız, Minecraft Text Generator metin oluşturmayı basittir.


İlgi Alanım

Polymer, teknik bir bakış açısında fascinasyon edicidir. Minecraft dünyasının tamamen farklı bir pipe-line aracılığıyla renderlenmesini izlemek, özellikle oyun motorları nasıl çalıştığını ilgileniyorsanız cool, özellikle de Vulkan'un Minecraft için ne yapabileceğini gösteriyor.

Pratik kullanım için? Bir kez derlemek ve denemek için değer olduğunu söyleyim, özellikle de yerel bir sunucuda büyük bir dünya varsa ve renderleme performansı hakkında meraklanıyorsanız. Ancak ana istemcinizi yerine getirmesini beklemeyin. Bir görüntüleyici, bir oyuncu değildir ve v0.0.5'de ancora kaba kenarlar vardır. Geliştirici açıkça üzerinde çalışıyor ve çevrimiçi mod desteği geliyor, ancak henüz orada değil.

Derleme ve şema derlemesi için birkaç saatiniz varsa ve Minecraft için modern grafik API'lerinin neler yapabileceğini ilgileniyorsanız, ilerleyin. Ancak beklentilerinizi ayarlayın: bitmiş bir alternatif istemci kullanmak yerine deneysel bir yazılım test ediyorsunuz.

atxi/Polymer - MIT, ★135
About the author
Alexandru Maftei
Alexandru MafteiLead Writer

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Share with your friends!

Comments

No comments yet. Be the first to share your thoughts!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy