better world gen

This commit is contained in:
maxwes08
2025-09-29 10:55:37 +02:00
parent 9a61dfd74c
commit 38dccf0a84
7 changed files with 2653 additions and 22 deletions

87
Worldgen.cs Normal file
View File

@@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Voxel
{
public static class Worldgen
{
private static int baseHeight = 32;
private static float res1 = 2;
private static float res2 = 4;
private static float amplitude1 = 4;
private static float amplitude2 = 2;
private static float mountainMapRes = (float)1/2;
private static float mountainMapAmplitude = 8;
private static float elevationMapRes = (float)1/8;
private static float elevationMapAmplitude = 32;
private static FastNoiseLite noise = new FastNoiseLite();
private static Random random = new Random();
public static int GetHeight(int x, int z)
{
float map1 = noise.GetNoise(
x * res1,
z * res1
) * amplitude1;
float map2 = noise.GetNoise(x * res2,
z * res2
) * amplitude2;
float mountainMap = noise.GetNoise(
x * mountainMapRes,
z * mountainMapRes
) * mountainMapAmplitude;
float elevationMap = (noise.GetNoise(
x * elevationMapRes,
z * elevationMapRes
) + 0.25f) * elevationMapAmplitude;
return baseHeight + (int)(elevationMap + ((map1 + map2) * 1 + mountainMap));
}
public static Blocks GetBlock(int y, int maxY)
{
if (y > maxY)
{
return Blocks.Air;
}
if (y == maxY)
{
if (y < baseHeight)
return Blocks.Sand;
else
return Blocks.Grass;
}
if (y < 4)
{
if (y == 0) return Blocks.Bedrock;
float randomValue = random.NextSingle();
if (randomValue < (1f / y))
{
return Blocks.Bedrock;
}
return Blocks.Stone;
}
if (y > maxY - 6)
{
return Blocks.Dirt;
}
return Blocks.Stone;
}
}
}