From b6b3cb68043318e34aa0b51741b33430a5c19c4d Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 20:19:35 +0000 Subject: [PATCH 01/10] =?UTF-8?q?=E2=9C=A8=20Transform=20GameForge,=20Labs?= =?UTF-8?q?,=20and=20Foundation=20into=20beautiful=20landing=20pages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add responsive design with md: breakpoints for tablet optimization - Create stunning hero sections with large logos and clear value props - Add informational sticky banners clarifying these are external platforms - GameForge: Add 30-day sprint timeline, squad structure, stats cards - Labs: Enhance with research projects, simplified messaging, clean design - Foundation: Spotlight GameForge program, mission & values section - All pages now have proper CTAs linking to external platforms - Fixed responsive sizing from mobile → tablet → desktop - Professional marketing page aesthetic while maintaining technical feel --- client/pages/Foundation.tsx | 78 ++++- client/pages/GameForge.tsx | 575 +++++++++++++++++---------------- client/pages/GameForge_old.tsx | 409 +++++++++++++++++++++++ client/pages/Labs.tsx | 104 +++--- 4 files changed, 823 insertions(+), 343 deletions(-) create mode 100644 client/pages/GameForge_old.tsx diff --git a/client/pages/Foundation.tsx b/client/pages/Foundation.tsx index 159a544e..ccdf1a9f 100644 --- a/client/pages/Foundation.tsx +++ b/client/pages/Foundation.tsx @@ -15,6 +15,7 @@ import { Sparkles, Trophy, Compass, + ExternalLink, } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { useEffect, useState, useRef } from "react"; @@ -54,31 +55,76 @@ export default function Foundation() { return ( -
-
- {/* Hero Section */} -
-
- - Non-Profit Guardian +
+ {/* Informational Banner */} +
+
+
+
+ +

+ External Platform: Foundation is hosted at{" "} + + aethex.foundation + +

+
+ +
+
+
+ +
{/* Hero Section */} +
+
+ Foundation Logo +
+ +
+ + + 501(c)(3) Non-Profit Organization -

+ +

AeThex Foundation

+ +

+ Building community, empowering developers, and advancing game development through open-source innovation and mentorship. +

-

- The heart of our ecosystem. We believe in building community, - empowering developers, and advancing game development through - open-source innovation and mentorship. -

-
+ +
+ +
+
+
+
+
+ + {/* Background Effects */} +
-
-
-
+
+
{/* Hero Section */} -
-
-
- GameForge Logo -
- - - GameForge Production - +
+
+
+
+ GameForge Logo +
-
-

- Shipping Games Monthly -

-

- AeThex GameForge is our internal production studio that - demonstrates disciplined, efficient development. We ship a new - game every month using proprietary development pipelines and - tools from Labs, proving our technology's real-world impact - while maintaining controlled burn rates. -

-
+
+ + + Foundation's Game Production Studio + -
- - - - +

+ Ship Games Every Month +

+ +

+ AeThex GameForge is a master-apprentice mentorship program where teams of 5 developers ship real games in 30-day sprints. +

+
+ +
+ + +
- {/* Production Stats */} -
-
-
- {productionStats.map((stat, idx) => ( - - -

+ {/* Stats Section */} +

+
+
+ {productionStats.map((stat, idx) => { + const Icon = stat.icon; + return ( +
+ +

{stat.value}

{stat.label}

- - - ))} +
+ ); + })}
- {/* Upcoming Releases */} -
+ {/* Features Grid */} +
+
+
+

+ Why Join GameForge? +

+

+ The fastest way to build a real game development portfolio and prove you can ship. +

+
+ +
+ {features.map((feature, idx) => { + const Icon = feature.icon; + return ( + + +
+ +
+ + {feature.title} + +
+ +

+ {feature.description} +

+
+
+ ); + })} +
+
+
+ + {/* How It Works */} +
-

- - Upcoming Releases -

+
+

+ The 30-Day Sprint +

+

+ From concept to shipped game in one month +

+
+
- {monthlyReleases.map((release, idx) => ( - - -
-
- - {release.month} - -

- {release.title} -

-

- {release.genre} -

-
- - - {release.team} - -
-
-
- - {release.status} - -

- {release.highlights} -

-
-
-
-
- ))} -
-
-
- - {/* Past Releases */} -
-
-

- Shipped This Year -

-
- {pastReleases.map((game, idx) => ( - - -
-

- {game.title} -

- - {game.genre} - -
- -
-

Released: {game.releaseDate}

-

{game.players} active players

-
- ⭐ {game.rating}/5 -
-
-
-
- ))} -
-
-
- - {/* Production Process */} -
-
-

- Our Process -

-
{[ { - phase: "Ideation", - duration: "1 week", - description: "Brainstorm and validate game concepts", + week: "Week 1", + title: "Ideation & Prototyping", + description: "Define game concept, create GDD, build playable prototype", + tasks: ["Team formation", "Concept validation", "Core mechanics test"] }, { - phase: "Prototyping", - duration: "1 week", - description: - "Build playable prototype to test core mechanics", + week: "Week 2", + title: "Development Sprint", + description: "Parallel production: code, art, sound, narrative", + tasks: ["Feature implementation", "Asset creation", "Level design"] }, { - phase: "Development", - duration: "3 weeks", - description: - "Full production with parallel art, code, and design", + week: "Week 3", + title: "Polish & Integration", + description: "Integrate assets, refine gameplay, balance mechanics", + tasks: ["Bug fixing", "Playtesting", "Performance optimization"] }, { - phase: "Polish & QA", - duration: "1 week", - description: "Bug fixes, optimization, and player testing", + week: "Week 4", + title: "QA & Launch", + description: "Final testing, deployment, and post-launch monitoring", + tasks: ["Final QA", "Ship to aethex.fun", "Community showcase"] }, - { - phase: "Launch", - duration: "1 day", - description: - "Ship to production and monitor for first 24 hours", - }, - ].map((item, idx) => ( + ].map((phase, idx) => ( - -
-
- {idx + 1} + +
+
+
+ {idx + 1} +
-
-

- {item.phase} -

-

- {item.description} -

+
+
+ + {phase.week} + +

+ {phase.title} +

+

+ {phase.description} +

+
+
+ {phase.tasks.map((task, taskIdx) => ( + + {task} + + ))} +
- - {item.duration} -
@@ -349,23 +312,91 @@ export default function GameForge() {
- {/* Team CTA */} -
-
-

- Part of Our Shipping Culture -

-

- Our team represents the best of game development talent. Meet - the people who make monthly shipping possible. -

- + {/* Team Roles */} +
+
+
+

+ Squad Structure +

+

+ Every team has 5 members with specialized roles +

+
+ +
+ {[ + { role: "Forge Master", icon: Target, description: "Mentor & Lead", color: "from-green-500 to-emerald-500" }, + { role: "Scripter", icon: Code, description: "Programming", color: "from-blue-500 to-cyan-500" }, + { role: "Builder", icon: Palette, description: "Art & Design", color: "from-purple-500 to-pink-500" }, + { role: "Sound Designer", icon: Music, description: "Audio & Music", color: "from-orange-500 to-red-500" }, + { role: "Narrative", icon: Users, description: "Story & UX", color: "from-yellow-500 to-amber-500" }, + ].map((member, idx) => { + const Icon = member.icon; + return ( + + +
+ +
+
+

+ {member.role} +

+

+ {member.description} +

+
+
+
+ ); + })} +
+
+
+ + {/* CTA Section */} +
+
+ +
+ +
+

+ Ready to Ship Your First Game? +

+

+ Join the next GameForge cohort and build your portfolio with real, shipped games. +

+
+ +
+ + +
+ +

+ Part of the AeThex Foundation 501(c)(3) non-profit +

+
+
diff --git a/client/pages/GameForge_old.tsx b/client/pages/GameForge_old.tsx new file mode 100644 index 00000000..64547aaa --- /dev/null +++ b/client/pages/GameForge_old.tsx @@ -0,0 +1,409 @@ +import Layout from "@/components/Layout"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { useArmTheme } from "@/contexts/ArmThemeContext"; +import { + Gamepad2, + Calendar, + Users, + TrendingUp, + Rocket, + ArrowRight, + ExternalLink, +} from "lucide-react"; +import { useNavigate } from "react-router-dom"; +import { useEffect, useState, useRef } from "react"; +import LoadingScreen from "@/components/LoadingScreen"; +import { useArmToast } from "@/hooks/use-arm-toast"; + +export default function GameForge() { + const navigate = useNavigate(); + const { theme } = useArmTheme(); + const armToast = useArmToast(); + const [isLoading, setIsLoading] = useState(true); + const toastShownRef = useRef(false); + + useEffect(() => { + const timer = setTimeout(() => { + setIsLoading(false); + if (!toastShownRef.current) { + armToast.system("GameForge engine initialized"); + toastShownRef.current = true; + } + }, 900); + + return () => clearTimeout(timer); + }, [armToast]); + + if (isLoading) { + return ( + + ); + } + + const monthlyReleases = [ + { + month: "January 2025", + title: "Pixel Quest: Reckoning", + genre: "Action-Adventure", + team: "Green Squadron", + status: "Shipping Now", + highlights: "New combat system, 50 levels, multiplayer beta", + }, + { + month: "February 2025", + title: "Logic Master Pro", + genre: "Puzzle", + team: "Logic Lab", + status: "Pre-Production", + highlights: "Daily challenges, leaderboards, cross-platform", + }, + { + month: "March 2025", + title: "Mystic Realms: Awakening", + genre: "RPG", + team: "Adventure Wing", + status: "Development", + highlights: "Story driven, 100+ hours, procedural dungeons", + }, + ]; + + const pastReleases = [ + { + title: "Battle Royale X", + genre: "Action", + releaseDate: "Dec 2024", + players: "50K+", + rating: 4.7, + }, + { + title: "Casual Match", + genre: "Puzzle", + releaseDate: "Nov 2024", + players: "100K+", + rating: 4.5, + }, + { + title: "Speedrun Challenge", + genre: "Action", + releaseDate: "Oct 2024", + players: "35K+", + rating: 4.8, + }, + ]; + + const productionStats = [ + { label: "Games Shipped", value: "15+" }, + { label: "Monthly Cycle", value: "32 days" }, + { label: "Total Players", value: "200K+" }, + { label: "Team Size", value: "25 devs" }, + ]; + + return ( + +
+ {/* Informational Banner */} +
+
+
+
+ +

+ This is an informational page. GameForge is hosted at{" "} + + aethex.foundation/gameforge + +

+
+ +
+
+
+ + {/* Background */} +
+
+
+
+
+ +
+ {/* Hero Section */} +
+
+
+ GameForge Logo +
+ + + GameForge Production + + +
+

+ Shipping Games Monthly +

+

+ AeThex GameForge is our internal production studio that + demonstrates disciplined, efficient development. We ship a new + game every month using proprietary development pipelines and + tools from Labs, proving our technology's real-world impact + while maintaining controlled burn rates. +

+
+ +

+ GameForge is hosted at aethex.foundation as part of the non-profit Foundation entity. + This page provides an overview—visit the platform for full access. +

+
+
+ +
+ + + + +
+
+
+ + {/* Production Stats */} +
+
+
+ {productionStats.map((stat, idx) => ( + + +

+ {stat.value} +

+

{stat.label}

+
+
+ ))} +
+
+
+ + {/* Upcoming Releases */} +
+
+

+ + Upcoming Releases +

+
+ {monthlyReleases.map((release, idx) => ( + + +
+
+ + {release.month} + +

+ {release.title} +

+

+ {release.genre} +

+
+ + + {release.team} + +
+
+
+ + {release.status} + +

+ {release.highlights} +

+
+
+
+
+ ))} +
+
+
+ + {/* Past Releases */} +
+
+

+ Shipped This Year +

+
+ {pastReleases.map((game, idx) => ( + + +
+

+ {game.title} +

+ + {game.genre} + +
+ +
+

Released: {game.releaseDate}

+

{game.players} active players

+
+ ⭐ {game.rating}/5 +
+
+
+
+ ))} +
+
+
+ + {/* Production Process */} +
+
+

+ Our Process +

+
+ {[ + { + phase: "Ideation", + duration: "1 week", + description: "Brainstorm and validate game concepts", + }, + { + phase: "Prototyping", + duration: "1 week", + description: + "Build playable prototype to test core mechanics", + }, + { + phase: "Development", + duration: "3 weeks", + description: + "Full production with parallel art, code, and design", + }, + { + phase: "Polish & QA", + duration: "1 week", + description: "Bug fixes, optimization, and player testing", + }, + { + phase: "Launch", + duration: "1 day", + description: + "Ship to production and monitor for first 24 hours", + }, + ].map((item, idx) => ( + + +
+
+ {idx + 1} +
+
+

+ {item.phase} +

+

+ {item.description} +

+
+ + {item.duration} + +
+
+
+ ))} +
+
+
+ + {/* Team CTA */} +
+
+

+ Part of Our Shipping Culture +

+

+ Our team represents the best of game development talent. Meet + the people who make monthly shipping possible. +

+ +
+
+
+
+ + ); +} diff --git a/client/pages/Labs.tsx b/client/pages/Labs.tsx index 86cb2c43..edfebb64 100644 --- a/client/pages/Labs.tsx +++ b/client/pages/Labs.tsx @@ -112,6 +112,31 @@ export default function Labs() { return (
+ {/* Informational Banner */} +
+
+
+
+ +

+ External Platform: Labs is hosted at{" "} + + aethex.studio + +

+
+ +
+
+
+ {/* Cyberpunk Background Effects */}
@@ -120,82 +145,51 @@ export default function Labs() {
- {/* Hero Section - L.A.B.S. Interface */} -
-
-
-
+ {/* Hero Section */} +
+
+
+
Labs Logo
- - - Research & Development Uplink - +
+ + + Advanced Research & Development + -
-

+

The Innovation Engine

-

- Real-time window into the AeThex Labs mainframe. - Breakthrough R&D pushing the boundaries of what's possible. + +

+ Breakthrough R&D pushing the boundaries of what's possible in software, AI, games, and digital experiences.

-

- AeThex Labs is our dedicated R&D pillar, focused on - breakthrough technologies that create lasting competitive - advantage. Applied R&D pushing the boundaries of what's - possible in software, games, and digital experiences. -

- -
+
- - {/* Creator Network CTAs */} -
-

- Explore our creator community: -

-
- - -
-
From 7aedd591b768ebb87b724e1695fe63f38f382598 Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 20:25:56 +0000 Subject: [PATCH 02/10] =?UTF-8?q?=E2=9C=A8=20Add=20auto-redirect=20countdo?= =?UTF-8?q?wn=20to=20realm=20landing=20pages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Show beautiful landing pages for 5 seconds before redirecting - Add countdown timer in sticky banner (5, 4, 3, 2, 1...) - 'Go Now' button to skip countdown and redirect immediately - Pulsing icon animation during countdown - GameForge → aethex.foundation/gameforge - Labs → aethex.studio - Foundation → aethex.foundation - Best of both worlds: showcase pages + auto-navigation --- client/App.tsx | 15 ++++++--------- client/pages/Foundation.tsx | 21 +++++++++++++++++---- client/pages/GameForge.tsx | 21 +++++++++++++++++---- client/pages/Labs.tsx | 21 +++++++++++++++++---- 4 files changed, 57 insertions(+), 21 deletions(-) diff --git a/client/App.tsx b/client/App.tsx index 839935fc..3bdde8fc 100644 --- a/client/App.tsx +++ b/client/App.tsx @@ -364,9 +364,8 @@ const App = () => ( /> } /> - {/* Labs redirects to aethex.studio (Skunkworks R&D) */} - } /> - } /> + {/* Labs page with auto-redirect to aethex.studio (Skunkworks R&D) */} + } /> {/* GameForge Management routes stay local on aethex.dev (Axiom Model - Write/Control) */} ( } /> - {/* GameForge public routes redirect to aethex.foundation/gameforge (Axiom Model - Read-Only Showcase) */} - } /> - } /> + {/* GameForge public route with auto-redirect to aethex.foundation/gameforge (Axiom Model - Read-Only Showcase) */} + } /> - {/* Foundation redirects to aethex.foundation (Non-Profit Guardian - Axiom Model) */} - } /> - } /> + {/* Foundation page with auto-redirect to aethex.foundation (Non-Profit Guardian - Axiom Model) */} + } /> } /> { @@ -41,6 +42,18 @@ export default function Foundation() { return () => clearTimeout(timer); }, [armToast]); + // Auto-redirect countdown + useEffect(() => { + if (isLoading) return; + + if (countdown > 0) { + const timer = setTimeout(() => setCountdown(countdown - 1), 1000); + return () => clearTimeout(timer); + } else { + window.location.href = 'https://aethex.foundation'; + } + }, [countdown, isLoading]); + if (isLoading) { return (
- {/* Informational Banner */} + {/* Informational Banner with Countdown */}
- +

- External Platform: Foundation is hosted at{" "} + Redirecting in {countdown}s... Foundation is hosted at{" "} aethex.foundation @@ -75,7 +88,7 @@ export default function Foundation() { onClick={() => window.location.href = 'https://aethex.foundation'} > - Visit Platform + Go Now

diff --git a/client/pages/GameForge.tsx b/client/pages/GameForge.tsx index f700859c..eec8efcf 100644 --- a/client/pages/GameForge.tsx +++ b/client/pages/GameForge.tsx @@ -27,6 +27,7 @@ export default function GameForge() { const { theme } = useArmTheme(); const armToast = useArmToast(); const [isLoading, setIsLoading] = useState(true); + const [countdown, setCountdown] = useState(5); const toastShownRef = useRef(false); useEffect(() => { @@ -41,6 +42,18 @@ export default function GameForge() { return () => clearTimeout(timer); }, [armToast]); + // Auto-redirect countdown + useEffect(() => { + if (isLoading) return; + + if (countdown > 0) { + const timer = setTimeout(() => setCountdown(countdown - 1), 1000); + return () => clearTimeout(timer); + } else { + window.location.href = 'https://aethex.foundation/gameforge'; + } + }, [countdown, isLoading]); + if (isLoading) { return (
- {/* Informational Banner */} + {/* Informational Banner with Countdown */}
- +

- External Platform: GameForge is hosted at{" "} + Redirecting in {countdown}s... GameForge is hosted at{" "} aethex.foundation/gameforge @@ -109,7 +122,7 @@ export default function GameForge() { onClick={() => window.location.href = 'https://aethex.foundation/gameforge'} > - Visit Platform + Go Now

diff --git a/client/pages/Labs.tsx b/client/pages/Labs.tsx index edfebb64..53603257 100644 --- a/client/pages/Labs.tsx +++ b/client/pages/Labs.tsx @@ -23,6 +23,7 @@ export default function Labs() { const { theme } = useArmTheme(); const armToast = useArmToast(); const [isLoading, setIsLoading] = useState(true); + const [countdown, setCountdown] = useState(5); const toastShownRef = useRef(false); useEffect(() => { @@ -37,6 +38,18 @@ export default function Labs() { return () => clearTimeout(timer); }, [armToast]); + // Auto-redirect countdown + useEffect(() => { + if (isLoading) return; + + if (countdown > 0) { + const timer = setTimeout(() => setCountdown(countdown - 1), 1000); + return () => clearTimeout(timer); + } else { + window.location.href = 'https://aethex.studio'; + } + }, [countdown, isLoading]); + if (isLoading) { return (
- {/* Informational Banner */} + {/* Informational Banner with Countdown */}
- +

- External Platform: Labs is hosted at{" "} + Redirecting in {countdown}s... Labs is hosted at{" "} aethex.studio @@ -131,7 +144,7 @@ export default function Labs() { onClick={() => window.location.href = 'https://aethex.studio'} > - Visit Studio + Go Now

From f673d058468271b575b8899a2e0c90895c9a84d2 Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 20:32:39 +0000 Subject: [PATCH 03/10] =?UTF-8?q?=F0=9F=90=9B=20Fix=20syntax=20error=20in?= =?UTF-8?q?=20Foundation.tsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix malformed div tag with inline comment - Remove orphaned button elements - Resolves 500 error on Foundation page --- client/pages/Foundation.tsx | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/client/pages/Foundation.tsx b/client/pages/Foundation.tsx index 5270cf35..dac96f15 100644 --- a/client/pages/Foundation.tsx +++ b/client/pages/Foundation.tsx @@ -94,7 +94,8 @@ export default function Foundation() {
-
{/* Hero Section */} +
+ {/* Hero Section */}
- -
-
{/* Flagship: GameForge Section */} From e4029d0bef5c1d2239507ece6fbabcb8c192c14f Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 20:46:50 +0000 Subject: [PATCH 04/10] feat: implement conversion-optimized landing pages - Remove auto-redirect countdown from GameForge, Labs, Foundation - Add TL;DR collapsible sections in hero for quick info - Add exit intent modals (triggered on mouse leave) - Update sticky banners to be persistent (no countdown) - Maintain multiple CTAs throughout pages - Support 4 user personas: Impatient, Scanner, Researcher, Undecided --- client/pages/Foundation.tsx | 92 +++++++++++++++++++++++++++++++------ client/pages/GameForge.tsx | 92 +++++++++++++++++++++++++++++++------ client/pages/Labs.tsx | 92 +++++++++++++++++++++++++++++++------ 3 files changed, 234 insertions(+), 42 deletions(-) diff --git a/client/pages/Foundation.tsx b/client/pages/Foundation.tsx index dac96f15..c72b8899 100644 --- a/client/pages/Foundation.tsx +++ b/client/pages/Foundation.tsx @@ -27,7 +27,8 @@ export default function Foundation() { const { theme } = useArmTheme(); const armToast = useArmToast(); const [isLoading, setIsLoading] = useState(true); - const [countdown, setCountdown] = useState(5); + const [showTldr, setShowTldr] = useState(false); + const [showExitModal, setShowExitModal] = useState(false); const toastShownRef = useRef(false); useEffect(() => { @@ -42,17 +43,17 @@ export default function Foundation() { return () => clearTimeout(timer); }, [armToast]); - // Auto-redirect countdown + // Exit intent detection useEffect(() => { - if (isLoading) return; + const handleMouseLeave = (e: MouseEvent) => { + if (e.clientY <= 0 && !showExitModal) { + setShowExitModal(true); + } + }; - if (countdown > 0) { - const timer = setTimeout(() => setCountdown(countdown - 1), 1000); - return () => clearTimeout(timer); - } else { - window.location.href = 'https://aethex.foundation'; - } - }, [countdown, isLoading]); + document.addEventListener('mouseleave', handleMouseLeave); + return () => document.removeEventListener('mouseleave', handleMouseLeave); + }, [showExitModal]); if (isLoading) { return ( @@ -69,14 +70,14 @@ export default function Foundation() { return (
- {/* Informational Banner with Countdown */} + {/* Persistent Info Banner */}
- +

- Redirecting in {countdown}s... Foundation is hosted at{" "} + Foundation is hosted at{" "} aethex.foundation @@ -88,7 +89,7 @@ export default function Foundation() { onClick={() => window.location.href = 'https://aethex.foundation'} > - Go Now + Visit Foundation

@@ -118,6 +119,30 @@ export default function Foundation() {

Building community, empowering developers, and advancing game development through open-source innovation and mentorship.

+ + {/* TL;DR Section */} +
+ + {showTldr && ( +
+

TL;DR

+
    +
  • 501(c)(3) non-profit focused on game development
  • +
  • GameForge flagship program (30-day sprints)
  • +
  • Open-source Axiom Protocol for game dev
  • +
  • Master-apprentice mentorship model
  • +
  • Community hub at aethex.foundation
  • +
+
+ )} +
@@ -463,6 +488,45 @@ export default function Foundation() {
+ + {/* Exit Intent Modal */} + {showExitModal && ( +
+
+
+
+
+ +
+
+
+

Join Our Community

+

+ Be part of the AeThex Foundation 501(c)(3) - where developers learn, grow, and ship together. +

+
+
+ + +
+
+
+
+ )} ); } diff --git a/client/pages/GameForge.tsx b/client/pages/GameForge.tsx index eec8efcf..84e7b20a 100644 --- a/client/pages/GameForge.tsx +++ b/client/pages/GameForge.tsx @@ -27,7 +27,8 @@ export default function GameForge() { const { theme } = useArmTheme(); const armToast = useArmToast(); const [isLoading, setIsLoading] = useState(true); - const [countdown, setCountdown] = useState(5); + const [showTldr, setShowTldr] = useState(false); + const [showExitModal, setShowExitModal] = useState(false); const toastShownRef = useRef(false); useEffect(() => { @@ -42,17 +43,17 @@ export default function GameForge() { return () => clearTimeout(timer); }, [armToast]); - // Auto-redirect countdown + // Exit intent detection useEffect(() => { - if (isLoading) return; + const handleMouseLeave = (e: MouseEvent) => { + if (e.clientY <= 0 && !showExitModal) { + setShowExitModal(true); + } + }; - if (countdown > 0) { - const timer = setTimeout(() => setCountdown(countdown - 1), 1000); - return () => clearTimeout(timer); - } else { - window.location.href = 'https://aethex.foundation/gameforge'; - } - }, [countdown, isLoading]); + document.addEventListener('mouseleave', handleMouseLeave); + return () => document.removeEventListener('mouseleave', handleMouseLeave); + }, [showExitModal]); if (isLoading) { return ( @@ -103,14 +104,14 @@ export default function GameForge() { return (
- {/* Informational Banner with Countdown */} + {/* Persistent Info Banner */}
- +

- Redirecting in {countdown}s... GameForge is hosted at{" "} + GameForge is hosted at{" "} aethex.foundation/gameforge @@ -122,7 +123,7 @@ export default function GameForge() { onClick={() => window.location.href = 'https://aethex.foundation/gameforge'} > - Go Now + Visit Platform

@@ -160,6 +161,30 @@ export default function GameForge() {

AeThex GameForge is a master-apprentice mentorship program where teams of 5 developers ship real games in 30-day sprints.

+ + {/* TL;DR Section */} +
+ + {showTldr && ( +
+

TL;DR

+
    +
  • 30-day game development sprints
  • +
  • 5-person teams (1 mentor + 4 developers)
  • +
  • Ship real games to aethex.fun
  • +
  • Build your portfolio on aethex.me passport
  • +
  • Part of AeThex Foundation (501c3 non-profit)
  • +
+
+ )} +
@@ -414,6 +439,45 @@ export default function GameForge() {
+ + {/* Exit Intent Modal */} + {showExitModal && ( +
+
+
+
+
+ +
+
+
+

Ready to Ship Games?

+

+ Join GameForge and start building your portfolio with real, shipped games in 30-day sprints. +

+
+
+ + +
+
+
+
+ )} ); } diff --git a/client/pages/Labs.tsx b/client/pages/Labs.tsx index 53603257..a4bd11e3 100644 --- a/client/pages/Labs.tsx +++ b/client/pages/Labs.tsx @@ -23,7 +23,8 @@ export default function Labs() { const { theme } = useArmTheme(); const armToast = useArmToast(); const [isLoading, setIsLoading] = useState(true); - const [countdown, setCountdown] = useState(5); + const [showTldr, setShowTldr] = useState(false); + const [showExitModal, setShowExitModal] = useState(false); const toastShownRef = useRef(false); useEffect(() => { @@ -38,17 +39,17 @@ export default function Labs() { return () => clearTimeout(timer); }, [armToast]); - // Auto-redirect countdown + // Exit intent detection useEffect(() => { - if (isLoading) return; + const handleMouseLeave = (e: MouseEvent) => { + if (e.clientY <= 0 && !showExitModal) { + setShowExitModal(true); + } + }; - if (countdown > 0) { - const timer = setTimeout(() => setCountdown(countdown - 1), 1000); - return () => clearTimeout(timer); - } else { - window.location.href = 'https://aethex.studio'; - } - }, [countdown, isLoading]); + document.addEventListener('mouseleave', handleMouseLeave); + return () => document.removeEventListener('mouseleave', handleMouseLeave); + }, [showExitModal]); if (isLoading) { return ( @@ -125,14 +126,14 @@ export default function Labs() { return (
- {/* Informational Banner with Countdown */} + {/* Persistent Info Banner */}
- +

- Redirecting in {countdown}s... Labs is hosted at{" "} + Labs is hosted at{" "} aethex.studio @@ -144,7 +145,7 @@ export default function Labs() { onClick={() => window.location.href = 'https://aethex.studio'} > - Go Now + Visit Studio

@@ -183,6 +184,30 @@ export default function Labs() {

Breakthrough R&D pushing the boundaries of what's possible in software, AI, games, and digital experiences.

+ + {/* TL;DR Section */} +
+ + {showTldr && ( +
+

TL;DR

+
    +
  • Cutting-edge R&D across AI, games, and web tech
  • +
  • PhD-level researchers and innovative engineers
  • +
  • Published research and open-source contributions
  • +
  • Technology powering GameForge and platform tools
  • +
  • Visit aethex.studio for research papers & demos
  • +
+
+ )} +
@@ -423,6 +448,45 @@ export default function Labs() {
+ + {/* Exit Intent Modal */} + {showExitModal && ( +
+
+
+
+
+ +
+
+
+

Explore Labs Research

+

+ Dive into cutting-edge research, technical papers, and innovation demos at AeThex Labs Studio. +

+
+
+ + +
+
+
+
+ )} ); } From bbc5e4a07aa88c015333a4227fc44ddb7cac73d0 Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 21:11:03 +0000 Subject: [PATCH 05/10] feat: add VRChat and RecRoom platform integrations - Create VRChat integration docs with Udon C# examples - Create RecRoom integration docs with Circuits visual scripting - Add VRChat and RecRoom to homepage cross-platform claims - Add routes for /docs/integrations/vrchat and /docs/integrations/recroom - Update DocsIntegrations page with platform showcase cards - Include authentication flows, code examples, and best practices - Cover 30K+ VRChat users and 3M+ RecRoom MAU Closes the gap in cross-platform social VR support --- client/App.tsx | 10 + client/pages/Index.tsx | 4 +- client/pages/docs/DocsIntegrations.tsx | 90 ++++ client/pages/docs/integrations/RecRoom.tsx | 467 +++++++++++++++++++++ client/pages/docs/integrations/VRChat.tsx | 400 ++++++++++++++++++ 5 files changed, 969 insertions(+), 2 deletions(-) create mode 100644 client/pages/docs/integrations/RecRoom.tsx create mode 100644 client/pages/docs/integrations/VRChat.tsx diff --git a/client/App.tsx b/client/App.tsx index 3bdde8fc..86c4a55c 100644 --- a/client/App.tsx +++ b/client/App.tsx @@ -44,6 +44,8 @@ import DocsApiReference from "./pages/docs/DocsApiReference"; import DocsCli from "./pages/docs/DocsCli"; import DocsExamples from "./pages/docs/DocsExamples"; import DocsIntegrations from "./pages/docs/DocsIntegrations"; +import VRChatIntegration from "./pages/docs/integrations/VRChat"; +import RecRoomIntegration from "./pages/docs/integrations/RecRoom"; import DocsCurriculum from "./pages/docs/DocsCurriculum"; import DocsCurriculumEthos from "./pages/docs/DocsCurriculumEthos"; import EthosGuild from "./pages/community/EthosGuild"; @@ -616,6 +618,14 @@ const App = () => ( path="integrations" element={} /> + } + /> + } + /> } /> } /> diff --git a/client/pages/Index.tsx b/client/pages/Index.tsx index 264c0ffd..7dcbb378 100644 --- a/client/pages/Index.tsx +++ b/client/pages/Index.tsx @@ -85,7 +85,7 @@ const features = [ { icon: Layers, title: "Cross-Platform Integration Layer", - description: "One unified API to build across Roblox, Minecraft, Meta Horizon, Fortnite, Zepeto, and more—no more managing separate platform SDKs or gated gardens", + description: "One unified API to build across Roblox, VRChat, RecRoom, Minecraft, Meta Horizon, Fortnite, and Zepeto—no more managing separate platform SDKs or gated gardens", }, { icon: Code2, @@ -110,7 +110,7 @@ const features = [ { icon: Rocket, title: "Ship Everywhere, Fast", - description: "150+ cross-platform code examples, pre-built templates, OAuth integration, Supabase backend, and one-command deployment to every metaverse", + description: "150+ cross-platform code examples, pre-built templates for VRChat, RecRoom, Roblox, and more—OAuth integration, Supabase backend, and one-command deployment to every metaverse", }, ]; diff --git a/client/pages/docs/DocsIntegrations.tsx b/client/pages/docs/DocsIntegrations.tsx index f31fa6fc..2171bbcc 100644 --- a/client/pages/docs/DocsIntegrations.tsx +++ b/client/pages/docs/DocsIntegrations.tsx @@ -28,6 +28,9 @@ import { Palette, AlertTriangle, FileText, + Headset, + Gamepad2, + Boxes, } from "lucide-react"; const connectorFields = [ @@ -107,6 +110,93 @@ export default function DocsIntegrations() {

+ {/* Platform Integrations Showcase */} +
+
+ +

+ Platform Integrations +

+
+

+ Deploy your games and apps across multiple platforms using AeThex's unified API. +

+ +
+ + + + + VRChat + + + + + Build immersive VR worlds with Udon scripting and cross-platform authentication + +
+ Unity + Udon C# + VR +
+ +
+
+ + + + + + RecRoom + + + + + Create social games using Circuits visual scripting for VR and mobile + +
+ Circuits + VR + Mobile + Social +
+ +
+
+ + + + + + More Platforms + + + + + Roblox, Fortnite, Minecraft, Unity, Unreal, and more coming soon + +
+ Roblox + Unity + Unreal +
+ +
+
+
+
+
diff --git a/client/pages/docs/integrations/RecRoom.tsx b/client/pages/docs/integrations/RecRoom.tsx new file mode 100644 index 00000000..3439d6c3 --- /dev/null +++ b/client/pages/docs/integrations/RecRoom.tsx @@ -0,0 +1,467 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Gamepad2, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import CodeBlock from "@/components/dev-platform/CodeBlock"; + +export default function RecRoomIntegration() { + return ( +
+
+ + + RecRoom Integration + +

+ Build RecRoom Experiences with AeThex +

+

+ Create cross-platform social games for RecRoom's 3M+ monthly active users. Use AeThex's unified API + with RecRoom Circuits for visual scripting, data persistence, and multi-platform deployment. +

+
+ + {/* Quick Stats */} +
+ + +
3M+
+
Monthly Active Users
+
+
+ + +
12M+
+
Created Rooms
+
+
+ + +
VR + Mobile
+
Cross-Platform
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Persistent Game State + + + + Save player inventory, room configurations, and game progress that persists across VR and mobile sessions + + + + + + + + Unified Leaderboards + + + + Track scores across RecRoom, Roblox, and web platforms with AeThex's cross-platform leaderboard API + + + + + + + + Circuit Automation + + + + Connect RecRoom Circuits to AeThex webhooks for real-time events, triggers, and automated game logic + + + + + + + + Social Features + + + + Link RecRoom profiles to AeThex Passport for friend lists, parties, and social features across platforms + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Install AeThex Circuits Plugin + Add AeThex API chips to your RecRoom Circuits palette + + +

+ In RecRoom's Maker Pen, search for AeThex in the + Circuits V2 palette to find pre-built API chips. +

+
+

Available Chips:

+
    +
  • AeThex API Call - Make HTTP requests to AeThex endpoints
  • +
  • AeThex Auth - Authenticate RecRoom players
  • +
  • AeThex Save Data - Persist player data
  • +
  • AeThex Leaderboard - Fetch/update leaderboard scores
  • +
+
+
+
+ + + + 2. Configure API Credentials + Get your API key from the AeThex Developer Dashboard + + +
    +
  1. + 1. + Visit AeThex Developer Dashboard +
  2. +
  3. + 2. + Create new API key with recroom:read and recroom:write scopes +
  4. +
  5. + 3. + Copy API key to your RecRoom room's configuration chip +
  6. +
+ +
+

+ + Security: Never display your API key in-room. Use the AeThex Config chip which stores credentials securely. +

+
+
+
+ + + + 3. Build Your First Circuit + Create a persistent leaderboard that syncs across platforms + + +

+ Connect the following chips in RecRoom Circuits V2: +

+ +
+
+
Button
+
+
AeThex Auth
+
+
+
AeThex Auth
+
+
Player ID
+
+
+
Player ID
+
+
Get Score
+
+
+
Get Score
+
+
Text Screen
+
+
+ +

+ This circuit fetches a player's score from AeThex when they press a button, displaying it on a text screen. + Scores are shared across RecRoom, Roblox, VRChat, and web platforms. +

+
+
+
+ + {/* Code Examples */} +
+

+ + API Integration Examples +

+ + + + Save Player Progress + Persist inventory and game state across sessions + + + { + const { playerId, inventory, level, checkpoint } = req.body; + + // Save to AeThex backend + await aethex.users.update(playerId, { + recroom_inventory: inventory, + recroom_level: level, + recroom_checkpoint: checkpoint, + last_played_recroom: new Date().toISOString() + }); + + res.json({ success: true, saved_at: new Date() }); +}); + +// Load player progress when they join +app.get('/api/recroom/load-progress/:playerId', async (req, res) => { + const { playerId } = req.params; + + const userData = await aethex.users.get(playerId); + + res.json({ + inventory: userData.recroom_inventory || [], + level: userData.recroom_level || 1, + checkpoint: userData.recroom_checkpoint || 'start' + }); +});`} + language="javascript" + showLineNumbers={true} + /> + + + + + + Cross-Platform Leaderboard + Update scores that sync across RecRoom, Roblox, and web + + + entry.userId === playerId) + 1, + topPlayers: leaderboard + }); + + } catch (error) { + res.status(500).json({ error: error.message }); + } +}`} + language="typescript" + showLineNumbers={true} + /> + + +
+ + {/* Authentication Flow */} +
+

Player Authentication

+

+ Link RecRoom players to AeThex Passport for cross-platform identity. +

+ + + + 3-Step Auth Flow + + +
+
+
1
+
+

Player Enters Room

+

Use RecRoom Circuits to detect player join event

+
+
+ +
+
2
+
+

Generate Auth Code

+

+ AeThex API Call chip requests 6-digit code, displays it on a text board in-room +

+ + POST /api/auth/generate-code
+ → Returns: {`{ code: "ABC123", expires: "2026-01-10T21:00:00Z" }`} +
+
+
+ +
+
3
+
+

Player Links Account

+

+ Player visits aethex.dev/link, enters code, + RecRoom receives webhook with Passport ID +

+
+
+
+
+
+
+ + {/* Best Practices */} +
+

+ + Best Practices & Limitations +

+ +
+ + + RecRoom Circuits Limitations + + +

No native HTTP chips: Use AeThex middleware webhooks instead of direct API calls

+

Response delays: Webhook roundtrips take 1-3 seconds, design UX accordingly

+

Circuit complexity: Max 200 chips per room, optimize with cloud functions

+

Mobile performance: Keep API payloads under 50KB for mobile players

+
+
+ + + + Performance Optimization + + +

Cache results: Store API responses in room variables for 5-10 minutes

+

Batch operations: Group multiple player updates into single API call

+

Lazy loading: Only fetch data when players interact with features

+

Offline mode: Implement fallback gameplay when webhooks fail

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Build?

+

+ Start building cross-platform social games with AeThex. Deploy to RecRoom, VRChat, + Roblox, and web simultaneously with one unified API. +

+ +
+
+
+ ); +} diff --git a/client/pages/docs/integrations/VRChat.tsx b/client/pages/docs/integrations/VRChat.tsx new file mode 100644 index 00000000..73e60d30 --- /dev/null +++ b/client/pages/docs/integrations/VRChat.tsx @@ -0,0 +1,400 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Headset, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import CodeBlock from "@/components/dev-platform/CodeBlock"; + +export default function VRChatIntegration() { + return ( +
+
+ + + VRChat Integration + +

+ Build VRChat Worlds with AeThex +

+

+ Deploy interactive VR experiences to VRChat's 30K+ concurrent user platform using AeThex's unified API. + Leverage Udon scripting integration, cross-platform authentication, and real-time data sync. +

+
+ + {/* Quick Stats */} +
+ + +
30K+
+
Concurrent Users
+
+
+ + +
250K+
+
Published Worlds
+
+
+ + +
C#
+
Udon Programming
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Persistent World Data + + + + Store player progress, leaderboards, and world state in AeThex backend with automatic sync across sessions + + + + + + + + Cross-Platform Auth + + + + Link VRChat users to AeThex Passport for unified identity across Roblox, Fortnite, and web platforms + + + + + + + + Real-Time Events + + + + Trigger world events based on API data - sync game state, achievements, or live leaderboards in real-time + + + + + + + + Asset Pipeline + + + + Upload and manage VRChat assets through AeThex API, with automatic versioning and CDN distribution + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Install AeThex Unity SDK + Add the AeThex package to your VRChat Unity project + + + + + + + + + 2. Configure API Credentials + Get your API key from the AeThex Developer Dashboard + + + + + + + + + 3. Create Your First Udon Script + Build a persistent leaderboard that syncs across VRChat sessions + + + ().GetClient(); + } + + public override void OnPlayerJoined(VRCPlayerApi player) + { + // Fetch player's AeThex profile + string playerId = player.displayName; + + aethexClient.GetUserProfile(playerId).Then(profile => + { + Debug.Log($"Player {profile.username} joined with score: {profile.score}"); + UpdateLeaderboard(profile); + }); + } + + public void OnPlayerScored(VRCPlayerApi player, int points) + { + // Update score in AeThex backend + aethexClient.UpdateUserScore(player.displayName, points).Then(() => + { + Debug.Log($"Score updated: +{points} points"); + }); + } + + private void UpdateLeaderboard(UserProfile profile) + { + // Update VRChat UI with leaderboard data + // This syncs across all players in the world + } +}`} + language="csharp" + showLineNumbers={true} + /> + + +
+ + {/* Authentication Flow */} +
+

Cross-Platform Authentication

+

+ Link VRChat players to their AeThex Passport for unified identity across all platforms. +

+ + + + Authentication Flow + + +
    +
  1. + 1. + Player joins VRChat world and interacts with authentication panel +
  2. +
  3. + 2. + World displays unique 6-digit code from AeThex API +
  4. +
  5. + 3. + Player visits aethex.dev/link and enters code +
  6. +
  7. + 4. + VRChat world receives webhook with linked Passport data +
  8. +
  9. + 5. + Player's VRChat profile now syncs with Roblox, Fortnite, web accounts +
  10. +
+ + + { + // Display 6-digit code to player in-world + authCodeText.text = $"Code: {response.code}"; + Debug.Log($"Player should visit: aethex.dev/link?code={response.code}"); + + // Poll for authentication completion + StartCoroutine(PollAuthStatus(response.code)); + }); +} + +private IEnumerator PollAuthStatus(string code) +{ + while (true) + { + yield return new WaitForSeconds(2f); + + var status = await aethexClient.CheckAuthStatus(code); + if (status.authenticated) + { + Debug.Log($"Player linked! Passport ID: {status.passportId}"); + OnPlayerAuthenticated(status.passportId); + break; + } + } +}`} + language="csharp" + showLineNumbers={true} + /> +
+
+
+ + {/* Best Practices */} +
+

+ + Best Practices & Limitations +

+ +
+ + + VRChat Limitations + + +

No direct HTTP requests: Use AeThex SDK which handles async via Unity coroutines

+

Udon C# restrictions: No threading, limited async/await support

+

Rate limits: Max 100 API calls per world per minute

+

Data size: Keep API responses under 100KB for optimal performance

+
+
+ + + + Performance Tips + + +

Cache data: Store frequently accessed data locally, refresh every 5 minutes

+

Batch requests: Use bulk endpoints to fetch multiple players at once

+

Lazy load: Only fetch data when players interact with features

+

Fallback mode: Implement offline mode for when API is unavailable

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Build?

+

+ Start building cross-platform VR experiences with AeThex. Deploy to VRChat, RecRoom, + and web simultaneously with one unified API. +

+ +
+
+
+ ); +} From 68d84528cf023c1304279988780d076a7391436a Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 22:59:45 +0000 Subject: [PATCH 06/10] feat: add Spatial, Decentraland, and The Sandbox platform integrations - Created comprehensive integration docs for Spatial (5M+ visitors, web-based) - Created comprehensive integration docs for Decentraland (800K+ users, Ethereum) - Created comprehensive integration docs for The Sandbox (2M+ players, Polygon) - Updated DocsIntegrations page with new platform showcase cards - Added routes for /docs/integrations/spatial, /decentraland, /thesandbox - Updated homepage to mention all 8 supported platforms explicitly - Each integration includes: Quick start, code examples, auth flows, best practices --- client/App.tsx | 15 + client/pages/Index.tsx | 4 +- client/pages/docs/DocsIntegrations.tsx | 76 ++- .../pages/docs/integrations/Decentraland.tsx | 467 ++++++++++++++++++ client/pages/docs/integrations/Spatial.tsx | 406 +++++++++++++++ client/pages/docs/integrations/TheSandbox.tsx | 448 +++++++++++++++++ 6 files changed, 1404 insertions(+), 12 deletions(-) create mode 100644 client/pages/docs/integrations/Decentraland.tsx create mode 100644 client/pages/docs/integrations/Spatial.tsx create mode 100644 client/pages/docs/integrations/TheSandbox.tsx diff --git a/client/App.tsx b/client/App.tsx index 86c4a55c..2e30d36d 100644 --- a/client/App.tsx +++ b/client/App.tsx @@ -46,6 +46,9 @@ import DocsExamples from "./pages/docs/DocsExamples"; import DocsIntegrations from "./pages/docs/DocsIntegrations"; import VRChatIntegration from "./pages/docs/integrations/VRChat"; import RecRoomIntegration from "./pages/docs/integrations/RecRoom"; +import SpatialIntegration from "./pages/docs/integrations/Spatial"; +import DecentralandIntegration from "./pages/docs/integrations/Decentraland"; +import TheSandboxIntegration from "./pages/docs/integrations/TheSandbox"; import DocsCurriculum from "./pages/docs/DocsCurriculum"; import DocsCurriculumEthos from "./pages/docs/DocsCurriculumEthos"; import EthosGuild from "./pages/community/EthosGuild"; @@ -626,6 +629,18 @@ const App = () => ( path="integrations/recroom" element={} /> + } + /> + } + /> + } + /> } /> } /> diff --git a/client/pages/Index.tsx b/client/pages/Index.tsx index 7dcbb378..a7f547ed 100644 --- a/client/pages/Index.tsx +++ b/client/pages/Index.tsx @@ -85,7 +85,7 @@ const features = [ { icon: Layers, title: "Cross-Platform Integration Layer", - description: "One unified API to build across Roblox, VRChat, RecRoom, Minecraft, Meta Horizon, Fortnite, and Zepeto—no more managing separate platform SDKs or gated gardens", + description: "One unified API to build across Roblox, VRChat, RecRoom, Spatial, Decentraland, The Sandbox, Minecraft, Meta Horizon, Fortnite, and Zepeto—no more managing separate platform SDKs or gated gardens", }, { icon: Code2, @@ -110,7 +110,7 @@ const features = [ { icon: Rocket, title: "Ship Everywhere, Fast", - description: "150+ cross-platform code examples, pre-built templates for VRChat, RecRoom, Roblox, and more—OAuth integration, Supabase backend, and one-command deployment to every metaverse", + description: "150+ cross-platform code examples, pre-built templates for VRChat, RecRoom, Spatial, Decentraland, The Sandbox, Roblox, and more—OAuth integration, Supabase backend, and one-command deployment to every metaverse", }, ]; diff --git a/client/pages/docs/DocsIntegrations.tsx b/client/pages/docs/DocsIntegrations.tsx index 2171bbcc..6170ec30 100644 --- a/client/pages/docs/DocsIntegrations.tsx +++ b/client/pages/docs/DocsIntegrations.tsx @@ -31,6 +31,9 @@ import { Headset, Gamepad2, Boxes, + Globe, + Cuboid, + Box, } from "lucide-react"; const connectorFields = [ @@ -170,24 +173,77 @@ export default function DocsIntegrations() { - -
- - + cyan-950/50 to-blue-950/50 border-cyan-500/30 hover:border-cyan-400/60 transition-colors"> - - More Platforms + + Spatial - Roblox, Fortnite, Minecraft, Unity, Unreal, and more coming soon + Build browser-based 3D experiences for VR, desktop, and mobile devices
- Roblox - Unity - Unreal + TypeScript + Web3 + No Install +
+ +
+
+ + + + + + Decentraland + + + + + Create Ethereum-powered metaverse experiences with NFT integration + +
+ Ethereum + LAND + DAO +
+ +
+
+ + + + + + The Sandbox + + + + + Build voxel games with visual editor and Polygon NFT rewards + +
+ Polygon + Voxels + NFTs +
+
+ + + + + + + + Documentation + + + + + + + +
+ + + {/* Next Steps */} + + +

Ready to Build?

+

+ Create blockchain-powered metaverse experiences with Decentraland and AeThex. Build NFT-gated + games, DAO governance tools, and cross-chain achievements. +

+ +
+
+
+ ); +} diff --git a/client/pages/docs/integrations/Spatial.tsx b/client/pages/docs/integrations/Spatial.tsx new file mode 100644 index 00000000..aff5b8f6 --- /dev/null +++ b/client/pages/docs/integrations/Spatial.tsx @@ -0,0 +1,406 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Globe, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import CodeBlock from "@/components/dev-platform/CodeBlock"; + +export default function SpatialIntegration() { + return ( +
+
+ + + Spatial Integration + +

+ Build Spatial Experiences with AeThex +

+

+ Create immersive 3D spaces for Spatial's web-based metaverse platform. Use AeThex's unified API + with Spatial's visual editor, TypeScript SDK, and multi-device support (VR, Desktop, Mobile). +

+
+ + {/* Quick Stats */} +
+ + +
5M+
+
Monthly Visitors
+
+
+ + +
100K+
+
Created Spaces
+
+
+ + +
No Install
+
Browser-Based
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Web3 Virtual Events + + + + Host conferences, exhibitions, and networking events with AeThex authentication and NFT-gated access + + + + + + + + Cross-Device Experiences + + + + Build once, deploy everywhere - Spatial runs on Quest, desktop browsers, and mobile devices + + + + + + + + Interactive 3D Content + + + + Sync 3D models, animations, and interactive objects with AeThex backend for dynamic content updates + + + + + + + + Analytics & Engagement + + + + Track visitor behavior, space engagement metrics, and cross-platform user journeys via AeThex analytics + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Install AeThex Spatial SDK + Add AeThex scripting components to your Spatial space + + +

+ In Spatial Studio, go to ScriptsAdd Package → Search for @aethex/spatial-sdk +

+ +
+
+ + + + 2. Initialize AeThex in Your Space + Configure API credentials in Spatial Studio + + + { + console.log(\`User \${user.username} joined\`); + + // Fetch user profile from AeThex + aethex.users.get(user.id).then(profile => { + console.log('AeThex Profile:', profile); + }); +}); + +// Example: Update player stats when they interact +space.onInteract.subscribe((event) => { + aethex.achievements.unlock(event.user.id, 'spatial-explorer'); +});`} + language="typescript" + showLineNumbers={true} + /> + + + + + + 3. Build Interactive Features + Create cross-platform leaderboards and achievements + + + { + const newScore = await updateLeaderboard(event.user.id, 100); + console.log('New leaderboard:', newScore); +});`} + language="typescript" + showLineNumbers={true} + /> + + +
+ + {/* Authentication Flow */} +
+

Player Authentication

+

+ Link Spatial visitors to AeThex Passport for cross-platform identity and progression. +

+ + + + OAuth Integration + + +

+ Spatial supports web-based OAuth flows, making authentication seamless for browser users. +

+ +
+
+
1
+
+

User Enters Space

+

Spatial script detects new visitor via onUserJoined event

+
+
+ +
+
2
+
+

Prompt Authentication

+

Display 3D UI panel with "Link AeThex Account" button

+
+
+ +
+
3
+
+

OAuth Redirect

+

Opens aethex.dev/oauth/spatial in browser overlay

+
+
+ +
+
4
+
+

Callback Webhook

+

Spatial receives auth token, stores in user session, unlocks cross-platform features

+
+
+
+ + { + const linkedUser = await aethex.auth.verifyToken(token); + console.log('User linked:', linkedUser); + + // Now you can access cross-platform data + const achievements = await aethex.achievements.list(linkedUser.id); + displayAchievements(achievements); +});`} + language="typescript" + showLineNumbers={true} + /> +
+
+
+ + {/* Best Practices */} +
+

+ + Best Practices & Limitations +

+ +
+ + + Spatial Limitations + + +

Browser-based performance: Keep API calls under 50/minute to avoid throttling

+

Asset size limits: 3D models max 50MB, optimize for web delivery

+

Script execution: Spatial runs TypeScript in sandbox, no native code

+

Concurrent users: Max 50 users per space instance, scale with multiple instances

+
+
+ + + + Performance Optimization + + +

Cache API responses: Store frequently accessed data in space variables

+

Lazy load content: Only fetch 3D assets when user approaches interactive zones

+

Use CDN URLs: Host large assets on AeThex CDN for faster loading

+

Mobile optimization: Test on mobile devices, reduce draw calls for iOS/Android

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Build?

+

+ Create immersive web3 experiences with Spatial and AeThex. Deploy to browsers, VR headsets, + and mobile devices with one unified API. +

+ +
+
+
+ ); +} diff --git a/client/pages/docs/integrations/TheSandbox.tsx b/client/pages/docs/integrations/TheSandbox.tsx new file mode 100644 index 00000000..1e70947b --- /dev/null +++ b/client/pages/docs/integrations/TheSandbox.tsx @@ -0,0 +1,448 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Box, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import CodeBlock from "@/components/dev-platform/CodeBlock"; + +export default function TheSandboxIntegration() { + return ( +
+
+ + + The Sandbox Integration + +

+ Build in The Sandbox with AeThex +

+

+ Create voxel-based gaming experiences in The Sandbox metaverse. Integrate AeThex APIs with Game Maker, + VoxEdit assets, and LAND ownership for user-generated content at scale. +

+
+ + {/* Quick Stats */} +
+ + +
2M+
+
Monthly Players
+
+
+ + +
166K+
+
LAND Owners
+
+
+ + +
Polygon
+
Blockchain
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Voxel Game Experiences + + + + Build games with Game Maker visual editor, sync player progress and rewards via AeThex backend + + + + + + + + NFT Asset Marketplace + + + + Create VoxEdit assets, list on OpenSea, track ownership and sales via AeThex analytics + + + + + + + + LAND Experiences + + + + Deploy games across multiple LAND parcels with unified player accounts via AeThex Passport + + + + + + + + Cross-Platform Rewards + + + + Award achievements in The Sandbox that unlock rewards in Roblox, Minecraft, and web platforms + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Install Game Maker + AeThex Plugin + Add AeThex SDK to your Sandbox experience + + +

+ Download The Sandbox Game Maker from sandbox.game, + then install the AeThex plugin from the Asset Library. +

+
+

Plugin Features:

+
    +
  • AeThex API Block - Make HTTP requests to AeThex endpoints
  • +
  • Player Auth Block - Link wallet to AeThex Passport
  • +
  • Achievement Block - Award cross-platform achievements
  • +
  • Leaderboard Block - Display global leaderboards
  • +
+
+
+
+ + + + 2. Configure AeThex in Game Maker + Add API credentials via visual scripting + + +

+ Drag the AeThex Config block into your experience, then enter your API key from the + Developer Dashboard. +

+ +
+

Visual Script Example:

+
+
+
On Player Enter
+
+
AeThex Auth
+
+
+
Player Wallet
+
+
Get Profile
+
+
+
Profile Data
+
+
Display UI
+
+
+
+
+
+ + + + 3. Build with TypeScript SDK (Advanced) + For custom logic beyond Game Maker's visual editor + + +

+ Use The Sandbox TypeScript SDK for complex game logic that integrates with AeThex APIs. +

+ + +
+
+
+ + {/* Authentication Flow */} +
+

Wallet Authentication

+

+ Link Sandbox wallets to AeThex Passport for cross-platform progression. +

+ + + + Polygon Wallet Integration + + +

+ The Sandbox uses Polygon network for fast, low-cost transactions. AeThex supports Polygon L2 natively. +

+ +
+
+
1
+
+

Player Enters Experience

+

Game Maker detects player with Polygon wallet connected

+
+
+ +
+
2
+
+

Check AeThex Link

+

AeThex API checks if wallet is already linked to Passport

+
+
+ +
+
3
+
+

Sign-In Prompt (First Time)

+

If not linked, prompt wallet signature (gasless, EIP-4361)

+
+
+ +
+
4
+
+

Cross-Platform Access

+

Player can now access achievements, progress from other platforms

+
+
+
+ + +
+
+
+ + {/* Best Practices */} +
+

+ + Best Practices & Limitations +

+ +
+ + + The Sandbox Limitations + + +

Game Maker constraints: Visual scripting has limited logic complexity

+

Voxel performance: Max 50k voxels per LAND parcel, optimize models

+

Player limits: 100 concurrent players per experience

+

Asset file sizes: VoxEdit models max 10MB, use LOD for large objects

+
+
+ + + + Optimization Tips + + +

Polygon L2 benefits: 2-second confirmations, $0.001 gas fees vs Ethereum mainnet

+

Batch API calls: Update multiple players' data in single request

+

Cache NFT metadata: Store VoxEdit asset metadata on AeThex CDN

+

Mobile support: The Sandbox mobile app launching 2026, test on Android/iOS

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Build?

+

+ Create voxel gaming experiences with The Sandbox and AeThex. Build NFT-powered games with + cross-platform rewards on Polygon L2. +

+ +
+
+
+ ); +} From 1c7b70666a4a077a7d7ef830215f714a21d76876 Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 23:30:03 +0000 Subject: [PATCH 07/10] feat: add Godot, GameMaker, GameJolt, and Itch.io integrations - Game engine integrations: Godot (GDScript/C#), GameMaker (GML) - Distribution platform integrations: GameJolt, Itch.io - Reorganized DocsIntegrations into Engines/Platforms/Distribution sections - Added routes for all 4 new integration pages - Total coverage: 10+ platforms, 2+ engines, 2+ storefronts --- client/App.tsx | 20 + client/pages/docs/DocsIntegrations.tsx | 136 ++++- client/pages/docs/integrations/GameJolt.tsx | 414 ++++++++++++++ client/pages/docs/integrations/GameMaker.tsx | 484 ++++++++++++++++ client/pages/docs/integrations/Godot.tsx | 547 ++++++++++++++++++ client/pages/docs/integrations/ItchIo.tsx | 558 +++++++++++++++++++ 6 files changed, 2156 insertions(+), 3 deletions(-) create mode 100644 client/pages/docs/integrations/GameJolt.tsx create mode 100644 client/pages/docs/integrations/GameMaker.tsx create mode 100644 client/pages/docs/integrations/Godot.tsx create mode 100644 client/pages/docs/integrations/ItchIo.tsx diff --git a/client/App.tsx b/client/App.tsx index 2e30d36d..d308b489 100644 --- a/client/App.tsx +++ b/client/App.tsx @@ -49,6 +49,10 @@ import RecRoomIntegration from "./pages/docs/integrations/RecRoom"; import SpatialIntegration from "./pages/docs/integrations/Spatial"; import DecentralandIntegration from "./pages/docs/integrations/Decentraland"; import TheSandboxIntegration from "./pages/docs/integrations/TheSandbox"; +import GodotIntegration from "./pages/docs/integrations/Godot"; +import GameMakerIntegration from "./pages/docs/integrations/GameMaker"; +import GameJoltIntegration from "./pages/docs/integrations/GameJolt"; +import ItchIoIntegration from "./pages/docs/integrations/ItchIo"; import DocsCurriculum from "./pages/docs/DocsCurriculum"; import DocsCurriculumEthos from "./pages/docs/DocsCurriculumEthos"; import EthosGuild from "./pages/community/EthosGuild"; @@ -641,6 +645,22 @@ const App = () => ( path="integrations/thesandbox" element={} /> + } + /> + } + /> + } + /> + } + /> } /> } /> diff --git a/client/pages/docs/DocsIntegrations.tsx b/client/pages/docs/DocsIntegrations.tsx index 6170ec30..adf693ff 100644 --- a/client/pages/docs/DocsIntegrations.tsx +++ b/client/pages/docs/DocsIntegrations.tsx @@ -113,16 +113,146 @@ export default function DocsIntegrations() {

- {/* Platform Integrations Showcase */} + {/* Game Engines */} +
+
+ +

+ Game Engines +

+
+

+ Integrate AeThex into your game engine of choice with native SDKs and code examples. +

+ +
+ + + + + Godot Engine + + + + + Open-source MIT-licensed engine with GDScript and C# support + +
+ GDScript + C# + Open Source +
+ +
+
+ + + + + + GameMaker + + + + + Powerful 2D engine with GML scripting for rapid game development + +
+ GML + 2D + Multi-Platform +
+ +
+
+
+
+ + {/* Distribution Platforms */} +
+
+ +

+ Distribution Platforms +

+
+

+ Publish your games on indie storefronts with AeThex backend integration for cloud saves and cross-platform features. +

+ +
+ + + + + GameJolt + + + + + Community gaming platform with 10M+ players and trophy sync + +
+ Trophies + 10M Players + Free +
+ +
+
+ + + + + + Itch.io + + + + + Indie marketplace with 500K+ games and flexible pay-what-you-want pricing + +
+ PWYW + 500K Games + HTML5 +
+ +
+
+
+
+ + {/* Platform Integrations */}

- Platform Integrations + Social VR & Metaverse Platforms

- Deploy your games and apps across multiple platforms using AeThex's unified API. + Deploy your games and apps across social VR and metaverse platforms using AeThex's unified API.

diff --git a/client/pages/docs/integrations/GameJolt.tsx b/client/pages/docs/integrations/GameJolt.tsx new file mode 100644 index 00000000..c5a1becd --- /dev/null +++ b/client/pages/docs/integrations/GameJolt.tsx @@ -0,0 +1,414 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Trophy, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; + +export default function GameJoltIntegration() { + return ( +
+
+ + + GameJolt Integration + +

+ Publish on GameJolt with AeThex +

+

+ Distribute your indie games on GameJolt's 10M+ player platform. Integrate AeThex APIs with + GameJolt's trophies, leaderboards, and data storage for enhanced player engagement. +

+
+ + {/* Quick Stats */} +
+ + +
10M+
+
Registered Players
+
+
+ + +
300K+
+
Published Games
+
+
+ + +
Free
+
No Publishing Fees
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Unified Achievement System + + + + Sync GameJolt trophies with AeThex achievements for cross-platform progression + + + + + + + + Cross-Platform Leaderboards + + + + Combine GameJolt scores with Steam, itch.io, and web players via AeThex API + + + + + + + + Player Analytics + + + + Track GameJolt player behavior and compare metrics across all distribution platforms + + + + + + + + Community Features + + + + Integrate AeThex social features with GameJolt's forums, comments, and community tools + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Set Up GameJolt Game + Create your game listing on GameJolt + + +
    +
  1. + 1. + Create account at gamejolt.com +
  2. +
  3. + 2. + Add your game via Dashboard → Add Game +
  4. +
  5. + 3. + Get your Game ID and Private Key from Game → Manage → Game API +
  6. +
  7. + 4. + Configure trophies and leaderboards in GameJolt dashboard +
  8. +
+
+
+ + + + 2. Install GameJolt + AeThex SDKs + Integrate both APIs for maximum functionality + + + + + + + + + 3. Sync Trophies & Achievements + Award cross-platform achievements + + + + + +
+ + {/* Leaderboard Integration */} +
+

+ + Leaderboard Integration +

+ + + + Cross-Platform Leaderboard Sync + Submit scores to both GameJolt and AeThex + + + + + +
+ + {/* Best Practices */} +
+

+ + Best Practices & Tips +

+ +
+ + + GameJolt-Specific Considerations + + +

API rate limits: GameJolt has no strict rate limits, but avoid spam

+

User authentication: Requires username + user token (auto-provided in GameJolt client)

+

Data storage: GameJolt offers 16MB per user, use for small saves

+

Web builds: GameJolt client works great for browser-based HTML5 games

+
+
+ + + + Publishing Strategy + + +

Multi-platform release: Publish on GameJolt, itch.io, and Steam simultaneously

+

Community engagement: Use GameJolt's forums and devlog features

+

Game Jams: Participate in GameJolt jams for visibility

+

AeThex analytics: Compare player behavior across all platforms

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Publish?

+

+ Distribute your indie game on GameJolt with AeThex cross-platform features. Reach 10M+ + players with unified achievements, leaderboards, and analytics. +

+ +
+
+
+ ); +} diff --git a/client/pages/docs/integrations/GameMaker.tsx b/client/pages/docs/integrations/GameMaker.tsx new file mode 100644 index 00000000..6eed7aba --- /dev/null +++ b/client/pages/docs/integrations/GameMaker.tsx @@ -0,0 +1,484 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Gamepad, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; + +export default function GameMakerIntegration() { + return ( +
+
+ + + GameMaker Integration + +

+ Build with GameMaker + AeThex +

+

+ Integrate AeThex APIs with GameMaker Studio 2 for 2D game development. Use GML (GameMaker Language) + for backend integration, cloud saves, leaderboards, and cross-platform publishing. +

+
+ + {/* Quick Stats */} +
+ + +
1M+
+
Active Developers
+
+
+ + +
2D Focus
+
Drag & Drop + GML
+
+
+ + +
Multi-Export
+
PC, Mobile, Console, Web
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Cloud Save Integration + + + + Save player progress to AeThex backend, sync across Windows, Mac, Linux, iOS, Android builds + + + + + + + + Online Leaderboards + + + + Global and friend leaderboards with daily/weekly/all-time filters via AeThex API + + + + + + + + Player Authentication + + + + Email/password login, social auth (Google, Discord), and guest accounts with AeThex Passport + + + + + + + + Analytics & Metrics + + + + Track player sessions, level completion rates, and custom events via AeThex telemetry + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Import AeThex Extension + Add the AeThex GML scripts to your GameMaker project + + +

+ Download the AeThex.yymps extension + package and import into GameMaker Studio 2. +

+
    +
  1. 1. Download from GitHub
  2. +
  3. 2. In GameMaker: Tools → Import Local Package
  4. +
  5. 3. Select AeThex.yymps file
  6. +
  7. 4. Import all scripts and objects
  8. +
+
+
+ + + + 2. Initialize AeThex (GML) + Set up the AeThex client in your game's create event + + + + + + + + + 3. Handle HTTP Async Responses + Process API responses in the Async HTTP event + + + + + +
+ + {/* Cloud Save System */} +
+

+ + Cloud Save Implementation +

+ + + + Save Player Data + Upload save data to AeThex cloud storage + + + + + + + + + Leaderboard Integration + Submit scores and display global rankings + + + + + +
+ + {/* Best Practices */} +
+

+ + Best Practices & Tips +

+ +
+ + + GameMaker-Specific Tips + + +

Async HTTP events: All network requests are async, handle in Async - HTTP event

+

DS maps for JSON: Use ds_map for JSON data structures, remember to destroy them

+

Global variables: Store auth tokens in global scope for cross-room access

+

Error handling: Check HTTP status codes (0 = success) before parsing responses

+
+
+ + + + Performance Tips + + +

Limit API calls: Cache leaderboard data, refresh every 30-60 seconds max

+

Local save backup: Use ini_open() for offline fallback saves

+

Batch operations: Group multiple save operations into single API call

+

Loading states: Show "Connecting..." UI during API requests

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Build?

+

+ Create 2D games with GameMaker Studio 2 and AeThex. Export to all platforms with + cloud saves, online leaderboards, and cross-platform progression. +

+ +
+
+
+ ); +} diff --git a/client/pages/docs/integrations/Godot.tsx b/client/pages/docs/integrations/Godot.tsx new file mode 100644 index 00000000..681fd534 --- /dev/null +++ b/client/pages/docs/integrations/Godot.tsx @@ -0,0 +1,547 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Zap, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; + +export default function GodotIntegration() { + return ( +
+
+ + + Godot Engine Integration + +

+ Build with Godot Engine + AeThex +

+

+ Integrate AeThex APIs with Godot 4's open-source game engine. Use GDScript or C# to build + cross-platform games with unified backend, authentication, leaderboards, and cloud saves. +

+
+ + {/* Quick Stats */} +
+ + +
2M+
+
Active Developers
+
+
+ + +
Open Source
+
MIT Licensed
+
+
+ + +
2D + 3D
+
Multi-Platform Export
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Cloud Save System + + + + Save player progress to AeThex backend, sync across PC, mobile, web, and console builds + + + + + + + + Multiplayer Backend + + + + Use AeThex REST APIs with Godot's HTTPRequest node for matchmaking, lobbies, and player data + + + + + + + + Cross-Platform Auth + + + + Link Steam, Epic, or email accounts to AeThex Passport for unified player identity + + + + + + + + Analytics & Events + + + + Track player behavior, session analytics, and custom events with AeThex telemetry API + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Install AeThex Godot Plugin + Add the AeThex GDScript plugin to your project + + +

+ Download from the Godot Asset Library or install manually: +

+ +
+
+ + + + 2. Initialize AeThex Client (GDScript) + Create an autoload singleton for global AeThex access + + + + +

+ Add res://scripts/AeThexManager.gd as an autoload + in Project Settings → Autoload → Name: "AeThex" +

+
+
+ + + + 3. Build Cloud Save System + Save and load player progress with one function call + + + void: + var result = await AeThex.aethex_client.users.update_data( + Global.current_user.id, + { + "level": player_data.level, + "gold": player_data.gold, + "inventory": player_data.inventory, + "position": { + "x": player_data.position.x, + "y": player_data.position.y + }, + "timestamp": Time.get_unix_time_from_system() + } + ) + + if result.success: + print("Game saved to cloud!") + else: + print("Save failed: ", result.error) + +# Load player progress from AeThex cloud +func load_game() -> Dictionary: + var result = await AeThex.aethex_client.users.get_data( + Global.current_user.id + ) + + if result.success: + print("Game loaded from cloud!") + return result.data + else: + print("Load failed, using default data") + return get_default_player_data() + +func get_default_player_data() -> Dictionary: + return { + "level": 1, + "gold": 0, + "inventory": [], + "position": {"x": 0, "y": 0} + } + +# Example: Auto-save every 5 minutes +func _ready(): + var auto_save_timer = Timer.new() + auto_save_timer.wait_time = 300.0 # 5 minutes + auto_save_timer.autostart = true + auto_save_timer.connect("timeout", self, "auto_save") + add_child(auto_save_timer) + +func auto_save(): + save_game(Global.player_data)`} + language="gdscript" + showLineNumbers={true} + /> + + +
+ + {/* C# Examples */} +
+

+ + C# Integration (Godot 4 Mono) +

+ + + + Leaderboard System (C#) + Display global leaderboards with real-time updates + + + ("/root/AeThex"); + _leaderboardList = GetNode("LeaderboardList"); + + LoadLeaderboard(); + } + + private async void LoadLeaderboard() + { + try + { + var result = await _aethex.Leaderboards.GetTopAsync("global-score", new() + { + Limit = 100, + Platform = "all" + }); + + _leaderboardList.Clear(); + + foreach (var entry in result.Entries) + { + var text = $"{entry.Rank}. {entry.Username} - {entry.Score:N0} pts"; + _leaderboardList.AddItem(text); + } + + GD.Print($"Loaded {result.Entries.Count} leaderboard entries"); + } + catch (System.Exception e) + { + GD.PrintErr($"Failed to load leaderboard: {e.Message}"); + } + } + + public async void SubmitScore(int score) + { + try + { + await _aethex.Leaderboards.UpdateScoreAsync("global-score", new() + { + UserId = GlobalData.CurrentUser.Id, + Score = score, + Metadata = new() + { + { "platform", "godot" }, + { "version", ProjectSettings.GetSetting("application/config/version").AsString() } + } + }); + + GD.Print($"Score submitted: {score}"); + LoadLeaderboard(); // Refresh + } + catch (System.Exception e) + { + GD.PrintErr($"Failed to submit score: {e.Message}"); + } + } +}`} + language="csharp" + showLineNumbers={true} + /> + + +
+ + {/* Authentication Flow */} +
+

Player Authentication

+

+ Multiple authentication methods: Email/password, Steam, Epic Games, or anonymous. +

+ + + + Email + Password Login + + + + + + + + + Steam Authentication (PC Builds) + + +

+ Link Godot games on Steam with AeThex using the GodotSteam plugin. +

+ +
+
+
+ + {/* Best Practices */} +
+

+ + Best Practices & Tips +

+ +
+ + + Godot-Specific Considerations + + +

Use await for async calls: Godot 4's await keyword makes HTTP requests clean

+

HTTPRequest node: For manual API calls, use Godot's built-in HTTPRequest

+

Export variables: Store API keys in environment variables, not in scenes

+

Signal-based flow: Connect AeThex signals for auth success/failure

+
+
+ + + + Performance Optimization + + +

Cache API responses: Store user data locally, sync periodically

+

Batch requests: Group multiple API calls when possible

+

Background threads: Use Thread or WorkerThreadPool for heavy API work

+

Offline mode: Implement local fallback when API is unreachable

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Build?

+

+ Create cross-platform games with Godot Engine and AeThex. Export to PC, mobile, web, + and console with unified cloud saves, leaderboards, and authentication. +

+ +
+
+
+ ); +} diff --git a/client/pages/docs/integrations/ItchIo.tsx b/client/pages/docs/integrations/ItchIo.tsx new file mode 100644 index 00000000..187fba4a --- /dev/null +++ b/client/pages/docs/integrations/ItchIo.tsx @@ -0,0 +1,558 @@ +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { Heart, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; + +export default function ItchIoIntegration() { + return ( +
+
+ + + Itch.io Integration + +

+ Publish on Itch.io with AeThex +

+

+ Distribute your indie games on itch.io, the world's largest indie game marketplace. Integrate + AeThex APIs for cloud saves, achievements, analytics, and cross-platform player progression. +

+
+ + {/* Quick Stats */} +
+ + +
1M+
+
Creators
+
+
+ + +
500K+
+
Published Games
+
+
+ + +
Pay What You Want
+
Flexible Pricing
+
+
+
+ + {/* Features */} +
+

What You Can Build

+
+ + + + + Cloud Save Sync + + + + Save player progress to AeThex backend, accessible across itch.io app and browser builds + + + + + + + + Cross-Store Leaderboards + + + + Combine itch.io players with Steam, Epic, and GameJolt users in unified leaderboards + + + + + + + + Player Analytics + + + + Track itch.io player behavior, demographics, and compare with other distribution platforms + + + + + + + + Web Game Backend + + + + Perfect for HTML5/WebGL games on itch.io - use AeThex REST APIs directly from browser + + +
+
+ + {/* Quick Start */} +
+

+ + Quick Start Guide +

+ + + + 1. Publish Your Game on Itch.io + Create your game page and upload builds + + +
    +
  1. + 1. + Create account at itch.io +
  2. +
  3. + 2. + Upload your game via Dashboard → Upload new project +
  4. +
  5. + 3. + Configure pricing (free, paid, or pay-what-you-want) +
  6. +
  7. + 4. + Set up API access in your game code (no itch.io API key needed for basic features) +
  8. +
+
+
+ + + + 2. Initialize AeThex for Web Games + Perfect for HTML5/WebGL builds on itch.io + + + + +// Or via npm for bundled projects +import { AeThexClient } from '@aethex/sdk'; + +// Initialize client +const aethex = new AeThexClient({ + apiKey: 'YOUR_AETHEX_API_KEY', + environment: 'production' +}); + +// Authenticate player (email/password or guest) +async function authenticatePlayer() { + try { + // Check if user has existing session + const savedToken = localStorage.getItem('aethex_token'); + + if (savedToken) { + aethex.setAuthToken(savedToken); + console.log('Restored session'); + return; + } + + // Otherwise, create guest account + const result = await aethex.auth.createGuest({ + platform: 'itchio', + deviceId: generateDeviceId() + }); + + localStorage.setItem('aethex_token', result.token); + console.log('Guest account created:', result.userId); + + } catch (error) { + console.error('Auth failed:', error); + } +} + +function generateDeviceId() { + // Create stable device ID for itch.io app or browser + const storedId = localStorage.getItem('device_id'); + if (storedId) return storedId; + + const newId = 'itchio_' + Math.random().toString(36).substring(2); + localStorage.setItem('device_id', newId); + return newId; +} + +// Call on game start +authenticatePlayer();`} + language="javascript" + showLineNumbers={true} + /> + + + + + + 3. Implement Cloud Saves + Save player progress across sessions and devices + + + { + const state = getGameState(); + this.saveGame(state); + }, 120000); // 2 minutes + } + + showNotification(message) { + // Show in-game notification + console.log('NOTIFICATION:', message); + } +} + +// Usage +const saveManager = new SaveManager(aethex); +await saveManager.init(); + +// Load game on start +const gameState = await saveManager.loadGame(); + +// Enable auto-save +saveManager.enableAutoSave(() => ({ + level: currentLevel, + score: playerScore, + inventory: playerInventory, + progress: gameProgress +})); + +// Manual save button +document.getElementById('save-button').addEventListener('click', async () => { + await saveManager.saveGame({ + level: currentLevel, + score: playerScore, + inventory: playerInventory, + progress: gameProgress + }); +});`} + language="javascript" + showLineNumbers={true} + /> + + +
+ + {/* Itch.io App Integration */} +
+

+ + Itch.io App Integration +

+ + + + Detect Itch.io App Environment + Optimize for browser vs desktop app + + + + + + + + + Cross-Platform Leaderboard + Share scores across itch.io and other stores + + + { + const platformBadge = getPlatformBadge(entry.metadata.platform); + + container.innerHTML += \` +
+ \${index + 1} + \${entry.username} + \${platformBadge} + \${entry.score.toLocaleString()} +
+ \`; + }); +} + +function getPlatformBadge(platform) { + const badges = { + 'itchio': '🎮 itch.io', + 'steam': '🔷 Steam', + 'gamejolt': '⚡ GameJolt', + 'epic': '📦 Epic' + }; + return badges[platform] || '🌐 Web'; +}`} + language="javascript" + showLineNumbers={true} + /> +
+
+
+ + {/* Best Practices */} +
+

+ + Best Practices & Tips +

+ +
+ + + Itch.io-Specific Tips + + +

HTML5 games: Itch.io has excellent HTML5 support, perfect for WebGL/Canvas games

+

Pay-what-you-want: Offer free version with AeThex ads, paid removes ads

+

Butler CLI: Use itch.io's butler tool for automated builds and updates

+

Browser compatibility: Test in Chrome, Firefox, Safari for web builds

+
+
+ + + + Monetization Strategy + + +

Flexible pricing: Let players pay what they want ($0-$20 recommended)

+

Revenue share: Itch.io takes 0-30% (you choose), AeThex tracks sales analytics

+

Bundle sales: Participate in itch.io bundles for discoverability

+

Patreon integration: Link Patreon supporters to exclusive AeThex features

+
+
+
+
+ + {/* Resources */} +
+

+ + Resources & Examples +

+ + +
+ + {/* Next Steps */} + + +

Ready to Launch?

+

+ Publish your indie game on itch.io with AeThex backend features. Reach 500K+ games + marketplace with cloud saves, cross-platform leaderboards, and player analytics. +

+ +
+
+
+ ); +} From a12eee7fa18e03a84f59e92d80d465438e0c1074 Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 23:40:56 +0000 Subject: [PATCH 08/10] fix: remove corrupted JSX in DocsIntegrations --- client/pages/docs/DocsIntegrations.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/pages/docs/DocsIntegrations.tsx b/client/pages/docs/DocsIntegrations.tsx index adf693ff..8ae3c7c8 100644 --- a/client/pages/docs/DocsIntegrations.tsx +++ b/client/pages/docs/DocsIntegrations.tsx @@ -373,10 +373,7 @@ export default function DocsIntegrations() { View Documentation - ant="secondary" className="bg-gray-500/20 text-gray-200">Unreal -
- From 0200dbad848b73dd6ad3c4156c8256a9c1310adc Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 23:41:37 +0000 Subject: [PATCH 09/10] fix: repair corrupted JSX in Spatial card --- client/pages/docs/DocsIntegrations.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/pages/docs/DocsIntegrations.tsx b/client/pages/docs/DocsIntegrations.tsx index 8ae3c7c8..c9c7329b 100644 --- a/client/pages/docs/DocsIntegrations.tsx +++ b/client/pages/docs/DocsIntegrations.tsx @@ -303,7 +303,10 @@ export default function DocsIntegrations() { - cyan-950/50 to-blue-950/50 border-cyan-500/30 hover:border-cyan-400/60 transition-colors"> + + + + From 4e61f32ee07cc81af2043c7d3d012378f53a0960 Mon Sep 17 00:00:00 2001 From: MrPiglr Date: Sat, 10 Jan 2026 23:48:28 +0000 Subject: [PATCH 10/10] fix: update CodeBlock imports in all integration files --- client/pages/docs/integrations/Decentraland.tsx | 2 +- client/pages/docs/integrations/RecRoom.tsx | 2 +- client/pages/docs/integrations/Spatial.tsx | 2 +- client/pages/docs/integrations/TheSandbox.tsx | 2 +- client/pages/docs/integrations/VRChat.tsx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/pages/docs/integrations/Decentraland.tsx b/client/pages/docs/integrations/Decentraland.tsx index 41e6ffd7..cb07c6c1 100644 --- a/client/pages/docs/integrations/Decentraland.tsx +++ b/client/pages/docs/integrations/Decentraland.tsx @@ -2,7 +2,7 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Cuboid, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; -import CodeBlock from "@/components/dev-platform/CodeBlock"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; export default function DecentralandIntegration() { return ( diff --git a/client/pages/docs/integrations/RecRoom.tsx b/client/pages/docs/integrations/RecRoom.tsx index 3439d6c3..391785bb 100644 --- a/client/pages/docs/integrations/RecRoom.tsx +++ b/client/pages/docs/integrations/RecRoom.tsx @@ -2,7 +2,7 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Gamepad2, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; -import CodeBlock from "@/components/dev-platform/CodeBlock"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; export default function RecRoomIntegration() { return ( diff --git a/client/pages/docs/integrations/Spatial.tsx b/client/pages/docs/integrations/Spatial.tsx index aff5b8f6..d77c1430 100644 --- a/client/pages/docs/integrations/Spatial.tsx +++ b/client/pages/docs/integrations/Spatial.tsx @@ -2,7 +2,7 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Globe, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; -import CodeBlock from "@/components/dev-platform/CodeBlock"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; export default function SpatialIntegration() { return ( diff --git a/client/pages/docs/integrations/TheSandbox.tsx b/client/pages/docs/integrations/TheSandbox.tsx index 1e70947b..736a16bf 100644 --- a/client/pages/docs/integrations/TheSandbox.tsx +++ b/client/pages/docs/integrations/TheSandbox.tsx @@ -2,7 +2,7 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Box, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; -import CodeBlock from "@/components/dev-platform/CodeBlock"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; export default function TheSandboxIntegration() { return ( diff --git a/client/pages/docs/integrations/VRChat.tsx b/client/pages/docs/integrations/VRChat.tsx index 73e60d30..b7a20334 100644 --- a/client/pages/docs/integrations/VRChat.tsx +++ b/client/pages/docs/integrations/VRChat.tsx @@ -2,7 +2,7 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Headset, Code2, Rocket, ExternalLink, CheckCircle2, AlertTriangle, Package } from "lucide-react"; -import CodeBlock from "@/components/dev-platform/CodeBlock"; +import { CodeBlock } from "@/components/dev-platform/ui/CodeBlock"; export default function VRChatIntegration() { return (