Files
Documentation/content/world/worldgen/hytale-generator.fr.md
2026-01-20 20:33:59 +01:00

5.4 KiB

title, type, weight
title type weight
Hytale Generator docs 7

Le Hytale Generator est le générateur de monde procédural par défaut qui crée le terrain, les structures et les caractéristiques de Hytale.

Package: com.hypixel.hytale.builtin.hytalegenerator

Vue d'Ensemble

Le Hytale Generator combine plusieurs systèmes :

Hytale Generator
├── Fonctions de Densité (forme du terrain)
├── Material Providers (sélection de blocs)
├── Placement de Props (végétation/objets)
├── Génération de Grottes
├── Placement de Structures
└── Caractéristiques spécifiques aux biomes

Structure du Générateur

public class HytaleGenerator implements WorldGenerator {
    private DensityFunctionRegistry densityFunctions;
    private MaterialProviderRegistry materialProviders;
    private PropPlacementRegistry propPlacement;
    private CaveGenerator caveGenerator;
    private StructureGenerator structureGenerator;

    @Override
    public void generate(GenerationContainer container, int chunkX, int chunkZ) {
        // 1. Générer le terrain de base
        generateTerrain(container, chunkX, chunkZ);

        // 2. Creuser les grottes
        caveGenerator.generate(container, chunkX, chunkZ);

        // 3. Placer les structures
        structureGenerator.generate(container, chunkX, chunkZ);

        // 4. Placer les props
        propPlacement.generate(container, chunkX, chunkZ);

        // 5. Finaliser
        finalize(container);
    }
}

Configuration d'Assets

Les assets du générateur définissent les paramètres de génération :

# hytalegenerator/world_generator.yaml
Type: HytaleGenerator
Id: default_generator
Seed: 0  # 0 = aléatoire
TerrainDensity:
  Function: terrain_combined
  Scale: 1.0
Materials:
  Provider: biome_materials
Caves:
  Enabled: true
  Frequency: 0.5
Structures:
  Enabled: true
  Spacing: 32
Props:
  Density: 1.0

Composants du Framework

Le framework du générateur fournit des utilitaires de base :

// Contexte de génération
public class GenerationContext {
    private long seed;
    private int chunkX, chunkZ;
    private Biome biome;
    private Random random;

    public float noise2D(float x, float z, float scale);
    public float noise3D(float x, float y, float z, float scale);
}

// Phase de génération
public enum GenerationPhase {
    TERRAIN,
    CARVING,
    STRUCTURES,
    DECORATION,
    FINALIZATION
}

Structures de Données

Structures de données spécialisées pour la génération :

// Stockage de carte de hauteur
public class HeightMap2D {
    private float[] data;
    private int width, height;

    public float get(int x, int z);
    public void set(int x, int z, float value);
}

// Stockage de densité 3D
public class DensityField3D {
    private float[] data;
    private int sizeX, sizeY, sizeZ;

    public float get(int x, int y, int z);
    public float sample(float x, float y, float z);  // Interpolé
}

Intégration Nouveau Système

Le générateur intègre les systèmes plus récents :

public class NewSystemIntegration {
    // Enregistrer une fonction de densité personnalisée
    public void registerDensityFunction(String id, DensityFunction function);

    // Enregistrer un material provider personnalisé
    public void registerMaterialProvider(String id, MaterialProvider provider);

    // Enregistrer un placeur de props personnalisé
    public void registerPropPlacer(String id, PropPlacer placer);
}

Sous-packages

Package Fichiers Description
assets/ 232 Définitions d'assets pour la génération
density/ 76 Implémentations de fonctions de densité
newsystem/ 29 Nouveau système de génération
materialproviders/ 29 Sélection de matériaux
framework/ 29 Framework de base
props/ 24 Placement de props
datastructures/ 16 Structures de données
positionproviders/ 14 Calcul de positions
patterns/ 13 Patterns de génération
fields/ 8 Génération par champs

Générateur Personnalisé

Créer un générateur personnalisé :

public class MyGenerator extends HytaleGenerator {
    @Override
    protected void generateTerrain(GenerationContainer container, int chunkX, int chunkZ) {
        // Génération de terrain personnalisée
        for (int x = 0; x < 16; x++) {
            for (int z = 0; z < 16; z++) {
                int worldX = chunkX * 16 + x;
                int worldZ = chunkZ * 16 + z;

                float density = getCustomDensity(worldX, worldZ);
                int height = (int) (density * 64) + 64;

                fillColumn(container, x, z, height);
            }
        }
    }
}

Configuration

# hytalegenerator/config.yaml
HytaleGenerator:
  WorldType: normal
  SeaLevel: 64
  TerrainAmplitude: 1.0
  CaveFrequency: 0.5
  StructureSpacing: 32
  BiomeScale: 256
  Features:
    Caves: true
    Structures: true
    Props: true
    Ores: true

Bonnes Pratiques

{{< callout type="info" >}} Directives du Générateur :

  • Étendez HytaleGenerator pour des mondes personnalisés
  • Utilisez le système d'assets pour la configuration
  • Enregistrez les composants personnalisés dans la phase setup
  • Testez la génération avec différentes seeds
  • Profilez les performances des fonctions personnalisées {{< /callout >}}