← Piezas de nivel 2Objeto 3Dfogon/nivel-piso-de-madera
Piso de madera
Arrastrá para girarlo// «Piso de madera» · gpt-6-sol (medium)
// A square ground tile that tiles seamlessly: a full 48x48 footprint (x 0..47, y 0..47), 8 blocks thick (z 0..7), a perfectly flat solid slab with straight vertical sides and no gaps. Wooden floor planks: long boards running along y, each 6 blocks wide on x, alternating 3 warm brown shades, with 1-block darker seams between boards and tiny dark nail heads at the board ends; the sides show the plank ends and a darker beam layer at the bottom (z 0..1).
// A solid, seamless 48×48 wooden floor tile.
const boards = ["#C98543", "#D99650", "#BD783B"];
const highlights = ["#E2A45E", "#EBB46F", "#D99650"];
const shadows = ["#A96332", "#B77339", "#995B2D"];
const seam = "#744323";
const nail = "#513A30";
// Continuous structural beam beneath the planks.
box(0, 0, 0, 47, 47, 1, "#79502F");
box(0, 0, 1, 47, 47, 1, "#95633A");
for (let b = 0; b < 8; b++) {
const x = b * 6;
const tone = b % 3;
// Five blocks of board, followed by a one-block seam.
box(x, 0, 2, x + 4, 47, 7, boards[tone]);
box(x + 5, 0, 2, x + 5, 47, 7, seam);
// Crisp, restrained shading across each plank.
box(x, 0, 7, x, 46, 7, highlights[tone]);
box(x + 4, 0, 7, x + 4, 46, 7, shadows[tone]);
// Board ends: a narrow joint at the back edge, repeated every tile.
box(x, 47, 7, x + 4, 47, 7, shadows[tone]);
// A few short grain marks, kept away from the tile edges.
const offset = (b * 7) % 5;
box(x + 2, 9 + offset, 7, x + 2, 14 + offset, 7, highlights[tone]);
box(x + 3, 29 - offset, 7, x + 3, 33 - offset, 7, shadows[tone]);
// Two tiny nail heads near each end of every board.
for (const y of [3, 44]) {
set(x + 1, y, 7, nail);
set(x + 3, y, 7, nail);
}
// Subtle board-end detail visible on the front and back sides.
for (const y of [0, 47]) {
set(x + 1, y, 5, highlights[tone]);
set(x + 3, y, 3, shadows[tone]);
}
}import { draw } from "./assets/voxel";
import { nivelPisoDeMadera } from "./assets/nivel-piso-de-madera";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, nivelPisoDeMadera, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: lo que mide en px su lado más largo
// angle: giro sobre el piso, en radianes
// t: segundos; si se mueve, se anima solo con eso# En una terminal, en la carpeta del juego
fogon assets add nivel-piso-de-madera
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["nivel-piso-de-madera"] })
# Queda en client/assets/nivel-piso-de-madera.ts
# https://fogon.page/object/nivel-piso-de-madera