View Full Version : Hello from Canada!

05-31-2011, 07:00 PM
Hey all, I came across this forum while doing some research regarding map generation. I've started off writing a library (in CSharp) for map generation as a tool for use in Roguelike games. I don't have any fantastical expectations, but it's been a fun project thus far.

I was inspired by the Gamasutra's Making of Dwarf Fortress interview w/ Tarn Adams (http://www.gamasutra.com/view/feature/3549/interview_the_making_of_dwarf_.php) and started looking into Midpoint Displacement (which he mentions directly... my first exposure to procedural terrain generation), among a few other iterative techniques. I had forgotten about the project for a year or more, but recently picked it up, and was able to overcome a few of the hurdles I had found myself stuck at (I've been a Software Engineer now for a couple of years, and when I was first working on this project, I had very little experience; just a desire to craft a little world of my own. The experience from work has helped me immensely.)

So, now I'm generating random terrain (both through MPD and a faultline algorithm found at http://www.lighthouse3d.com/opengl/terrain/index.php?impdetails - which I prefer greatly over the MPD I started with... much more natural looking outcomes, it seems, with straight lines for artifacts rather than full-on squares) I've implemented a terrain generation bit for each of the coordinates generated from the "World" generation step. Presumably, this will happen upon visiting each coordinate (what I've termed a "Region" at this point...) though right now, I'm generating them for all of the Regions in the World, and spitting out a bmp so I can view my handy work.

On the bill is:
- an interface to view all this stuff, as opposed to generating the bmps, and viewing them out of band... I started out, expecting to use the libtcod library (if anyone hasn't heard of/seen it, it's a pretty sweet ascii console emulation library... check youtube for some sweet demos) and to do everything in ascii, but I really like the look of the bitmaps, so perhaps I'll bend knee, and, at least for the debuggery, use some graphics. I don't have much experience there, so I may come crawling back here for some help in that regard if I have problems. I'm more of a putCh(6,9,'@') kinda guy, generally speaking, and a lot of the Event-driven .NET stuff boggles the ole' brain a bit... I guess we'll see how that goes.

- Erosion/Rivers. I figure I'll find likely spots for spring to pop up, and also place some glaciers at the convergence of any mountains that arise, and run paths out from them to either in-land low spots, which would fill up, to a maximum height of the source, creating a possibly large lake, or straight out to the oceans, depending on the path that's available. Running water would be permitted to erode the land it's running over to some degree, so that not everything gets stuck in a lake. Haven't hammered out these details yet, but they're nearby on the horizon...

- Temperature/Rainfall grids. Probably similar to those described in the DF interview (ie: for temp, base it on altitude/latitude, rainfall, I think is just a random thing... perhaps a MPD run-through would be good here, as it tends to produce clumps of similar values... anyway, 2d array of 0-100 values...)

- Through the two above mentioned grids, along with the altitude map, I think I could derive some sort of biome information for each region (a la DF...) still a ways off though...

- I'd like to "grow" some settlements along the way, too... while looking into this a little, I came across RedRobes' post on building a city map through economics, and was blown away. It was really something! I hope there has been some progress made on that front, as I was really hoping to see Andy get his Trade on!

Anyway, I didn't realize I was a Cartographer at heart, but, having picked this project back up, I guess I am! It's been really fun. I spend all day at work thinking about what I'll implement when I get home. I've attached a pic of one of the Worlds generated via Faultline Displacement, so you can get an idea what I've got on the go. It's been run through a box blur algorithm (i think just one pass... though possibly three. I can't remember now, this was an older World, but one that looked particularly sweet :) ) which greatly increased the realism of the coastlines. I'm really quite happy with what I've got going so far, and am really looking forward to getting more out of/putting more into my little world. Hope you guys like it!


06-01-2011, 01:09 AM
Be careful with this sort of thing. It can suck endless hours of your life away.

Steel General
06-01-2011, 07:20 AM
Welcome Aboard!

06-06-2011, 02:17 AM
Welcome to the Guild!