← Monsters and enemies3D assetfogon/ciclope
Cíclope
Drag to turn it// «Cíclope» · gpt-6-sol (medium)
// A big cartoon cyclops facing -y: tan skin, a bald round head with ONE huge eye in the middle (white with a glowing orange iris), a single horn, a wide grumpy mouth, a brown fur loincloth over one shoulder and a big stone hammer in the right hand.
const skin = "#c99361";
const skinLight = "#e2ae77";
const skinDark = "#a86e49";
const fur = "#75452d";
const furLight = "#a36a3b";
const furDark = "#4c2e25";
// Feet and legs: each leg swings from its own hip.
function leg(name, x, speed) {
part(name, [x, 25, 15]);
ellipsoid(x, 25, 11, 4, 4, 6, skinDark);
ellipsoid(x, 24, 9, 3.5, 3.5, 6, skin);
ellipsoid(x, 23, 4, 3.5, 4, 4, skin);
ellipsoid(x, 20, 2, 4.5, 5, 2, skinDark);
ellipsoid(x, 19, 3, 4, 4, 2, skinLight);
for (let dx = -2; dx <= 2; dx += 2) {
set(x + dx, 16, 1, "#82543d");
}
animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
}
leg("leftLeg", 18, 2);
leg("rightLeg", 30, -2);
part("body", [24, 24, 20]);
// Chunky torso, belly and neck.
ellipsoid(24, 25, 21, 10, 8, 11, skinDark);
ellipsoid(24, 24, 23, 9, 8, 10, skin);
ellipsoid(24, 22, 17, 9, 8, 6, skin);
ellipsoid(24, 24, 29, 5, 5, 5, skinDark);
// Left arm hangs beside the belly.
sphere(15, 24, 27, 4, skinDark);
line(14, 23, 26, 11, 21, 17, 3, skin);
ellipsoid(10, 19, 16, 4, 4, 4, skinDark);
ellipsoid(10, 18, 17, 3.5, 3, 3, skinLight);
// Big bald head, with darker lower shading.
ellipsoid(24, 23, 32, 11, 9, 10, skinDark);
ellipsoid(24, 23, 34, 10.5, 8.5, 8, skin);
ellipsoid(24, 21, 27, 8, 7, 4, skin);
ellipsoid(17, 22, 28, 2, 3, 3, skinDark);
ellipsoid(31, 22, 28, 2, 3, 3, skinDark);
// A little variation on the broad skin surfaces.
forEach((x, y, z, color) => {
if (color === skin && rand() < 0.065) {
set(x, y, z, z > 27 ? skinLight : skinDark);
}
});
// One thick, curved horn.
ellipsoid(25, 20, 40, 3, 3, 2.5, "#76503c");
ellipsoid(25, 20, 41, 2.5, 2.5, 2, "#e5cf9e");
ellipsoid(26, 20, 43, 2, 2, 2, "#f0ddb3");
ellipsoid(27, 20, 45, 1, 1, 1, "#fff0cb");
// Huge single eye: a dark socket, white eyeball and glowing orange iris.
ellipsoid(24, 13, 34, 7, 2.8, 6, "#765039");
ellipsoid(24, 11.5, 34, 6, 2.3, 4.8, "#fff5dc");
ellipsoid(24, 9.4, 34, 3.6, 1.4, 3.6, "#b94423");
ellipsoid(24, 8.4, 34, 3, 1.2, 3, "#ff871f");
ellipsoid(24, 7.7, 34, 2, 1, 2.1, "#ffc238");
ellipsoid(24, 7, 34, 1.2, 0.8, 1.7, "#372b30");
set(22, 6, 36, "#ffffff");
set(22, 7, 37, "#ffffff");
// Heavy brow and a wide, downturned grumpy mouth.
line(18, 12, 39, 30, 12, 39, 1, skinDark);
line(18, 15, 27, 21, 14, 25, 1, "#71443a");
line(21, 14, 25, 27, 14, 25, 1, "#71443a");
line(27, 14, 25, 30, 15, 27, 1, "#71443a");
line(20, 14, 27, 28, 14, 27, 0, "#e8b27b");
// Fur draped over one shoulder and diagonally across the chest.
ellipsoid(16, 19, 28, 4, 4, 4, furDark);
line(16, 16, 29, 29, 16, 16, 3, furDark);
line(16, 15, 30, 29, 15, 17, 2, fur);
line(17, 14, 29, 28, 14, 18, 0, furLight);
for (let i = 0; i < 10; i++) {
const x = 17 + i;
const z = 28 - i;
if (i % 2 === 0) line(x, 14, z, x - 1, 14, z - 2, 0, furLight);
}
// Belt and a broad, ragged loincloth flap.
box(17, 16, 13, 31, 18, 16, furDark);
box(19, 15, 14, 30, 16, 16, fur);
box(20, 15, 8, 29, 16, 14, furDark);
box(21, 14, 9, 28, 15, 14, fur);
box(22, 14, 6, 24, 15, 9, fur);
box(26, 14, 7, 28, 15, 9, fur);
line(21, 14, 13, 23, 14, 8, 0, furLight);
line(27, 14, 13, 27, 14, 9, 0, furLight);
box(23, 13, 14, 26, 14, 16, "#c69049");
// Hammer arm swings at the right shoulder.
part("hammerArm", [33, 24, 27]);
sphere(33, 24, 27, 4, skinDark);
line(34, 23, 26, 37, 21, 20, 3, skin);
line(37, 21, 20, 39, 19, 17, 2.5, skinLight);
// Wooden handle, held in a big fist.
line(40, 19, 15, 40, 19, 35, 1.5, "#55382d");
line(40, 18, 16, 40, 18, 32, 0, "#a67645");
sphere(39, 19, 18, 3, skinDark);
ellipsoid(39, 18, 19, 2.5, 2, 2.5, skinLight);
line(37, 16, 18, 40, 16, 18, 0, skinDark);
// Massive beveled stone hammer head.
box(37, 16, 31, 45, 22, 39, "#59616a");
box(36, 17, 32, 46, 21, 38, "#727b82");
box(38, 15, 32, 44, 16, 38, "#858f94");
box(38, 17, 39, 44, 21, 40, "#a2a9a7");
box(37, 16, 31, 45, 21, 31, "#444c55");
line(38, 15, 33, 38, 15, 37, 0, "#424a55");
line(44, 15, 33, 44, 15, 37, 0, "#424a55");
line(40, 14, 34, 42, 14, 36, 0, "#c5b17d");
set(41, 14, 35, "#ffe09a");
animate("hammerArm", { type: "swing", axis: "x", speed: 2, amplitude: 0.5 });import { draw } from "./assets/voxel";
import { ciclope } from "./assets/ciclope";
// Every frame: standing on (x, y), the centre of its base.
draw(ctx, ciclope, 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 ciclope
# With Fogón's tools (connector)
add_assets({ slug: "<your-game>", ids: ["ciclope"] })
# It lands in client/assets/ciclope.ts
# https://fogon.page/object/ciclope