forked from 0ad/0ad
Increasing thIncreasing the generation speed of the maps: Phoenician Levant
This was SVN commit r14183.
This commit is contained in:
parent
98638a2d2f
commit
ca0575e422
@ -236,7 +236,7 @@ createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clHill)],
|
||||
avoidClasses(clPlayer, 20, clHill, 15),
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
scaleByMapSize(3, 15)
|
||||
);
|
||||
|
||||
|
||||
|
@ -1,16 +1,33 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
const tCity = "desert_city_tile_plaza";
|
||||
const tDirtMain = ["desert_dirt_persia_1", "desert_dirt_persia_2", "grass_field_dry"];
|
||||
const tLakebed1 = ["desert_lakebed_dry_b", "desert_lakebed_dry"];
|
||||
const tLakebed2 = ["desert_lakebed_dry_b", "desert_lakebed_dry", "desert_shore_stones", "desert_shore_stones"];
|
||||
const tPebbles = "desert_pebbles_rough";
|
||||
const tCliff = ["desert_cliff_persia_1", "desert_cliff_persia_2"];
|
||||
const tForestFloor = "medit_grass_field_dry";
|
||||
const tRocky = "desert_dirt_persia_rocky";
|
||||
const tRocks = "desert_dirt_persia_rocks";
|
||||
const tGrass = "grass_field_dry";
|
||||
const tHill = "desert_cliff_persia_base";
|
||||
const tCity = "desert_city_tile_pers_dirt";
|
||||
var random_season = randInt(0,1);
|
||||
if (random_season) //summer
|
||||
{
|
||||
var tDirtMain = ["desert_dirt_persia_1", "desert_dirt_persia_2", "grass_field_dry"];
|
||||
var tLakebed1 = ["desert_lakebed_dry_b", "desert_lakebed_dry"];
|
||||
var tLakebed2 = ["desert_lakebed_dry_b", "desert_lakebed_dry", "desert_shore_stones", "desert_shore_stones"];
|
||||
var tPebbles = "desert_pebbles_rough";
|
||||
var tCliff = ["desert_cliff_persia_1", "desert_cliff_persia_crumbling"];
|
||||
var tForestFloor = "medit_grass_field_dry";
|
||||
var tRocky = "desert_dirt_persia_rocky";
|
||||
var tRocks = "desert_dirt_persia_rocks";
|
||||
var tGrass = "grass_field_dry";
|
||||
var tHill = "desert_cliff_persia_base";
|
||||
}
|
||||
else //spring
|
||||
{
|
||||
var tDirtMain = ["desert_grass_a", "desert_grass_a", "desert_grass_a", "desert_plants_a"];
|
||||
var tLakebed1 = ["desert_lakebed_dry_b", "desert_lakebed_dry"];
|
||||
var tLakebed2 = "desert_grass_a_sand";
|
||||
var tPebbles = "desert_pebbles_rough";
|
||||
var tCliff = ["desert_cliff_persia_1", "desert_cliff_persia_crumbling"];
|
||||
var tForestFloor = "desert_plants_b_persia";
|
||||
var tRocky = "desert_plants_b_persia";
|
||||
var tRocks = "desert_plants_a";
|
||||
var tGrass = "desert_dirt_persia_rocky";
|
||||
var tHill = "desert_cliff_persia_base";
|
||||
}
|
||||
|
||||
// gaia entities
|
||||
const oGrapesBush = "gaia/flora_bush_grapes";
|
||||
@ -60,6 +77,15 @@ var clFood = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clCP = createTileClass();
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
var z = iz / (mapSize + 1.0);
|
||||
placeTerrain(ix, iz, tDirtMain);
|
||||
}
|
||||
}
|
||||
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@ -209,30 +235,35 @@ RMS.SetProgress(25);
|
||||
|
||||
// create centeral plateau
|
||||
log("Creating centeral plateau...");
|
||||
var halfSize = mapSize / 2;
|
||||
var oRadius = scaleByMapSize(18, 68);
|
||||
placer = new ClumpPlacer(PI*oRadius*oRadius, 0.6, 0.15, 0, mapSize/2, mapSize/2);
|
||||
painter = new LayeredPainter([tLakebed2, tLakebed1], [8]);
|
||||
placer = new ChainPlacer(2, floor(scaleByMapSize(5, 13)), floor(scaleByMapSize(35, 200)), 1, halfSize, halfSize, 0, [floor(oRadius)]);
|
||||
painter = new LayeredPainter([tLakebed2, tLakebed1], [6]);
|
||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, -10, 8);
|
||||
createArea(placer, [painter, elevationPainter, paintClass(clCP)], null);
|
||||
createArea(placer, [painter, elevationPainter, paintClass(clCP)], avoidClasses(clPlayer, 18));
|
||||
|
||||
|
||||
RMS.SetProgress(30);
|
||||
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
[tCliff, tHill], // terrains
|
||||
[2] // widths
|
||||
);
|
||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 22, 2);
|
||||
createAreas(
|
||||
placer,
|
||||
[terrainPainter, elevationPainter, paintClass(clHill)],
|
||||
avoidClasses(clPlayer, 7, clCP, 5, clHill, 10),
|
||||
scaleByMapSize(1, 4) * numPlayers * 3
|
||||
);
|
||||
var numHills = scaleByMapSize(20, 80)
|
||||
for (var i = 0; i < numHills; ++i)
|
||||
{
|
||||
|
||||
createMountain(
|
||||
floor(scaleByMapSize(40, 60)),
|
||||
floor(scaleByMapSize(3, 4)),
|
||||
floor(scaleByMapSize(6, 12)),
|
||||
floor(scaleByMapSize(4, 10)),
|
||||
avoidClasses(clPlayer, 7, clCP, 5, clHill, floor(scaleByMapSize(18, 25))),
|
||||
randInt(mapSize),
|
||||
randInt(mapSize),
|
||||
tCliff,
|
||||
clHill,
|
||||
14
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(35);
|
||||
|
||||
@ -299,23 +330,23 @@ log("Creating centeral stone mines...");
|
||||
// create large stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
stayClasses(clCP, 3),
|
||||
5*scaleByMapSize(10,30), 100
|
||||
stayClasses(clCP, 6),
|
||||
5*scaleByMapSize(5,30), 50
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
stayClasses(clCP, 3),
|
||||
5*scaleByMapSize(10,30), 100
|
||||
stayClasses(clCP, 6),
|
||||
5*scaleByMapSize(5,30), 50
|
||||
);
|
||||
|
||||
log("Creating centeral metal mines...");
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
stayClasses(clCP, 3),
|
||||
5*scaleByMapSize(10,30), 100
|
||||
stayClasses(clCP, 6),
|
||||
5*scaleByMapSize(5,30), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
@ -392,23 +423,6 @@ createObjectGroups(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create dead trees
|
||||
log("Creating dead trees...");
|
||||
var types = [oTamarix]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
for (var i = 0; i < types.length; ++i)
|
||||
{
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(types[i], 1,1, 0,3)],
|
||||
true, clForest
|
||||
);
|
||||
createObjectGroups(group, 0,
|
||||
[avoidClasses(clMetal, 1, clRock, 1), stayClasses(clCP, 2)],
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
@ -428,5 +442,20 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
setSunColour(0.733, 0.746, 0.574);
|
||||
if (!random_season)
|
||||
setTerrainAmbientColour(0.329412, 0.419608, 0.501961);
|
||||
|
||||
setSunColour(1.0, 0.796, 0.374);
|
||||
setSunElevation(PI / 6);
|
||||
setSunRotation(-1.86532);
|
||||
|
||||
setFogFactor(0.2);
|
||||
setFogThickness(0.0);
|
||||
setFogColor(0.852, 0.746, 0.493);
|
||||
|
||||
setPPEffect("hdr");
|
||||
setPPContrast(0.75);
|
||||
setPPSaturation(0.45);
|
||||
setPPBloom(0.3);
|
||||
|
||||
ExportMap();
|
@ -106,6 +106,10 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var ix = floor(fx);
|
||||
var iz = floor(fz);
|
||||
addToClass(ix, iz, clPlayer);
|
||||
addToClass(ix+5, iz, clPlayer);
|
||||
addToClass(ix, iz+5, clPlayer);
|
||||
addToClass(ix-5, iz, clPlayer);
|
||||
addToClass(ix, iz-5, clPlayer);
|
||||
|
||||
// create the city patch
|
||||
var cityRadius = radius/3;
|
||||
@ -256,7 +260,7 @@ createAreas(
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
[tCliff, tHill], // terrains
|
||||
[2] // widths
|
||||
@ -280,8 +284,8 @@ var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var num = scaleByMapSize(10,30);
|
||||
placer = new ClumpPlacer(numForest / num, 0.15, 0.1, 0.5);
|
||||
var num = scaleByMapSize(10,42);
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), numForest / (num * floor(scaleByMapSize(2,5))), 0.5);
|
||||
painter = new TerrainPainter([tForestFloor, pForest]);
|
||||
createAreas(placer, [painter, paintClass(clForest)],
|
||||
avoidClasses(clPlayer, 20, clForest, 10, clWater, 1, clHill, 1, clBaseResource, 3),
|
||||
@ -297,10 +301,10 @@ RMS.SetProgress(50);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), sizes[i], 0.5);
|
||||
painter = new LayeredPainter(
|
||||
[[tGrass,tRocksShrubs],[tRocksShrubs,tRocksGrass], [tRocksGrass,tGrass]], // terrains
|
||||
[1,1] // widths
|
||||
@ -317,10 +321,10 @@ RMS.SetProgress(55);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
{
|
||||
placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5);
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), sizes[i], 0.5);
|
||||
painter = new LayeredPainter(
|
||||
[[tDirt,tDirtB],[tDirt,tMainDirt], [tDirtB,tMainDirt]], // terrains
|
||||
[1,1] // widths
|
||||
@ -506,5 +510,21 @@ setWaterReflectionTint(0.31,0.769,0.894);
|
||||
setWaterWaviness(3);
|
||||
setWaterMurkiness(0.8);
|
||||
setWaterReflectionTintStrength(0.1);
|
||||
|
||||
setTerrainAmbientColour(0.57, 0.58, 0.55);
|
||||
setUnitsAmbientColour(0.447059, 0.509804, 0.54902);
|
||||
|
||||
setSunElevation(0.671884);
|
||||
setSunRotation(-0.582913);
|
||||
|
||||
setFogFactor(0.2);
|
||||
setFogThickness(0.15);
|
||||
setFogColor(0.8, 0.7, 0.6);
|
||||
|
||||
setPPEffect("hdr");
|
||||
setPPContrast(0.53);
|
||||
setPPSaturation(0.47);
|
||||
setPPBloom(0.52);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
@ -229,7 +229,7 @@ function createObjectGroups(placer, player, constraint, num, retryFactor)
|
||||
var maxFail = num * retryFactor;
|
||||
var good = 0;
|
||||
var bad = 0;
|
||||
var halfSize = getMapSize()/2;
|
||||
var halfSize = getMapSize()/2 - 3;
|
||||
while(good < num && bad <= maxFail)
|
||||
{
|
||||
if (isCircularMap())
|
||||
@ -334,6 +334,7 @@ function createSimpleTerrain(terrain)
|
||||
|
||||
function placeObject(x, z, type, player, angle)
|
||||
{
|
||||
if (g_Map.validT(x, z, 3))
|
||||
g_Map.addObject(new Entity(type, player, x, z, angle));
|
||||
}
|
||||
|
||||
@ -341,7 +342,6 @@ function placeTerrain(x, z, terrain)
|
||||
{
|
||||
// convert terrain param into terrain object
|
||||
g_Map.placeTerrain(x, z, createTerrain(terrain));
|
||||
|
||||
}
|
||||
|
||||
function isCircularMap()
|
||||
|
@ -106,13 +106,13 @@ Map.prototype.validT = function(x, z, distance)
|
||||
{
|
||||
if (g_MapSettings.CircularMap)
|
||||
{ // Within map circle
|
||||
if (distance == undefined)
|
||||
var halfSize = Math.floor(0.5*this.size);
|
||||
else
|
||||
var halfSize = Math.floor(0.5*this.size)-distance;
|
||||
var dx = (x - halfSize);
|
||||
var dz = (z - halfSize);
|
||||
if (distance === undefined)
|
||||
return Math.round(Math.sqrt(dx*dx + dz*dz)) < halfSize - 1;
|
||||
else
|
||||
return Math.round(Math.sqrt(dx*dx + dz*dz)) < halfSize - distance - 1;
|
||||
}
|
||||
else
|
||||
{ // Within map square
|
||||
@ -197,7 +197,7 @@ Map.prototype.getTerrainObjects = function(x, z)
|
||||
|
||||
Map.prototype.setTerrainObject = function(x, z, object)
|
||||
{
|
||||
if (!this.validT(x, z))
|
||||
if (!this.validT(x, z, 2))
|
||||
{
|
||||
throw("setTerrainObject: invalid tile position ("+x+", "+z+")");
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -612,6 +612,7 @@ SimpleGroup.prototype.place = function(player, constraint)
|
||||
length = resultObjs.length;
|
||||
for (var i=0; i < length; i++)
|
||||
{
|
||||
if (g_Map.validT(round(resultObjs[i].position.x/CELL_SIZE), round(resultObjs[i].position.z/CELL_SIZE), 3))
|
||||
g_Map.addObject(resultObjs[i]);
|
||||
|
||||
if (this.tileClass !== undefined)
|
||||
|
@ -43,7 +43,7 @@ SimpleTerrain.prototype = new Terrain();
|
||||
SimpleTerrain.prototype.constructor = SimpleTerrain;
|
||||
SimpleTerrain.prototype.placeNew = function(x, z)
|
||||
{
|
||||
if (this.treeType !== undefined)
|
||||
if (this.treeType !== undefined && g_Map.validT(round(x), round(z), 3))
|
||||
{
|
||||
g_Map.terrainObjects[x][z] = new Entity(this.treeType, 0, x+0.5, z+0.5, randFloat()*TWO_PI);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user