What problem does this solve?
Currently, all buildings in Git City share a uniform boxy geometry, regardless of the developer's tech stack. While the height and window lighting vary based on contributions and stars, the overall architectural identity is identical for every user.
This is a missed opportunity to visually celebrate the diversity of the GitHub ecosystem. By introducing building "Archetypes" based on a user's primary_language, we can make the city feel more organic, personalized, and visually rich without sacrificing the core pixel art aesthetic.
Proposed solution
We propose mapping a developer's primary_language to 4-5 "Architectural Archetypes." This would involve:
-
Defining Archetypes:
- The "Frontend" Tower (TS, JS, CSS): Modern, "Glass House" aesthetic with wider window grids and glass balconies.
- The "Backend" Monolith (Go, Rust, C++, Java): Industrial, Brutalist style with external "pipes," vents, and heavy concrete textures.
- The "Data & AI" Spire (Python, R, Julia): High-tech, "Server Farm" look with glowing data cables and spherical nodes on the roof.
- The "GameDev" Arcade (C#, GDScript, Lua): Irregular heights, neon signs, and "retro" pixel-art roof decorations.
-
Technical Implementation (Performance-First):
- Multi-Instance Rendering: Instead of a single
InstancedMesh for all buildings, we create one InstancedMesh for each archetype. This maintains the 3D performance benefits of instancing.
- Mapping Logic: Update
src/lib/github.ts to assign a silhouetteId based on the existing primary_language field.
- Shader Integration: Utilize the building's
custom_color attribute to highlight archetype-specific features (e.g., tinting the "Backend" pipes or "Frontend" neon strips).
Alternatives considered
- Procedural Geometry per Building: Too expensive for performance; would break instancing.
- Static Textures Only: Less impactful than physical geometry changes; wouldn't provide the same "skyline" silhouette variety.
Additional context
This feature would significantly enhance the "exploration" aspect of the city, as users could visually identify "Frontend" or "Data Science" districts just by looking at the building shapes.
I'm happy to work on a PR for this if the community is interested!
What problem does this solve?
Currently, all buildings in Git City share a uniform boxy geometry, regardless of the developer's tech stack. While the height and window lighting vary based on contributions and stars, the overall architectural identity is identical for every user.
This is a missed opportunity to visually celebrate the diversity of the GitHub ecosystem. By introducing building "Archetypes" based on a user's
primary_language, we can make the city feel more organic, personalized, and visually rich without sacrificing the core pixel art aesthetic.Proposed solution
We propose mapping a developer's
primary_languageto 4-5 "Architectural Archetypes." This would involve:Defining Archetypes:
Technical Implementation (Performance-First):
InstancedMeshfor all buildings, we create oneInstancedMeshfor each archetype. This maintains the 3D performance benefits of instancing.src/lib/github.tsto assign asilhouetteIdbased on the existingprimary_languagefield.custom_colorattribute to highlight archetype-specific features (e.g., tinting the "Backend" pipes or "Frontend" neon strips).Alternatives considered
Additional context
This feature would significantly enhance the "exploration" aspect of the city, as users could visually identify "Frontend" or "Data Science" districts just by looking at the building shapes.
I'm happy to work on a PR for this if the community is interested!