I have created an interactive game on my paradigm, just click this link and paste the code below and hit play !
https://editor.p5js.org/https://editor.p5js.org/
let entropyNodes = [];
let humans = [];
let quotes = [
“Existence is both dead and alive.”,
“Our God has munchausen.”,
“The soul folds reality into awareness.”,
“Observation makes consciousness palatable.”,
“We are reflections in the cosmic mirror.”,
];
let currentQuote = “”;
let quoteAlpha = 0;
let quoteFadeIn = true;
let quoteIndex = 0;
let quoteTimer = 0;
let quoteDisplayTime = 300; // frames to show before fading out
function setup() {
createCanvas(windowWidth, windowHeight);
background(0);
noStroke();
// Init entropy nodes
for (let i = 0; i < 20; i++) {
entropyNodes.push(new EntropyNode());
}
// Init humans
for (let i = 0; i < 30; i++) {
humans.push(new Human());
}
}
function draw() {
background(0, 20);
// Stars
for (let i = 0; i < 50; i++) {
let x = random(width);
let y = random(height);
let starSize = random(1, 3);
fill(255, random(100, 255));
ellipse(x, y, starSize);
}
// Draw humans (observers)
for (let h of humans) {
h.update();
h.display();
}
// Soul orb
fill(200, 100, 255, 150);
ellipse(mouseX, mouseY, 50);
// Update and display entropy nodes
for (let i = entropyNodes.length – 1; i >= 0; i–) {
entropyNodes[i].update();
entropyNodes[i].display();
// Check distance to orb
let d = dist(mouseX, mouseY, entropyNodes[i].pos.x, entropyNodes[i].pos.y);
if (d < 60 && !entropyNodes[i].collapsing) {
entropyNodes[i].startCollapse();
}
if (entropyNodes[i].isDead()) {
entropyNodes.splice(i, 1);
entropyNodes.push(new EntropyNode());
}
}
// Draw quotes
drawQuotes();
}
function drawQuotes() {
if (quoteFadeIn) {
quoteAlpha += 2;
if (quoteAlpha >= 255) {
quoteAlpha = 255;
quoteFadeIn = false;
}
} else {
quoteTimer++;
if (quoteTimer > quoteDisplayTime) {
quoteAlpha -= 2;
if (quoteAlpha <= 0) {
quoteAlpha = 0;
quoteFadeIn = true;
quoteTimer = 0;
quoteIndex = (quoteIndex + 1) % quotes.length;
}
}
}
currentQuote = quotes[quoteIndex];
fill(255, 200, 255, quoteAlpha);
textAlign(CENTER, CENTER);
textSize(20);
text(currentQuote, width / 2, height * 0.1);
}
// Entropy Node class
class EntropyNode {
constructor() {
this.pos = createVector(random(width), random(height));
this.radius = random(5, 12);
this.alpha = 0;
this.fadeIn = true;
this.fadeSpeed = random(1, 3);
this.collapsing = false;
this.collapseSpeed = 5;
}
update() {
if (this.collapsing) {
this.radius -= this.collapseSpeed;
this.alpha -= this.collapseSpeed * 10;
if (this.radius < 0) this.radius = 0; if (this.alpha < 0) this.alpha = 0; } else { if (this.fadeIn) { this.alpha += this.fadeSpeed; if (this.alpha >= 150) this.fadeIn = false;
} else {
this.alpha -= this.fadeSpeed;
}
}
}
display() {
fill(255, 200, 100, this.alpha);
ellipse(this.pos.x, this.pos.y, this.radius);
}
isDead() {
return this.alpha <= 0 || this.radius <= 0;
}
startCollapse() {
this.collapsing = true;
}
}
// Human observer class
class Human {
constructor() {
this.pos = createVector(random(width), random(height));
this.pulse = 0;
this.pulseSpeed = random(0.01, 0.03);
}
update() {
this.pulse += this.pulseSpeed;
}
display() {
let size = map(sin(this.pulse), -1, 1, 4, 8);
fill(255, 255, 255, 180);
ellipse(this.pos.x, this.pos.y, size);
}
}

Leave a reply to solaanimasolis Cancel reply