← Whole house3D assetfogon/silla-gamer
Silla gamer
Drag to turn it// «Silla gamer» · gpt-6-sol (medium)
// A gaming chair: a tall racing-style seat in black with red side panels and stitching, a headrest pillow and a lumbar pillow, padded armrests, on a five-star base with little wheels.
// A cozy, toy-like racing chair, facing -y.
const black = "#292a30";
const deep = "#1c1e23";
const charcoal = "#383a40";
const soft = "#46474d";
const red = "#d95859";
const redLight = "#ed7974";
const redDark = "#ab414b";
const stitch = "#f4b7a5";
const steel = "#aeb5b9";
const chrome = "#d9dedc";
// Five-star base and little caster wheels.
for (let i = 0; i < 5; i++) {
const a = -Math.PI / 2 + i * Math.PI * 2 / 5;
const ex = Math.round(24 + 15 * Math.cos(a));
const ey = Math.round(25 + 15 * Math.sin(a));
line(24, 25, 4, ex, ey, 3, 2, black);
line(25, 24, 5, ex, ey, 4, 0, soft);
box(ex - 2, ey - 1, 0, ex + 2, ey + 1, 2, deep);
box(ex - 1, ey - 2, 1, ex + 1, ey + 2, 3, charcoal);
set(ex, ey - 2, 2, chrome);
}
cylinder(24, 25, 4, 3, 10, steel);
cylinder(24, 25, 7, 2, 6, charcoal);
box(20, 21, 12, 28, 29, 15, deep);
// Seat chassis and thick red side bolsters.
box(12, 14, 14, 36, 33, 18, deep);
box(12, 14, 17, 16, 31, 20, redDark);
box(32, 14, 17, 36, 31, 20, redDark);
box(13, 14, 19, 16, 29, 21, red);
box(32, 14, 19, 35, 29, 21, red);
box(17, 14, 17, 31, 31, 19, charcoal);
ellipsoid(24, 23, 19, 9, 10, 2, black);
box(18, 15, 20, 30, 27, 20, charcoal);
box(19, 16, 20, 29, 25, 20, soft);
box(17, 13, 15, 31, 14, 18, charcoal);
box(18, 13, 18, 30, 14, 19, redLight);
// The tall back has a narrow waist, broad racing shoulders and tapered head.
for (let z = 19; z <= 43; z++) {
let half;
if (z < 28) half = 10;
else if (z < 31) half = 11;
else if (z < 36) half = 13;
else if (z < 39) half = 11;
else if (z < 42) half = 9;
else half = 7;
box(24 - half, 29, z, 24 + half, 34, z, deep);
box(25 - half, 28, z, 23 + half, 29, z, charcoal);
box(26 - half, 27, z, 22 + half, 27, z, black);
// Raised red side panels, narrowing with the silhouette.
if (z < 41) {
box(24 - half, 26, z, 26 - half, 31, z, redDark);
box(22 + half, 26, z, 24 + half, 31, z, redDark);
set(26 - half, 25, z, z % 5 === 0 ? redLight : red);
set(22 + half, 25, z, z % 5 === 0 ? redLight : red);
}
}
box(18, 26, 39, 30, 28, 41, charcoal);
box(20, 26, 42, 28, 31, 43, black);
// Soft central upholstery and stitched red racing seams.
box(18, 26, 28, 30, 27, 34, charcoal);
for (let z = 29; z <= 34; z += 2) {
set(18, 25, z, stitch);
set(30, 25, z, stitch);
}
for (let y = 17; y <= 28; y += 2) {
set(17, y, 20, stitch);
set(31, y, 20, stitch);
}
// Rounded headrest and lumbar pillows.
ellipsoid(24, 24, 37, 7, 3, 3, deep);
ellipsoid(24, 22, 37, 6, 2, 2, charcoal);
line(20, 20, 37, 28, 20, 37, 0, redLight);
set(24, 19, 37, stitch);
ellipsoid(24, 25, 25, 8, 3, 4, deep);
ellipsoid(24, 22, 25, 7, 2, 3, charcoal);
for (let x = 19; x <= 29; x += 2) set(x, 20, 25, stitch);
set(17, 22, 25, red);
set(31, 22, 25, red);
// Chunky padded armrests, with visible supports.
for (const x of [9, 35]) {
box(x + 1, 17, 16, x + 3, 19, 23, charcoal);
box(x + 1, 27, 17, x + 3, 29, 23, charcoal);
box(x, 15, 22, x + 5, 30, 24, deep);
box(x, 15, 24, x + 5, 29, 25, black);
box(x + 1, 16, 25, x + 4, 27, 25, soft);
box(x + 1, 15, 23, x + 4, 16, 24, redDark);
set(x + 2, 15, 25, stitch);
}
// A few gentle upholstered highlights.
for (let i = 0; i < 75; i++) {
const x = 19 + Math.floor(rand() * 11);
const z = 28 + Math.floor(rand() * 7);
if (get(x, 27, z) === charcoal && rand() < 0.36)
set(x, 26, z, soft);
}import { draw } from "./assets/voxel";
import { sillaGamer } from "./assets/silla-gamer";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, sillaGamer, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: its longest side, in px
// angle: turn on the floor, in radians
// t: seconds; if it moves, that animates it# In a terminal, in the game's folder
fogon assets add silla-gamer
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["silla-gamer"] })
# It lands in client/assets/silla-gamer.ts
# https://fogon.page/object/silla-gamer