Better Beds Mod: Renderöinnin optimointi ja 3D-sänkymallit Minecraftissa
Yksityiskohtainen tekninen katsaus Minecraftin Better Beds -asiakasoptimointimodiin FPS:n parantamiseksi.
Yksityiskohtainen tekninen katsaus Minecraftin Better Beds -asiakasoptimointimodiin FPS:n parantamiseksi.
Riippuvuudet:
Lataaja: Fabric / NeoForge / Quilt
Minecraft-versio: 1.16 – 1.21.x
Better Beds -muokkaus kirjoittaa Minecraftin sänkyjen renderöintimekanismin uusiksi korvaamalla raskaan vanilla block entity renderer -moottorin standardilla staattisten mallien moottorilla. Peruspelissä sängyt käsitellään Block Entity Renderer (BER) -entiteetteinä, mikä pakottaa suorittimen (CPU) laskemaan niiden geometrian uudelleen jokaisessa ruudussa. Better Beds muuntaa sängyt klassisiksi JSON-malleilla varustetuiksi lohkoiksi, jolloin niiden renderöinti siirtyy kokonaan näytönohjaimelle (GPU). Tämä tarjoaa merkittävän ruudunpäivitysnopeuden (FPS) parannuksen kylien lähellä tai moninpeliauloissa ja mahdollistaa sänkyjen mukauttamisen standardien resurssipakettien avulla.
Vanilla-sängyn renderöinnin tekniset ongelmat
Vanilla Minecraftissa sängyt, arkut, kyltit ja bannerit käsitellään erikoisobjekteina — Block Entities. Toisin kuin tavallinen kivi tai puu, jotka leivotaan staattiseen chunk-verkkoon sen latauksen yhteydessä, lohkoentiteetit vaativat erillisen renderöijän (Block Entity Renderer).
Ongelmat, joita tämä lähestymistapa aiheuttaa peruspelissä:
Suorittimen ylikuormitus. Prosessori on pakotettu joka millisekunti kyselemään jokaisen lähellä olevan sängyn koordinaatit ja lähettämään erilliset piirto-ohjeet näytönohjaimelle.
Occlusion Culling -optimoinnin puute. Vanilla-entiteettirenderöijä piirtää sängyt silloinkin, kun ne ovat seinien takana tai lattian alla, mikä tuhlaa tietokoneesi resursseja.
Suorituskyvyn lasku (FPS-lagi). Jos astut suureen kylään, jossa on kymmeniä kyläläisiä, tai pelaat palvelimilla BedWarsin kaltaisissa tiloissa, joissa tukikohtiin on sijoitettu monia sänkyjä, ruudunpäivitysnopeus voi yhtäkkiä laskea rajusti renderöintisäikeiden aiheuttaman suorittimen ylikuormituksen vuoksi.
Better Beds -modin optimointi ja mekaniikka
Better Beds -modi poistaa sänkyjen Block Entity Renderer -renderöinnin kokonaan ja muuttaa ne tavallisiksi 3D-lohkoiksi.
Kuinka optimointi toimii:
Chunkin latauksen aikana peli lukee sänkymallin staattisena objektina, samalla tavalla kuin portaat tai aidat.
Sängyn geometria yhdistetään (leivotaan) yleiseen 3D chunk-verkkoon (Chunk Mesh).
Näytönohjain piirtää koko chunkin yhdessä sängyn kanssa yhdellä läpikäynnillä (yksi Draw Call), ilman että keskusprosessoria osallistetaan lainkaan ruutukohtaisiin laskutoimituksiin.
Jos sänky on piilotettu muiden läpinäkymättömien lohkojen taakse, occlusion culling -algoritmit pysäyttävät automaattisesti sen renderöinnin, säästäen GPU-muistia.
Koska muokkaus toimii yksinomaan asiakaspuolella, se ei muuta pelin logiikkaa. Sängyt säilyttävät kaikki toimintonsa: voit nukkua niissä, nollata syntymispisteesi, ja kyläläiset tunnistavat ne ongelmitta työ- tai nukkumispaikoiksi. Modia ei tarvitse asentaa palvelimelle, joten voit käyttää sitä vapaasti moninpelissä.

Historiallinen konteksti: miksi sängyistä tuli entiteettejä
Mojangin päätös tehdä sängyistä lohkoentiteettejä oli välttämätön askel menneisyydessä. Versioon 1.12 asti Minecraft käytti vanhaa lohkojen ID-järjestelmää, joka varasi kunkin lohkon metatiedoille vain 4 bittiä (enintään 16 eri tilaa).
Sängylle oli koodattava:
16 eri villan väriä.
2 sängyn osaa (pääty ja jalkopää).
4 sijoitussuuntaa (pohjoinen, etelä, itä, länsi).
Tästä syntyi 128 tilayhdistelmää, jotka eivät fyysisesti mahtuneet vanhan järjestelmän rajoituksiin. Välttääkseen kymmenien arvokkaiden vapaiden lohko-ID:iden tuhlaamisen kehittäjät muuttivat sängyn Tile Entityksi (Block Entityn edeltäjäksi) siirtäen värien ja suunnan tallennuksen erillisiin metatietoihin ja piirtämisen suoritinpohjaiselle renderöijälle.
Versiossa 1.13 ("The Flattening") kehittäjät kirjoittivat ID-järjestelmän kokonaan uusiksi, mikä mahdollisti lohkojen luomisen rajoittamattomalla määrällä tiloja. Sänkyjen koodi pysyi kuitenkin muuttumattomana. Better Beds ratkaisee käytännössä tämän vanhentuneen teknisen velan palauttamalla sängyt normaaliin lohkomuotoon.
Mukauttaminen ja resurssipakettien tuki
Vanilla-sängyt käyttävät yhtä suurta tekstuuria, joka on venytetty litteän entiteettimallin päälle. Sängyn geometrian muuttaminen (esimerkiksi jalkojen tekeminen pyöreiksi tai suuren peiton lisääminen) tavallisilla resurssipaketeilla on vanilla-pelissä mahdotonta ilman raskaiden optimoijien, kuten OptiFinen, ja sen Custom Entity Models (CEM) -ominaisuuden asentamista.
Better Beds tekee sängyistä avoimia mille tahansa graafiselle mukauttamiselle. Koska sänky on nyt normaali lohko, voit luoda tai ladata resurssipaketin, jossa on bed.json-tiedosto models/block/-kansiossa.
Tämä mahdollistaa:
Täysien 3D-sänkymallien luomisen yksityiskohtaisilla tyynyillä, peitoilla ja jaloilla.
Animoitujen tekstuurien käytön tai pimeässä hohtavien elementtien lisäämisen (PBR-varjostimien avulla).
Tilavuudellisten yksityiskohtien lisäämisen, jotka ylittävät normaalin suorakulmaisen kehyksen.
Oletuksena muokkaus sisältää sisäänrakennetut JSON-mallit, jotka kopioivat tarkalleen sänkyjen vanilla-ulkonäön, joten et huomaa visuaalista eroa ilman kolmansien osapuolten resurssipakettien asentamista, mutta saat suorituskyvyn parannuksen.
Yhteensopivuus ja rajoitukset
Modifikaatiolla on korkea yhteensopivuus muiden grafiikan optimoijien (Sodium, Embeddium, Iris, Lithium) kanssa, koska se käyttää samoja koukkuja chunk-renderöinnin optimointiin.
Rajoitukset ja konfliktit:
Bedspreads. Tämä suosittu modi, jonka avulla sänkyihin voidaan lisätä bannerikuvioita, on yhteensopimaton Better Bedsin kanssa. Syynä on se, että Bedspreads on tiukasti sidottu vanilla Block Entity Renderer -renderöijään bannerin piirtämiseksi sängyn päälle.
Kustomoidut sänkymodit. Jos toinen modi lisää uusia sänkytyyppejä ja käyttää siihen standardia mallirenderöijää, tarvitset erillisen resurssipaketin, jossa on JSON-mallit näille uusille sängyille. Modit, jotka rekisteröivät sänkyjä omien mukautettujen BER-renderöijien kautta, toimivat vakaasti, mutta eivät saa FPS-lisäystä Better Bedsiltä.
Kirjoittajan mielipide
Better Beds on tehokas tekninen ratkaisu Minecraftin asiakasosan optimointiin. Sänkyjen vanhentuneen renderöintimenetelmän korvaaminen staattisilla JSON-malleilla poistaa ruutukohtaisen prosessorin kuormituksen kokonaan, jolloin näytönohjain voi piirtää sängyt osana maisemaa.
Verrattuna raskaisiin entiteettimallien muuttamiseen tarkoitettuihin modeihin Better Beds tarjoaa kevyen vaihtoehdon, joka keskittyy yksinomaan sänkyjen optimointiin ja resurssipakettien luojien mahdollisuuksien laajentamiseen. Suurin haittapuoli on sen yhteensopimattomuus modien kanssa, jotka muokkaavat vanilla-entiteettirenderöijää (kuten Bedspreads), sekä tarve lisätä käsin huonekalujen mallit joistakin kolmansien osapuolten modeista. Tämä muokkaus on sinulle täydellinen, jos pelaat heikolla tietokoneella, vierailet usein suurissa tukikohdissa tai kylissä, joissa on paljon sänkyjä, tai haluat asentaa kauniita 3D-huonekalutekstuureja menettämättä suorituskykyä.
Asennus
Tyypillinen asennus vie noin 5 minuuttia. Kulku on sama; vain Loader ja sopiva build vaihtuvat.
- 1Install a mod loader (Forge, Fabric or NeoForge) that matches your Minecraft version.
- 2Download the mod file (.jar) built for that same version.
- 3Place the .jar into your .minecraft/mods folder.
- 4Launch Minecraft with the modded profile and check the mod loads in-game.











