August 30, 2026

Knocking on Arkane’s Door

Originally written in Russian and published in March 2019. This is an English translation of that post.

I've been slowly trying to figure out how my favourite game studio actually works — pulling together what I've learned from digging through their source files, reading interviews, and piecing their pipelines back together.

I'm a 3D guy, so I'll mostly be talking about the things that matter to me: models and textures.

The story is split into several parts, because the material adds up. This is a technical, illustrated reverse-engineering scrapbook aimed at understanding the 3D side of game development — it's unlikely to mean much to anyone outside the field.

Let's go.

I recently realised that the only method that really works for me is "look at the original and turn it over in your hands." I'd been picking up scraps of information here and there about polycounts and what UV layouts are supposed to look like. There are standards and conventions, sure, but those are a general direction of travel — what I wanted was one specific studio's specific approach.

So I took Dishonored 2, a game I've played to death, and started looking for a way to get its source assets into an editor.

The game's local folder contains files with a .resources extension. Sadly, no standard archiver will open them, so it's time to Google.

Half an hour of Googling leads first to forums, then to a set of tools.

Luigi Auriemma wrote a piece of software called QuickBMS which — with a helper script that tells it which game the files belong to — unpacks *.resources into a normal folder. Once everything is unpacked you're left with the structure the engine (a heavily reworked idTech5) feeds its assets from.

Out of all that, two things interested me: models and textures. Models sit under the .bmodel and .bmd6model extensions, textures under .bimage7. Naturally, the models wouldn't open in any 3D package, and the textures wouldn't load in Photoshop.

More Googling turns up another set of gadgets to dig deeper with. On the XeNTaX forums, a user going by volfin wrote a script that converts .bimage7 into plain old .dds, and attached a Blender importer for .bmodel and .bmd6model (oh gods). Download, install, convert.

.dds isn't always easy to open either, so I had to track down a dedicated Photoshop plugin, after which CC 2019 graciously agreed to open the textures. Funny enough, the plugin was written at Intel.

With the Blender plugin installed, importing a model gets you something like this.

Not bad — this is definitely workable, but first let's move it somewhere less painful. Max, for instance.

We find every texture bound to the object by name, push the model across via .fbx, and voilà.

the model in Max

The asset comes in two parts: the carriage and the space bar are animated, the rest is static, but both models share a common texture set. Textures first:

the texture set

A perfectly ordinary PBR set: first ao (ambient occlusion), then d (diffuse), plus separate g (glossiness), mt (metalness), and a normal map n that looks distinctly odd. I converted them all to JPG for convenience.

Assembled in Marmoset:

the Marmoset build

Not far off what the model's author, Eric Pira, shows on ArtStation — his texture quality is just higher; I'd guess he went to 2048 for the portfolio version.

In the original, diffuse and normal are 1024, AO and metalness 256, gloss 512. A wild spread — they squeezed wherever they could. It's not a hugely important prop, though it does catch the eye and you can interact with it.

Now the model.

Time to hug it and cry a little.

mesh close-up
mesh close-up 2

Total polycount is 6,449 triangles, 7,155 vertices. This is a relatively large object in-game, so you'd expect it to be reasonably detailed.

the model in-game

The UVs are laid out like this:

The empty space in the top right is for the carriage and space bar — the second half of this composite model.

The "exploded" view looks roughly like this:

They clearly economised everywhere: the "cylinders" under the keys are actually prisms. Elsewhere, though, even small details were solved with geometry rather than texture or normal maps — these rolls and thickenings, for example.

Look closely and you'll see the rear roll has half the polygons. Makes sense: it's almost entirely hidden from the player and not especially important, so it gets cut.

24 polygons on the left, 48 on the right.

Some principles are getting clearer, but the triangulated mesh melts my brain. I've modelled in quads my whole life and staring at a triangulated model feels deeply wrong. Of course, that's an engine requirement — and since we're pulling models out of the engine, the engine's version is what we see.

Let's try to improve the display using the polyquad script for 3ds Max. It works beautifully on triangulated meshes generated by an automatic algorithm.

Breathing is much easier now.

…and lo, not a single blemish!
Converted quite decently

An interesting detail is how the interiors of some cylinders are handled. All perfectly legal, but an unexpected solution to my eyes.

Some places are solved head-on: one chunk of geometry simply wedged into another.

Eh, good enough!
the hidden part

Hard edges are used almost everywhere on the model, smoothed over by the normal map.

Right, that model's figured out. Now I need to gather statistics across different props — which is what part two is for.



Part 2

After that first win with the model, a few questions were left untouched: what does the emissive map look like, how is glass handled, what polycount is appropriate for small props, how are their textures solved, and what does something genuinely huge look like? That's what this part is about.

Let's start easy — with a saucepan!

The game has a range of small props: cups, bottles, glasses, and of course a kitchen full of stuff. We'll use it to work out "how it's made and what it costs."

Find the assets whose names start with the codeword stove — there aren't many.

Three pots, a roasting dish, a big pot, and ladles, spoons and forks

All of these models use a single texture set — here it is:

The exception is the food stuffed inside two of the pots; those are separate models. Find the food texture and all is well.

There's stuff in the two left-hand pots!

I found vegetables and fish. The vegetables are a set; the fish is reused in at least two other models, maybe more. Convenient — no need to hammer players' GPUs with textures.

For scale: the main cookware set's pixel dimensions match the typewriter from last time — 1024 max, dropping to 256 on the secondary maps. But take the vegetables, for example, and their diffuse and normal start at 256 pixels. The smallest (AO and metalness) are 64 pixels.

SIXTY-FOUR PIXELS.

Seems you can relax a bit among these mighty pixels and stop worrying about Substance's 8192 support. Yes, the model is very small — but if a 64px square is enough for a AAA project, that's good enough for me.

Obviously there are 4096 textures too: large objects, characters, chunks of buildings. More on that shortly.

What can we say about polycount and how small objects are built? Not that much — there are no great revelations here. The saucepan model is 610 triangles, 311 polygons (after polyquad). The handle, the only protruding part, eats 131 polygons — nearly half the total.

610 triangles

Worth noting the neatly rounded upper rim.

One side effect of studying things this closely is that you start finding mistakes. The saucepan handle, for instance, is clearly visible where it shouldn't be — it pokes through the inside of the wall. Yes, that bug is in the shipped game 🙂

editor on top, in-game below.

On to the next objects, and then we can close the pot question for good.

The small ones: ladle, fork, spoon. Polycount doesn't exceed 500 triangles; the smallest, the fork, is just 188.

a thousand for the lot

The vat is physically larger in-game than the small handled pots, and its polycount is 1,064 triangles — almost double. You can clearly see the rim on top and two edge loops just below. The rivets on the handles are done with textures.

a thousand for one!

Which is gradually leading me to the idea that a secondary set-dressing prop you could fit a character's head into shouldn't exceed 1,000 triangles.

Let's call it the "rule of a thousand."

An amusing difference: the small pots have 30 cylinder segments, while the vat — twice their physical size — has only 24. Explained by the limits they had to hit.

Not much to say about the roasting dish: it's the vessel plus a lid. A thousand for the bottom, six hundred for the top. There's a recess on the inner side and a cute little nub on the handle up top.

Under the handle the texture has also gone strangely askew. Another slip.

Quickly on the vegetables, which have a 256px diffuse. It's a "set," so it's relatively heavy at 658 triangles — the interesting part comes when you open the UVs.

nom nom
the layout

The areas circled in red are overlaps for the "cut" vegetables — the potato and carrot have overlapping cut faces. The lettuce leaf separately uses the alpha channel of the original DDS texture. The small UV chunk at the bottom centre is the thickness of the lettuce leaf. God knows why it's there — that area will be transparent in-game anyway.

I think I'm starting to feel out the permissible level of don't-care in modelling and unwrapping.

One for the road from the kitchen: a few in-game screenshots to show how it all actually looks (all on ultra settings at maximum screen size).

Geometry is nothing, textures are everything!

Time to look at something more complicated — lamps, for instance.

There are two lamps with slightly different purposes, and therefore different approaches to generating light.

On the left, an exterior lamp you meet on the street in a dark mission; on the right, an office lamp, more for interior set dressing. Both have a 1024 main diffuse texture.

You can already tell from the set that the right-hand one uses an emission map (self-illumination, 1) and a transparency map (2), while the left lamp has nothing of the sort — but does have a second micro-set for the blue glass bulb inside.

left lamp
right lamp

On top of that, the lamp has a separate reflection map (r) complementing the metalness map (mt). The grey value on the metal in the glowing glass parts sits at 127, and on the white glowing bulb it's 64. To make sense of it, we need to see it in-game. Grab the drill.

off
on
in interiors

Now it's clearer where the self-illuminating parts are and how they work. Alongside the textures, an actual engine light source is used from time to time — clearly visible from the shadows and the light cone in the next screenshot. That wasn't present in the other, brighter scene.

That cone definitely didn't come from the model

Funny detail: objects the player can interact with (pick up or pocket) cast no shadows.

no shadow

Back to the model.
The same ~1,100 triangles, more odd mesh quirks and bits of geometry poking through. Rather than working out what the mount should look like when the lamp sits on a table, they just made it solid. The don't-care level keeps climbing.

So what about the second lamp, and why does it have no emissive maps? Turns out it glows differently in-game.

in-game

Look closely and there's a small cloud of hot air rising around the glowing part, adding a heat-haze effect. The light is a bit brighter too. I suspect this asset has an extra FX layer set up inside the engine and not visible in a 3D editor. The emitter lives there, and that's the light we see in-game. So the textures are needed purely for the off state — hence no emission maps.

The model is complex, built from cylinders, so it's 3,590 triangles.

Interesting UV cuts. The reflector petals all use the same piece of texture, but rotated slightly relative to each other so the tiling doesn't catch the eye. The topmost "disc" has more polygons than those below it. The base is unwrapped into a straight strip, which makes sense. The whole layout is built around the fact that the player looks at this lamp from above — those parts get more texture space than the lower ones.

UVs bent into shapes I didn't know were legal

Let's look at the big objects.

Statues! Huge, beautiful, and you only meet them a handful of times in the game, but they stick with you. You can see immediately that nobody was economising here 🙂

7,404 triangles on the lion, 5,851 on the octopus; diffuse and normal at 4096, with AO the smallest at 1024. The mesh is a thing of beauty.

Simba
tako

Both models are the work of Yannick Gombart, who is unhinged in the best possible way. Both pieces are on ArtStation if you want to look at something lovely while I keep muttering.

Landmark assets, the kind that stay with you, are made very carefully — so there's not much to pick at here.

The octopus head is symmetrical, and the UV map once again fits the unfittable, squeezing everything it can out of its allotted 2048×4096.

Almost all the tentacles sit in one zone taking up a good half of the space. Smart work.

The lion is unwrapped by character-art conventions, with a fairly even polygon flow. A gorgeous asset — no optimisation tricks, no fuss; Yannick used all 7.5k polys and enjoyed himself.

Gorgeous.

paws

The octopus has no metalness map, which shows in the reduced specular response.

And that's about all there is to say.

June 19, 2023

You Are Not Your Likes

"You are not your job. You are not how much money you have in the bank."
— Fight Club, 1999

I.

Over the past year I've seen a lot of underrated profiles. Concept artists with bright, strong work, who studied at places I wouldn't dare take on at 37.

I've seen Instagram accounts that gather no likes and no followers. Work that stays unknown, even though it's good work. YouTube channels with important information, struggling to get any attention at all.

I've seen a lot of things this year, in fact. Better if I'd drawn a lot of things!…

One artist told once she'd poured everything into her pictures, working at the edge of what she knew, using everything available to her at the time — and they passed by almost unnoticed. Then one day she quickly sketched a dream without any particular agenda, and within twenty-four hours she'd crossed over into the "known" category.

In this short piece I'd like to get across one simple idea. Modern forms of social head-patting shouldn't influence your self-esteem or your creative path. You cannot make decisions about your career based on imagined success on social media and on platforms like ArtStation or DeviantArt.

Everyone has their own measure of Success, of course. For some it's a badge on Behance, for some an international award, for some the follower count on Instagram or YouTube. Changing your own definition of Success is hard, but you can learn to work with it.

And first of all, I'd advise stepping back from it. If you can't step back, then at least don't draw any "conclusions." If they climb into your head by themselves — don't take action based on them. And if some action did happen anyway — don't get onto those rails a second time, don't enter the loop.

A simple example of how not to do it:

  • Hooray! I posted the piece I worked on for a week!
  • The piece didn't get 10 (100, 1,000, 10,000) likes 🙁
  • "I'm worthless! I didn't try hard enough! I don't have it in me!" T___T
  • I spend a month in pieces, barely holding myself together
  • I decide to switch from my beloved sci-fi to drawing babes — those will definitely rack up numbers!

However saturated this situation looks, unfortunately it's spinning around in a lot of people's heads.

Focus on the only part that matters, this one:

I POSTED THE WORK

II.

In the ideal world of someone who has attained zen, the cycle consists purely of action, with no value judgements, no rumination and no subsequent agonising. You post the work, then you post the work again. And then you post the work again.

Success in this framework isn't the outcome — it's the setting.

Here's an analogy.

Imagine you're standing a hundred metres from a target; let's say it's an apple. You have a revolver in your hand and your goal is simple: hit the apple. It would be naive to assume you'll manage it first time; you'll probably spend more than one shot. If this isn't the first time you've fired a gun, it may be somewhat easier. And maybe if you load good ammunition the bullet will fly better. But if you miss, there's no need to put the muzzle to your temple. Cock the hammer, aim, and shoot again. And again. And again.

Some people will need to empty several dozen cylinders before they hit; some will learn a particular technique or stance along the way; some will hit first time and decide they're the messiah. It doesn't matter. Nobody is immune to a misfire — even a master of the craft needs luck.

If you stick with the analogy: in the process of "shooting," the emotional attachment to each individual "round" gradually goes. You concentrate on the process itself, you start feeling your skill grow, and you gradually detach. The first apples you shoot through will make you happy, but later you'll want to move the target further away. Maybe pick up a rifle. The goal recedes into the background and you realise you're doing it because you love shooting.

If you're stuck in the "nobody likes my stuff" loop and you're afraid to take the next "shot," there's a simple way to switch it off. All platforms work on similar algorithms; engagement is a metric you can actually calculate. On ArtStation and Behance, for example, it hovers around 10% — i.e. of everyone who views a piece, roughly 10% like it. One person in ten presses the button. If the ratio drops below 5%, the piece is probably weak. If it creeps up to 15%, the piece is strong. The number of views depends on the people who have already liked it and on their own reach. In other words, if someone already "known" likes you, you pull in their audience.

Similar algorithms work on social networks — Twitter, Instagram, Facebook, LinkedIn. The like-to-view ratios differ slightly everywhere; audience engagement plays a part too, and a certain "minimum" threshold is supplied by people who know you. But broadly, on any platform there are active users and there are people who simply read and look.

Understanding the algorithms isn't in itself a magic pill that stops you worrying, but it's worth keeping in mind.

III.

There are a great many cognitive biases, and most people don't track them. A simple example is social proof: when people don't know how to react in a difficult situation and prefer to follow the majority.

Ask yourself: how many people have you followed because they already had a lot of followers?

The significance of words doesn't increase with the number of listeners; a piece of work doesn't get better because the artist is famous. A person's personal qualities aren't defined by their fame, any more than they're defined by their looks — and yet the halo effect exists.

To get a better grip on the causes and effects of your own behaviour, spend a little time and read up, even superficially, on what these phenomena actually are.

One of the most painful for me personally is the just-world hypothesis, which Lerner formulated back in the second half of the 1960s. The world is unfair, but we want to believe otherwise.

Separately, I'd recommend watching Derek's video on the Veritasium channel about luck — it's only 12 minutes.

IV.

English has the word queue, which mildly stuns people beginning to learn the language. The brain frantically tries to apply every rule it knows and produce the letters in the right order. It comes out something like this:

Although the true pronunciation is very simple and can be described with a single letter:

Q

To draw some sort of edifying and proper conclusion: keep it simple and don't worry too much if your work is currently passing beneath the radar of hundreds of thousands of likes. Some people achieve that kind of recognition quickly; others need a lifetime. What matters is spending that life on work you love — and if you get too deep into social head-patting, you'll gradually forget what you set out to make in the first place. Besides, the trial by brass trumpets sits alongside fire and water for a reason.

November 4, 2022

The Little ArtStation Lie

I regularly hear the questions: "what quality should I post work in for a portfolio if it's a game-ready asset?" "Which textures should I show?" "How many polygons should a model have?" "Should I show the wireframe?"

These questions don't come from nowhere, so let's work out what all the fuss is about.

I've picked apart a lot of games into their components, pulled original models and textures out of AAA titles, and even written a couple of pieces about it.

Last time it was Dishonored 2; today we'll look at examples from Deathloop. It happens to be to hand, and everything has long since been posted to ArtStation. The game came out in 2021, it's unquestionably AAA from a well-known studio, it's ported to PS and Xbox, it has online elements — broadly speaking, a fairly representative case.

And we'll start with Yannick, an Arkane veteran and a talented environment artist.

Yannick Gombart, Arkane Lyon 2021, https://www.artstation.com/artwork/Le4b30

So, here's one of the slides from a principal environment artist's portfolio. The shot looks good, the objects are legible, the textures are crisp.

Yannick doesn't post wireframes — just good presentation in a single consistent style. The prop set is fairly substantial; let's look at another shot.

Yannick Gombart, Arkane Lyon 2021, https://www.artstation.com/artwork/Le4b30

Well then, it all looks great: you can see these are game-ready assets, the polycount on the rounded edges is obvious, a good, solid set.

Now let's look at the models and textures in the game.
We have a small set at 2048 square.

Practically every model that uses this texture set is on screen. Only a couple of objects are missing.

As we can see, the objects from the shot above are pretty low-poly; Yannick didn't add anything to his portfolio that didn't go into the game, at least in terms of geometry. All that clutter fits into two and a half thousand vertices.

If you look closely at the textures, though, it becomes clear that in the game they're compressed at least by half compared to the portfolio.

Here's the texture at 100% crop with the image beside it for comparison — you can see that the text "P 1.65" is practically illegible; 330 pixels is all a small prop like this can count on.

Not surprising, given its size: only 23 centimetres along the long side. The approximate texel density is around 13 pixels per centimetre.

If we move away from "filler" assets and look at something more hero-ish, here's an example from Maxime Goichot.

A small retro computer — again, good presentation, carefully set lighting, untouched geometry straight out of the engine.

Maxime Goichot, Arkane Lyon 2021, https://www.artstation.com/artwork/g2kVRx

The original texture set that went into the game is 1024 pixels; texel density around 15 pixels per centimetre.

On closer inspection you can see that, as with Yannick, the model in the portfolio went out with the texture doubled in size (clearly visible on the typeface of the dials on the right, which is completely illegible in the source texture from the engine but quite readable in the portfolio renders).

The prop consists of 2,848 vertices, which is quite a lot — but it does have nice dials, connectors, neatly smoothed edges and a not-especially-simple form.

The same story holds for every asset I've looked at. Original geometry, textures at 2x.

Time for an interim conclusion and an answer to the question "so how do I do it?" in the form of two recommendations:

  • There should be exactly enough geometry that its angularity doesn't hurt the eye. Give or take a bit, nobody will notice.
  • If the developers on a AAA project put 2x textures in their portfolios, don't stick to the letter of the law of "as in the game, so on ArtStation" — go ahead and double the texel density.

And one more point:

PRESENTATION MATTERS!

Note that all of these assets, even the simplest ones, share a common presentation style. The renders are made with love; people spent time on post in Photoshop and showed their work at its best without unnecessary noise or tinsel. Presentation is what determines how memorable a prop is and how much attention the work attracts. Presentation is what smooths over the flaws.

Often the presentation runs as a through-line across an entire project (as with Deathloop), and work by different authors shares similar post-processing techniques — but that takes nothing away from artistic vision and independent decision-making.

Nobody will pay attention to how many pixels are really in the textures, how many polygons there are, or whether everything is optimally done. Nobody is going to take the game apart (like me) to get to the truth and compare.

Spend your time on quality presentation.

Links:
Yannick Gombart

Michael INTILLA

Valentin Nadolu

Eric Pira

Maxime Goichot

Pogar Marius

Vytautas Katarzis

Marc Bidoul

Céline Bader

Augustin Luca

Andrii 'Zelfit' Mykhailov

Contacts: 

Phone: +44 7878 428839
Email: avduevskij@gmail.com

© Aleksei Avduevskii / ALA Visual Development