(April 2018) Monthly WIP & Screenshot thread

This weekend I’m playing with random level generation.

So far it’s just stupid brute force… grabs a random open connection, slams a random part that fits… repeat ‘n’ times.

In this pic n = 200.

I needed to make sure the “part that fits” thing would work properly before starting to add more advanced random structure and loops, etc…


Doing some GameBoy stuff again, this time in Assembly:

Oh, and also, I’m working on “Capture the Hat” for S-RC Bots multiplayer. Since I figured “Capture the flag” was a bit standard.

Right now, you can pick a hat via your tractor beam and you drop it when your bot is destroyed. Now to add two goals to the map…


Are you completely sure about that working properly? There are a few quite literal edge cases on that pic that makes it look like it may be getting too close for comfort. Could be just the rasterization at a distance though.

Yep, I’m sure. I tweaked up the check to be “pixel accurate”… so they can be right next to each other but never overlap.

In reality, that’s probably not going to work in the final version but I can always add pixel borders and/or make the 2D representation of the parts slightly larger than the 3D versions and all will be well.

1 Like

For fun, n=500:

Won’t even all fit on screen.

Realistically, this is all WAAAAY too big a level for an FPS. No one is every going to want to walk all over that.

…but it’s fun to play with.


It misses a “You are here” spot :wink:


You know… I swear this is the exact same floor plan of some shopping malls, casino’s or Ikea’s.


Working on creating random paths between two different parts:

Started at “S” and went to “T”. I had to add a little slop in the connection detection (as fun to say as it is to write) and it takes waaaay too many iterations to find this path… so it still needs some work. But progress is progress.

The high iteration thing is because the paths don’t detect when they backtrack. So the search space is HUGE even for A*. I suspect if I add back track detection then we can start seeing some really interesting paths. It took about 3900 path iterations to find this path. For that many iterations, I’d expect a proper algorithm to find some really twisted paths to line things up perfectly. It’s just that when it gets close to the target, those paths will circle and circle over themselves and the fitness function will still say they are a better path than longer paths that branch earlier.

More to come!


Different map, I thought this one looked really good.

Been working on sounds most of the week so don’t have anything to show for screenshots for that. Things are coming along nicely, got chorus and flanger working, the reverb sounds good, direction stuff is working.



Any chance this will make it to one of your awesome opensource libraries?

The whole game will be open source at some point.


The most modern day adaptation this reminds me of is xenowerk. A very cool game indeed.

Yet the trees still clip through the HUD :stuck_out_tongue:

I’ve been playing with that too. However, I used the Noise4j library. I tried to make a 3D based on the generated grid but the farthest I went is to make a 3d dungeon with terrains. However, it is not too useful as I can’t think on a way to texturize it xD.

My random generation strategies tend to be multi-level as it allows for total flexibility on one end and some prebuild “set pieces” on the other. I did this a lot even in Mythruna with random building generation, etc…

I break the problem down into layers like:
-general level structure (we need these four things, they should be roughly this far apart)
-connect those things and fill in the blanks with random stuff down to some level of iterations
-from the general structure, pick random rooms/tunnels that meet the requirements of that node. (A large room with doors north and east.) This is where you can get really creative if depending on how low level the components are. You can either pick from ‘n’ random rooms or construct the room from parts, too.

The approach also allows seeding the level with things you know you will want. Some exact configuration of room X that must be next to room Y and elevator Z… then generate the rest of the level around that, etc.

Anyway, it worked well for my experiments with town generation. Now we’ll see about space bases (space dungeons, basically).

1 Like

I started to work on post shader filters, as a starting point I used the color overlay filter and did this toon filter effect

I’m quite excited how easy it was :slight_smile:


I’ve been very busy adding all sorts of new stuff to Spoxel, but i’ve been taking some time the last few days to start coming up with ideas for a new dungeon.


Your game just looks so polished and “finished”. How do you achieve that?

It took me awhile to really zero in on the visual style I wanted with Spoxel. Once I settled on a visual style I spent a lot of time in photoshop really figuring out how to recreate that art style. I’ve somewhere north of 1000 textures and icons at this point in this style.

It seems with programming that I usually completely rework a lot of my code several times before I arrive at something that meets the standards I have. Much like that, I’ve also spent a lot of time reworking most of the models multiple times. This is the 3rd or 4th rework of the main character model for example. Much like software, art can be a very iterative process.

For example, this is the previous version of the character model:

And this is the original when I first started working on the game:

Beyond that… I can’t stress how important reference material is. When i’m working on a new biome, for example, I spend a lot of time on google looking up pictures to pull ideas from. I grab images for everything from unique patterns that I think would fit to images that convey the atmosphere I am going for.


We are finally getting somewhere useful:

A lot of the random chance is taken out that needs to be put back in but still pretty promising… I have to see how much difference there is just changing the seed but right now that has minimal affect on overall level structure. Though maybe I see it where no one else would.