← Farm3D assetfogon/silo
Silo
Drag to turn it// «Silo» · gpt-6-sol (medium)
// A tall cylindrical farm grain silo: the body is a cylinder of light grey galvanized metal with darker horizontal ring seams every 3 blocks, topped by a clearly visible shiny silver HEMISPHERICAL dome cap that is a bit wider than the body with a small vent knob on top. A red vertical ladder runs up the front side with a red safety cage around its upper part, a small red square hatch door at the bottom front, and a short red chute pipe coming out near the top. It sits on a round concrete pad slightly wider than the silo on green grass.
// Grass and a slightly raised round concrete pad.
box(3, 3, 0, 45, 45, 0, "#54bd42");
for (let x = 4; x <= 44; x++) {
for (let y = 4; y <= 44; y++) {
if (rand() < 0.07) set(x, y, 0, rand() < 0.5 ? "#67cc4b" : "#48ae3c");
}
}
cylinder(24, 24, 1, 18, 2, "#bcbfba");
cylinder(24, 24, 2, 17, 1, "#dadbd3");
// Galvanized cylinder: shaded sides and a dark seam every three blocks.
for (let z = 3; z <= 29; z++) {
for (let x = 11; x <= 37; x++) {
for (let y = 11; y <= 37; y++) {
const dx = x - 24, dy = y - 24;
if (dx * dx + dy * dy > 13 * 13) continue;
let color;
if (z % 3 === 0 && z < 29) {
color = dy < -3 ? "#879398" : "#78868c";
} else if (dy < -5 && dx < 5) {
color = rand() < 0.09 ? "#e4e9e6" : "#ced9d9";
} else {
color = rand() < 0.08 ? "#a9b7b9" : "#bcc9ca";
}
set(x, y, z, color);
}
}
}
// Broad, unmistakably hemispherical polished-silver roof.
for (let z = 29; z <= 44; z++) {
for (let x = 9; x <= 39; x++) {
for (let y = 9; y <= 39; y++) {
const dx = x - 24, dy = y - 24, dz = z - 29;
if (dx * dx + dy * dy + dz * dz > 225) continue;
let color;
if (z === 29) color = "#798d96";
else if (z === 30) color = "#aabcc4";
else if (dx < -4 && dy < 2) color = "#f1f6f3";
else if (dy < -3 || z > 38) color = "#dce7e8";
else color = "#b8c9d0";
if (z > 30 && rand() < 0.025) color = "#ffffff";
set(x, y, z, color);
}
}
}
// Crisp lip at the base of the dome.
for (let x = 9; x <= 39; x++) {
for (let y = 9; y <= 39; y++) {
const d = Math.hypot(x - 24, y - 24);
if (d >= 14 && d <= 15.1) set(x, y, 29, "#899da5");
}
}
// Small silver roof vent.
cylinder(24, 24, 43, 2, 3, "#849ba4");
cylinder(24, 24, 46, 2, 1, "#edf3f0");
set(24, 24, 47, "#d7e3e4");
// Bottom hatch, with a bright frame, dark handle, and little hinges.
box(21, 8, 3, 27, 9, 10, "#f5e8d7");
box(22, 7, 4, 26, 8, 9, "#bb3432");
box(22, 7, 9, 26, 7, 9, "#e75a46");
set(25, 6, 6, "#313d3d");
set(22, 6, 5, "#f0d9a1");
set(22, 6, 8, "#f0d9a1");
// Red ladder climbing from the hatch to the roof.
for (let z = 10; z <= 31; z++) {
set(22, 9, z, "#bf3330");
set(26, 9, z, "#bf3330");
set(22, 8, z, "#e24b3b");
set(26, 8, z, "#e24b3b");
}
for (let z = 11; z <= 31; z += 2) {
box(23, 8, z, 25, 9, z, "#ed5945");
}
// Upper safety cage: outward-bowed hoops and continuous front uprights.
for (let z = 17; z <= 29; z += 4) {
for (let x = 19; x <= 29; x++) {
const dx = x - 24;
const y = Math.round(9 - Math.sqrt(Math.max(0, 25 - dx * dx)));
set(x, y, z, "#d9473a");
}
}
for (let z = 17; z <= 29; z++) {
set(19, 9, z, "#b93230");
set(29, 9, z, "#b93230");
set(24, 4, z, "#db4839");
}
// Short red grain chute projecting from the upper right side.
line(35, 18, 25, 41, 13, 21, 2, "#b83230");
line(36, 17, 26, 40, 13, 23, 1, "#ec5a43");
box(40, 11, 19, 42, 14, 22, "#dc4437");
box(42, 12, 20, 42, 13, 21, "#633f39");
line(36, 19, 23, 38, 17, 25, 0, "#87999b");import { draw } from "./assets/voxel";
import { silo } from "./assets/silo";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, silo, 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 silo
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["silo"] })
# It lands in client/assets/silo.ts
# https://fogon.page/object/silo