Przejdź do głównej zawartości

NV2 Engine

🧪 Zobacz animowane wyniki testów — 98 zaliczonych / 99 łącznie →

Natywny silnik wokselowy w Rust z proceduralnymi światami sterowanymi przez AI — pełna desktopowa gra wokselowa zbudowana na wgpu, z wbudowaną siecią neuronową, która uczy się rozmieszczania roślinności podczas gry.

NV2 Engine (repozytorium: NV2_ENGINE) to nie prototyp terenu — to kompletna, grywalna gra i silnik wokselowy napisana w Rust (15 800+ linii kodu w 30+ modułach). Łączy proceduralną generację terenu, realistyczne biomy sterowane klimatem, system roślinności oparty o sieć neuronową, która trenuje w tle z obciążeniem <1% CPU, animowaną symulację wody, pełną warstwę interakcji niszczenia/stawiania bloków z poziomami narzędzi i trwałością, inventory i hotbar, craftowanie oparte o przepisy (2×2 i 3×3), zapis/wczytywanie, system komend w grze i kompletny stos GUI — wszystko renderowane technikami wydajnymi dla GPU.

Stos: Rust 2021 · wgpu 0.20 · winit 0.30 · cgmath 0.18 · OpenSimplex2 · rayon · ndarray · serde/serde_json · fontdue · image 0.25 · bytemuck · env_logger · C#/.NET 8 (narzędzia treści) · Python/Pillow (narzędzia tekstur)


Macierz funkcji

Świat i teren

FunkcjaSzczegóły
Generacja proceduralnaHeightmapy OpenSimplex2, jaskinie, rudy, próbkowanie kolumn świadome wody
Wymiary chunków16×512×16 — chunki podwójnej wysokości (podniesione z 256) dla wysokich gór i głębokich jaskiń
Biomy9 biomów sterowanych klimatem: Ocean, Wybrzeże, Równiny, Las, Ciemny Las, Bagno, Tajga, Pustynia, Góry
Model klimatuTemperatura + wilgotność sterują rozkładem bloków, gęstością roślinności, mgłą i kolorem otoczenia
Kanały generacjiDedykowane kanały OpenSimplex + seed'y dla kształtu kontynentów, temperatury, wilgotności, erozji, szczytów/rzeźby, wysokości/szczegółów, warpu, jaskiń, rud, wody
Generacja asynchronicznaOgraniczona kolejka zadań, dedup w locie, równoległa generacja rayon, dostawa mpsc do głównego wątku

Roślinność sterowana AI — MeMLP

FunkcjaSzczegóły
ArchitekturaMeMLP (Modular embedded Multi-layer Perceptron Model) — modułowa, w procesie, czysty CPU, jeden checkpoint JSON
Głowa roślinnościGłębokie MLP 8→24→16→4, ~0,3 µs/predykcję (3,4 M/s)
Głowa bioma8→12→9 — klasyfikacja bioma sterująca dekoracjami
Głowa tekstur8→12→6 — wybór stylu tekstur proceduralnych
Cechy wejściowe8 cech terenu: wysokość, nachylenie, temperatura, wilgotność, odległość od wody, gęstość roślin, światło, seed szumu
Klasy wyjściowe4 klasy roślinności: kwiaty, paprocie/rośliny wodne, patyki/dekoracje, kamyki/skały
Trening w tleCiągły wątek, 240+ próbek/epokę przez wszystkie głowy, obciążenie <1% CPU
Metoda treninguOnline SGD + cross-entropy, backprop przez wszystkie warstwy; trening na feedbacku gracza, danych klimatycznych online (offline-safe) i próbkach syntetycznych
CheckpointyJeden plik JSON; legacy checkpointy 8→16→4 migrują automatycznie
Bloki roślinności22 nowe typy bloków: róże, tulipany (4 kolory), mlecze, chabry, czosnki, azalie, paprocie, grzybienie, trawy morskie, kelp, mech dywanowy, winorośle, patyki, kamyki
Próg ufności0,40 — tylko przewidywania o wysokiej ufności stawiają bloki

Renderowanie (wgpu 0.20)

FunkcjaSzczegóły
Bufory GPU per chunkEdycja bloku wgrywa tylko ten chunk (wcześniej ~81 chunków na zmianę)
Frustum cullingEkstrakcja płaszczyzn Gribb–Hartmann z marginesem bezpieczeństwa + chroniony obszar 3×3 wokół gracza
Zapakowane wierzchołki72-bajtowe wierzchołki CPU → 36-bajtowy format GPU (Snorm8x4/Unorm8x4)
Inkrementalne meshowanie wodyTylko zmienione chunki przebudowują meshe; symulacja interwałowa
Osobne pipeline'yŚwiat stały, woda, płaskie panele UI, ikony sprite, renderowanie tekstu
Atlas teksturDynamiczny atlas, przełączalne pakiety tekstur, warianty top/bottom/side
Renderowanie tekstuRasteryzacja fontdue, własne warstwy tekstu

Rozgrywka

FunkcjaSzczegóły
Interakcja z blokamiCelowanie raycastem DDA, wydobycie z przytrzymaniem, stawianie prawym przyciskiem
Poziomy narzędziRęka → Krzemień → Kamień → Żelazo → Diament → Netherite, z wartościami mocy i trwałością
Inventory36 slotów + 9-slotowy hotbar, łączenie stosów, drag-and-drop
CraftingSiatka gracza 2×2 + stacja NVCrafter 3×3, przepisy kształtowe i bezkształtowe
Przepisy18 przepisów: deski, patyki, NVCrafter, drewniane kilof/siekiera/łopata/motyka, pochodnie, skrzynia, drzwi, zapadnia, drabina, płot, furtka, ulepszenie stołu warsztatowego, kilofy krzemienny/kamienny/żelazny
RuchChód, sprint (FOV kick), skok, latanie, grawitacja/zatapianie w wodzie, kolizja AABB, modyfikatory ruchu od roślinności
Komendy/locate &lt;biome&gt; [--tp], /tp &lt;x&gt; &lt;y&gt; &lt;z&gt;
TrwałośćZapis świata JSON (seed, bloki chunków, metadane wody, stany NVCrafter)

Specjalna logika rozgrywki

FunkcjaSzczegóły
Zrzuty krzemieniaŻwir może upuszczać krzemień przez deterministyczną logikę seeded
Zbiórka drzewZniszczenie pnia zbiera połączony klaster pień/liście
Zrzuty liściLiście upuszczają sadzonki i patyki z deterministycznymi szansami
Opróżnianie crafteraRozbicie NVCrafter wypłukuje przechowywaną zawartość do zrzutów świata
Ochrona stawianiaBloków nie można stawiać wewnątrz AABB gracza

Szybki start

Wymaga toolchainu Rust (stabilny wystarczy) i GPU z obsługą Vulkan/Metal/DX12/GL.

cd Core
cargo run --release

Gra otwiera okno z menu głównym:

Pozycja menuAkcja
Nowa graStart nowego proceduralnie wygenerowanego świata
Wczytaj/ZapiszWczytaj zapisany świat
Low-End-PCPrzełącz profil wydajności dla słabszych komputerów
WyjdźZakończ

Uwaga: cargo run w trybie dev i tak buduje crate'y zewnętrzne na opt-level 3, więc nawet build debug gra płynnie.

Pierwsze minuty w grze: spawn w pobliżu lasu → zbieraj drzewa gołymi rękami → zbierz drewno → otwórz siatkę craftingu 2×2 (E) → zrób drewniane deski → patyki → drewniany kilof → wydobywaj kamień → zrób kamienny kilof → wydobywaj żelazo → w końcu zrób NVCrafter dla przepisów 3×3.


Indeks dokumentacji

StronaZawartość
ArchitekturaPełny runtime, renderer, świat, warstwy UI — moduł po module
RozgrywkaSterowanie, interakcja, inventory, crafting, komendy, trwałość
Bloki i biomyKompletny rejestr 97 bloków, poziomy narzędzi, 9 definicji biomów, rudy
Referencja craftinguKażdy przepis z dokładnymi wzorami
Symulacja wodyKodowanie cieczy, solver i wewnętrzne renderowania
System roślinności AIMatematyka sieci, pętla treningu, hiperparametry, integracja
WydajnośćPrzepustowość GPU, culling, budżety meshowania, profile
RozwójBuild, mapa modułów, testowanie, rozszerzanie silnika
Plan i zmianyHistoria, plany Faz 2, znane ograniczenia