Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
08e2a79
brand: GodComplex narrative and peer-review section
The-Running-Dev Oct 7, 2026
1c98b13
brand: GodComplex narrative and peer-review section
The-Running-Dev Oct 7, 2026
c67eea0
brand: GodComplex narrative and peer-review section
The-Running-Dev Oct 7, 2026
6d3ea50
brand: GodComplex narrative and peer-review section
The-Running-Dev Oct 7, 2026
0b5bfc1
brand: GodComplex narrative and peer-review section
The-Running-Dev Oct 7, 2026
1bd3971
brand: align navigation and landing assertions
The-Running-Dev Oct 7, 2026
2a08ddb
brand: align navigation and landing assertions
The-Running-Dev Oct 7, 2026
694003f
test: account for peer-review section and GodComplex hero
The-Running-Dev Oct 7, 2026
ed252fc
copy: reserve Reddit game-engine criticism for sourced testimonials
The-Running-Dev Oct 7, 2026
6ea20f2
copy: embrace blatantly fictional GodComplex testimonials
The-Running-Dev Oct 7, 2026
46f2748
brand: GodComplex — Consequences and wider decision-engine positioning
The-Running-Dev Oct 7, 2026
50b8fc4
brand: GodComplex — Consequences and wider decision-engine positioning
The-Running-Dev Oct 7, 2026
bf191f2
brand: GodComplex — Consequences and wider decision-engine positioning
The-Running-Dev Oct 7, 2026
153af87
brand: GodComplex — Consequences and wider decision-engine positioning
The-Running-Dev Oct 7, 2026
32535fc
brand: GodComplex — Consequences and wider decision-engine positioning
The-Running-Dev Oct 7, 2026
fdb623b
Fix CI: rebrand README at the source, format site, update build metad…
The-Running-Dev Oct 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .config/DocumentationRules.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
Generator = 'build/ConvertTo-DocumentationHomepage.ps1'
SourceParameter = 'ReadmePath'
Arguments = @{
Title = 'Game Engine'
Title = 'GodComplex'
Description = ''
SiteUrl = 'https://game-engine.subzerodev.com/'
RouteBasePath = 'docs'
Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# SubZeroDev.GameEngine
# SubZeroDev.GodComplex

**Build mechanics once. Create infinite games.**
**Consequences.**

Build rules once. Explore every consequence.

## Quick Links

Expand Down Expand Up @@ -29,13 +31,13 @@ next thirty years.

Apparently that seemed reasonable.

SubZeroDev.GameEngine politely disagrees.
SubZeroDev.GodComplex politely disagrees.

Instead of asking how to render another world...

it asks a different question:

**What if gameplay itself became reusable?**
**What if interactive rules, decisions, and consequences became reusable?**

---

Expand Down
6 changes: 3 additions & 3 deletions docs/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ import type * as Preset from '@docusaurus/preset-classic';
const baseUrl = '/';

const config: Config = {
title: 'Game Engine',
tagline: 'A deterministic, game-agnostic narrative game platform',
title: 'GodComplex',
tagline: 'Consequences.',
url: 'https://game-engine.subzerodev.com',
baseUrl,

Expand Down Expand Up @@ -91,7 +91,7 @@ const config: Config = {
{
type: 'html',
position: 'left',
value: `<a class="navbar__brand" href="${baseUrl}"><b class="navbar__title text--truncate">Game Engine</b></a>`,
value: `<a class="navbar__brand" href="${baseUrl}"><b class="navbar__title text--truncate">GodComplex</b></a>`,
},
{type: 'docSidebar', sidebarId: 'docs', position: 'left', label: 'Docs'},
{type: 'html', position: 'left', value: '<a class="navbar__item navbar__link" href="/roadmap/">Roadmap</a>'},
Expand Down
12 changes: 7 additions & 5 deletions docs/src/pages/index.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
title: 'Game Engine'
title: 'GodComplex'
---

# SubZeroDev.GameEngine
# SubZeroDev.GodComplex

**Build mechanics once. Create infinite games.**
**Consequences.**

Build rules once. Explore every consequence.

## Quick Links

Expand Down Expand Up @@ -33,13 +35,13 @@ next thirty years.

Apparently that seemed reasonable.

SubZeroDev.GameEngine politely disagrees.
SubZeroDev.GodComplex politely disagrees.

Instead of asking how to render another world...

it asks a different question:

**What if gameplay itself became reusable?**
**What if interactive rules, decisions, and consequences became reusable?**

---

Expand Down
14 changes: 7 additions & 7 deletions site/landing.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ export default defineLandingPage({
path: "/",
entry: "src/main.tsx",
metadata: {
title: "SubZeroDev Game Engine — Build mechanics once.",
title: "SubZeroDev GodComplex — Build mechanics once.",
description:
"A deterministic, game-agnostic platform for building reusable narrative-game mechanics.",
"A deterministic engine for games, branching narratives, decision trees, guides, surveys and simulations.",
canonicalUrl: "https://game-engine.subzerodev.com/",
openGraph: {
title: "SubZeroDev Game Engine",
description: "Build mechanics once. Create infinite games.",
title: "SubZeroDev GodComplex",
description: "GodComplex — Consequences.",
type: "website",
url: "https://game-engine.subzerodev.com/",
imageUrl: "https://game-engine.subzerodev.com/og-image.png",
Expand Down Expand Up @@ -59,12 +59,12 @@ export default defineLandingPage({
path: "/roadmap/",
entry: "src/roadmap/main.tsx",
metadata: {
title: "Roadmap — SubZeroDev Game Engine",
title: "Roadmap — SubZeroDev GodComplex",
description:
"What SubZeroDev Game Engine has built, what comes next, and why it became a deterministic delivery ledger.",
"What SubZeroDev GodComplex has built, what comes next, and why it became a deterministic delivery ledger.",
canonicalUrl: "https://game-engine.subzerodev.com/roadmap/",
openGraph: {
title: "SubZeroDev Game Engine Roadmap",
title: "SubZeroDev GodComplex Roadmap",
description:
"What is built, what is next, and why the queue is deterministic.",
type: "website",
Expand Down
8 changes: 4 additions & 4 deletions site/scripts/verify-build.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ for (const asset of requiredAssets) {
}

const requiredTags = [
/<meta\s+name="description"\s+content="A deterministic, game-agnostic platform for building reusable narrative-game mechanics\."\s*\/?>/,
/<meta\s+property="og:title"\s+content="SubZeroDev Game Engine"\s*\/?>/,
/<meta\s+property="og:description"\s+content="Build mechanics once\. Create infinite games\."\s*\/?>/,
/<meta\s+name="description"\s+content="A deterministic engine for games, branching narratives, decision trees, guides, surveys and simulations\."\s*\/?>/,
/<meta\s+property="og:title"\s+content="SubZeroDev GodComplex"\s*\/?>/,
/<meta\s+property="og:description"\s+content="GodComplex — Consequences\."\s*\/?>/,
/<meta\s+property="og:type"\s+content="website"\s*\/?>/,
/<meta\s+property="og:url"\s+content="https:\/\/game-engine\.subzerodev\.com\/"\s*\/?>/,
/<meta\s+property="og:image"\s+content="https:\/\/game-engine\.subzerodev\.com\/og-image\.png"\s*\/?>/,
Expand All @@ -45,7 +45,7 @@ for (const tag of requiredTags) {
}

const roadmapTags = [
/<meta\s+name="description"\s+content="What SubZeroDev Game Engine has built, what comes next, and why it became a deterministic delivery ledger\."\s*\/?>/,
/<meta\s+name="description"\s+content="What SubZeroDev GodComplex has built, what comes next, and why it became a deterministic delivery ledger\."\s*\/?>/,
/<meta\s+property="og:url"\s+content="https:\/\/game-engine\.subzerodev\.com\/roadmap\/"\s*\/?>/,
/<link\s+rel="canonical"\s+href="https:\/\/game-engine\.subzerodev\.com\/roadmap\/"\s*\/?>/,
/<script type="module" crossorigin src="\/assets\//,
Expand Down
9 changes: 6 additions & 3 deletions site/src/App.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ describe("landing page", () => {
render(<App />);

expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent(
"Build Mechanics Once. Create Infinite Games.",
"GodComplex. Consequences.",
);
expect(screen.getAllByText("Well... why not?")).toHaveLength(2);
expect(
screen.getByText("Build rules once. Explore every consequence."),
).toBeInTheDocument();
});

it("uses the verified root-relative documentation routes", () => {
Expand Down Expand Up @@ -102,6 +104,7 @@ describe("landing page", () => {
"principles",
"resolution",
"worlds",
"testimonials",
"continue",
];

Expand All @@ -113,7 +116,7 @@ describe("landing page", () => {
const targets = continueLinks.map((link) =>
link.getAttribute("href")?.slice(1),
);
// Every section but the hero and the last one links to the next: nine
// Every section but the hero and the last one links to the next: eleven
// links, each one step ahead of the section that holds it.
expect(targets).toEqual(chain.slice(2));
});
Expand Down
80 changes: 59 additions & 21 deletions site/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,10 @@ function App() {

<main>
<section id="top" className="hero" aria-labelledby="hero-title">
<p className="eyebrow">SUBZERODEV GAME ENGINE</p>
<p className="eyebrow">SUBZERODEV / GODCOMPLEX</p>
<h1 id="hero-title">
Build Mechanics Once.
<br /> Create Infinite Games.
GodComplex.
<br /> Consequences.
</h1>
<p className="hero-pause" aria-hidden="true">
...
Expand All @@ -110,9 +110,11 @@ function App() {
assistive technology so the line reads once, not twice.
*/}
<p className="signature">
<span className="signature-default">Well... why not?</span>
<span className="signature-default">
Build rules once. Explore every consequence.
</span>
<span className="signature-alt" aria-hidden="true">
Fine. Why not?
Free will is a configuration option.
</span>
</p>
<div className="commentary">
Expand All @@ -123,9 +125,9 @@ function App() {
Results may include:
</p>
<ul>
<li>an accidental game engine</li>
<li>an accidental universe factory</li>
<li>this page, explaining the accidental game engine</li>
<li>continued uncertainty about how any of this happened</li>
<li>several entirely justified allegations of a God complex</li>
</ul>
</div>
<a className="scroll-invitation" href="#origin">
Expand All @@ -139,7 +141,7 @@ function App() {
className="origin section-narrow"
aria-labelledby="origin-title"
>
<p className="section-index">01 / THE ACCIDENT</p>
<p className="section-index">01 / GENESIS</p>
<h2 id="origin-title">
I Missed <em>Jones in the Fast Lane</em>.
</h2>
Expand All @@ -161,7 +163,7 @@ function App() {
className="problem section-wide"
aria-labelledby="problem-title"
>
<p className="section-index">02 / THE PATTERN</p>
<p className="section-index">02 / ORIGINAL SIN</p>
<h2 id="problem-title">The Problem Was Not Rendering.</h2>
<div className="split-prose">
<p>
Expand All @@ -182,14 +184,18 @@ function App() {
className="realization section-narrow"
aria-labelledby="realization-title"
>
<p className="section-index">03 / THE QUESTION</p>
<p className="section-index">03 / REVELATION</p>
<h2 id="realization-title">Wait.</h2>
<p className="display-copy">Why would I write this for one game?</p>
<div className="prose-stack compact">
<p>A job system is not a game.</p>
<p>A decision tree is not necessarily a game.</p>
<p>An inventory is not a game.</p>
<p>A relationship model is not a game.</p>
<p>They are mechanics. And mechanics should be reusable.</p>
<p>
They are rules and decisions. They belong in games, guides,
adaptive surveys, and branching workflows. And they should be
reusable.
</p>
</div>
<ContinueLink to="#architecture" />
</section>
Expand All @@ -200,7 +206,7 @@ function App() {
aria-labelledby="architecture-title"
>
<div className="architecture-intro">
<p className="section-index">04 / THE ARCHITECTURE</p>
<p className="section-index">04 / INTELLIGENT DESIGN</p>
<h2 id="architecture-title">Reuse the Rules. Replace the World.</h2>
<p>
One deterministic core. Reviewed kinds. Campaigns with their own
Expand Down Expand Up @@ -251,7 +257,7 @@ function App() {
className="abstraction section-narrow"
aria-labelledby="abstraction-title"
>
<p className="section-index">05 / THE LIMIT</p>
<p className="section-index">05 / THE KNOWN UNIVERSE</p>
<h2 id="abstraction-title">
The Engine Doesn&apos;t Know What a Dragon Is.
</h2>
Expand All @@ -273,7 +279,7 @@ function App() {
className="trace section-narrow"
aria-labelledby="trace-title"
>
<p className="section-index">06 / THE EXAMPLE</p>
<p className="section-index">06 / DIVINE BUREAUCRACY</p>
<h2 id="trace-title">Here&apos;s What It Does Know.</h2>
<p className="trace-lead">
The MVP&apos;s worked example, from the story-graph kind spec: a
Expand Down Expand Up @@ -332,7 +338,7 @@ function App() {
aria-labelledby="contract-title"
>
<div>
<p className="section-index">07 / THE BOUNDARY</p>
<p className="section-index">07 / THE COMMANDMENTS</p>
<h2 id="contract-title">Commands Are the Boundary.</h2>
</div>
<div className="contract-copy">
Expand Down Expand Up @@ -361,7 +367,7 @@ function App() {
aria-label="Engine principles"
>
<article className="ledger-refusals" aria-labelledby="refusals-title">
<p className="section-index">08 / REFUSALS</p>
<p className="section-index">08 / FORBIDDEN ACTS</p>
<h2 id="refusals-title">Things This Engine Refuses to Do</h2>
<ol>
{refusals.map((item, index) => (
Expand All @@ -376,7 +382,7 @@ function App() {
className="ledger-capabilities"
aria-labelledby="capabilities-title"
>
<p className="section-index">09 / CAPABILITIES</p>
<p className="section-index">09 / MIRACLES</p>
<h2 id="capabilities-title">Things It Happily Does</h2>
<ul>
{capabilities.map((item) => (
Expand All @@ -393,7 +399,7 @@ function App() {
className="resolution section-narrow"
aria-labelledby="resolution-title"
>
<p className="section-index">10 / THE ESCALATION</p>
<p className="section-index">10 / THE GOD COMPLEX</p>
<h2 id="resolution-title">
This Project Did Not Begin With a Grand Vision.
</h2>
Expand Down Expand Up @@ -428,7 +434,7 @@ function App() {
className="worlds section-wide"
aria-labelledby="worlds-title"
>
<p className="section-index">11 / THE ENGINE</p>
<p className="section-index">11 / CREATION</p>
<h2 id="worlds-title">It Exists.</h2>
<p className="worlds-lead">So do the worlds it will run.</p>
<ul className="worlds-list">
Expand All @@ -447,6 +453,38 @@ function App() {
replay proof; simulation and world-graph are still engine proofs,
not polished games. The distinction matters.
</p>
<ContinueLink to="#testimonials" />
</section>

<section
id="testimonials"
data-reveal=""
className="testimonials section-narrow"
aria-labelledby="testimonials-title"
>
<p className="section-index">12 / TESTIMONIALS</p>
<h2 id="testimonials-title">What People Are Saying</h2>
<p className="testimonial-lead">
Completely unbiased reviews from the living, the dead, and several
entities whose existence has not passed validation.
</p>
<blockquote className="testimonial-headline">
“I created the universe in six days. This lunatic introduced
semantic versioning.” — God, allegedly
</blockquote>
<blockquote className="testimonial-headline">
“Finally, a place where all the suffering is reproducible.” —
Lucifer, Director of Quality Assurance
</blockquote>
<blockquote className="testimonial-headline">
“We were promised free will. Turns out it was a configuration
option.” — Humanity, pending verification
</blockquote>
<p className="commentary">
All divine testimonials are fictional. Actual Reddit objections will
join this distinguished panel as soon as we have their original
words.
</p>
<ContinueLink to="#continue" />
</section>

Expand All @@ -456,7 +494,7 @@ function App() {
className="cta section-wide"
aria-labelledby="cta-title"
>
<p className="section-index">12 / CONTINUE READING</p>
<p className="section-index">13 / THE SCRIPTURES</p>
<h2 id="cta-title">Still Here?</h2>
<p>Good. Now it becomes considerably less philosophical.</p>
<div className="cta-actions">
Expand Down
18 changes: 18 additions & 0 deletions site/src/landing.css
Original file line number Diff line number Diff line change
Expand Up @@ -562,3 +562,21 @@ section {
border: 2px solid CanvasText;
}
}

/* Peer review deserves its own witness stand. */
.testimonials {
border-block: 1px solid var(--landing-border-decorative);
}
.testimonial-lead {
color: var(--landing-muted);
line-height: 1.6;
margin-top: 1.25rem;
}
.testimonial-headline {
border-left: 2px solid var(--landing-accent);
color: var(--landing-origin-text);
font-size: clamp(1.2rem, 2vw, 1.6rem);
line-height: 1.35;
margin: 1.5rem 0 0;
padding-left: 1.2rem;
}
Loading
Loading