← Gear3D assetfogon/guantes-de-cuero
Guantes de cuero
Drag to turn it// «Guantes de cuero» · gpt-6-sol (medium)
// A pair of brown leather adventurer gauntlets lying side by side on the floor, palms down, with wide flared cuffs, darker stitched seams and small iron plates over the knuckles.
const leather = "#85502f";
const lightLeather = "#a86b3d";
const highlight = "#bd8050";
const darkLeather = "#59351f";
const stitch = "#38291f";
const iron = "#77838a";
const ironLight = "#b7c1c3";
const ironDark = "#49545b";
const brass = "#b88a43";
function gauntlet(base, mirror) {
const X = u => base + (mirror ? 20 - u : u);
function B(u0, y0, z0, u1, y1, z1, color) {
box(Math.min(X(u0), X(u1)), y0, z0,
Math.max(X(u0), X(u1)), y1, z1, color);
}
// Four separate, slightly staggered leather fingers.
const tips = [10, 7, 8, 11];
for (let i = 0; i < 4; i++) {
const u = 3 + i * 4;
const tip = tips[i];
B(u, tip + 2, 0, u + 2, 20, 3, darkLeather);
B(u, tip + 2, 2, u + 2, 19, 4, leather);
B(u, tip, 0, u + 2, tip + 2, 3, leather);
B(u, tip + 1, 4, u + 2, tip + 3, 4, highlight);
B(u, tip + 5, 5, u + 2, tip + 5, 5, darkLeather);
B(u, tip + 7, 5, u + 2, tip + 7, 5, lightLeather);
}
// Broad hand, narrower wrist, and an outward-angled thumb.
B(2, 18, 0, 18, 28, 5, darkLeather);
B(2, 19, 3, 18, 28, 6, leather);
B(3, 20, 6, 17, 27, 6, lightLeather);
B(4, 28, 0, 16, 34, 6, darkLeather);
B(4, 29, 3, 16, 34, 7, leather);
B(0, 20, 0, 3, 25, 3, darkLeather);
B(0, 21, 3, 3, 26, 4, leather);
B(1, 19, 0, 4, 23, 4, leather);
B(1, 21, 5, 3, 24, 5, highlight);
// Stitched, raised panel across the back of the hand.
B(5, 21, 7, 15, 27, 7, darkLeather);
B(6, 22, 7, 14, 26, 7, lightLeather);
B(7, 23, 8, 13, 25, 8, highlight);
for (const u of [5, 15]) {
for (const y of [22, 24, 26]) B(u, y, 8, u, y, 8, stitch);
}
for (const u of [7, 10, 13]) {
B(u, 21, 8, u, 21, 8, stitch);
B(u, 27, 8, u, 27, 8, stitch);
}
// Individual iron knuckle guards, separated by dark leather gaps.
for (let i = 0; i < 4; i++) {
const u = 3 + i * 4;
B(u, 17, 6, u + 2, 20, 6, ironDark);
B(u, 17, 7, u + 2, 19, 7, iron);
B(u, 17, 8, u + 2, 17, 8, ironLight);
B(u, 18, 8, u, 19, 8, ironLight);
B(u + 2, 19, 8, u + 2, 19, 8, ironDark);
}
// Thick flared cuff, widening toward its open rear end.
for (let y = 32; y <= 42; y++) {
const lo = y <= 34 ? 4 : y <= 37 ? 2 : 1;
const hi = y <= 34 ? 16 : y <= 37 ? 18 : 19;
const top = y <= 34 ? 7 : y <= 37 ? 8 : 9;
B(lo, y, 0, hi, y, top - 2, darkLeather);
B(lo + 1, y, 2, hi - 1, y, top, leather);
B(lo + 2, y, top, hi - 2, y, top, lightLeather);
B(lo, y, 2, lo, y, top - 1, lightLeather);
}
// Heavy rim and a dark recess suggesting the cuff opening.
B(2, 39, 9, 18, 42, 9, darkLeather);
B(4, 39, 10, 16, 41, 10, stitch);
B(1, 42, 9, 19, 42, 10, lightLeather);
B(2, 42, 11, 18, 42, 11, highlight);
B(4, 43, 2, 16, 43, 8, stitch);
B(2, 43, 0, 18, 43, 2, darkLeather);
B(2, 43, 9, 18, 43, 10, lightLeather);
// Wraparound strap, stitching, and a chunky brass buckle.
B(2, 35, 8, 18, 37, 8, darkLeather);
B(3, 36, 9, 17, 36, 9, lightLeather);
for (let u = 4; u <= 16; u += 3) {
B(u, 34, 8, u, 34, 8, stitch);
B(u, 38, 9, u, 38, 9, stitch);
}
B(8, 35, 9, 12, 37, 9, brass);
B(9, 35, 10, 11, 37, 10, "#e1ba68");
B(9, 36, 11, 11, 36, 11, ironDark);
B(10, 36, 12, 10, 36, 12, ironLight);
}
gauntlet(3, false);
gauntlet(26, true);
// Sparse, seeded variation on exposed leather without obscuring the details.
forEach((x, y, z, color) => {
if (color === leather && get(x, y, z + 1) === undefined && rand() < 0.11) {
set(x, y, z, rand() < 0.6 ? lightLeather : "#764527");
}
});import { draw } from "./assets/voxel";
import { guantesDeCuero } from "./assets/guantes-de-cuero";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, guantesDeCuero, 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 guantes-de-cuero
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["guantes-de-cuero"] })
# It lands in client/assets/guantes-de-cuero.ts
# https://fogon.page/object/guantes-de-cuero