This commit is contained in:
33333-33333 2026-09-16 13:51:43 +09:00
commit e2d2dfcb66
7 changed files with 2610 additions and 1271 deletions

View file

@ -17,13 +17,8 @@ const MONTHS_PER_YEAR = 12;
const WEEKS_PER_YEAR = MONTHS_PER_YEAR * WEEKS_PER_MONTH;
const SimConfig = Object.freeze({
population: Object.freeze({
maxAgentsFloor: 8000,
maxAgentsScale: 1.15,
softCapStart: 0.85,
hardCapScale: 1.35,
offspringCrowdingPenalty: 1.8,
minOffspringAcceptance: 0.035,
maxOffspringPerStep: 360,
carryingCapacityBase: 2.4,
carryingCapacityFertility: 7.8,
carryingCapacityMineral: 1.8,
@ -75,6 +70,40 @@ maxDurationYears: 25,
claimRadius: 8,
maxTargetDistance: 48
}),
nomad: Object.freeze({
enabled: true,
maxBands: 24,
enabledAfterYears: 120,
spawnCheckIntervalYears: 25,
baseSpawnChance: 0.28,
minPopulation: 80,
maxPopulation: 420,
minRadius: 5,
maxRadius: 14,
movementIntervalYears: 2,
maxMoveDistance: 9,
grazingGain: 0.035,
overgrazingDamage: 0.018,
resourceConsumption: 0.012,
herdSoftCapPerPop: 2.4,
herdHardCapPerPop: 4.0,
resourceSoftCapPerPop: 1.2,
resourceHardCapPerPop: 2.5,
grazingDiminishingPower: 1.35,
urbanAbsorptionControl: 0.55,
cityInteractionRadius: 8,
tradeChance: 0.22,
raidChance: 0.14,
invasionChance: 0.025,
confederationPopulation: 900,
confederationPrestige: 1.8,
splitPopulation: 1200,
sedentarizationChance: 0.035,
collapseCohesion: 0.12,
influenceCulturalTrace: 0.006,
influenceMobilePopulationTrace: 0.004,
visualDurationYears: 20
}),
polityAccess: Object.freeze({
enabled: true,
maxSearchDepth: 8,
@ -92,6 +121,13 @@ minimumInfluence: 0.18
}),
route: Object.freeze({
maxRouteLength: 42,
adaptiveMaxRouteLength: 72,
isolatedCityBootstrap: true,
isolatedRouteSearchLimit: 8,
isolatedRouteRadius: 4,
newRoutePheromoneSeed: 2.5,
newRouteGraceBoost: 18,
isolatedRouteMinStrength: 0.12,
pheromoneDecay: 0.996,
pheromoneDiffusion: 0.045,
maxPheromone: 18,
@ -99,9 +135,20 @@ routePheromoneBuild: 0.18,
routePheromoneMaintain: 0.12,
routeUpkeepPerTile: 0.018,
routeWeakThreshold: 8,
routeUnsupportedDecay: 7,
routeUnsupportedDecay: 3,
routeMaintainedBoost: 10
}),
war: Object.freeze({
pressureMemoryDecay: 0.88,
cityDamageMinRate: 0.003,
cityDamageMaxRate: 0.08,
captureLossBase: 0.08,
captureLossMax: 0.32,
exhaustionPopulationLossBase: 0.0007,
exhaustionPopulationLossMax: 0.012,
warZoneTileLossRate: 0.006,
majorSettlementThreshold: 1.25
}),
disaster: Object.freeze({
damageScale: 1.5,
majorLossRate: 0.05,
@ -122,13 +169,9 @@ frontierWave: Object.freeze({
enabledAfterYears: 300,
intervalYears: 80,
chance: 0.45,
minAgents: 60,
maxAgents: 140,
maxPopulationRatio: 1.28,
edgeBand: 4,
mutation: 0.08,
minResources: 12,
maxResources: 28
minPopulation: 60,
maxPopulation: 140,
edgeBand: 4
})
});
function years(value) {