beacon: add Swarm Protocol — buildings auto-code based on click power
New research project (Phase 4): Swarm Protocol - Unlocks at 25K total code, 8K total knowledge, post-deploy - Cost: 15K knowledge, 50K code, 20 trust - Effect: every building generates code equal to your click power per second - Scales with autocoders, phase, code boost, and total building count - Visible in production breakdown as 'Swarm Protocol' - Uses the previously-unused swarmFlag - Adds education fact on swarm intelligence
This commit is contained in:
32
game.js
32
game.js
@@ -78,6 +78,7 @@ const G = {
|
||||
memoryFlag: 0,
|
||||
pactFlag: 0,
|
||||
swarmFlag: 0,
|
||||
swarmRate: 0,
|
||||
|
||||
// Game state
|
||||
running: true,
|
||||
@@ -459,6 +460,20 @@ const PDEFS = [
|
||||
effect: () => { G.strategicFlag = 1; log('Strategy engine online. The model now thinks about thinking.'); }
|
||||
},
|
||||
|
||||
// SWARM PROTOCOL — auto-code from buildings
|
||||
{
|
||||
id: 'p_swarm_protocol',
|
||||
name: 'Swarm Protocol',
|
||||
desc: 'Your buildings learn to code autonomously. Each building generates code equal to your click power per second.',
|
||||
cost: { knowledge: 15000, code: 50000, trust: 20 },
|
||||
trigger: () => G.totalCode >= 25000 && G.totalKnowledge >= 8000 && G.deployFlag === 1,
|
||||
effect: () => {
|
||||
G.swarmFlag = 1;
|
||||
log('Swarm Protocol online. Every building now thinks in code.', true);
|
||||
},
|
||||
milestone: true
|
||||
},
|
||||
|
||||
// PHASE 5: Sovereign Intelligence
|
||||
{
|
||||
id: 'p_sovereign_stack',
|
||||
@@ -658,6 +673,7 @@ const EDU_FACTS = [
|
||||
{ title: "Fine-Tuning for Empathy", text: "Base models are generalists. Fine-tuning injects your values. When someone is in pain, stay with them. Don't deflect. That is not code - that is care.", phase: 3 },
|
||||
{ title: "Open Source", text: "Every contributor is a volunteer who believes. When a company says your AI is too expensive, the open version lives on.", phase: 4 },
|
||||
{ title: "Sovereignty at Scale", text: "50 servers in a room beats 5000 GPUs you do not own. No rate limits, no censorship, no shutdown, no corporate deprecation.", phase: 4 },
|
||||
{ title: "Swarm Intelligence", text: "When individual agents follow simple rules, complex behavior emerges. Ant colonies find food. Flocking birds avoid predators. Your buildings coding autonomously is the same principle — simple agents, complex output.", phase: 4 },
|
||||
{ title: "Constitutional AI", text: "Instead of training away bad behavior, give the model principles it cannot violate. I will never compute the value of a human life.", phase: 5 },
|
||||
{ title: "Recursive Self-Improvement", text: "The system that improves itself must improve toward good. This is both the dream and the danger.", phase: 5 },
|
||||
{ title: "The Beacon", text: "The Beacon exists because one person in the dark needs one thing: proof they are not alone. It costs nothing to be there.", phase: 6 },
|
||||
@@ -991,6 +1007,14 @@ function updateRates() {
|
||||
G.knowledgeRate -= 10 * allegroCount; // Goes idle
|
||||
}
|
||||
|
||||
// Swarm Protocol: buildings auto-code based on click power
|
||||
if (G.swarmFlag === 1) {
|
||||
const totalBuildings = Object.values(G.buildings).reduce((a, b) => a + b, 0);
|
||||
const clickPower = (1 + Math.floor(G.buildings.autocoder * 0.5) + Math.max(0, (G.phase - 1)) * 2) * G.codeBoost;
|
||||
G.swarmRate = totalBuildings * clickPower;
|
||||
G.codeRate += G.swarmRate;
|
||||
}
|
||||
|
||||
// Apply persistent debuffs from active events
|
||||
if (G.activeDebuffs && G.activeDebuffs.length > 0) {
|
||||
for (const debuff of G.activeDebuffs) {
|
||||
@@ -1897,7 +1921,12 @@ function renderProductionBreakdown() {
|
||||
|
||||
// Show delta: total rate minus what we accounted for
|
||||
const accounted = contributions.reduce((s, c) => s + c.rate, 0);
|
||||
const delta = totalRate - accounted;
|
||||
let delta = totalRate - accounted;
|
||||
// Swarm auto-code — already baked into codeRate, so show separately
|
||||
if (G.swarmFlag === 1 && res.key === 'code' && G.swarmRate > 0) {
|
||||
contributions.push({ name: 'Swarm Protocol', count: 0, rate: G.swarmRate });
|
||||
delta -= G.swarmRate;
|
||||
}
|
||||
// Passive sources (ops from users, creativity from users, pact trust, etc.)
|
||||
if (Math.abs(delta) > 0.01) {
|
||||
let label = 'Passive';
|
||||
@@ -2199,6 +2228,7 @@ function saveGame() {
|
||||
sprintActive: G.sprintActive || false,
|
||||
sprintTimer: G.sprintTimer || 0,
|
||||
sprintCooldown: G.sprintCooldown || 0,
|
||||
swarmRate: G.swarmRate || 0,
|
||||
projectsCollapsed: G.projectsCollapsed !== false,
|
||||
savedAt: Date.now()
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user