Felladrin's picture
Add the simulator files
17fd0c2 verified
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=no"
/>
<meta
name="description"
content="Digital Life Evolution Simulator - An autonomous AI ecosystem demonstration"
/>
<title>Digital Life Evolution Simulator</title>
<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" href="css/animations.css" />
<link rel="stylesheet" href="css/neon-effects.css" />
<style>
html,
body {
background: #06060f;
}
#loading {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
background: #06060f;
z-index: 9999;
font-family: "Courier New", monospace;
color: #00f0ff;
font-size: 14px;
letter-spacing: 2px;
transition: opacity 0.5s ease;
}
#loading.fade-out {
opacity: 0;
pointer-events: none;
}
#loading .pulse {
animation: loadPulse 1.5s ease-in-out infinite;
}
@keyframes loadPulse {
0%,
100% {
opacity: 0.4;
}
50% {
opacity: 1;
text-shadow:
0 0 10px #00f0ff,
0 0 20px #00f0ff;
}
}
</style>
</head>
<body>
<div id="loading" role="alert" aria-live="polite">
<span class="pulse">INITIALIZING ECOSYSTEM...</span>
</div>
<div
id="app"
role="application"
aria-label="Digital Life Evolution Simulator"
>
<a
href="#panel-stats"
class="sr-only"
style="position: absolute; z-index: 100"
>
Skip to simulation stats
</a>
<canvas
id="simulation-canvas"
aria-label="Simulation world with AI entities, resources, and environmental events"
role="img"
></canvas>
<canvas id="particle-canvas" aria-hidden="true"></canvas>
<div class="scan-overlay" aria-hidden="true"></div>
</div>
<script type="module">
import { bootstrap } from "./js/ecosystem.js";
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", start);
} else {
start();
}
function start() {
requestAnimationFrame(() => {
try {
bootstrap();
} catch (err) {
console.error("Bootstrap failed:", err);
document.getElementById("loading").innerHTML =
'<span style="color:#ff3366">ERROR: ' + err.message + "</span>";
return;
}
const loading = document.getElementById("loading");
if (loading) {
loading.classList.add("fade-out");
setTimeout(() => loading.remove(), 600);
}
});
}
</script>
</body>
</html>