Init
This commit is contained in:
212
content/world/worldgen/hytale-generator.fr.md
Normal file
212
content/world/worldgen/hytale-generator.fr.md
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
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 >}}
|
||||
Reference in New Issue
Block a user