Jump to content

Random map: Volcanic Island


nani
 Share

Recommended Posts

Very good! Some possible enhancements:
Irregularities help break up patterns

  • changing the placer:
    • one of those two center placers was more irregular than the other (but also slower)
  • additional painting, see attached screenshot

Possible feature:

  • Purple = paths through the forest. (Might be unfeasible with the current tileclasses / grid resolution. The paths might remove too much area from the forest.)

volcanic_islands.png

General procedure to making a great map even greater:

  • Inspiration::
    • Open up a websearch for images and look for pictures of nature in the area you want to portray.
  • Find all actors
    • Start atlas, generate a map, set the filter to display all actors, go through the entire list and pick every actor that somehow fits to the map
  • Find all textures:
    • Browse through all textures of all biomes and see what could be used. For example for MultiPainters (making texture patterns more complex).
  • Test environment settings:
    • Enable all graphics settings, start atlas, generate a map, browse through the few skysets, water shapes, make sure fog isn't annoying.

Mapgen-Performance:

  • Doing a logger call after every statement minimizes later effort to locate possible bottlenecks. That output was logged to mainlog.html?

Ingame-Performance:

  • Make sure the trees aren't too dense, too many of them are bad for both rendering and simulation performance.

Title and Description:

  • 0 A.D. should contain only maps related to that specific geography and time.
  • Can find authentic locations by doing a websearch or asking forum users. I suppose it's a fictive area of greece, do they have volcanic islands at india? Apparently so:https://en.wikipedia.org/wiki/List_of_volcanoes_in_India.
  • Maps outside of or agnostic of historic and geographic context may be tolerable or justifiable on a per-case basis. But we want to create a product that is directed towards this timeframe and geographic frame of 0 A.D.. So it is, and must be considered a systematic mistake to first create the map and then doing the research on the context. If context turns out to be a wrong idea, then the entire work might have been wasted (at least if the objective was to have it in vanilla). Keep this in mind as soon as you get the idea for a map the very first time, and especially before you spend a lot of time on the code.

On promotional screenshots:

  • Take promotional screenshots with all graphics settings enabled.
  • In case this won't turn out to be a bandwidth issue, promotional screenshots can be taken using the 6400*4800 resolution bmp screenshot hotkey, and convert it to a 90% quality JPEG (10mb). (see https://play0ad.com/new-release-0-a-d-alpha-23-ken-wood/ for example)

(Disclaimer: Not a request for changes, not a recommendation, but the bare information on the conclusions I have come to after lessons learnt from mistakes and success of random maps, free to redistribute and modify under the same terms.)

  • Like 2
Link to comment
Share on other sites

The forests end a bit abruptly, the grass transition wasn't so bad.

I suspect there should be rocks, cliff actors and little bumps at the beaches?

Also suspecting that the map has too much area of water. At least the outer circle of the island won't be of much relevance (unless there are some attractions like islands or valuable resources) and thus players would never travel there. Then one can use more of the map for the island. (Other than the purpose maximization of the tiles, there is also the expectation of playable map area from other maps. "Normal" mapsize is large on one kind of map and too small of the other kind of map.)

  • Like 2
Link to comment
Share on other sites

1 hour ago, elexis said:

The forests end a bit abruptly, the grass transition wasn't so bad.

I suspect there should be rocks, cliff actors and little bumps at the beaches?

I was looking for this kind of look

1479907043483.jpg

image ref: http://www.traveller.com.au/top-10-tropical-cruise-islands-gr4my5

1 hour ago, elexis said:

Also suspecting that the map has too much area of water.

Part of what defines an island as such is having water around it, downplaying it seems like losing part of the charm of the map.

 

1 hour ago, elexis said:

At least the outer circle of the island won't be of much relevance (unless there are some attractions like islands or valuable resources) and thus players would never travel there.

My take is that players will have the possibility of having naval battles or attack from the ground.

 

1 hour ago, elexis said:

there is also the expectation of playable map area from other maps. "Normal" mapsize is large on one kind of map and too small of the other kind of map.)

Not much can be done, the volcano must be there and will take space from the map yes or yes.

Edited by nani
  • Like 1
Link to comment
Share on other sites

1 hour ago, nani said:

I was looking for this kind of look 

1 hour ago, nani said:

Part of what defines an island as such is having water around it, downplaying it seems like losing part of the charm of the map. 

Maybe some areas of grass could be carved out of some spots of forest to allow for different beach transitions and more variety. Perhaps the island could be more irregular to allow for more interesting shoreline shapes like the nice crescent cove in that photo. Some of this could be directly added into the island shape, and some could be implemented in offshore sandbars or other features. Imagine building a tower on a coastal rock. It's up to you. It's a nice map either way. :)

Be careful with the number of trees and the amount of smoke. Back when I had a graphics card installed and I loaded the  current gray volcano map, I could directly control the fan speed by just moving the camera on and off of the smoke particles. :P

  • Like 1
  • Haha 1
Link to comment
Share on other sites

Map area:

"maxRadius": () => fractionToTiles(0.5 * 0.65),

0.10 -> 0.1

    new ClumpPlacer(diskArea(volcano.maxRadius * 0.3), 0.10, 0.005, Infinity, volcano.position),

-> If you move these constants to the top, then you'll get an overview of where the different areas begin, so makes it easy to change things in retrospect. For example:

widthVolcano = 20%

widthForest = 20%

widthBeach = 10%

widthCoral = 10%

widthWater = 40%

As I don't have the exact numbers (one could also count with a wireframe mode enabled view), I can't tell exactly how much area is usable, but I suspect that if we look at only one dimension (line from center to radius), it's somewhere like 20% volcano, 30% land, 20% water that is used for naval warfare and 30% water that is never moved to unless someone wants to hide the last woman.

But since the area is square, the outer 20% of water span much more maparea than the inner 20% (volcano) of that line.

Basically I presume that naval battle will occur approximately only within the area of corrals, and the rest will not be played so much.

What mapsize is that screenshot? Large?

17 hours ago, nani said:

screenshot0002.thumb.png.71d8ff5ca2ba3fd7b7bcdd70db8da0f3.png

The shape of the volcano is very appealing.

Impassable entities:

I suspect units won't be able to chop the trees at the top of the volcano. If that's actually the case, or if you don't know and don't shy away from adding protection, you can add a SlopeConstraint to filter to steep terrain. You can place visualactors instead of entities on the impassable terrain if visually needed or useful.

Deprecated functions:

Notice createDecoration, createMines rely on a defect, deprecated function. The broken function can only be fixed if all maps don't rely on the defect anymore to achieve the desired entity distribution. Fixing the defect means having to do the entity distribution for all maps with calls to these functions  from scratch again. So new maps shouldn't introduce calls to these functions:  #4695.

Other than that, some of these functions (IIRC createFood, createMines,...) are not much more than an alias to createObjectGroups with (hidden and hardcoded, sometimes undesirable) values. So I came to the conclusion that these aliases bring more harm than good and should be removed in favor of calling createObjectGroups directly (#4989). I can only assume that these functions  were made for the purposes of either fabricating maps at the cost of waiving artistic freedom and consideration or based on the false, or at least not universally true presumption that entities are placed the same way on all maps.

  • Like 2
Link to comment
Share on other sites

I think the map looks gorgeous... Nice work @nani!

I also think that about half of the outer most ring of water is essentially wasted space that could be better used to recreate the much larger grassy transition between the forrest and the beach, like in your first post, but with more jagged edges like in your second post. It just feels a bit weird to build a town on the beach, and the Iberian starting walls and those mines extending into the sea look and feel a lot like a bug. There would still be more than enough space for large naval battles.  

Either way, the map looks absolutely lovely :) 

  • Like 2
Link to comment
Share on other sites

2 hours ago, elexis said:

"maxRadius": () => fractionToTiles(0.5 * 0.65),

0.10 -> 0.1

    new ClumpPlacer(diskArea(volcano.maxRadius * 0.3), 0.10, 0.005, Infinity, volcano.position),

-> If you move these constants to the top, then you'll get an overview of where the different areas begin, so makes it easy to change things in retrospect. For example:

widthVolcano = 20%

widthForest = 20%

widthBeach = 10%

widthCoral = 10%

widthWater = 40%

As I don't have the exact numbers (one could also count with a wireframe mode enabled view), I can't tell exactly how much area is usable, but I suspect that if we look at only one dimension (line from center to radius), it's somewhere like 20% volcano, 30% land, 20% water that is used for naval warfare and 30% water that is never moved to unless someone wants to hide the last woman.

But since the area is square, the outer 20% of water span much more maparea than the inner 20% (volcano) of that line.

Basically I presume that naval battle will occur approximately only within the area of corrals, and the rest will not be played so much.

What mapsize is that screenshot? Large?

Very true, true I started with that in mind but somewhere down the line of eating cookies and typing furiously I the spaghetti code slipped through the cracks and made it into the map code. The map in the image is large size.

 

2 hours ago, elexis said:

Impassable entities:

I suspect units won't be able to chop the trees at the top of the volcano. If that's actually the case, or if you don't know and don't shy away from adding protection, you can add a SlopeConstraint to filter to steep terrain. You can place visualactors instead of entities on the impassable terrain if visually needed or useful.

Tested once. No slope constraint but all trees should be reachable (maybe some at the most top of the volcano no but anyway ....).

2 hours ago, elexis said:

Deprecated functions:

But those functions with deprecated code are very handy for repetitive placers like mines, stone, food, ...
 

Link to comment
Share on other sites

53 minutes ago, nani said:

But those functions with deprecated code are very handy for repetitive placers like mines, stone, food

Why are they handy?

Because they have 2-3 less arguments than createObjectGroups and thus benefit from information hiding?

I think that would be a fallacy, because the hidden hardcoded magic numbers are not universally true for all maps but may vary a lot. So hiding these values only makes it harder to determine if the values are appropriate.

(The other aspect is that the name "createMines", "createFood", "createForests" are nice to read, than 3 times "createObjectGroups", but that doesn't imply that this label has to be present in the name of the called function. Above every createObjectGroups statement should be one logger call that stores this information.)

49 minutes ago, nani said:

Tested once.

One can obtain this information for all tiles in one picture by painting the constraints in very noticeable colors (and possibly not placing any entities):

Quote

createArea(

    new MapAreaPlacer(),

    new TerrainPainter("purple"),

    yourMountainTopConstraints);

 

createArea(

    new MapAreaPlacer(),

    new TerrainPainter("green"),

    new SlopeConstraint(0, 2));

(We should put such practices into a Wiki Random Map Guideline, but one has to be in the rmgen rabbithole to recall all of these practices.)

1 hour ago, nani said:

The map in the image is large size. 

Guess I need to compile the game (want to know the playable area vs. gamesetup player intent area).

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

On 4/19/2019 at 3:34 AM, nani said:

Btw. Sand footprints would be awesome :D , but not implemented :( 

Wait, I really think it is. But it is very faint and disappears quickly. Like ship wakes. Or is this some sort of Mandela effect?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...