Update GameDevelopment page: apply diff change and replace Featured Projects with Featured Studios; add localStorage-driven studios

cgen-5eb53a570c2f43fc86002e5d039669f6
This commit is contained in:
Builder.io 2025-09-28 21:59:17 +00:00
parent 16b1505dac
commit f75e4afff4

View file

@ -146,12 +146,51 @@ export default function GameDevelopment() {
title: "Roblox Tycoon Empire", title: "Roblox Tycoon Empire",
description: "Business simulation with advanced economy systems", description: "Business simulation with advanced economy systems",
tech: ["Roblox Studio", "Lua", "DataStore"], tech: ["Roblox Studio", "Lua", "DataStore"],
players: "100K+ visits", players: "1B+ visits",
rating: 4.7, rating: 4.7,
category: "Simulation", category: "Simulation",
}, },
]; ];
type Studio = {
name: string;
tagline?: string;
metrics?: string;
specialties?: string[];
};
const defaultStudios: Studio[] = [
{
name: "Lone Star Studio",
tagline: "Indie craftsmanship with AAA polish",
metrics: "Top-rated indie hits",
specialties: ["Unity", "Unreal", "Pixel Art"],
},
{
name: "AeThex | GameForge",
tagline: "High-performance cross-platform experiences",
metrics: "Billions of player sessions",
specialties: ["Roblox", "Backend", "LiveOps"],
},
{
name: "Gaming Control",
tagline: "Strategy, simulation, and systems-first design",
metrics: "Award-winning franchises",
specialties: ["Simulation", "AI/ML", "Economy"],
},
];
const [studios, setStudios] = useState<Studio[]>(defaultStudios);
useEffect(() => {
try {
const raw = localStorage.getItem("featured_studios");
if (raw) {
const parsed = JSON.parse(raw);
if (Array.isArray(parsed) && parsed.length) setStudios(parsed);
}
} catch {}
}, []);
const process = [ const process = [
{ {
step: 1, step: 1,
@ -391,65 +430,61 @@ export default function GameDevelopment() {
</div> </div>
</section> </section>
{/* Portfolio Section */} {/* Featured Studios Section */}
<section className="py-20 bg-background/30"> <section className="py-20 bg-background/30">
<div className="container mx-auto px-4"> <div className="container mx-auto px-4">
<div className="text-center mb-16 animate-slide-up"> <div className="text-center mb-16 animate-slide-up">
<h2 className="text-3xl lg:text-4xl font-bold text-gradient mb-4"> <h2 className="text-3xl lg:text-4xl font-bold text-gradient mb-4">
Featured Projects Featured Studios
</h2> </h2>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
Showcasing our latest game development achievements Hand-picked studios powering AeThex game development
</p> </p>
</div> </div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-6xl mx-auto"> <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-6xl mx-auto">
{portfolio.map((project, index) => ( {studios.map((studio, index) => (
<Card <Card
key={index} key={index}
className="relative overflow-hidden border-border/50 hover:border-aethex-400/50 transition-all duration-300 hover-lift animate-slide-up" className="relative overflow-hidden border-border/50 hover:border-aethex-400/50 transition-all duration-300 hover-lift animate-slide-up"
style={{ animationDelay: `${index * 0.1}s` }} style={{ animationDelay: `${index * 0.1}s` }}
> >
<div className="absolute top-4 right-4 z-10">
<Badge variant="outline" className="bg-background/80">
{project.category}
</Badge>
</div>
<CardHeader> <CardHeader>
<div className="space-y-2"> <div className="space-y-2">
<CardTitle className="text-lg">{project.title}</CardTitle> <CardTitle className="text-lg">{studio.name}</CardTitle>
<CardDescription>{project.description}</CardDescription> {studio.tagline && (
<CardDescription>{studio.tagline}</CardDescription>
)}
</div> </div>
</CardHeader> </CardHeader>
<CardContent className="space-y-4"> <CardContent className="space-y-4">
<div className="flex flex-wrap gap-1"> {studio.specialties?.length ? (
{project.tech.map((tech, techIndex) => ( <div className="flex flex-wrap gap-1">
<Badge {studio.specialties.map((tech, techIndex) => (
key={techIndex} <Badge
variant="secondary" key={techIndex}
className="text-xs" variant="secondary"
> className="text-xs"
{tech} >
</Badge> {tech}
))} </Badge>
</div> ))}
</div>
) : null}
<div className="flex justify-between items-center"> {studio.metrics ? (
<div className="flex items-center space-x-2"> <div className="flex items-center justify-between text-sm">
<Users className="h-4 w-4 text-muted-foreground" /> <div className="flex items-center space-x-2 text-muted-foreground">
<span className="text-sm text-muted-foreground"> <Users className="h-4 w-4" />
{project.players} <span>{studio.metrics}</span>
</span> </div>
<div className="flex items-center space-x-1">
<Star className="h-4 w-4 text-yellow-500" />
<span className="font-semibold">Top Rated</span>
</div>
</div> </div>
<div className="flex items-center space-x-1"> ) : null}
<Star className="h-4 w-4 text-yellow-500" />
<span className="text-sm font-semibold">
{project.rating}
</span>
</div>
</div>
</CardContent> </CardContent>
</Card> </Card>
))} ))}