Polishing the Random Maps: Archipelago, Ardennes Forest, Atlas Mountains, Cantabrian Highlands
This was SVN commit r13618.
This commit is contained in:
parent
477855fbf5
commit
f3823847b0
@ -57,9 +57,9 @@ log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
|
@ -27,8 +27,8 @@ log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
|
||||
const tGrass = ["new_alpine_grass_b", "new_alpine_grass_c", "new_alpine_grass_d"];
|
||||
const tPineForestFloor = "temp_forestfloor_pine";
|
||||
@ -537,7 +537,7 @@ for (var i = 0; i < sizes.length; i++)
|
||||
createAreas(
|
||||
placer,
|
||||
painter,
|
||||
avoidClasses(clForest, 0, clHill, 2, clPlayer, 5),
|
||||
avoidClasses(clForest, 1, clHill, 2, clPlayer, 5),
|
||||
scaleByMapSize(4, 12)
|
||||
);
|
||||
}
|
||||
@ -607,6 +607,17 @@ createObjectGroupsByAreas(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
|
||||
randInt(3, 12) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating decorative props...");
|
||||
group = new SimpleGroup(
|
||||
[
|
||||
|
@ -1,15 +1,16 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["medit_rocks_grass", "medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
|
||||
const tGrassPForest = "medit_grass_field_dry";
|
||||
const tGrassDForest = "medit_grass_field_dry";
|
||||
const tGrass = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
|
||||
const tForestFloor = "medit_grass_field_dry";
|
||||
const tCliff = "medit_cliff_italia";
|
||||
const tHill = ["medit_rocks_grass", "medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
|
||||
const tGrassDirt = "medit_rocks_grass";
|
||||
const tDirt = "medit_dirt";
|
||||
const tRoad = "medit_city_tile";
|
||||
const tRoadWild = "medit_city_tile";
|
||||
const tGrassPatch = "medit_grass_shrubs";
|
||||
const tGrass2 = "medit_rocks_grass_shrubs";
|
||||
const tGrassPatch = "medit_grass_wild";
|
||||
const tShoreBlend = "medit_sand";
|
||||
const tShore = "medit_sand";
|
||||
const tWater = "medit_sand";
|
||||
@ -42,8 +43,8 @@ const aAleppoPine = "actor|flora/trees/aleppo_pine.xml";
|
||||
|
||||
|
||||
// terrain + entity (for painting)
|
||||
const pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oCarob, tGrassDForest];
|
||||
const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
|
||||
const pForest1 = [tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor];
|
||||
const pForest2 = [tForestFloor + TERRAIN_SEPARATOR + oAleppoPine, tForestFloor];
|
||||
|
||||
const BUILDING_ANGlE = -PI/4;
|
||||
|
||||
@ -53,16 +54,15 @@ log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clWater = createTileClass();
|
||||
var clDirt = createTileClass();
|
||||
var clRock = createTileClass();
|
||||
var clMetal = createTileClass();
|
||||
@ -224,7 +224,7 @@ var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 16, 2);
|
||||
createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clHill)],
|
||||
avoidClasses(clPlayer, 16, clWater, 5, clHill, 10),
|
||||
avoidClasses(clPlayer, 20, clHill, 10),
|
||||
6*scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
@ -239,7 +239,7 @@ elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 20, 2);
|
||||
createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clHill)],
|
||||
avoidClasses(clPlayer, 16, clWater, 5, clHill, 7),
|
||||
avoidClasses(clPlayer, 20, clHill, 7),
|
||||
7*scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
@ -261,8 +261,8 @@ createAreas(
|
||||
RMS.SetProgress(25);
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
const MIN_TREES = 400;
|
||||
const MAX_TREES = 2000;
|
||||
const P_FOREST = 0.7;
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
@ -272,8 +272,8 @@ var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]],
|
||||
[[tGrassPForest, tGrass, pForestP], [tGrassPForest, pForestP]]
|
||||
[[tForestFloor, tGrass, pForest1], [tForestFloor, pForest1]],
|
||||
[[tForestFloor, tGrass, pForest2], [tForestFloor, pForest2]]
|
||||
]; // some variation
|
||||
var size = numForest / (scaleByMapSize(2,8) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
@ -287,7 +287,7 @@ for (var i = 0; i < types.length; ++i)
|
||||
createAreas(
|
||||
placer,
|
||||
[painter, paintClass(clForest)],
|
||||
avoidClasses(clPlayer, 14, clForest, 8, clHill, 1),
|
||||
avoidClasses(clPlayer, 20, clForest, 8, clHill, 1),
|
||||
num
|
||||
);
|
||||
}
|
||||
@ -301,30 +301,33 @@ for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
painter = new LayeredPainter(
|
||||
[tDirt,tDirt], // terrains
|
||||
[1] // widths
|
||||
[tGrassDirt,tDirt], // terrains
|
||||
[2] // widths
|
||||
);
|
||||
createAreas(
|
||||
placer,
|
||||
[painter, paintClass(clDirt)],
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 10),
|
||||
scaleByMapSize(15, 45)
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 10),
|
||||
scaleByMapSize(20, 60)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
var sizes = [scaleByMapSize(3, 32), scaleByMapSize(5, 48), scaleByMapSize(8, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
painter = new TerrainPainter(tGrass);
|
||||
painter = new LayeredPainter(
|
||||
[tGrass2,tGrassPatch], // terrains
|
||||
[1] // widths
|
||||
);
|
||||
createAreas(
|
||||
placer,
|
||||
[painter, paintClass(clGrass)],
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 10, clGrass, 15),
|
||||
scaleByMapSize(15, 45)
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 10, clGrass, 15),
|
||||
scaleByMapSize(20, 60)
|
||||
);
|
||||
}
|
||||
|
||||
@ -334,14 +337,14 @@ log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 9, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 9, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
@ -349,7 +352,7 @@ log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 9, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
@ -363,7 +366,7 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(
|
||||
group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
|
||||
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
@ -377,7 +380,7 @@ group = new SimpleGroup(
|
||||
);
|
||||
createObjectGroups(
|
||||
group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
|
||||
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
@ -390,7 +393,7 @@ group = new SimpleGroup(
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
@ -403,10 +406,21 @@ group = new SimpleGroup(
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
|
||||
randInt(3, 12) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
// create food treasures
|
||||
log("Creating food treasures...");
|
||||
group = new SimpleGroup(
|
||||
@ -442,7 +456,7 @@ for (var i = 0; i < types.length; ++i)
|
||||
true, clForest
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 10, clMetal, 1, clRock, 1, clTreasure, 1),
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 10, clMetal, 1, clRock, 1, clTreasure, 1),
|
||||
num
|
||||
);
|
||||
}
|
||||
@ -450,7 +464,7 @@ for (var i = 0; i < types.length; ++i)
|
||||
// create hill trees
|
||||
log("Creating hill trees...");
|
||||
var types = [aCarob, aAleppoPine]; // some variation
|
||||
var num = floor(3 * numStragglers / types.length);
|
||||
var num = floor(0.5 * numStragglers / types.length);
|
||||
for (var i = 0; i < types.length; ++i)
|
||||
{
|
||||
group = new SimpleGroup(
|
||||
@ -471,7 +485,7 @@ group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 2, clHill, 2, clPlayer, 16, clDirt, 0),
|
||||
avoidClasses(clHill, 2, clPlayer, 16, clDirt, 0),
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
@ -483,7 +497,7 @@ group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 3, clHill, 2, clPlayer, 16, clDirt, 1, clForest, 0),
|
||||
avoidClasses(clHill, 2, clPlayer, 16, clDirt, 1, clForest, 0),
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
@ -495,7 +509,7 @@ group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 1, clHill, 1, clPlayer, 10, clDirt, 1),
|
||||
avoidClasses(clHill, 1, clPlayer, 10, clDirt, 1),
|
||||
scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
|
@ -1,20 +1,21 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["temp_grass_long_b"];
|
||||
const tGrassPForest = "temp_forestfloor_pine";
|
||||
const tGrassDForest = "temp_forestfloor_a";
|
||||
const tCliff = ["temp_cliff_a", "temp_cliff_b"];
|
||||
const tGrassA = "temp_grass_d";
|
||||
const tGrassB = "temp_grass_c";
|
||||
const tGrassC = "temp_grass_clovers_2";
|
||||
const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"];
|
||||
const tGrassPForest = "temp_plants_bog";
|
||||
const tGrassDForest = "temp_plants_bog";
|
||||
const tGrassA = "temp_grass_plants";
|
||||
const tGrassB = "temp_plants_bog";
|
||||
const tGrassC = "temp_mud_a";
|
||||
const tDirt = ["temp_plants_bog", "temp_mud_a"];
|
||||
const tHill = ["temp_highlands", "temp_grass_long_b"];
|
||||
const tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"];
|
||||
const tCliff = ["temp_cliff_a", "temp_cliff_b"];
|
||||
const tRoad = "temp_road";
|
||||
const tRoadWild = "temp_road_overgrown";
|
||||
const tGrassPatch = "temp_grass_plants";
|
||||
const tShoreBlend = "temp_mud_plants";
|
||||
const tShore = "temp_mud_a";
|
||||
const tGrassPatchBlend = "temp_grass_long_b";
|
||||
const tGrassPatch = ["temp_grass_d", "temp_grass_clovers"];
|
||||
const tShoreBlend = "temp_grass_plants";
|
||||
const tShore = "temp_plants_bog";
|
||||
const tWater = "temp_mud_a";
|
||||
|
||||
// gaia entities
|
||||
@ -128,19 +129,19 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create the ramp
|
||||
var rampAngle = playerAngle[i] + PI + randFloat(-PI/8, PI/8);
|
||||
var rampDist = radius;
|
||||
var rampX = round(fx + rampDist * cos(rampAngle));
|
||||
var rampZ = round(fz + rampDist * sin(rampAngle));
|
||||
placer = new ClumpPlacer(100, 0.9, 0.5, 1, rampX, rampZ);
|
||||
var painter = new SmoothElevationPainter(ELEVATION_SET, elevation-6, 5);
|
||||
createArea(placer, painter, null);
|
||||
placer = new ClumpPlacer(75, 0.9, 0.5, 1, rampX, rampZ);
|
||||
painter = new TerrainPainter(tGrass);
|
||||
createArea(placer, painter, null);
|
||||
var rampLength = 15;
|
||||
var rampWidth = 12;
|
||||
var rampX1 = round(fx + (rampDist + rampLength) * cos(rampAngle));
|
||||
var rampZ1 = round(fz + (rampDist + rampLength) * sin(rampAngle));
|
||||
var rampX2 = round(fx + (rampDist - 3) * cos(rampAngle));
|
||||
var rampZ2 = round(fz + (rampDist - 3) * sin(rampAngle));
|
||||
|
||||
createRamp (rampX1, rampZ1, rampX2, rampZ2, 3, 20, rampWidth, 2, tHill, tCliff, clPlayer)
|
||||
|
||||
// create the city patch
|
||||
var cityRadius = radius/3;
|
||||
placer = new ClumpPlacer(PI*cityRadius*cityRadius, 0.6, 0.3, 10, ix, iz);
|
||||
painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
@ -234,7 +235,7 @@ terrainPainter = new LayeredPainter(
|
||||
[tShoreBlend, tShore, tWater], // terrains
|
||||
[1,1] // widths
|
||||
);
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -7, 3);
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -7, 6);
|
||||
var waterAreas = createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clWater)],
|
||||
@ -292,7 +293,7 @@ terrainPainter = new LayeredPainter(
|
||||
[tCliff, tHill], // terrains
|
||||
[2] // widths
|
||||
);
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 12, 2);
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 16, 2);
|
||||
createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clHill)],
|
||||
@ -362,7 +363,10 @@ var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
painter = new TerrainPainter(tGrassPatch);
|
||||
painter = new LayeredPainter(
|
||||
[tGrassPatchBlend, tGrassPatch], // terrains
|
||||
[1] // widths
|
||||
);
|
||||
createAreas(
|
||||
placer,
|
||||
painter,
|
||||
@ -370,7 +374,7 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(15, 45)
|
||||
);
|
||||
}
|
||||
|
||||
tGrassPatchBlend
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
@ -450,6 +454,17 @@ createObjectGroups(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
|
||||
randInt(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create straggler trees
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user