Kepler452b Coming 2020

August 4th, 2020 Update: v1.0.0 Release Official release page is here. You can submit bugs or request features here. Downloads & Links Windows Download Mac Download Linux Snapfile Download Linux App Image Download Screenshots ...

December 3, 2019 · 2 min

Building a Modern Roguelike in 2019

At numerous times I’ve created demos trying to figure out how to merge a traditional roguelike into a FPS without sacrificing it’s roots. Here’s an article I made in 2017. Unlike many others I don’t feel like just random maps makes a roguelike, I’ve even gone so far as saying no FPS is a roguelike. In this experiment I’ve tried to merge those ascii characters into the map itself and dropped the textures. The code can be executed and ran or viewed in its entirety on Github here. ...

November 13, 2019 · 1 min

Meander Algorithm

The meander algorithm is a combination of using mazes to allow a meandering with bresenhams line. Below you can see the actual algorithm in simplicity. Obviously you could use noise maps to created heighted terrain based on the river to make it look pretty. Choose a starting map edge and ending map edge, acquire the terminal points based on those edges. Usually this would be a random point on those edges. Maybe you’d want to weight it so it’s predominately in the center, or you could restrict it to a certain part. Create Bresenhams line between the terminal points. This is called the pathing vector. Break up the pathing vector into chunks of 9x9 where the pathing vector crosses the center. There may be left-over of the pathing vector. For each chunk, perform a recursive maze generation algorithm on the chunk. Repeat this step until there is a path from the start of the pathing vector within the chunk to the end of the pathing vector in the chunk. A* pathing algorithm can be used for the pathing. Merely use Bresenhams line to wrap up the extraneous pathing vector not covered by chunks, alternatively break up the remaining path into the largest odd number and chunk and process it similarly to the previous part of the algorithm to make it more consistent. Left overs in this optional way would still be filled in with bresenhams line. Recursive Maze Generation: ...

September 4, 2018 · 2 min

Generating Cliffs for 2d Game

Source code available on github here.\n\nA recurring problem in 2d games is how to represent depth. In isometric games this is easily solved but in discretely top-down games it’s harder to solve. After doing a lot of research I fell onto a simple idea: do the best you can insinuating the depth and leave the rest to the imagination. Here’s the algorithm I used to create 2d top-down cliffs: Create a small map of perlin noise and a wide map of perlin noise. Add the two together and give the large map a weight of 3 with the small a weight of 1 and render the result with different breakpoints. This is ref map A. Less than 0.01 on A is deep water ...

July 31, 2018 · 1 min

Generating 2d Rivers

Rivers are really hard to generate for 2d top-down games for multiple reasons: Rivers primarily form based on heightmaps which are hard to display in top-down Displaying fluidity when working with sectors or grid-based rendering can be complicated, bresenham’s line algorithm only goes so far to make things look smooth naturally occurring mechanisms of nature have numerous factors in play that caused them to exist. Simulating all of these factors isn’t reasonable. I was able to make relatively decent 2d rivers using a few techniques. ...

July 11, 2018 · 1 min

Generating Ancient Ruins

While creating algorithms for random continent generation, I came across an old algorithm I had worked with called Coupled Map Lattice. Using that to create a continent was hard but I was able to accomplish it doing layers of filters: generate map with noise between -1 and 1 apply CML using Spatiotemporal Intermittency settings (a = 1.75, ε = 0.6) I found that using something too chaotic didn’t have a noticeable affect compared to just generating noise in general. normalize values to between 0 and 255 apply a gaussian blur normalize values to between 0 and 1 apply slight height restrictions based on distance to center of map ...

May 3, 2018 · 1 min

No FPS is a Roguelike

I’ve struggled with the concept of merging the roguelike turn-based system with a FPS. Having a turn based on when you fully leave a cell makes the monsters seem jumpy which doesn’t make for very nice gameplay. Because I believe turn-based systems are core to roguelikes and first person shooters can’t be turned based in a cohesive way, I’ve dropped the FPS perspective altogether and pulled the camera above the player. ...

March 10, 2017 · 1 min

Pigeon Hole Stepping

For 7DRL this year I developed a new map generation algorithm called Pigeon Hole Stepping. Fill the map with walls This map generation algorithm relies on negative building techniques. This concept will make more sense as the later steps are explained. Dig Hallways Essentially, we can assume that hallways that are parallel to each other are at least the length of a single room and up to two rooms apart in distance. Because of this assumption, we can make a random walker that will move around with this restriction in mind until map is filled completely. ...

March 8, 2016 · 2 min

Automata Generated Caverns

Randomly generated dungeons are a lot of fun to program, but sometimes they can be pretty difficult to originally wrap your head around. For this years 7DRL I added Automata Generated Caverns as one of the algorithms I wanted to figure out completely. You can read more specifically on the theory here.

November 13, 2015 · 1 min