5.4 KiB
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 >}}