1
0
forked from 0ad/0ad

Polishing the Random Maps: Archipelago, Ardennes Forest, Atlas Mountains, Cantabrian Highlands

This was SVN commit r13618.
This commit is contained in:
O.Davoodi 2013-07-30 11:09:40 +00:00
parent 477855fbf5
commit f3823847b0
5 changed files with 108 additions and 68 deletions

View File

@ -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

View File

@ -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(
[

View File

@ -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
);

View File

@ -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