Skip to content

hybernia1/darkmaze

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

274 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DarkMaze

Centrální konfigurace hry

Projekt používá jeden centrální konfigurák src/core/gameConfig.js.

  • gameConfig.world obsahuje nastavení voxel světa (seed, výšky, streaming, velikost bloku, biomy).
  • gameConfig.player obsahuje fyziku a pohyb hráče.
  • worldConfig a playerConfig jsou exportované části z tohoto centrálního objektu.

Co je baseSurfaceHeight

baseSurfaceHeight je výchozí (střední) výška terénu před aplikací noise. Společně s terrainAmplitude určuje, kolem jaké výšky se terén vlní.

Bloky pro terén bez hardcodu ve world builderu

Složení terénu se nastavuje v world.terrainBlocks:

  • surfaceBlockId – blok na povrchu.
  • subSurfaceLayers – vrstvy pod povrchem (blockId + depth).
  • deepBlockId – výchozí hluboký blok pod definovanými vrstvami.

Díky tomu přidávání dalších bloků neznamená úpravy ve voxelWorld.js, stačí upravit konfiguraci.

Ověřený základ prostředí

  • blockSize je pevně nastavený na 1 a při startu se validuje (validateWorldSetup).
  • Typy bloků jsou centralizované v src/content/blockCatalog.js a rendering světa z katalogu čte ID i textury.
  • Seed je použitý deterministicky napříč vrstvami: surface heightmapa (2D), jeskyně a rudy (3D), biome klima mapy.

Další podobné případy, které byly sjednocené

  • Parametry highlightu (blockHighlightMaxDistance, highlightPaddingRatio, highlightPickSurfaceEpsilon) jsou v centrálním configu.
  • Parametry noise vrstev (terrainNoiseOctaves) jsou v configu místo pevného zápisu v generátoru.

Tím pádem při ladění nemusíš sahat do runtime/world skriptů, stačí měnit gameConfig.

Biome vrstva (krok 2)

Generování terénu používá biome resolver (src/world/generation/biomeResolver.js) a katalog biome dat (src/content/biomeCatalog.js).

  • Biome se určují deterministicky ze seedu přes teplotní a vlhkostní noise mapu.
  • Aktivní biomy a frekvence noise se nastavují v gameConfig.world.biomes.
  • Každý biome může upravit:
    • profil terénu (baseSurfaceHeightOffset, amplitudeMultiplier),
    • surface blok (surface.blockId),
    • chování vegetace (vegetation.treeChanceMultiplier).

Biome vrstva je aktivně použitá pro terén, povrch i vegetaci.

Biome-specific rudy (krok 3)

Biome profil teď řídí i dostupnost rud přes biome.ores.allowedOreBlockIds.

  • oreVeinGenerator při rozhodování respektuje aktivní biome pro konkrétní voxel.
  • Pokud biome seznam rud neurčí, použije se výchozí globální ore sada z gameConfig.world.underground.ores.
  • Konkrétní seznamy pro plains, desert a coalFields jsou v src/content/biomeCatalog.js.

Hloubka mapy a bedrock

Nové nastavení hloubky je centralizované v gameConfig.world:

  • absoluteFloorY definuje absolutní nulu mapy (aktuálně -64).
  • minWorldHeight je zarovnané na stejnou hodnotu jako absoluteFloorY.
  • terrainBlocks.bedrockThickness určuje tloušťku bedrock vrstvy od absolutní nuly nahoru.
  • Cave carving podporuje i absolutní limity underground.caves.minY a underground.caves.maxY, takže jeskyně lze řídit nejen podle hloubky pod povrchem, ale i podle skutečné Y osy.

Žíly rud v hlubší mapě

Ore vein systém je kompatibilní s novou hloubkou mapy a umí kombinovat dvě podmínky zároveň:

  • relativní hloubku pod povrchem (minDepthBelowSurface, maxDepthBelowSurface),
  • absolutní výškové limity (minY, maxY) pro každý typ rudy.

Díky tomu mohou vzácné materiály spawnovat i ve velmi nízkých hladinách (blízko absoluteFloorY), ale stále zůstávají řízené profilem rud.

About

Babylon js, voxel survival game

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors