Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Archipelago (brainstorming for new project)  (Read 1851 times)

Nadaka

  • Bay Watcher
    • View Profile
    • http://www.nadaka.us
Archipelago (brainstorming for new project)
« on: November 12, 2009, 05:09:09 pm »

After I wrap up a few things, I will soon be starting a new programming project.

It is tentatively designated "Archipelago". Eventually I would like to see it be a "dwarflike" procedurally generated world simulator. Anyway, because I am not quite ready to sit down and code yet, right now I am looking for any kind of feedback. Feel free to ask any questions, make any suggestions, etc.

Due to the type of terrain I want to generate, most procedural terrain generation methods won't work. Both Perlin Noise and Diamond Square are great for representing regions of continents with mountain ranges, possibly a shore along one side or a central sea. But they don't make good archipelagos. I need a system that can reliably generate the kind of terrain as the carribean, southeast asia/pacifica or the canadian arctic. Lots of islands, tightly tightly grouped with sometimes vast empty spaces between the groups.

I could use an approach that places islands randomly, but I suspect that it will provide insufficient grouping. Instead I am thinking of using Diamond Square to produce a probability map for island locations and then generating the islands in a second step, or applying a adjustment to the height map to generate individual islands. One potential problem with this method is that it could be difficult to get smooth transitions between regions, particularly where islands are adjacent or merging.

Mapping
Global map generation (to region detail)
regional map generation (to site detail)
close map generation (to tile detail)
apply biomes

Interface
customize (allow raw like customization)
export (create "saves" and image exports)
Explore (navigate archipeligo as a ship, flier or walker)

Simulation
civs settle new islands, trade, war, merge, split

Game
extend explore option to represent a civ member to explore world in roguelike way.
etc.
Logged
Take me out to the black, tell them I ain't comin' back...
I don't care cause I'm still free, you can't take the sky from me...

I turned myself into a monster, to fight against the monsters of the world.

Virex

  • Bay Watcher
  • Subjects interest attracted. Annalyses pending...
    • View Profile
Re: Archipelago (brainstorming for new project)
« Reply #1 on: November 12, 2009, 05:43:10 pm »

A better way would be to take a perlin function and cranck the contrast of that up to a high level. Then use that as a mask for the real function that makes the islands. That way you'll get areas where there are no islands (because the mask is black there) and areas with high amounts of islands (where the mask is white)
Logged

Armok

  • Bay Watcher
  • God of Blood
    • View Profile
Re: Archipelago (brainstorming for new project)
« Reply #2 on: November 12, 2009, 05:44:45 pm »

I think you need to do a Diamond Square, then displace it with another Diamond Square so you get thos creased edges mountains and deep sea valies tend to form. then apply a mapping like...
0.0 -> 0.0
0.25 -> 0.33
0.4 -> 0.5
0.45 -> 0.8
0.5 -> 1.0
0.55 -> 0.8
 0.6 -> 0.5
 0.75 -> 0.33
 1.0 -> 0.0
Are some random samples because i forgot what the curve is called. the mid range values migth be adjusted to make good continente-related fetures if you want that.

Anywyas, sea level is around 0.99 or something, close to 1 anyways. Apply loads of erosion to anything above sea level, phehaps one pass made to simulate rain and rivers, then one to simulate waves. under water you apply a lite erosion, mostly smoothing.
Then, this is the impostnant part, simulate reef building, read up on it. Then you mgith want to do some more eroasion.
YOu migth also experiment with doing the diferent kinds of erosion and reef building at the same time, andalso with gradualy incresing or decreasing sea level in varisu ways.

If you want more detailed info one any of these steps, just ask me.
Logged
So says Armok, God of blood.
Sszsszssoo...
Sszsszssaaayysss...
III...

Outcast Orange

  • Bay Watcher
  • [SOMETIMES_SQUID]
    • View Profile
    • The Outcast Orange
Re: Archipelago (brainstorming for new project)
« Reply #3 on: November 12, 2009, 08:06:17 pm »

I'd just use standard map making, then raise the sea level to where only the tips are jutting out.
Don't be afraid to create your own procedures, they are fun to figure out.

It seems Bay12 has quite the collection of programmers lying around.
I look forward to the results of everyone's work and dreams.
Logged
[7:53:55 PM] Armok, why did you demand that I don't eat you?
[7:54:34 PM] [Armok]: woooooo

Burried Houses - Platform Explorer Demo H - Cloud Scream

Nadaka

  • Bay Watcher
    • View Profile
    • http://www.nadaka.us
Re: Archipelago (brainstorming for new project)
« Reply #4 on: November 12, 2009, 10:53:54 pm »

I am probably going to try a couple variations and see what kind of results I get.
Logged
Take me out to the black, tell them I ain't comin' back...
I don't care cause I'm still free, you can't take the sky from me...

I turned myself into a monster, to fight against the monsters of the world.

Bricks

  • Bay Watcher
  • Because you never need one brick.
    • View Profile
Re: Archipelago (brainstorming for new project)
« Reply #5 on: November 13, 2009, 01:21:46 pm »

I propose you instead name your project "Slartibartfast."

As a totally hypothetical alternative, that would need testing and refinement to be implemented:
1) Use a traditional method to create a smooth two-state map.  This has the obvious issue of never creating the point bits of land that you want.
2) Create another map like in step 1.
3) Create a third map, this one totally random (but still two-state).  This will be the final map.
4) For your final map, use some sort of totalistic system that looks at all three maps to decide which state it should be in.  It wouldn't be able to change the state of the first two maps.  This way, it should be able to stabilize at something that looks smooth in 3D, but on the actual map, is pointy and fun.

You could expand this so that the reference maps created represent certain artifacts/geological structures, like peaks and troughs.  Who knows, it might look terribly ugly, or it might just look as smooth and boring as always.  I might try it myself, I need a few map generator thingees.
Logged
EMPATHY - being able to feel other peoples' stuff.

Virex

  • Bay Watcher
  • Subjects interest attracted. Annalyses pending...
    • View Profile
Re: Archipelago (brainstorming for new project)
« Reply #6 on: November 13, 2009, 04:21:26 pm »

you could try Terragen or Terragen 2, they both do a pretty good job of rendering geological structures in 3D.
Logged

Nadaka

  • Bay Watcher
    • View Profile
    • http://www.nadaka.us
Re: Archipelago (brainstorming for new project)
« Reply #7 on: December 31, 2009, 01:00:26 am »

you could try Terragen or Terragen 2, they both do a pretty good job of rendering geological structures in 3D.

I have looked at them. But they are only useful for rendering images, not for use in a simulation/game engine.

Anyway, I have made progress on the project I need to finish before I code for this, again I hope to get started soonish. Its actually been very hard to find time to make progress on anything between work and fiance related time sinks. With any luck, I can finish it within a week and get started on this thing.

I am pretty sure I can get away with a simple algorithm if I keep my islands small and sparse. But I would like to reserve the option for larger islands.

My current thinking is to use a standard diamond square terrain generation algorithm for the world.
Then flood until all map edges are water. This should leave me with a small number of large islands for those without their see legs, yar! I could possibly also cut off some of the deeper parts of the map by stating they are "abyssal", such areas would be incapable of generating islands, but monsters from the depths could rise to threaten ships passing through the area.

Then generate another "height map" that represents the probability of special features. The X,Y coordinates plus the worlds random seed are fed into the RNG and if the value is in the right range based on its "height" a feature will be placed. When a generated special feature lands in the ocean, it generates an island or subsurface site of "interest", when it lands on land it generates something else (a mountain, or a karst topography cave system perhaps?). Adjacent islands would merge to form slightly larger islands. This probability map would help for island groups and chains, and with some tweeking would still allow for open ocean.

Addendum. Done some world gen plotting despite not finishing my other project. I realize just how overly ambitious my plans for world size were... I would have been generating a world with roughly 5 times the surface area of earth... I may need to scale back a little.
« Last Edit: December 31, 2009, 11:52:00 pm by Nadaka »
Logged
Take me out to the black, tell them I ain't comin' back...
I don't care cause I'm still free, you can't take the sky from me...

I turned myself into a monster, to fight against the monsters of the world.

Ampersand

  • Bay Watcher
    • View Profile
Re: Archipelago (brainstorming for new project)
« Reply #8 on: January 02, 2010, 03:12:59 pm »

You can use them to export height maps.
Logged
!!&!!