Tweak world generation

86178d7bb5bfe3733e0b3379da17811c032347e9
This commit is contained in:
Tobias Berger 2022-09-04 19:35:10 +02:00
parent 18b1bd8f9f
commit 2c1697fae6
Signed by: toby
GPG key ID: 2D05EFAB764D6A88
2 changed files with 18 additions and 13 deletions

View file

@ -164,8 +164,6 @@ impl World {
for x in 0..self.terrain[y].len() { for x in 0..self.terrain[y].len() {
let beta = (x as f32 / self.width as f32) * TAU; let beta = (x as f32 / self.width as f32) * TAU;
let continent_value = self.continent_modifier(x, y);
let value_1 = let value_1 =
self.random_noise_from_polar_coordinates(alpha, beta, RADIUS_1, offset_1)?; self.random_noise_from_polar_coordinates(alpha, beta, RADIUS_1, offset_1)?;
let value_2 = let value_2 =
@ -177,23 +175,28 @@ impl World {
let value_5 = let value_5 =
self.random_noise_from_polar_coordinates(alpha, beta, RADIUS_5, offset_5)?; self.random_noise_from_polar_coordinates(alpha, beta, RADIUS_5, offset_5)?;
let value = continent_value; let continent_value = self.continent_modifier(x, y);
let value = mix_values(value, value_3, Self::TERRAIN_NOISE_FACTOR_1);
let value = value * mix_values(1.0, value_4, Self::TERRAIN_NOISE_FACTOR_2); let mut value_continent = continent_value;
let value = value_continent =
value * mix_values(1.0, value_5, Self::TERRAIN_NOISE_FACTOR_3) * 0.2 + 0.4; mix_values(value_continent, value_3, Self::TERRAIN_NOISE_FACTOR_1);
value_continent *= mix_values(1.0, value_4, Self::TERRAIN_NOISE_FACTOR_2);
let value_b = mix_values(1.0, value_5, Self::TERRAIN_NOISE_FACTOR_3);
let mut value_mountain = let mut value_mountain =
mix_values(value_1, value_2, Self::MOUNTAIN_RANGE_MIX_FACTOR); mix_values(value_1, value_2, Self::MOUNTAIN_RANGE_MIX_FACTOR);
value_mountain = self.mountain_range_noise_from_random_noise(value_mountain); value_mountain = self.mountain_range_noise_from_random_noise(value_mountain);
value_mountain = mix_values(value_mountain, value_3, Self::TERRAIN_NOISE_FACTOR_1);
value_mountain = value_mountain =
value_mountain * mix_values(1.0, value_4, Self::TERRAIN_NOISE_FACTOR_2); mix_values(value_mountain, value_3, Self::TERRAIN_NOISE_FACTOR_1 * 1.5);
value_mountain = value_mountain *= mix_values(1.0, value_4, Self::TERRAIN_NOISE_FACTOR_2 * 1.5);
value_mountain * mix_values(1.0, value_5, Self::TERRAIN_NOISE_FACTOR_3); value_mountain *= mix_values(1.0, value_5, Self::TERRAIN_NOISE_FACTOR_3 * 1.5);
value_mountain = 2.0 * value_mountain * value;
self.terrain[y][x].altitude = Self::calculate_altitude(value_mountain); let mut raw_altitude = mix_values(value_continent, value_mountain, 0.25);
raw_altitude = mix_values(raw_altitude, value_mountain, 0.1);
raw_altitude = mix_values(raw_altitude, value_b, 0.1);
self.terrain[y][x].altitude = Self::calculate_altitude(raw_altitude);
} }
} }
Ok(()) Ok(())

View file

@ -10,9 +10,11 @@ impl WorldManager {
pub fn new() -> WorldManager { pub fn new() -> WorldManager {
WorldManager { world: None } WorldManager { world: None }
} }
pub fn get_world(&self) -> Option<&World> { pub fn get_world(&self) -> Option<&World> {
self.world.as_ref() self.world.as_ref()
} }
pub fn new_world(&mut self) -> Result<&World, WorldGenError> { pub fn new_world(&mut self) -> Result<&World, WorldGenError> {
let seed = random(); let seed = random();
let mut new_world = World::new(400, 200, seed); let mut new_world = World::new(400, 200, seed);