View Issue Details

IDProjectCategoryLast Update
0003628AI War 1 / ClassicSuggestion - Campaign Management And Setup - Map Styles And GenerationMay 25, 2013 7:02 pm
ReporterMrBlarney Assigned To 
Status newResolutionopen 
Summary0003628: New Map Style: Gabriel Graph
DescriptionThere have been a few suggestions on the Idea Tracker for ways to generate or reorganize random maps such that there are no overlaps (0000917, 0002187, 0003151), and as a new player, I too am of the mind that too many overlaps are aesthetically difficult to read. However, the currently-implemented map types that constrain the network to have no overlaps typically also lack a large amount of connectivity between planets (X, Maze) or are regular in design (Grid, Crosshatch, and to a certain extent, Concentric).

The Lattice map style is most of the way towards clean maps with no overlaps, and Issue 0001707 also puts forth a great suggestion for a Cluster map style. I wish to propose another alternate map style as a cousin to these types based on the Gabriel graph. In a Gabriel graph, nodes are connected if the circle formed by using the line connecting the nodes as its diameter contains no other nodes. An example of this can be found on the topic's Wikipedia page. See attached files for some examples.

The result is a map that has a lot of interesting connections between planets, but is easy to read. Compared to typical Lattice maps, the Gabriel networks will remove intersections and will be more regular in nature. Using random node placement, Gabriel graphs will be more irregular than the Concentric maps, but take a lot more effort to go cross-galaxy. Generating nodes randomly in multiple clusters will provide an effect similar to the proposed Cluster style.

Alternative approaches include adding or removing random links after creation or cleaning up the shortest or longest links created. One can also use the Delaunay Triangulation for map generation. The Gabriel graph is a subgraph of the Delaunay Triangulation, which also features no intersections, but is looser on the criteria for links to be made, resulting in a much more connected network.
TagsNo tags attached.
Internal Weight

Activities

Ranakastrasz

Jul 10, 2011 3:45 pm

reporter   ~0012688

Last edited: Jul 11, 2011 11:41 am

looks aplicable, a thing I note about this setup is that no dead-ends exist, or even can exist afaik.

edit: Yes, I see how that can occur, and how it is unlikely. That removes my only concern about the layout, I am all for it.

Toll

Jul 10, 2011 7:11 pm

reporter   ~0012689

Judging by the graph on its Wiki-page, it should be possible (but unlikely) for dead-ends to exist. By removing the node just right of the most bottom-left node, it should become a dead-end. Unless I misunderstood the implementation of the graph. All in all though, I'm definitely in favor of this map-type.

MrBlarney

Jul 11, 2011 12:01 am

reporter  

gabrieltest_1.png (19,165 bytes)   
gabrieltest_1.png (19,165 bytes)   

MrBlarney

Jul 11, 2011 12:01 am

reporter  

gabrieltest_2.png (20,002 bytes)   
gabrieltest_2.png (20,002 bytes)   

MrBlarney

Jul 11, 2011 12:12 am

reporter   ~0012690

Indeed, it is possible to have dead ends in a Gabriel Graph, though normally only on the periphery of the clusters. I wrote up a short MATLAB script to generate some random graphs and I've posted a couple examples with 80 nodes. You can see that straight random generation creates highly-connected maps without intersections, though without game experience I can't say what the in-game implications are.

keith.lamothe

Jul 11, 2011 8:59 am

administrator   ~0012691

I was revving up on yet another why-we-can't-do-graph-untangling post when I realized that you were just proposing another map style, which is definitely fair game :) This one looks cool (as does clusters), I'd certainly like to give it a shot.

Anyway:
- New map styles only get added in new expansions, so it will be a while.
- Can someone point me to a description of how to build these maps?
- Would there be any copyright issues if we called this the "Gabriel" map type in-game? Would there be any copyright issues with using the method in general?

Thanks!

Toll

Jul 11, 2011 9:05 am

reporter   ~0012692

I think http://en.wikipedia.org/wiki/Gabriel_graph should answer all those questions, Keith. From what I gathered, it should be free game to call it a Gabriel map, but I can't say for sure.

Zephilinox

Jul 13, 2011 3:09 am

reporter   ~0012702

In my opinion, the more map types the better, everyone can pick a layout that suits them, though this does seem more like a replacement of the Simple/Realistic layout to make it more visually pleasing (which I understand is the point) rather than a new one in itself.

MrBlarney

Jul 13, 2011 1:27 pm

reporter   ~0012723

Well, the Gabriel graph differs from Simple, Realistic, and Lattice in that the connections it makes are regular throughout the map, limiting the number of bottlenecks and giving a highly-connected system. And unlike Grid and Crosshatch, you have randomness to provide more variety in generation. I think that these two effects distinguish the Gabriel graph enough, and I'd love to see it in a future expansion along with Cluster. (I'd also like to see a cleanup of the Tree, Spokes, Snake, and Vines generation algorithms so that they don't look as deceptively complex as they currently do, but that's a whole 'nother issue.)

To answer Keith's questions, I don't think there'll be a problem with using the Gabriel graph name. I wanted to submit this suggestion with a different name, leaving Gabriel graph in the description (much like how the Maze styles cite their generation algorithms), but couldn't think of a catchy, descriptive title.

As for generation, even the slowest reasonable algorithms should work well, since there are at most 120 nodes to compute. If you have N nodes, generate a NxN squared distance matrix, where each cell has the squared distance between the row and column nodes. To check if edge A-B is in the Gabriel graph, sum rows A and B. If all the sums are greater than the value of cell A-B (except for the columns that correspond to A or B, which will equal that value), then edge A-B is in the Gabriel graph; otherwise not. It may not be the fastest algorithm, but it should be good enough.

LintMan

May 25, 2013 7:02 pm

reporter   ~0032628

Bump for this, which never made it past "new", ahead of the upcoming expansion. As Zephilinox said above, the more map types, the better.

Issue History

Date Modified Username Field Change
Jul 10, 2011 2:36 pm MrBlarney New Issue
Jul 10, 2011 3:45 pm Ranakastrasz Note Added: 0012688
Jul 10, 2011 7:11 pm Toll Note Added: 0012689
Jul 11, 2011 12:00 am MrBlarney Description Updated
Jul 11, 2011 12:01 am MrBlarney File Added: gabrieltest_1.png
Jul 11, 2011 12:01 am MrBlarney File Added: gabrieltest_2.png
Jul 11, 2011 12:02 am MrBlarney Description Updated
Jul 11, 2011 12:12 am MrBlarney Note Added: 0012690
Jul 11, 2011 8:59 am keith.lamothe Note Added: 0012691
Jul 11, 2011 9:05 am Toll Note Added: 0012692
Jul 11, 2011 11:41 am Ranakastrasz Note Edited: 0012688
Jul 13, 2011 3:09 am Zephilinox Note Added: 0012702
Jul 13, 2011 1:27 pm MrBlarney Note Added: 0012723
May 25, 2013 7:02 pm LintMan Note Added: 0032628