A bestiary you fill with photos: ten creatures, three stars and the perfect moment
In Gotic you don't catch creatures, you photograph them. Each has its own time of day, weather, way of fleeing, and a moment worth three stars.
I wanted something more interesting than earning the animals' trust. Gotic's bestiary is filled by taking photos: nothing gets caught or carried off. There are ten entries. Six are new creatures, one per family: the musgolín of the meadow, the candelilla at the forest edge (night only), the caracolito on the shore, the nubecín (it only comes out when it rains), the topolín on the slopes and the air manta, which glides very high. The other four are the animals from the fauna mod: rabbit, deer, gull and butterfly.
Each photo gives 0 to 3 stars to every species in it: 1 if it's recognisable, 2 if it's also well framed and facing you, 3 if it's also caught in its moment: the musgolín yawns, the candelilla flares up, the caracolito sings, the manta does a full barrel roll. Stars never go down and unlock three notes per species. Document 3 species and you get a naturalist's hat; 4, a ×5 lens; 8, a ×8 one.
It has no button of its own: it's the CRIATURAS (creatures) tab in the camera album, showing a "???" silhouette and a vague clue until your first photo.

How it's built
The camera measures, the bestiary decides. The camera doesn't know what a creature is: it only measures size in frame, distance from the centre, whether it's facing you, whether something is in front, and its pose. Stars come from a pure function with per-species thresholds:
static func stars(subject: Dictionary, species_rule: Dictionary, moment: String) -> int:
var clear = subject.get("clear", false)
if not (clear is bool and clear) or _num(subject, "size") < float(species_rule["size1"]):
return 0
if _num(subject, "size") < float(species_rule["size2"]) or _num(subject, "off", 99.0) > float(species_rule["off2"]) or _num(subject, "facing", -1.0) < float(species_rule["facing2"]):
return 1
return 3 if str(subject.get("pose", "")) == moment and moment != "" else 2
By default, 1 star needs 10 % of the image height; 2 needs 22 %, within 0.3 of the centre and facing you. The butterfly and the manta are recognised at half that, and the rabbit and deer count in profile.
The bestiary doesn't know about the wildlife mod either. It asks every active mod for creatures(), just as cooking asks for ingredients. That's how it supplies its own six, and how fauna supplies its four.
Where they appear. The island is split into 48 m cells with a fixed seed: the same place always yields the same creatures. Every second up to 12 are chosen at once, between 25 and 90 m from the player, never close and inside the camera frame, and only at their time and in their weather. They have no physics: they stick to the ground. Measured headless: 0.23 ms per frame with 12 active.

What went wrong
The same AI subagent (Opus) that built the camera built this, and it caught the biggest problems in real photos:
- A manta behind a tree crown scored 3 stars, because crowns have no collision.
- The camera's zoom arrived a frame late, and the viewfinder couldn't look higher than 51°.
- The manta was an oval. It now has pointed wingtips.
- The tab crashed while drawing the rabbit: the bestiary only had art for its own six, and no test opened the tab with the wildlife mod installed. Now every species can bring its own model.
- A test passed in the suite and failed on its own. It compared the creatures spawned in two games, but each game had computed a different number of cells (55 and 49). Now it compares what's deterministic: each cell's candidate.
In the end, 115 checks of its own and 36 mutations seen failing.
Still unverified
Nothing on a phone. All ten species got 3 stars in real photos, but the gull only with the ×8 lens fitted by hand and the wildlife frozen: with a real player it isn't measured. Whether the thresholds and shyness are fun or frustrating is for players to say; it's my call for now. And the candelilla's tail, seen from behind, looks like a flat disc.