Interactive Soul Paradigm Game

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

One response to “Interactive Soul Paradigm Game”

  1. I’d like to further add that this is the most ass game ever made

    Like

Leave a reply to solaanimasolis Cancel reply