← CiudadObjeto 3Dfogon/casa-chorizo
Casa chorizo
Arrastrá para girarlo// «Casa chorizo» · gpt-6-sol (medium)
// A classic Buenos Aires casa chorizo seen from the front: a narrow one-story house much deeper (along y) than wide, with an ornate front facade (-y) in cream plaster, a tall wooden door with a fanlight and two tall windows with dark green shutters and iron balconettes, a decorative cornice and balustrade on top. Along one side a long open patio gallery with columns and potted plants runs to the back.
const cream = "#f3dfb8", light = "#fff0ce", shade = "#d6bb92";
const brick = "#bf7054", brickLight = "#d88963";
const green = "#245d48", greenLight = "#39765b", greenDark = "#173e34";
const wood = "#855138", woodLight = "#aa7049";
// Sidewalk and foundations.
box(6, 2, 0, 41, 5, 0, "#bcb9ad");
box(8, 6, 0, 32, 42, 17, cream);
box(8, 6, 0, 32, 42, 2, shade);
// Subtle plaster variation on the long walls.
for (let y = 8; y < 41; y++)
for (let z = 4; z < 17; z++)
if (rand() < 0.045) set(8, y, z, "#ead3a9");
// Terracotta roof, with a raised central ridge and tiled rows.
box(9, 7, 18, 31, 42, 18, brick);
for (let y = 8; y <= 42; y++) {
box(10, y, 19, 16, y, 19, y % 3 === 0 ? brickLight : brick);
box(17, y, 20, 23, y, 20, y % 3 === 0 ? brickLight : "#c77b58");
box(24, y, 19, 30, y, 19, y % 3 === 0 ? brickLight : brick);
if (y % 4 === 0) {
line(10, y, 19, 16, y, 19, 0, "#a65e49");
line(24, y, 19, 30, y, 19, 0, "#a65e49");
}
}
// Ornate street-facing plaster facade.
box(7, 5, 0, 33, 7, 20, cream);
box(7, 4, 0, 33, 5, 2, shade);
for (const x of [7, 16, 24, 32]) {
box(x, 4, 2, x + 1, 4, 18, light);
box(x, 3, 17, x + 1, 5, 18, shade);
}
box(7, 4, 18, 33, 6, 19, light);
box(6, 4, 20, 34, 7, 21, shade);
box(7, 3, 21, 33, 6, 21, light);
box(8, 4, 19, 32, 4, 19, "#d98266");
// Tall front door, recessed between its stone jambs.
box(18, 4, 1, 22, 5, 14, wood);
box(17, 3, 1, 17, 5, 17, light);
box(23, 3, 1, 23, 5, 17, light);
box(17, 3, 17, 23, 5, 17, light);
box(18, 3, 2, 22, 3, 13, wood);
box(18, 2, 2, 18, 3, 13, woodLight);
box(22, 2, 2, 22, 3, 13, "#653c2b");
box(20, 2, 2, 20, 2, 13, "#66412f");
for (const z of [3, 9])
for (const x of [19, 21])
box(x, 2, z, x, 2, z + 3, "#9c6240");
set(21, 1, 7, "#e9c067");
box(18, 3, 15, 22, 3, 16, "#537d78");
for (const x of [19, 21]) box(x, 2, 15, x, 2, 16, greenDark);
box(19, 2, 17, 21, 2, 17, "#d88561");
box(17, 2, 0, 23, 4, 0, "#e1d1b7");
box(18, 1, 0, 22, 2, 0, light);
// Matching tall windows, dark green shutters, and little iron balconettes.
for (const [a, b] of [[11, 14], [26, 29]]) {
box(a - 1, 3, 5, b + 1, 5, 17, light);
box(a, 2, 7, b, 3, 15, "#547c7b");
box(a, 2, 6, b, 2, 6, greenDark);
box(a, 2, 16, b, 3, 16, shade);
box(a + 1, 1, 7, a + 1, 2, 15, "#bed3b8");
box(a, 1, 11, b, 1, 11, light);
box(a - 2, 2, 6, a - 1, 3, 16, green);
box(b + 1, 2, 6, b + 2, 3, 16, greenDark);
for (let z = 8; z <= 15; z += 3) {
box(a - 2, 1, z, a - 1, 1, z, greenLight);
box(b + 1, 1, z, b + 2, 1, z, greenLight);
}
box(a - 1, 1, 5, b + 1, 3, 5, shade);
box(a - 1, 1, 17, b + 1, 4, 17, light);
box(a - 1, 0, 4, b + 1, 2, 4, greenDark);
box(a - 1, 0, 8, b + 1, 0, 8, greenDark);
for (let x = a - 1; x <= b + 1; x += 2)
box(x, 0, 5, x, 0, 8, green);
box(a - 1, 1, 8, b + 1, 1, 8, greenLight);
}
// Painted panels and small fileteado-like flourishes.
for (const x of [9, 17, 24, 31]) {
box(x, 3, 19, x + 1, 3, 19, "#d27d5c");
set(x, 2, 18, green);
set(x + 1, 2, 18, "#e9b45e");
}
// Balustrade above the cornice.
box(7, 5, 22, 33, 7, 22, light);
for (let x = 8; x <= 32; x += 3) {
box(x, 5, 23, x + 1, 6, 25, light);
box(x - 1, 4, 25, x + 2, 7, 25, shade);
}
box(7, 5, 26, 33, 7, 26, light);
for (const x of [7, 32]) {
box(x, 4, 22, x + 1, 7, 26, cream);
box(x - 1, 4, 27, x + 2, 7, 27, light);
}
// Long, open side patio: tiled floor, slim gallery columns and beams.
box(33, 8, 0, 40, 42, 0, "#d5bf9e");
for (let y = 9; y <= 41; y += 4)
line(33, y, 0, 40, y, 0, 0, "#bba989");
for (let x = 34; x <= 39; x += 3)
line(x, 8, 0, x, 42, 0, 0, "#bba989");
for (const y of [10, 18, 26, 34, 41]) {
box(39, y, 1, 40, y + 1, 2, shade);
box(39, y, 3, 39, y + 1, 16, light);
box(39, y, 15, 40, y + 1, 17, shade);
box(33, y, 17, 40, y + 1, 18, cream);
}
box(38, 9, 18, 40, 42, 18, shade);
box(32, 9, 18, 34, 42, 18, light);
box(38, 9, 19, 40, 42, 19, "#bd7556");
// Doors and shuttered openings facing into the patio.
for (const y of [15, 30]) {
box(32, y - 2, 1, 33, y + 2, 14, light);
box(33, y - 1, 1, 33, y + 1, 12, wood);
box(33, y, 2, 33, y, 11, woodLight);
set(34, y + 1, 7, "#e9c067");
box(33, y - 1, 13, 33, y + 1, 13, "#648a85");
}
for (const y of [23, 37]) {
box(33, y - 2, 7, 33, y + 2, 14, light);
box(34, y - 1, 8, 34, y + 1, 13, "#719999");
box(34, y - 2, 8, 34, y - 2, 14, green);
box(34, y + 2, 8, 34, y + 2, 14, green);
box(34, y - 2, 7, 35, y + 2, 7, shade);
}
// Chunky terracotta pots with bright, varied patio foliage.
for (const [x, y, h] of [[36, 12, 4], [37, 21, 5], [36, 29, 4], [37, 38, 5]]) {
box(x - 1, y - 1, 1, x + 1, y + 1, 3, brick);
box(x - 1, y - 1, 3, x + 1, y + 1, 3, brickLight);
box(x, y, 4, x, y, h + 3, greenDark);
ellipsoid(x, y, h + 3, 2, 2, 2, green);
for (const [dx, dy] of [[-2, 0], [1, -1], [1, 1]])
set(x + dx, y + dy, h + 3, greenLight);
set(x, y - 1, h + 5, "#e9b65f");
}
// A low rear patio wall keeps the side gallery legible as an outdoor space.
box(34, 42, 1, 40, 42, 3, cream);
box(34, 42, 4, 40, 42, 4, light);import { draw } from "./assets/voxel";
import { casaChorizo } from "./assets/casa-chorizo";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, casaChorizo, 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 casa-chorizo
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["casa-chorizo"] })
# Queda en client/assets/casa-chorizo.ts
# https://fogon.page/object/casa-chorizo