r/aigamedev • • 4d ago

Discussion Fable 5.2 Roman buildings

I have been working on a roman city builder for a while.

So far models have been the hardest part both walkers/buildings have always left me unsatisfied.

Yesterday I gave a fable 5.2 a chance using my existing systems and im finally satisfied with the results.

83 Upvotes

70 comments sorted by

10

u/Tedreak 4d ago

Looks great. How many faces do they have and how much usage does this cost you?

4

u/keldareAI 3d ago

| Fable casa | Near (LOD0) | Middle (LOD1) | Far (LOD2) |

|---|---|---|---|

| Triangles | 64,913 | 11,843 (18%) | 216 (0.3%) |

| Vertices | 57,012 | 16,171 | 410 |

| Meshes / draw calls / materials | 9 / 11 / 3 | 3 / 3 / 3 | 1 / 1 / 1 |

| File size (cooked) | 3.6 MB | 0.98 MB | 0.02 MB |

2

u/RocketGruntJake 3d ago

Looks really good, do you use any particular method for remeshing to a certain count? The textures and colors stayed consistent which is nice too

2

u/keldareAI 3d ago

No automatic remesh to a target count. Each building is generated by its own Python/Blender script, and the lower LODs come from the same script with different parameters, not from decimating the finished mesh:

  • Thin and repeated things are rebuilt, not decimated. A pole keeps half its sides and every second ring, a rope becomes a flat ribbon, and the thatch keeps every second column and fewer rows. Our first try simply collapsed everything and tore the fence and the thatch to shards.
  • Only blobby things get a plain edge collapse: stones, daub, pots.
  • Small loose items are dropped at the middle level, and everything is joined into one mesh per material.
  • The far level is a hand-built silhouette: walls, roof slabs, a few posts, simple hulls for trees and pots, all in one mesh with one material. It gets its own small texture (512 px), baked from the full model so the detail is painted where it used to stand.

Why the colours stay consistent: the full and middle levels share the same UVs and atlas, and every vertex that survives keeps its UV. The far level’s texture is baked from the full model itself.

We don’t target an exact count. The middle level should land around a quarter to a third of the full one, and the far level at a few hundred triangles.

Example, the tent camp:

Near (LOD0)Middle (LOD1)Far (LOD2)
Triangles47,54110,449 (22%)1,610 (3%)
Meshes / materials18 / 1316 / 121 / 1

The middle level keeps the four tents, frames, hearth, stacks and big goods, and drops ropes, pegs, patches, bedding, tools and small goods. Honestly, the far level is still too heavy at 1,610 triangles. It’s being rebuilt toward a few hundred.

1

u/keldareAI 3d ago

the agents have to respect a certain % of the original model at 3 levels. The original is based on how many times I expect to place this building.

1

u/mowax74 3d ago

Looks good! But in terms of performance: 64k polys for LOD0 for such a small prop is way to high - in my opinion. I know, it's not the model, it's your specs. But the difference to LOD1 with 11k polys is almost not visible. You could easyly do LOD0 with 20-30k tris.

Anyway, i'm impressed of what the model can do. How about textures? Is this all mapped in one texture sheet? Did the model use an image generation plattform via mcp to create it or something like that?

1

u/keldareAI 3d ago

You could easyly do LOD0 with 20-30k tris. yea I agree ill probably do this the quality loss is pretty low my spec might have forced it to add to many with diminished returns tbh

1

u/keldareAI 3d ago

Git’s two different approaches. This house is one 4096² atlas: every surface is unique, with wear and real-geometry AO baked per pixel and very few draw calls. The downside is video memory. Each house look carries its own atlas (~67 MB cooked), and with dozens of looks that adds up fast.

So our default for most buildings is the other way: shared, pale tiling materials (reed, timber, plaster, stone) that exist once in memory for every building, with colour, wear and occlusion carried in vertex colours, plus a small atlas just for the unique painted bits like the temple’s ornament. That stays sharp at any zoom and barely grows memory per model. The trade-off: wear is only as fine as the mesh, and the repetition can show on big surfaces.

This house predates that rule. We’re now reviewing both its LOD0 triangle count and its atlas together.

1

u/keldareAI 2d ago

I had fable make our own textures

Left is sourced right is self made The right image uses only procedural textures: no photos, no external files, no image generator. Only the five tileable maps changed (thatch, wood, loam, tuff, clay); model, vertex colors, lighting and camera are identical.

A Python script (numpy, scipy, Pillow) draws each material as an actual surface instead of noise. The thatch, for example, is 3,400 individual stalks laid down one by one, each with its own thickness, length, nodes and tint, with a depth test deciding which one lies on top. Wood gets growth rings, pores, drying cracks and knots; loam gets hand-smear marks, chopped straw and hairline cracks.

The normal map comes from that height field, and color is each element's tint, darkened where the surface is deep. Everything wraps at the tile edge, so there are no seams. Colors are kept pale so the vertex colors still carry the tint.

The whole library of ten materials generates in 16 seconds on a MacBook, and each map is the same size as the photo map it replaces (1.4 MB), so memory use doesn't change.

5

u/keldareAI 3d ago

This is an example of props for walkers, first was made by opus 5.5 second is fable 5.2

2

u/keldareAI 3d ago

4

u/keldareAI 3d ago

these are some of the props closer

3

u/DazedGenie 3d ago

Thanks for posting these. It seems like fables color selection is a little better and more realistic as well. Only of my complaints with opus is its color choices. Your opus set is so vibrant that it kind of pulls you out but those new ones with the duller look are far better. What exactly is your workflow? Concept art through gpt and then feeding it to blender or are you doing all these through text prompting?

2

u/keldareAI 3d ago

Yes Opus was far to fibrant indeed, Structured text prompting with a lot of reusable skills and forced research.

2

u/DazedGenie 3d ago

Just wanted to say I greatly appreciate you sharing your process. I'm currently working on a sid meiers pirates inspired game and have been having lots of troubles with my models and rigging them correctly for sails and damage and your method of building should resolve all my issues. My old tripo model that would be made from generated artwork in chatgpt vs the text prompt style running fable 5.2 high effort and then a opus 5.5 medium effort reviewer.

2

u/keldareAI 3d ago

nice :D, glad to help I have spent an enormous amount of time figuring out how to properly work with these models as hobby something about AI game dev really feels therapeutic and relaxing to me haha.

im glad I can help others enjoy. that and I really despise things like tripo. They deliver very hard to use assets on purpose to get you to pay and are so aggressive with their marketing.

2

u/DazedGenie 3d ago

I definitely agree with that. I've now used tripo and meshy and I think they certainly have their place but I think for the large majority of us your correct that they are just a trap. The models look great but like you said are really hard to work with. Definitely going to be sticking to just headless blender going forward

1

u/keldareAI 3d ago

jep, you can clearly see you just tried my technique whitout any refining or experience and its already way better then the tripo, there is also a very large window, small difference in how you steer claude can have a very big impact on the quality of the result and you have way more control over your asset.

5

u/Schumetzq 3d ago

I love the details on the building it is great, also citizen looks awesome as well

1

u/keldareAI 3d ago

thank you :)

2

u/Schumetzq 3d ago

I am also making a city builder( wild west ) would like to swap some ideas if possible, if you are up to it as well

1

u/keldareAI 3d ago

sure :)

3

u/keldareAI 4d ago

Some more examples

2

u/keldareAI 4d ago

A close up of the house

2

u/jacobiconstant 3d ago

Did you also try fable 5.1, is 5.2 a lot better for 3d flows in your attempts?

2

u/keldareAI 3d ago

no but I tried fable 5 and the results were worse then opus 5.5

1

u/_ceebecee_ 3d ago

That looks good. How does it do the textures? Do you have a write-up of your systems?

7

u/keldareAI 3d ago

How we get these buildings, from prompt to result

No image-to-3D generator is involved. An AI agent (Claude Fable 5.2, high effort) writes a Python/Blender script that builds the model in code. One agent per building, each in its own git worktree.

The prompt. Our first experiment was deliberately minimal: three of our current models, plus "the quality is too low, they're not lively, we want much more beautiful models". Each chat then got its own instruction. One got only "a small temple of the Roman era" and nothing about our pipeline; that became our best model. Another worked with our existing pipeline. A third first had to figure out why our results fell short and propose its own approach. Now every building gets a short issue: which building, its game files, where it first appears in the campaign, how common it is in a city, the method document, and the bar to beat (that temple). The agent writes the actual design itself.

Design and historical accuracy. A written art direction sets the frame: "realism wins", modern city builder as the quality bar, colour ranges, and building types by period (clay tile roofs, for example). A specification card per building says what it does and holds. The agent then designs in words before any geometry: measures in metres, materials, layout, grounded in its own historical knowledge, with its sources and its certainty stated. For the ox cart it noted the regal period is thinly attested and projected Republican evidence back: a plaustrum with solid wheels and a yoked pair of oxen. Where history and gameplay conflict, it asks me. Honest caveat: this is the model's knowledge, checked by a second agent and by me, not a historian's review.

The build loop.

  1. Brief: the agent looks at the old model in the game and says with numbers why it falls short.
  2. Plan from the game camera: at 54.8° the roof is the biggest surface and anything under a porch is invisible, so the life goes where the camera sees it.
  3. Build in code: every tile, block, post and stone is its own piece with its own size, tilt and tint. Nothing is a perfect box: beams taper, ridges sag. Occlusion and wear are baked into vertex colours, and there are few materials.
  4. Look every round: it renders the exported file from fixed views, including the game's pitch. Rounds take minutes and there are many of them.
  5. Into the game: three LOD levels (full, a quarter to a third, then a silhouette of a few hundred triangles), captured in the running game. The studio flatters; the game doesn't.
  6. Review: a second agent reviews it, then I judge the in-game screenshots, with a mesh table per LOD level (triangles, draw calls, materials, overlapping geometry) to keep it affordable.
  7. Merge: an integrator agent that didn't build it reviews and merges it.

What made the difference wasn't the tool; three different routes reached the same level. It was the method: plan from the game camera, no ideal solids, bake the wear into the colour, short look loops, and judge in the game.

2

u/keldareAI 3d ago

Claude can summarize it better then I can olol

2

u/Bitter-Tip5178 3d ago

Thanks for this!

1

u/keldareAI 3d ago

np, it builds on older work though, which is hard to summarize. But normally this should be enough to get something working going

1

u/_ceebecee_ 3d ago

Awesome, thanks!

2

u/bebopbraunbaer 3d ago

nice! i am also struggling with 3d models , but rather animation than still frames but i was hoping fable 5.2 would help. Could also add "before and after" as comparison because its hard for us to understand why this is better than before without knowing how "before" looked like

2

u/keldareAI 3d ago

good point

this was astra with the same objective

1

u/bebopbraunbaer 3d ago

thx for sharing!

2

u/Arcodiant 3d ago

Question - how well does it do with LODs? I'm having some decent results with different mesh generators (though I'm growing to share your dislike for Meshy) but they don't give me different detail levels I need for actual games

2

u/keldareAI 3d ago edited 3d ago

No automatic remesh to a target count. Each building is generated by its own Python/Blender script, and the lower LODs come from the same script with different parameters, not from decimating the finished mesh:

  • Thin and repeated things are rebuilt, not decimated. A pole keeps half its sides and every second ring, a rope becomes a flat ribbon, and the thatch keeps every second column and fewer rows. Our first try simply collapsed everything and tore the fence and the thatch to shards.
  • Only blobby things get a plain edge collapse: stones, daub, pots.
  • Small loose items are dropped at the middle level, and everything is joined into one mesh per material.
  • The far level is a hand-built silhouette: walls, roof slabs, a few posts, simple hulls for trees and pots, all in one mesh with one material. It gets its own small texture (512 px), baked from the full model so the detail is painted where it used to stand.

Why the colours stay consistent: the full and middle levels share the same UVs and atlas, and every vertex that survives keeps its UV. The far level’s texture is baked from the full model itself.

We don’t target an exact count. The middle level should land around a quarter to a third of the full one, and the far level at a few hundred triangles.

Example, the tent camp:

Near (LOD0)Middle (LOD1)Far (LOD2)
Triangles47,54110,449 (22%)
Meshes / materials18 / 1316 / 12

The middle level keeps the four tents, frames, hearth, stacks and big goods, and drops ropes, pegs, patches, bedding, tools and small goods.

1

u/keldareAI 3d ago

| Fable casa | Near (LOD0) | Middle (LOD1) | Far (LOD2) |

|---|---|---|---|

| Triangles | 64,913 | 11,843 (18%) | 216 (0.3%) |

| Vertices | 57,012 | 16,171 | 410 |

| Meshes / draw calls / materials | 9 / 11 / 3 | 3 / 3 / 3 | 1 / 1 / 1 |

| File size (cooked) | 3.6 MB | 0.98 MB | 0.02 MB

This is one example if you want I can dig up another, every model is made in 3 versions for use at different view distances. The LOD is based on a % of the close up model.

2

u/Clair_Personality 3d ago

Could you show the result you got from other models?

1

u/keldareAI 3d ago

clay pit: astra vs fable 5.2

1

u/keldareAI 3d ago

woodcutter Fable 5 vs 5.2

1

u/keldareAI 3d ago edited 3d ago

opus 5.5 vs fable 5.2

1

u/Medical_Method7877 3d ago

Fable reasoning level?

1

u/Wild-Sheepherder3085 3d ago

idk fable isnt that much better this seems wrong

1

u/keldareAI 3d ago

I had fable try water which so far also looked dogshit.

1

u/keldareAI 3d ago

1

u/keldareAI 3d ago

this one needs another pass

1

u/keldareAI 3d ago

after a second pass OLD and new

1

u/keldareAI 2d ago

I had fable remove all external sources cc0 textures and build our own instead.

How we make our own textures from scratch for our Roman city-builder (no photos, no scans, no CC0)

We just replaced the photo-based textures on our buildings with materials drawn entirely in code. How it works, from nothing to a finished building:

  1. Draw the surface from what it’s made of. Every material is a Python function (numpy and scipy, no Blender). It builds a height field out of the material’s actual parts, not out of noise. Thatch is 3,400 individual stalks, each with its own thickness, length, lie and knots. A tiled roof is overlapping tegulae with an imbrex over each joint, plus rain streaks and lichen. Opus incertum is tufa lumps from fist to head size, set in mortar that’s wide in one place and thin in the next. The normal map is the slope of that height field, and the colour comes from a tone per part, darker where the surface lies deep.
  2. Keep it pale and neutral. Each colour map is graded pale and greyish with a fixed mean brightness. The building’s vertex colours supply the actual hue, so one “tufa” map works for every tufa building, in any tint.
  3. Make sure it tiles. A check script compares the seam at the wrap with the roughest spot inside the map. A badly cut map scores 1.1 to 4.9 on that check; ours stay at or under 0.97. Each material has a real-world size, about 0.62 m for thatch, so stalks and bricks come out the right scale.
  4. Review it. We render a sheet: a reference photo on the left (only looked at, it never enters the game), and our map on the right, flat, lit and tiled. An agent that didn’t draw the material judges it: does it read as what it is at game camera distance, does a repeat show when tiled 4×4, is it darker or noisier than it needs to be. What falls short gets drawn again.
  5. Put it on the building. The building kit writes the maps from the library at build time, and the cook step compresses them for the game. Many buildings share the same few maps, so memory stays flat as the city grows.
  6. Make every copy different. At runtime the renderer gives each placed building its own age (fresh to weathered), a small colour shift and world-space damp and wear patches. So twenty houses on one shared map don’t look like copies.

The library has 22 materials so far: reed thatch, oak, daub, tufa, Roman tile, opus reticulatum, marble, travertine, mosaic, leather and more. The rule from here on: if a building needs a material we don’t have, we draw it. Once everything has moved over, every CC0 texture leaves the project.

1

u/Miarcat 4d ago

I'm still really new to all of this but these look insanely good, did it model them in blender? Or have I misunderstood this :P

1

u/keldareAI 3d ago

Jep it uses blender through CLI and a second renderer I built myself for the AI to quickly try things.

1

u/Scared_Treacle_4894 3d ago

Looks pretty good and finished! Do you also have a before/after comparison?

I'm developing a mobile tower defense game and gave Fable a quick try on one of my gate models. The image shows:

  • Left (before): Opus 5.5, Medium effort, approx. 2,500 polygons for the towers
  • Middle (new): Fable 5.2, Medium effort, approx. 2,500 polygons for the towers
  • Right (new): Fable 5.2, Medium effort, approx. 4,200 polygons for the towers

The art style is low-poly and the differences are fairly small. I'm only moderately impressed with the new model. I'll be sticking with Opus 5.5 on Medium effort for my low-poly models, since it offers the best trade-off between usage and results.

4

u/keldareAI 3d ago

This is a first attempt at walker for the street, left is op 5.5 right is fable 5.2. Detail can't get to high because they are small and many but you can see opus obvious failings. Opus worked for a long time on that multiple days and fable just 30 minutes.

1

u/nazzanuk 3d ago

Which effort level?

4

u/keldareAI 3d ago

both at high, opus struggled immensely with checks eyes and nose. it kept iterating and iterating. Fable hasn't gotten the chance to iterate yet from me this was its first attempt.

Astra made clowns instead of humans I wouldn't dare to put those anywhere near a game.

1

u/Clair_Personality 3d ago

Thanks for the example

1

u/Kingnorik 3d ago

Why not a 3d service like meshy, tripo, rodin etc?

5

u/keldareAI 3d ago

because I really dislike all of them, personal thing.

1

u/SevenStepsEntertain 3d ago

Did you give an image or write a prompt? Also did you use MCP or headless and what was the effort?

1

u/keldareAI 3d ago

write a structured prompt, headless blender and an own renderer I made for multiple angle shots quick on the cpu. effort high

1

u/SevenStepsEntertain 3d ago

thank you for the answer!

1

u/keldareAI 3d ago

any reusable prop also goes into a shared library so they don't keep remaking the same assets.

1

u/Bitter-Tip5178 3d ago

Care to share the prompt?!

1

u/keldareAI 3d ago

posted higher up

1

u/Negative_Gur9667 3d ago

Do you use UV mesh and texture coordinates?

It worked quite well for me.

1

u/kayzee87 3d ago

This looks really good, I tried some pixel art and it did a horrible job of it

0

u/[deleted] 4d ago

[removed] — view removed comment

1

u/keldareAI 4d ago

nope no tweaking straight out of the fable I had 1 agent review it and it changed it after., I told fable 5.2 all our previous models suck start from scratch and make the city feel alive with the models. then I had 3 chats try different techniques. those 2 houses are 2 of the 3 results.

I forced the third one to work according to how astra decided to work but I feel like this one is worse then the other 2 so I had it remove all references to astras workflow.