From 37bc8a6aff014d04de9dfb4ebf3d01f79b4c76fb Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 12 Jun 2020 15:21:55 +0900 Subject: [PATCH] biome in worldgen --- .../terrarum/concurrent/ThreadParallel.kt | 16 ++- .../modulebasegame/console/ExportMap.kt | 6 +- .../modulebasegame/ui/UIProxyNewRandomGame.kt | 3 +- .../modulebasegame/worldgenerator/Biomegen.kt | 130 +++++++++++++++++- .../modulebasegame/worldgenerator/Terragen.kt | 11 +- .../modulebasegame/worldgenerator/Worldgen.kt | 4 +- .../terrarum/tests/WorldgenNoiseSandbox.kt | 17 +-- src/net/torvald/util/CircularArray.kt | 11 +- work_files/graphics/terrain/tree_foliage.kra | Bin 0 -> 101176 bytes 9 files changed, 162 insertions(+), 36 deletions(-) create mode 100644 work_files/graphics/terrain/tree_foliage.kra diff --git a/src/net/torvald/terrarum/concurrent/ThreadParallel.kt b/src/net/torvald/terrarum/concurrent/ThreadParallel.kt index 10710a004..42e980390 100644 --- a/src/net/torvald/terrarum/concurrent/ThreadParallel.kt +++ b/src/net/torvald/terrarum/concurrent/ThreadParallel.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.concurrent +import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import java.util.concurrent.Future import java.util.concurrent.TimeUnit @@ -12,13 +13,19 @@ typealias ThreadableFun = (Int) -> Unit object ThreadExecutor { val threadCount = Runtime.getRuntime().availableProcessors() // not using (logicalCores + 1) method; it's often better idea to reserve one extra thread for other jobs in the app - private var executor = Executors.newFixedThreadPool(threadCount) + private lateinit var executor: ExecutorService// = Executors.newFixedThreadPool(threadCount) private fun checkShutdown() { - if (!executor.isShutdown) return - if (executor.isShutdown&& !executor.isTerminated) - throw IllegalStateException("Pool is closed, come back when all the threads are terminated.") + try { + if (executor.isTerminated) + throw IllegalStateException("Executor terminated, renew the executor service.") + if (executor.isShutdown) + throw IllegalStateException("Pool is closed, come back when all the threads are terminated.") + } + catch (e: UninitializedPropertyAccessException) {} + } + fun renew() { executor = Executors.newFixedThreadPool(threadCount) } @@ -32,6 +39,7 @@ object ThreadExecutor { } fun join() { + println("ThreadExecutor.join") executor.shutdown() // thread status of completed ones will be WAIT instead of TERMINATED without this line... executor.awaitTermination(24L, TimeUnit.HOURS) } diff --git a/src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt index 6bccc3f53..f4f159c3a 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt @@ -72,9 +72,9 @@ internal object ExportMap : ConsoleCommand { * R-G-B-A order for RGBA input value */ private fun Int.toByteArray() = byteArrayOf( - this.shl(24).and(0xff).toByte(), - this.shl(16).and(0xff).toByte(), - this.shl(8).and(0xff).toByte(), + this.shr(24).and(0xff).toByte(), + this.shr(16).and(0xff).toByte(), + this.shr(8).and(0xff).toByte(), this.and(0xff).toByte() ) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt index db32c1f90..49118bd0f 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt @@ -38,7 +38,8 @@ class UIProxyNewRandomGame : UICanvas() { val ingame = TerrarumIngame(AppLoader.batch) - val worldParam = TerrarumIngame.NewWorldParameters(2400, 800, HQRNG().nextLong()) + val worldParam = TerrarumIngame.NewWorldParameters(2400, 800, 0x51621DL) + //val worldParam = TerrarumIngame.NewWorldParameters(2400, 800, HQRNG().nextLong()) //val worldParam = TerrarumIngame.NewWorldParameters(8192, 2048, 0x51621DL) ingame.gameLoadInfoPayload = worldParam ingame.gameLoadMode = TerrarumIngame.GameLoadMode.CREATE_NEW diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt index e28f35e08..67d6c963f 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt @@ -1,20 +1,140 @@ package net.torvald.terrarum.modulebasegame.worldgenerator +import com.badlogic.gdx.graphics.Pixmap +import com.sudoplay.joise.Joise +import com.sudoplay.joise.module.ModuleAutoCorrect +import com.sudoplay.joise.module.ModuleBasisFunction +import com.sudoplay.joise.module.ModuleFractal +import com.sudoplay.joise.module.ModuleScaleDomain +import net.torvald.terrarum.AppLoader +import net.torvald.terrarum.blockproperties.Block +import net.torvald.terrarum.concurrent.ThreadExecutor +import net.torvald.terrarum.concurrent.sliceEvenly import net.torvald.terrarum.gameworld.GameWorld +import net.torvald.terrarum.gameworld.fmod +import java.util.concurrent.Future +import kotlin.math.cos +import kotlin.math.sin /** * Created by minjaesong on 2019-09-02. */ class Biomegen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, params) { - override var generationStarted: Boolean - get() = TODO("not implemented") - set(value) {} + + private val genSlices = maxOf(ThreadExecutor.threadCount, world.width / 8) + + private var genFutures: Array?> = arrayOfNulls(genSlices) + override var generationStarted: Boolean = false override val generationDone: Boolean - get() = TODO("not implemented") + get() = generationStarted && genFutures.fold(true) { acc, f -> acc and (f?.isDone ?: true) } + + private val YHEIGHT_MAGIC = 2800.0 / 3.0 + private val YHEIGHT_DIVISOR = 2.0 / 7.0 override fun run() { - TODO("not implemented") + + generationStarted = true + + ThreadExecutor.renew() + (0 until world.width).sliceEvenly(genSlices).mapIndexed { i, xs -> + genFutures[i] = ThreadExecutor.submit { + val localJoise = getGenerator(seed, params as BiomegenParams) + for (x in xs) { + for (y in 0 until world.height) { + val sampleTheta = (x.toDouble() / world.width) * TWO_PI + val sampleOffset = world.width / 8.0 + val sampleX = sin(sampleTheta) * sampleOffset + sampleOffset // plus sampleOffset to make only + val sampleZ = cos(sampleTheta) * sampleOffset + sampleOffset // positive points are to be sampled + val sampleY = y - (world.height - YHEIGHT_MAGIC) * YHEIGHT_DIVISOR // Q&D offsetting to make ratio of sky:ground to be constant + // DEBUG NOTE: it is the OFFSET FROM THE IDEAL VALUE (observed land height - (HEIGHT * DIVISOR)) that must be constant + val noise = localJoise.map { it.get(sampleX, sampleY, sampleZ) } + + draw(x, y, noise, world) + } + } + } + } + + ThreadExecutor.join() + + AppLoader.printdbg(this, "Waking up Worldgen") } + + val nearbyArr = arrayOf( + (-1 to -1), // tileTL + (+1 to -1), // tileTR + (-1 to +1), // tileBL + (+1 to +1), // tileBR + (0 to -1), // tileT + (0 to +1), // tileB + (-1 to 0), // tileL + (+1 to 0) // tileR + ) + + private fun draw(x: Int, y: Int, noiseValue: List, world: GameWorld) { + val control = noiseValue[0].times(4).minus(0.00001f).toInt().fmod(4) + + + + if (y > 0) { + val tileThis = world.getTileFromTerrain(x, y) + val wallThis = world.getTileFromWall(x, y) + val nearbyTerr = nearbyArr.map { world.getTileFromTerrain(x + it.first, y + it.second) } + val nearbyWall = nearbyArr.map { world.getTileFromWall(x + it.first, y + it.second) } + + when (control) { + 0 -> { // woodlands + if (world.getTileFromTerrain(x, y) == Block.DIRT && nearbyTerr.any { it == Block.AIR } && nearbyWall.any { it == Block.AIR }) { + world.setTileTerrain(x, y, Block.GRASS) + } + } + 1 -> { // shrublands + if (world.getTileFromTerrain(x, y) == Block.DIRT && nearbyTerr.any { it == Block.AIR } && nearbyWall.any { it == Block.AIR }) { + world.setTileTerrain(x, y, Block.GRASS) + } + } + 2 -> { // plains + if (world.getTileFromTerrain(x, y) == Block.DIRT && nearbyTerr.any { it == Block.AIR } && nearbyWall.any { it == Block.AIR }) { + world.setTileTerrain(x, y, Block.GRASS) + } + } + 3 -> { // rockylands + if (world.getTileFromTerrain(x, y) == Block.DIRT) { + world.setTileTerrain(x, y, Block.STONE) + world.setTileWall(x, y, Block.STONE) + } + } + } + } + } + + private fun getGenerator(seed: Long, params: BiomegenParams): List { + //val biome = ModuleBasisFunction() + //biome.setType(ModuleBasisFunction.BasisType.SIMPLEX) + + // simplex AND fractal for more noisy edges, mmmm..! + val fractal = ModuleFractal() + fractal.setType(ModuleFractal.FractalType.MULTI) + fractal.setAllSourceBasisTypes(ModuleBasisFunction.BasisType.SIMPLEX) + fractal.setNumOctaves(4) + fractal.setFrequency(1.0) + fractal.seed = seed shake 0x7E22A + + val autocorrect = ModuleAutoCorrect() + autocorrect.setSource(fractal) + autocorrect.setRange(0.0, 1.0) + + val scale = ModuleScaleDomain() + scale.setSource(autocorrect) + scale.setScaleX(1.0 / params.featureSize) // adjust this value to change features size + scale.setScaleY(1.0 / params.featureSize) + scale.setScaleZ(1.0 / params.featureSize) + + val last = scale + + return listOf(Joise(last)) + } + } data class BiomegenParams( diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt index f0f045dcf..676523b76 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt @@ -18,7 +18,7 @@ import kotlin.math.sin */ class Terragen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, params) { - private val genSlices = maxOf(world.width, ThreadExecutor.threadCount, world.width / 8) + private val genSlices = maxOf(ThreadExecutor.threadCount, world.width / 8) private var genFutures: Array?> = arrayOfNulls(genSlices) override var generationStarted: Boolean = false @@ -32,6 +32,7 @@ class Terragen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, par generationStarted = true + ThreadExecutor.renew() (0 until world.width).sliceEvenly(genSlices).mapIndexed { i, xs -> genFutures[i] = ThreadExecutor.submit { val localJoise = getGenerator(seed, params as TerragenParams) @@ -61,7 +62,7 @@ class Terragen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, par Block.AIR, Block.DIRT, Block.STONE ) - fun draw(x: Int, y: Int, noiseValue: List, world: GameWorld) { + private fun draw(x: Int, y: Int, noiseValue: List, world: GameWorld) { fun Double.tiered(vararg tiers: Double): Int { tiers.reversed().forEachIndexed { index, it -> if (this >= it) return (tiers.lastIndex - index) // why?? @@ -298,12 +299,6 @@ class Terragen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, par caveInMix.setSource(0, caveSelect) caveInMix.setSource(1, caveBlockageSelect) - /*val groundCaveMult = ModuleCombiner() - groundCaveMult.setType(ModuleCombiner.CombinerType.MULT) - groundCaveMult.setSource(0, caveInMix) - //groundCaveMult.setSource(0, caveSelect) // disables the cave-in for quick cavegen testing - groundCaveMult.setSource(1, groundSelect)*/ - // this noise tree WILL generate noise value greater than 1.0 // they should be treated properly when you actually generate the world out of the noisemap // for the visualisation, no treatment will be done in this demo app. diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt index a1c0bc976..f3c2fb32a 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt @@ -23,8 +23,8 @@ object Worldgen { fun generateMap() { val jobs = listOf( - Work("Reticulating Splines", Terragen(world, params.seed, params.terragenParams)) - //Work("Adding Vegetations") { Biomegen(world, params.seed, params.biomegenParams) } + Work("Reticulating Splines", Terragen(world, params.seed, params.terragenParams)), + Work("Adding Vegetations", Biomegen(world, params.seed, params.biomegenParams)) ) diff --git a/src/net/torvald/terrarum/tests/WorldgenNoiseSandbox.kt b/src/net/torvald/terrarum/tests/WorldgenNoiseSandbox.kt index 6b918a7c4..782b0dc82 100644 --- a/src/net/torvald/terrarum/tests/WorldgenNoiseSandbox.kt +++ b/src/net/torvald/terrarum/tests/WorldgenNoiseSandbox.kt @@ -115,10 +115,11 @@ class WorldgenNoiseSandbox : ApplicationAdapter() { } } - private val NOISE_MAKER = AccidentalCave + private val NOISE_MAKER = BiomeMaker private fun getNoiseGenerator(SEED: Long): List { - return NOISE_MAKER.getGenerator(SEED, TerragenParams()) + //return NOISE_MAKER.getGenerator(SEED, TerragenParams()) + return NOISE_MAKER.getGenerator(SEED, BiomegenParams()) } val colourNull = Color(0x1b3281ff) @@ -157,8 +158,8 @@ class WorldgenNoiseSandbox : ApplicationAdapter() { } } - private val xSlices = (0 until WIDTH).sliceEvenly(ThreadExecutor.threadCount) - //private val xSlices = (0 until WIDTH).sliceEvenly(WIDTH / 8) + //private val xSlices = (0 until WIDTH).sliceEvenly(ThreadExecutor.threadCount) + private val xSlices = (0 until WIDTH).sliceEvenly(maxOf(WIDTH, ThreadExecutor.threadCount, WIDTH / 8)) private val runs = (0 until WIDTH).map { x -> (x until WIDTH * HEIGHT step WIDTH) }.flatten() @@ -261,7 +262,7 @@ fun main(args: Array) { } internal interface NoiseMaker { - fun draw(x: Int, y: Int, noiseValue: List, outTex: UnsafePtr) + fun draw(x: Int, y: Int, noiseValue: List, outTex: Pixmap) fun getGenerator(seed: Long, params: Any): List } @@ -269,12 +270,12 @@ val locklock = java.lang.Object() internal object BiomeMaker : NoiseMaker { - override fun draw(x: Int, y: Int, noiseValue: List, outTex: UnsafePtr) { + override fun draw(x: Int, y: Int, noiseValue: List, outTex: Pixmap) { val colPal = biomeColors val control = noiseValue[0].times(colPal.size).minus(0.00001f).toInt().fmod(colPal.size) - //outTex.setColor(colPal[control]) - //outTex.drawPixel(x, y) + outTex.setColor(colPal[control]) + outTex.drawPixel(x, y) } override fun getGenerator(seed: Long, params: Any): List { diff --git a/src/net/torvald/util/CircularArray.kt b/src/net/torvald/util/CircularArray.kt index fd1078c71..6c6f0add6 100644 --- a/src/net/torvald/util/CircularArray.kt +++ b/src/net/torvald/util/CircularArray.kt @@ -84,6 +84,7 @@ class CircularArray(val size: Int, val overwriteOnOverflow: Boolean): Iterabl // even if overflowing is enabled, appending at tail causes head element to be altered, therefore such action // must be blocked by throwing overflow error + // if you think this behaviour is wrong, you're confusing appendHead() with appendTail(). Use appendHead() and removeTail() if (overflow) { throw StackOverflowError() } @@ -98,8 +99,8 @@ class CircularArray(val size: Int, val overwriteOnOverflow: Boolean): Iterabl } } - fun removeHead(): T { - if (isEmpty) throw EmptyStackException() + fun removeHead(): T? { + if (isEmpty) return null decHead() overflow = false @@ -107,8 +108,8 @@ class CircularArray(val size: Int, val overwriteOnOverflow: Boolean): Iterabl return buffer[head] } - fun removeTail(): T { - if (isEmpty) throw EmptyStackException() + fun removeTail(): T? { + if (isEmpty) return null val ret = buffer[tail] incTail() @@ -125,7 +126,7 @@ class CircularArray(val size: Int, val overwriteOnOverflow: Boolean): Iterabl /** * Relative-indexed get. Index of zero will return the head element. */ - operator fun get(index: Int) = buffer[(head - 1 - index).wrap()] + operator fun get(index: Int): T? = buffer[(head - 1 - index).wrap()] private fun getAbsoluteRange() = 0 until when { head == tail -> buffer.size diff --git a/work_files/graphics/terrain/tree_foliage.kra b/work_files/graphics/terrain/tree_foliage.kra new file mode 100644 index 0000000000000000000000000000000000000000..e3fb0ce25761dc275ff33d9a9534391fe1ce251b GIT binary patch literal 101176 zcmV)yK$5>uO9KQH000000J&PsP@(VxrxO4G022TJ00;m80Bvb)WpsIPWnpk|Y-wX* zbZKvHFL*6$a%ps7P)h>@6aWAK2mrZS%ux2Tu9-Ch008X>000XB003=aX>Me1V=j1Y zY_*nMZ`(E$hVSz$INoFfMoXeTEDu(SBu;~(T^np^fnF6yBxQ4^Nr9vj8$T(Wb0ksISDTeWcfvYpbcK^qjFHgHaH;1N{&@SEl=#)z$@GWWhs)c~ zH&-b9qnnQx@7`RZQxZjQXID`)yPct>l^zfs#Zh$i{uG@qyl;PrqWk;%5d)><+``D% zd8dtfEeYBY_xvoTK^ zbuBP4Wc=;=;vA#RLFm2Yeo^5f!)PJoeBp=V)|y7D5aB`y5lRX2i4te$wYO{}8SBiV zse)~=-yQCb!-}icIO&CHE3A!Ofx_rcI$3ww5{#tw!L5>d7;3|X-?m}ULO9hY`8(g8 zqhZ|3Xn+uM6nKa0U2mZHu?6P^{|O^y*i!HchcZpbC4G?7JP+v?ptVqqg1PHh8XcIq zrPRIF2_=~C0=-=a@S6&gG%U7W%P{w6)3Ce-3M7UYNY<2NQkIMoI!+2Ink*J+@%3Si z&cnkxp)3Wh+j;7XR8R}m4WsWV9-jJd%nl*s-yj^aKj!HXnPctS6&|yq;UbjFQ^819 z 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