
Esplorare Polymer: Il Client C++ Alternativo per Minecraft
atxi/Polymer
Client Minecraft in sviluppo, utilizza C++ e Vulkan.
Visualizza su GitHub ↗Polymer è un client Minecraft in C++ che utilizza il rendering Vulkan per visualizzare mondi su server offline. Inoltre, include una camera spettatore, caricamento chunk ottimizzato e supporto per Minecraft 1.21.4. Se vuoi esplorare mondi massicci senza che il client vanilla blocchi, o sei curioso di come i client alternativi gestiscono il rendering, vale la pena provare.
Cosa Fa Questo Progetto
Ecco la premessa principale: invece di eseguire il client Java di Minecraft, avvii un eseguibile autonomo che si connette al tuo server e rende il mondo utilizzando Vulkan, una moderna API grafica. Il progetto è scritto interamente in C++ da uno sviluppatore chiaramente interessato all'ottimizzazione grafica. Tuttavia, scarica gli asset originali di Minecraft, costruisce la geometria del mondo e ti mostra tutto da una prospettiva spettatore - volando intorno, guardando i chunk mentre si caricano.
Attualmente, è limitato a server offline soltanto. Il modo online è previsto ma non implementato ancora.
Cosa rende Polymer diverso è che non è solo un launcher o un mod. È una riscrittura da zero di come può funzionare il rendering di Minecraft. La versione più recente (v0.0.5) supporta Minecraft 1.21.4 e include alcune ottimizzazioni veramente impressionanti: grafi di connettività dei chunk per saltare il rendering dei blocchi nascosti, costruzione del mesh differita fino a quando un chunk non entra nella tua vista, e anti-aliasing con multisampling 4x. Teoricamente, queste sono le tipologie di ottimizzazioni che dovrebbero aiutare le prestazioni di rendering nei mondi pesanti.
Perché Vorresti Utilizzarlo
La risposta onesta? La maggior parte dei giocatori non avrà bisogno di Polymer. Non è una sostituzione per il client vanilla per giocare in modalità survival o creativa. Non puoi rompere blocchi, posizionare nulla, o interagire con il mondo nel senso tradizionale. Stai guardando, non costruendo.
Tuttavia, se hai mai provato ad aprire un mondo SMP massicco, di lunga data - diciamo qualcosa con 10.000+ edifici personalizzati sparsi su decine di chunk - sai che il client vanilla può avere difficoltà. Il caricamento dei chunk si blocchi. Il rendering si blocchi. Non è in gioco, ma non è liscio. Polymer aggira alcuni di questi problemi utilizzando una pipeline di rendering diversa. Attrae anche chi è curioso di programmazione grafica: qui c'è la prova che il rendering di Minecraft può essere completamente riimplementato.
Un altro aspetto: se gestisci un server e vuoi fare screenshot cinematografici o creare un tour del mondo senza le preoccupazioni delle prestazioni di un giocatore in modalità survival, il design spettatore di Polymer lo rende un'opzione leggera. Carichi il mondo, voli intorno, prendi le tue foto, finito. Nessuna modifica di file, nessun mod che interferisca con le visuali.
Eseguire Polymer
Ecco dove inizia la curva di apprendimento. Polymer non è un modpack o un launcher. Devi costruirlo dalla sorgente.
Su Windows, il processo è questo:
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S . --preset msvcQuindi apri il file `build/polymer.sln` in Visual Studio e compila in modalità x64 Release. Avrai bisogno di MSVC 2022 o Clang installato, più CMake 3.28 o successiva. Il file eseguibile finisce in `build/Release`.
La compilazione dei shader richiede il Vulkan SDK (specificamente `glslc`). Scaricalo da LunarG, imposta la variabile d'ambiente `VULKAN_SDK`, quindi esegui `compile_shaders.bat`. Questa è la parte fastidiosa se non si è abituati allo sviluppo grafico - è un passo di build extra che non esiste nelle configurazioni dei giochi tipiche.
Linux è leggermente più semplice ma richiede dipendenze di sistema iniziali:
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 && makeL'eseguibile si trova in `build/bin`. Esegui `compile_shaders.sh` per la compilazione dei shader.
Prima di avviare, scarica il file `blocks-1.21.4.json` - disponibile dalla pagina dei rilasci di GitHub o generato eseguendo Minecraft con il generatore di dati. Mettilo dove intenderai eseguire il client. Al primo avvio, Polymer scarica gli asset del gioco (texture, suoni, modelli) dal server delle risorse ufficiale di Minecraft e li memorizza localmente in `~/.polymer/` (Linux) o `%appdata%/Polymer/` (Windows).
Per impostazione predefinita, Polymer tenta di connettersi a localhost con username 'polymer'. Il tuo server deve essere in modalità offline. Sostituisci questo con flag della riga di comando:
polymer.exe -u IlTuoUsername -s 192.168.1.100:25565Un dettaglio critico: devi essere in modalità spettatore sul server perche i chunk si caricano mentre voli intorno. Onestamente, se il server ti mette in modalità survival, vedrai solo i chunk gia caricati, il che non è molto utile. Vai nella console del server o usa `/gamemode spectator` per correggere questo.
Caratteristiche Chiave da Notare
Il grafo di connettività dei chunk è l'ottimizzazione di punta qui. I render tradizionali disegnano ogni faccia del blocco, anche quelle che non vedrai mai (le parti dei blocchi sepolti all'interno dei chunk). Polymer calcola quali chunk sono effettivamente visibili e salta la geometria per le facce interne. Ciò riduce cosa il GPU deve gestire.
La costruzione del mesh differita è anche intelligente. Invece di meshare i chunk nel momento in cui si caricano, Polymer costruisce i mesh solo quando entrano nella tua frustum della vista. Per server con migliaia di chunk, ciò salva memoria e cicli CPU per chunk che non vedrai mai.
L'anti-aliasing con multisampling 4x smussa gli spigoli appuntiti meglio delle impostazioni predefinite di vanilla, anche se ciò comporta un costo di prestazioni in base alla tua GPU. Le texture interpolate e il timing delle animazioni sono sottili ma notevoli se cerchi cose come l'animazione dell'acqua e il blending delle texture per sentirsi crudo.
Le prestazioni varieranno selvaggiamente in base al tuo hardware. Gli sviluppatori hanno testato principalmente su Windows; Linux funziona ma non è molto ottimizzato. Se hai una GPU mid-range degli ultimi anni, dovresti essere a posto. Le grafiche integrate più vecchie avranno problemi con le distanze di rendering elevate.
Sciarade e Limitazioni
Polymer è un software in fase iniziale. Aspettati bug e funzionalità mancanti.
Nessuna fisica, nessuna rilevazione di collisioni, nessuna interazione del giocatore. Non puoi rompere blocchi, posizionare blocchi, aprire cofre, o fare nulla oltre guardare intorno. Se vuoi un client alternativo per effettivo gameplay, questo non è il caso. L'uso previsto è esplorazione e visualizzazione.
I server online non funzioneranno ancora. È una limitazione dura - il codice non gestisce l'autenticazione. Se usi Polymer su un server online di qualcun altro, verrai scollegato. Solo la modalità offline con `online-mode=false` nel file server.properties funziona.
Windows è la piattaforma di sviluppo principale. I build di Linux funzionano ma ricevono meno test. Il supporto per Mac non è documentato (il sistema di build mira GLFW, che supporta macOS, ma nessuno ha confermato che funzioni).
Il processo di build stesso è fastidioso. Se non sei familiare con CMake, file di progetto di Visual Studio o compilazione dei shader, aspettati di spendere tempo nel debug delle variabili d'ambiente e delle dipendenze mancanti. Non è un'installazione con un solo click.
Sui Client di Terze Parti e Anti-Cheat
La disinstallazione di Polymer è pulita. L'eseguibile è autonomo, e gli asset sono memorizzati localmente. Elimina l'eseguibile e la cartella `~/.polymer/` o `%appdata%/Polymer/`, e hai finito. Nulla si inserisce nella tua installazione di Minecraft vanilla.
Progetti Simili da Conoscere
Se Polymer ti interessa, esistono alcune alternative in questo spazio. Minetest è un motore di gioco a voxel ispirato a Minecraft ma non è Minecraft stesso - è più un sandbox per costruire giochi. Chunky è uno strumento di rendering che crea immagini statiche di alta qualità di mondi Minecraft utilizzando il ray tracing, ma non è in tempo reale e non è un client. VoxelMap è un mod che aggiunge funzionalità di minimappa e waypoint al client vanilla, ma è un overlay, non una riscrittura da zero.
Polymer si distingue come un client C++ da zero con API grafica moderne. È sia il suo fascino che la sua limitazione - meno funzionalità rispetto ai mod, ma potenzialmente migliori prestazioni e tecniche di rendering più sperimentali.
Se vuoi personalizzare l'aspetto del tuo personaggio mentre esplori, controlla il Minecraft Skin Creator - puoi progettare un look unico prima di connetterti al tuo server. E se stai pianificando di eseguire qualsiasi tipo di comunicazione del server o etichette di costruzione, il Minecraft Text Generator rende facile la creazione di testo formattato.
La Mia Visione
Polymer è affascinante dal punto di vista tecnico. Vedere un mondo di Minecraft renderizzato attraverso una pipeline completamente diversa è divertente, specialmente se ti interessa come funzionano i motori dei giochi. Le ottimizzazioni sono reali, il codice è pulito, e rappresenta un solido concetto di prova per cosa potrebbe essere Minecraft se abbandonasse Java per Vulkan.
Per l'uso effettivo? Direi che vale la pena costruirlo e provarlo una volta, specialmente se hai un mondo grande su un server locale e sei curioso delle prestazioni di rendering. Ma non aspettarti che sostituisca il tuo client principale. È un viewer, non un giocatore, e ha ancora aspetti approssimativi all'avanzamento v0.0.5. Lo sviluppatore sta chiaramente lavorando su di esso, e il supporto per il modo online sta per arrivare, ma non siamo lì ancora.
Se hai alcune ore da spendere per i build e la compilazione dei shader, e sei interessato a cosa possono fare le API grafiche moderne per Minecraft, allora procedi. Semplicemente, stabilisci le tue aspettative: stai testando software sperimentale, non usando un client alternativo finito.
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.


