Thursday, August 25, 2016

Markeen - Smart profiling with splitters

Yesterday, I saw that a lot of the exposure of platform inner tiles to air was allowed by the original levels. Since the profiler wasn't aware of the level-splitting infoplane bars, it thought those things were really supposed to be together. So today, I wrote a routine that breaks a given level apart into the visible regions. (To test it, I added a new subcommand - "explode" - that splits every level into its regions.) That routine is used before profiling each level, and it has improved output quality at least a little.

I continued trying to improve the erasure routine. It now tries several times to erase a 5x5 centered on each failed tile, but that still doesn't do the trick. I experimented with switching fill orders after the initial pass, but got no noticeable improvement. I tried changing the scoring mathematics again, but just got worse levels no matter which way I adjusted the base (originally 2) of a certain exponentiation.

Since a smart filling pattern is probably an important thing I should do, I refactored the probabilistic single tile placer out of the inner loop into a lambda so it can be called from different places easily. I have an idea here that might dramatically improve output quality.

Finally, I added a seed-setting feature, so the user can optionally provide a /seed=314 switch to specify the RNG's starting value. I tested it and Markeen can now regenerate a level set when given the same seed.

Time for more pictures!







No comments:

Post a Comment