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

213 lines
5.4 KiB
Markdown

---
title: Hytale Generator
type: docs
weight: 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
```java
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 :
```yaml
# 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 :
```java
// 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 :
```java
// 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 :
```java
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é :
```java
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
```yaml
# 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 >}}