
Minecraft'in C++ Tabanlı Alternatif İstemcisi: Polymer'i Keş
atxi/Polymer
Geliştirme devam eden C++ ve Vulkan kullanarak yapılan Minecraft istemcisi.
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:
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S . --preset msvcSonra 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:
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 && makeDerlenen 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:
polymer.exe -u KullanıcıAdınız -s 192.168.1.100:25565Kritik 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
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, ★135Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.


