← LibraryAssetmormon/medieval-sets
Medieval: pueblo, utilería y naturaleza
Original work by Quaternius ↗
Clone
fogon pieces add medieval-setsgit clone https://git.fogon.gg/mormon/medieval-sets.gitfogon new medieval-sets --from medieval-setshttps://fogon.gg/piece/36/medieval-pueblo-utileria-y-naturalezaMedieval: pueblo, utilería y naturaleza
474 piezas 3D low-poly de Quaternius, en dominio público (CC0), listas para three.js: un pueblo que se arma por módulos, la utilería para llenarlo y la naturaleza que lo rodea. Más cinco texturas de suelo. Son las mismas con las que está hecho Medival.

En la demo: elegí un kit arriba, buscá por nombre y tocá una pieza para verla (arrastrá para girar, la rueda acerca; las flechas ↑↓ recorren la lista). Abajo quedan su tamaño en metros y la línea de código que la pone en tu escena (un clic la copia). En «Escena» hay una calle armada solo con estas piezas. La luz (estudio, día, atardecer), el giro y la grilla de 1 m están en los controles.
Los kits
| Kit | Piezas | Qué hay |
|---|---|---|
village (pueblo) | 176 | paredes de revoque y de piedra (lisas, con puerta, con ventana), esquinas, pisos, techos de tejas de 4×4 a 8×14 m y sus frentes, balcones, aleros, escaleras, puertas, ventanas y postigos, chimeneas, cercos, enredaderas, un carro |
props (utilería) | 132 | yunque, barriles, cajones, bolsas, estandartes, camas, mesas, sillas, estantes, libros, velas, candelabros, faroles, armas, escudo, ollas, pociones, monedas, puestos de mercado, una fogata, platos de comida, pescados, minerales y vetas, un árbol gigante |
nature (naturaleza) | 166 | árboles (comunes, arces, abedules, pinos, cerezos, retorcidos, secos), cada uno con su versión _LOD; arbustos con y sin flores, pasto, tréboles, flores, helechos, hongos, rocas, piedritas, losas de camino |
| suelos | 5 | dirt (tierra), grass (pasto), grass_dry (pasto seco), rock (piedra), snow (nieve): color + mapa de normales, 1024 px, se repiten |
Todo en metros, +Y arriba. Las piezas del pueblo encajan en una grilla de 2 m: una pared mide 2 m de ancho y 3,1 m de alto, centrada en x = 0, su cara de afuera mirando a +Z. Un piso de la casa son 3 m.
Cómo se usa en un juego
fogon pieces add medieval-sets
Eso trae client/medieval-sets/kits.ts (el cargador, solo código: unos pocos KB) y agrega three.js al package.json. Los modelos no viajan con el juego: se cargan desde la demo publicada de esta pieza (https://play.fogon.page/medieval-sets/medieval/), que los sirve a cualquier juego de Fogón.
import * as THREE from "three";
import { loadKits, piece, pieceNow, pieceLOD, bounds, groundPlane } from "./medieval-sets/kits";
// Una pared con puerta. `piece` baja su kit la primera vez (village.glb: 2,8 MB) y después clona al instante.
scene.add(await piece("village", "Wall_Plaster_Door_Round"));
// Para muchas: primero los kits que vas a usar, de una, y después pieceNow (sin await) en un bucle.
await loadKits(["props", "nature"], { onProgress: (f) => console.log(`${Math.round(f * 100)}%`) });
for (let i = 0; i < 20; i++) {
const barrel = pieceNow("props", "Barrel");
barrel.position.set(i * 0.8, 0, 0);
barrel.rotation.y = Math.random() * Math.PI * 2;
scene.add(barrel);
}
// Un árbol que de lejos (más de 45 m) pasa a su versión liviana.
scene.add(await pieceLOD("nature", "U_PineTree_2", 45));
// Un suelo de 40 × 40 m de pasto (la textura se repite cada 4 m), y la caja de una pieza para chocar contra ella.
scene.add(groundPlane("grass", 40));
const box = bounds("props", "Stall_Cart_Empty"); // { min: [x, y, z], max: [x, y, z] }
Para que se vean bien: sombras prendidas (renderer.shadowMap.enabled = true y una DirectionalLight con castShadow) y algo de luz ambiente (HemisphereLight, o scene.environment con RoomEnvironment). Las piezas ya vienen con castShadow y receiveShadow.
Lo que exporta kits.ts
loadKits(kits?, { base?, onProgress?, shadows? }) | baja los kits (los tres si no decís cuáles) en paralelo. Llamarla de nuevo no baja nada |
piece(kit, name) | una copia nueva de la pieza (Promise<Object3D>); si su kit no estaba, lo baja |
pieceNow(kit, name) | lo mismo, sin esperar: el kit tiene que estar cargado |
pieceLOD(kit, name, far = 45) | un THREE.LOD con la pieza y su _LOD desde far metros |
pieceNames(kit) · bounds(kit, name) · size(kit, name) | los nombres de A a Z, la caja y el tamaño en metros (del catálogo: no hace falta bajar los modelos) |
groundTexture(name) · groundPlane(name, size, tile) | las texturas de suelo (compartidas) o un plano ya armado |
loadCatalog() · setBase(url) · isLoaded(kit) | el catálogo solo, de dónde se cargan los archivos, si un kit ya está |
disposeGround(mesh) · disposeKits() | liberar un suelo, o todo lo que el cargador tiene |
Las copias comparten geometría y materiales con el kit: mil barriles cuestan un barril de memoria, y sacar uno de la escena no necesita nada más. Si cambiás el material de una copia cambian todas: cloná el material primero para un color propio.
Usar los archivos sin depender de la demo
Para tenerlos dentro de tu juego (sin conexión, o servidos por vos), bajalos a public/medieval/ y decíselo al cargador una vez, antes de cargar nada:
mkdir -p public/medieval/textures && cd public/medieval
B=https://play.fogon.page/medieval-sets/medieval
for f in catalog.json village.glb props.glb nature.glb; do curl -fO $B/$f; done
for t in dirt dirt_n grass grass_n grass_dry rock rock_n snow snow_n; do curl -fo textures/ground_$t.webp $B/textures/ground_$t.webp; done
await loadKits(undefined, { base: "./medieval/" });
Son unos 15 MB (village 2,8 · props 3,7 · nature 7,4 · texturas 1,9). Si usás un solo kit, bajá solo ese .glb y el catálogo.
Límites
- Son mallas estáticas: no hay física ni colisiones. Para chocar, usá
bounds(una caja por pieza) o armá tus formas. - No hay animaciones ni personajes: eso no viene en esta pieza.
- Los árboles tienen dos versiones: la normal y la
_LOD(menos triángulos), para lo que está lejos. - Algunas piezas cuelgan de su punto de apoyo (las armas, de su empuñadura; los arbustos tienen raíces bajo el suelo): mirá su caja (
bounds) antes de apoyarlas. - Las hojas usan texturas recortadas (alpha test). El cargador les arregla un borde blanco que traen de fábrica: si cargás los
.glbcon tu propio código, las hojas van a tener ese borde. - Los archivos vienen comprimidos con meshopt: el cargador ya lo resuelve; con otro motor hace falta su decodificador.
Créditos y licencia
Modelos de Quaternius (quaternius.com), de sus packs Medieval Village MegaKit, Fantasy Props MegaKit, Stylized Nature MegaKit y Ultimate Stylized Nature, en dominio público (CC0). Unas pocas piezas de la utilería se hicieron para Medival (la fogata, la leña, los platos y guisos, los pescados, la caña, los minerales y sus vetas, el árbol gigante, la espada de fresno) y las versiones _LOD de los árboles las armó su compilación de modelos: todo eso también es CC0. Publicadas desde Medival. No hace falta dar crédito, pero se agradece.
Pick a file.
| Version | When | Size | Commit |
|---|---|---|---|
| v1 in the demo | Nov 11, 2026 | 16.5 MB | 38814c3 |
Nobody has published a version made from this piece yet.
Put together the request for your agent
Pick what you want to do, copy the request and paste it into your AI (Claude, ChatGPT, Codex…). It does the rest.