Random map generator

Object templates are not random and never will be, they are terrain-dependent.

I wrote allowed terrains in them all. But any of them still not appearing.

PS Templates for original object (subterranean gate) I can’t use - their information is incomplete in json (it’s taken from original config txt files).
If someone is to dump objects settings to json, it will be cool.

OK, I managed to make new mines appearances (I had to make all templates for standard mines and all terrains from scrath, and then added new templates).
So I will do with Subterranean Gate.

I must admit, that map objects configuration scheme is genieous. Ivan really did it great. I only hope it will not be very big changed in future.

UPD And looks now it’s time to start thinking about map editor…

I’ve added a few subobjects with several templates to core:cactus/core:crater.
For example, i made “pumpkin” object to “core:cactus”. And now RMG generates REALLY LOT of pumpkins everywhere (they are 1-square big). Same for crater subobjects.

I tried to configure “rmg” section (set “zoneLimit” to some number, and rarity to 50-100. But seems it has no effect at all - these objects still placed in large numbers.
Is it a bug?
Even it’s decorations, i still think it’s good to allow to set limited “zoneLimit” for them.

Warmonger, can you explain me this issue?

And another theme to think of.
Since there RMG can generate any sizes of maps, we must talk about this.
How can be impelented using other sizes of maps?

  1. Must be they added through table, and in which format?
    Like “wxl” for 252x144, “xxl” for 252x144, and so on?
  2. Or RMG template format must be changed to directly input sizes of maps? And how selection of map sizes can be made in RMG dialog in game?
  3. Or RMG can be made like separate utility, to allow generation of any sizes in independent interface? Or incorporated into Map Editor?

There is no zone limit for decorative objects and overall algorithm is simplest possible. I plan to implement obstacle sets as explained here.

I think it’s enough if we used HoTA interface and map sizes for now.

So it will be properties of objects, which object id/sub id decorations to use with current object?

You mean only XXL added like they did? OK. Maybe when map editor is ready, it can be allowed to generate any sizes.

BTW how large maps you are planning to generate? If larger than about 1000x1000 then it is nearly impossible by “technical” reasons.

1000x1000 will be cool:-)
The problem now, that map sizes are coded as strings like “xl” in VCMI. If we to add new sizes, it either will be coding new signings, or walk to use numbers of sizes.

I mean “standart sizes” at least, like 252x252, 512x512. 1024x1024 will be cool (if computer will be fast enough and will have enough memory).

By the way, is is will be possible in future to generate map with only 1 player?
And place victory condition to take some distant town?

Looks like I found issue:
github.com/vcmi/vcmi/blob/afaf7 … erator.cpp

359 							auto gate1 = new CGTeleport; 
360 							gate1->ID = Obj::SUBTERRANEAN_GATE; 
361 							gate1->subID = 0; 

That’s why templates don’t help - RMG places only subid = 0 object.

It is done on purpose for most of objects, since only objects with subID = 0 exist in basic game.

Most of objects I now adding new subobjects work well:-)
So far only boats and subterranean gates gave me no opportunity to add appearances.

Is there is a way to generate sea zones by RMG?
I found no answer in Wiki.

Possibility to create larger maps is definitely splendid idea, however as you guys said, creating such maps would be resource consuming. For example I managed yesterday to create some big (I mean really big) maps:
300x300 tiles (unfortunately I forgot to measure the time of generation, but it was somewhere about 10 minutes or less),
350x350 tiles - generation time for this map was 20 minutes,
400x400 tiles - here the time was little longer - 40 minutes, and finally
500x500 tiles - this map generating was really time consuming - 2 hours 10 minutes.

As I noticed about memory usage, it’s not really such big (few hundreds of MBytes).
BTW. I include the generated maps (or rather I should call it saves, because maps are not supported yet), so everyone who would like to see these maps can download them.
RMG logs [500x500 tiles].rar (110 KB)
Random map [500x500 tiles].rar (2.91 MB)
Random map [400x400 tiles].rar (1.96 MB)
Random map [350x350 tiles].rar (1.6 MB)
Random map [300x300 tiles].rar (1.32 MB)

So map for 1000x1000 tiles will take a day to generate :mrgreen:

This is what I mean “nearly impossible”

And a year to complete :stuck_out_tongue:

Did you modified sources (or changed size of map in EXE by hex-editor?
Can you share also modified EXE?
I will play and try to create RMG template for big sizes of maps :mrgreen:

Well, every time when I created random map I had to have precompiled binaries, because option to change random map size to any you want to generate in runtime is not implemented yet. I just had to change the two lines in lib\rmg\CMapGenOptions.cpp:

void CMapGenOptions::finalize(CRandomGenerator & rand)
{
   ...
   //setHeight(20);
   //setWidth(50);
}

Fortunately there already was a clue left, so I could use it. If you want to create such a big maps then I think it will be better if you would try to do it yourself, because you would work on already fixed sizes of RGM, as it is on the code showed above.