{"id":3262,"date":"2026-09-06T22:51:28","date_gmt":"2026-09-06T20:51:28","guid":{"rendered":"https:\/\/diemilchgebendekuh.de\/?p=3262"},"modified":"2026-10-12T17:05:33","modified_gmt":"2026-10-12T15:05:33","slug":"scct-reforge","status":"publish","type":"post","link":"https:\/\/diemilchgebendekuh.de\/en\/scct-reforge\/","title":{"rendered":"SCCT Reforge"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What it is<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A tool that rebuilds the models and textures of <em>Splinter Cell: Chaos Theory<\/em>. I still play it, and one evening I noticed the suppressor on Sam\u2019s rifle had eight sides. That\u2019s where it got out of hand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nothing gets swapped, everything gets rebuilt. And if you don\u2019t like it, one click puts your game back exactly the way it was.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What it does<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rebuilds the weapons, some brought over from <a href=\"https:\/\/diemilchgebendekuh.de\/splinter-cell-double-agent-2009\/\">Double Agent<\/a><\/li>\n\n\n\n<li>Gives Sam a proper modern look: head, body, goggles<\/li>\n\n\n\n<li>Adds six extra outfits and one high-poly suit<\/li>\n\n\n\n<li>Redraws the HUD so it\u2019s sharp on today\u2019s screens<\/li>\n\n\n\n<li>Upscales mission images and loading screens<\/li>\n\n\n\n<li>Restores everything, byte for byte<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Download<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One download for everyone. The free build stays free. With Plus you get the keys that unlock the full version, right next to the download.<\/p>\n\n\n<section class=\"dmk-download\" id=\"scct-reforge\" aria-label=\"Download: SCCT Reforge\"><header class=\"dmk-download-kopf\"><div><h2>SCCT Reforge<\/h2><p>Rebuilds the models, textures and HUD of Splinter Cell: Chaos Theory \u2013 and restores everything with one click.<\/p><\/div><p class=\"dmk-download-mehr\"><button type=\"button\" class=\"knopf-rand dmk-vorschau-knopf\" data-dialog=\"vorschau-scct-reforge\"><svg class=\"dmk-symbol\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M7 4.5v15l12.5-7.5L7 4.5Z\" fill=\"currentColor\"\/><\/svg>Watch demo<\/button><a href=\"https:\/\/diemilchgebendekuh.de\/en\/scct-reforge\/\">Read the post \u2192<\/a><\/p><\/header><dialog class=\"dmk-vorschau\" id=\"vorschau-scct-reforge\" aria-label=\"Demo video: SCCT Reforge\"><form method=\"dialog\"><button class=\"dmk-vorschau-zu\" aria-label=\"Close\">\u00d7<\/button><\/form><div class=\"dmk-vorschau-innen\"><figure class=\"wp-block-embed is-type-video is-provider-youtube dmk-yt \" data-yt=\"7cRhxq7emYM\" data-start=\"0\" data-titel=\"SCCT Reforge\" data-gross=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/dmk-yt\/7cRhxq7emYM.jpg\" data-klein=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/dmk-yt\/7cRhxq7emYM-klein.jpg\" data-embed=\"https:\/\/www.youtube-nocookie.com\/embed\/7cRhxq7emYM?autoplay=1&#038;rel=0&#038;modestbranding=1&#038;playsinline=1\" data-anbieter=\"youtube\" data-hinweis=\"The video only loads from YouTube after you click.\" data-oeffnen=\"Open on YouTube\"><div class=\"dmk-yt-buehne\"><img src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/dmk-yt\/7cRhxq7emYM.jpg\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/dmk-yt\/7cRhxq7emYM-klein.jpg 480w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/dmk-yt\/7cRhxq7emYM.jpg 1280w\" sizes=\"auto, (min-width: 1100px) 760px, 100vw\" width=\"1280\" height=\"720\" alt=\"\" loading=\"lazy\" decoding=\"async\" onerror=\"this.remove()\"><button type=\"button\" class=\"dmk-yt-start\" aria-label=\"Play video: SCCT Reforge\"><span class=\"dmk-yt-play\"><svg class=\"dmk-symbol\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M7 4.5v15l12.5-7.5L7 4.5Z\" fill=\"currentColor\"\/><\/svg><\/span><b class=\"dmk-yt-titel\">SCCT Reforge<\/b><small>The video only loads from YouTube after you click.<\/small><\/button><a class=\"dmk-yt-extern\" href=\"https:\/\/www.youtube.com\/watch?v=7cRhxq7emYM\" target=\"_blank\" rel=\"noopener\" title=\"Open on YouTube\"><svg class=\"dmk-symbol\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M14 4h6v6m0-6-9 9M18 14v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4\"\/><\/svg><span class=\"sr\">Open on YouTube<\/span><\/a><\/div><\/figure><\/div><\/dialog><h3 class=\"dmk-dl-schritt\"><i aria-hidden=\"true\">1<\/i>Download<\/h3><ul class=\"dmk-versionen\"><li class=\"dmk-version ist-neueste\"><div class=\"dmk-v-text\"><p class=\"dmk-v-titel\"><b>Version 1.10<\/b> <span class=\"dmk-v-kanal kanal-early\">Early Access<\/span><span class=\"dmk-v-frei\">Free<\/span><\/p><p class=\"dmk-v-info\">Windows 10\/11 (32- and 64-bit) \u00b7 .exe \u00b7 77.4 MB \u00b7 Oct 10, 2026<\/p><details class=\"dmk-v-notiz\"><summary>Checksum (SHA-256)<\/summary><p><code class=\"dmk-summe\">1c19a2b8923522bd6afb5713bb9de9d9530264b1c8466ea3edf297906c6590f9<\/code><\/p><\/details><\/div><div class=\"dmk-v-knopf\"><a class=\"dmk-dl-knopf\" href=\"https:\/\/diemilchgebendekuh.de\/en\/downloads\/scct-reforge\/laden\/4xvrocvhau\/\" rel=\"nofollow\"><svg class=\"dmk-symbol\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 4v11m0 0-4.5-4.5M12 15l4.5-4.5M5 19.5h14\"\/><\/svg>Download<\/a><\/div><\/li><\/ul><div class=\"dmk-keys ist-zu\"><h3 class=\"dmk-dl-schritt\"><i aria-hidden=\"true\">2<\/i>Unlock the full version<span class=\"dmk-v-plus\">Plus<\/span><\/h3><p>The download is the same for everyone. You unlock the full version with all features in the tool using a key \u2013 with Plus, the keys are right here. Plus costs \u20ac7.95 a month or \u20ac79.95 a year (works out to \u20ac6.66 a month).<\/p><p class=\"dmk-keys-wege\"><a class=\"dmk-dl-knopf ist-zu\" href=\"https:\/\/diemilchgebendekuh.de\/en\/plus\/?stufe=1\"><svg class=\"dmk-symbol\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"5\" y=\"11\" width=\"14\" height=\"10\" rx=\"2\"\/><path d=\"M8 11V8a4 4 0 0 1 8 0v3\"\/><\/svg>Unlock with Plus<\/a><\/p><\/div><\/section>\n\n\n\n<h2 class=\"wp-block-heading\">What you need<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your own copy of Chaos Theory (PC), on Windows<\/li>\n\n\n\n<li>For the Double Agent parts: your own copy of Double Agent<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Unzip, run, pick what you want, install. You can restore the original whenever you like.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Found something weird?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Thumbs sticking out, a neck that vanishes when Sam crouches: almost every real bug was found by someone playing. If you see one, tell me. I\u2019m always happy about testers.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/discord.gg\/MrPFRdzCcU\" target=\"_blank\" rel=\"noreferrer noopener\">Discord<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"mailto:diemilchgebendekuh@outlook.com\">Mail<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Dev log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For the curious: how the tool came together, what went wrong and what I learned from it.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Read the dev log<\/summary>\n<div class=\"scr-log\"><h3>01 \u00b7 Where this started<\/h3><p>Chaos Theory came out in 2005 and I still play it. One evening I looked at the suppressor on Sam\u2019s rifle and noticed it was an octagon. Not a cylinder with a few segments, an actual eight-sided prism, sitting in the middle of the screen for the entire game.<\/p><p>That\u2019s not a complaint about the artist. In 2005 you had a triangle budget and you spent it where people looked. It\u2019s just that I have a computer from 2025 and the game doesn\u2019t. So: how hard can it be to add sixteen more sides to a cylinder?<\/p><p>The answer is that the game stops starting, and it takes about a week to find out why.<\/p><p>Everything single-player in Chaos Theory sits in one file: 610,578,839 bytes, 20,252 entries, 16-byte aligned, gaps zero-filled. Inside it are Unreal Engine 2 packages, 13,385 static meshes and 12,035 images across 72 texture packages. None of that is documented. There\u2019s no SDK, no import plugin, and the generic UE2 notes mostly don\u2019t apply because this is a fork. So the first month wasn\u2019t modding at all. It was writing tools that tell you what a byte means.<\/p><p>One rule from the start, and I\u2019ve never regretted it: anything I claim about the format has to hold across the whole container, not on one file. A theory that works for one mesh is a coincidence. A theory that works for 13,381 out of 13,385 is a format.<\/p><h3>02 \u00b7 The suppressor that refused to shrink<\/h3><p>Here\u2019s the experiment that cost a week and taught me the most.<\/p><p>There is a mesh called <code>FN2000_SAM_Silencer<\/code>. It has 27 vertices and 22 triangles and, measured, the game never draws it. The visible suppressor is baked into the rifle frame. Perfect guinea pig: shrink it from 27 vertices to 3 and from 22 triangles to 1, change nothing else.<\/p><p>The game doesn\u2019t start any more. The same container with geometry <em>appended<\/em> to that mesh instead of removed runs perfectly.<\/p><p>The reason sits in a block after the vertex data that I originally labelled \u201crest\u201d because I couldn\u2019t read it. It\u2019s a collision tree, and its 16-bit values are two different things wearing the same coat: if the top bit is set it\u2019s a triangle number, otherwise it\u2019s a link inside the tree. Measured across the whole game, every one of those triangle numbers is below the mesh\u2019s own triangle count. So when the counters grow, every reference stays valid. When they shrink, they point past the end, and the game dies before it draws a single frame.<\/p><p>Which gives the one law everything else is built on: <strong>existing vertices are never removed and never reordered, only appended.<\/strong> And that quietly solves importing arbitrary models too. If the new model has fewer triangles than the slot it\u2019s going into, you fill the rest with degenerate triangles, the same vertex three times. Zero area, never drawn, every triangle number still valid. A test cube of 8 vertices and 12 triangles dropped into the reflex sight\u2019s slot produces an object of exactly the same 7,168 bytes as before, with all 300 other objects in the package byte-identical.<\/p><h3>03 \u00b7 The rebuild that wouldn\u2019t boot<\/h3><p>For a long time a second rule stood next to the first: nothing may move. Because when I rebuilt that 610 MB container from scratch, the game wouldn\u2019t boot, even though the rebuild was byte-exact with no changes applied at all.<\/p><p>That was true, and it was true for the wrong reason. I spent real time on the checksum in the footer before finding out the game never checks it. The actual cause was in the meshes: every one of them ends with a lazy array whose jump marker is an <em>absolute position in the package file<\/em>. Move the object, and the marker points at nothing.<\/p><table><thead><tr><th>state<\/th><th>markers correct<\/th><th>wrong<\/th><th>game<\/th><\/tr><\/thead><tbody><tr><td>original<\/td><td>270<\/td><td>0<\/td><td>runs<\/td><\/tr><tr><td>patched in place<\/td><td>270<\/td><td>0<\/td><td>runs<\/td><\/tr><tr><td>grown, markers untouched<\/td><td>112<\/td><td>158<\/td><td>won\u2019t start<\/td><\/tr><tr><td>grown, markers recomputed<\/td><td>270<\/td><td>0<\/td><td>runs<\/td><\/tr><\/tbody><\/table><p>That last row is confirmed in the actual game. So the rule became: objects may move and grow, the jump markers move with them. And the reason patching in place had always worked was luck disguised as discipline. The object keeps its exact byte count, so its trailing block starts at the same address.<\/p><p>Before I found this, I built something I\u2019m still fond of even though it\u2019s now mostly obsolete. A <em>ring swap<\/em>: an object moves into the slot of a larger one, the larger one into a smaller one, and the chain closes. Offsets and sizes in the export table are only exchanged, never changed, so the table is necessarily the same length, no header offset moves, and the file stays the same size. It buys you 28,915 bytes where you had 7,168, with no rebuild at all. It\u2019s still in the codebase. It\u2019s just that once rebuilding works, you can simply let the package grow.<\/p><h3>04 \u00b7 Sam, and the eighty-nine percent<\/h3><p>Modernising the player character was supposed to be a side quest. It became the largest single piece of work in the project.<\/p><p>Sam\u2019s head is 4,076 triangles. Subdividing it naively makes it rounder and worse, you get a smooth potato. What actually works is laying over every edge the curve that meets the <em>stored normal<\/em> at both ends. The roundness was already in the model all along, the lighting knew about it and the silhouette didn\u2019t. It also needs no crease detection whatsoever, because at a real hard edge the normals are split and sit on the facets, the correction term goes to zero, and the midpoint stays on the straight line. Sharp edges stay sharp without anyone looking for them.<\/p><p>Result: 4,076 to 35,330 triangles, median crease angle from 21.8 down to 5.8 degrees. And he still looked flat.<\/p><p>That was the surprise, and the measurement that explains it is my favourite number in the whole project. A scheme like that leaves the original vertices where they are, so nothing can appear that wasn\u2019t already there. But the normal map knows the slope at every point, and a slope is the derivative of a height. Reconstruct that height and you can measure exactly how much of the surface form was ever geometry:<\/p><table><thead><tr><th>displacement span<\/th><th>slope in the mesh<\/th><th>share of the map<\/th><\/tr><\/thead><tbody><tr><td>0.45 (where I started)<\/td><td>2.7\u00b0<\/td><td>10.8 %<\/td><\/tr><tr><td>1.75 (shipping)<\/td><td>9.5\u00b0<\/td><td>38.4 %<\/td><\/tr><tr><td>3.00<\/td><td>17.4\u00b0<\/td><td>72 %<\/td><\/tr><\/tbody><\/table><p>Eighty-nine percent of the surface form was painted shading. Brows, lips, suit folds, vest seams, none of it existed as geometry. That\u2019s why Sam looked flat with forty thousand triangles. The triangles went into <em>rounding<\/em>, not into <em>shaping<\/em>.<\/p><p>Then it tore his face open. At a fixed displacement the mouth opened down to the teeth and the eyelid creases carved in. Measured rather than guessed: the upper lip travelled 0.57 units across a gap of a tenth, and 484 triangles flipped against their own stored normal, clustered at face, hands and calves. That\u2019s not random, it\u2019s the map of the original mesh. The artist built fine where the forms are small, 1.6 units per edge in the face against 7.2 at the shoulder. A displacement that reads as muscle definition on a shoulder reads as a torn-open mouth on a lip. So it scales per vertex with the local edge length now, and the face runs at about a quarter speed.<\/p><p>The lesson I keep coming back to: a closed gap can still be visible. In the end no mouth pair opened more than 0.09 units, and there were <em>still<\/em> wedges at the lip line, because the lip edge itself had rolled and exposed a slit that was always open. Distance metrics check distances. What you actually see is only checked by looking at it.<\/p><h3>05 \u00b7 Three months of an eyeball<\/h3><p>Chaos Theory\u2019s successor, <em>Double Agent<\/em>, runs on a fork of the same engine, and its models read with my Chaos Theory reader almost unchanged. So its weapons, its goggles and its outfits can be transplanted. Transplanted is the honest word, nothing is swapped: every foreign mesh gets re-bound to Chaos Theory\u2019s skeleton, its triangle strip re-woven, its texture sheets re-encoded and re-packed.<\/p><p>The re-binding is where all the difficulty lives, and the best story in this project is Sam\u2019s eye.<\/p><p>The obvious approach is that every transplanted point inherits the skin weights of the nearest Chaos Theory point. That works beautifully for skin and terribly for anything rigid. An eyeball rotates, it does not deform. Inherited from the surrounding surface it got 86 different blended bindings and not a single eye bone, and in game it visibly warped when Sam looked around or squinted.<\/p><p>I fixed it three times. Each fix shipped, and each one broke something new. Making it rigid on the eye bone tore it at the eyelid. Scaling the weights up instead gave a wobbling mask and stiff eyes. Moving the ball onto the centre of the visible eye made it sit too low. All three were rolled back.<\/p><p>And the reason every single attempt missed is that I was fitting spheres to visible geometry instead of reading the skeleton, which turned out to be sitting inside the mesh the whole time. Named bone records: a compact index for the name, then 56 fixed bytes of flags, rotation, position, children and parent. Variable record length, which is why my earlier scans only ever found part of the table.<\/p><table><thead><tr><th><\/th><th>distance from the actual bone<\/th><\/tr><\/thead><tbody><tr><td>Chaos Theory\u2019s visible eye<\/td><td>0.79 behind it<\/td><\/tr><tr><td>Double Agent\u2019s eyeball<\/td><td>0.80 in front of it<\/td><\/tr><\/tbody><\/table><p>Chaos Theory\u2019s own eye doesn\u2019t sit on its own pivot. The entire sphere-fitting premise was wrong. And the mechanism is different from what I\u2019d assumed: the eye section has 30 points, 14 of them bound to the <em>head<\/em> and only 8 to each eye bone. It\u2019s a small iris cap sliding across a stationary background under partially dragged eyelids. Nothing ever rotates as a whole ball, which is exactly why the bone offset never mattered in the original.<\/p><p>If you need a pivot, read the skeleton. Fitting a sphere to what you can see measures the shape, not the mechanism.<\/p><h3>06 \u00b7 Learning to read bug reports<\/h3><p>The most useful thing that came out of testing with an actual player isn\u2019t a fix, it\u2019s a vocabulary. Three reports arrived over a few weeks: \u201cit tears\u201d, \u201cthe chin comes out\u201d, \u201cit folds up\u201d. I treated them as the same complaint three times. They are three different quantities, and each of my probes was blind to the other two.<\/p><ul><li><strong>\u201ctears\u201d<\/strong> is edge stretch, a maximum.<\/li><li><strong>\u201ccomes out\u201d<\/strong> is migration relative to the carrying bone.<\/li><li><strong>\u201cfolds\u201d<\/strong> is compression, the exact opposite of stretch, and I had simply never counted it.<\/li><\/ul><p>A rig fix that halves the stretch can double the compression, and my entire test suite would have reported success. There is now a probe that drives 40 real poses across 22 body regions and measures all three, plus the opening of gaps.<\/p><p>Related, and it took me embarrassingly long to see: short edges tear quietly. Sorting by absolute stretch, a tenfold rip on a one-unit collar edge hides underneath the perfectly healthy stretch of a long knee edge. The original models show ratios of 13 to 19 on short eyelid edges and they\u2019re fine. Only the <em>location<\/em> gives the bug away.<\/p><h3>07 \u00b7 The HUD that simply wasn\u2019t there<\/h3><p>The HUD lives outside the package system entirely, as plain image files in a separate branch of the container. 78 sheets, most of them 16 by 16 or 32 by 32 pixels, stretched onto the screen and filtered, which at 1440p is mud.<\/p><p>They aren\u2019t photographs though, they\u2019re analytic geometry. Discs, rings, arcs with gaps, wireframe renders of the actual weapon models, all of it rasterised onto a tiny grid in 2005. So you don\u2019t upscale them. You build a parametric model, render it large, scale it back down to the original size, and push the parameters until it matches. The return path is the proof: a reconstruction you can\u2019t scale back down and compare is a claim, not a result. 66 of the 78 now ship reconstructed, and the compass ruler returns at 0.00 percent mean deviation.<\/p><p>And then the new sheets weren\u2019t in the game. Four rounds of \u201cnot visible\u201d. Rounds one to three each found a real bug that wasn\u2019t the cause. The actual answer is one stage behind the image loader: it reads the dimensions out of the file header correctly, and then the texture object\u2019s setup call immediately overwrites them with the dimensions it was <em>created<\/em> with, which come from the menu layout table. A 512 pixel sheet lands in a 32 pixel surface. No crash, no log, just nothing.<\/p><p>A sheet may grow, but only together with its layout. Two correct pieces of evidence don\u2019t make a proof when there\u2019s a stage missing in between. Since then the installer verifies itself: after writing, the container is reopened, every sheet read back out and compared byte for byte, and only then does the tool say so.<\/p><h3>08 \u00b7 A foreign suit, and filler that was never content<\/h3><p>The most recent stretch of work was a user-built suit, hundreds of thousands of triangles with sheets baked in a modern renderer, going onto a 2005 skeleton where the whole model has to fit into a triangle strip of 65,535 indices. Four findings, all of which generalise.<\/p><p><strong>The filler on a baked sheet is not content.<\/strong> The suit showed fanning streaks across chest, flank and thigh. Four counter-checks cleared my import path completely, and the cause was in the bake: it covered 27 percent of the sheet, the rest is edge extension. The model\u2019s own coordinates cover 49 percent. So half the body area sits on filler. You can\u2019t recover it, but you can regenerate it as a smooth continuation instead of a starburst. What distinguishes real bake from filler is measured, not guessed: brightness and saturation don\u2019t separate them at all, fine-grained variance and directionality do, and either one alone fails.<\/p><p><strong>What a model brings that no texture knows about is geometry.<\/strong> The raised web ridges are 449,560 triangles carrying no texture coordinates at all. I originally dropped them, reasoning the pattern was in the sheets anyway. That reasoning was a claim about the data, and the data disproved it: a full-resolution crop of the torso shows the fine honeycomb and no ridge anywhere. They\u2019re baked into the normal map from the geometry now, which is the right place for them, since they only stand 0.23 units proud.<\/p><p><strong>A bone has to sit inside the flesh it moves.<\/strong> The thumb stuck out and was rigid, and that\u2019s one cause, not two: the thumb\u2019s flesh ran 19.9 degrees off its bone chain, up to eight units alongside it. The hand\u2019s weight field falls off with the fourth power of distance, so at that range thumb, palm and finger bones are all equally far away and equally weak. The thumb was hanging on an average of half the skeleton. Rotated back onto its chain it\u2019s 3.0 degrees, and the fingertip\u2019s travel under a bend went from 2.64 to 5.87 units, against the original Sam\u2019s 7.34.<\/p><p><strong>A seam runs <em>through<\/em> an island, not only between islands.<\/strong> The web lines broke along the underside of the forearm. A checkerboard render, rather than the suit texture, showed it wasn\u2019t shading at all, it was the coordinates: the distortion measure hit 20.4 on the underside against 1.4 on top, and the worst triangles had two corners at one end of the sheet and one 470 texels away. That\u2019s the wrap seam of the arm, and a cut tube is still topologically <em>one<\/em> island, so filtering candidates by island number never saw it. One extra condition later, the underside is at 1.9.<\/p><h3>09 \u00b7 Things I got wrong, in public<\/h3><p>This section exists because the mistakes that cost the most were never the hard problems.<\/p><p><strong>I put a convention to a vote.<\/strong> Whether the vertical texture axis counts from the top or the bottom: I compared coverage against baked content, got 60 percent against 35 in favour of flipping it, and flipped it. Half a build later, 9.4 percent of the model was landing on empty atlas and there were black bands across belly, mask, forearm and boots. Correct orientation: 0.05 percent. The answer had been sitting in the code that reads the sheets the entire time. Whoever puts a convention to a vote gets a majority, not an answer.<\/p><p><strong>I measured with a different tool than the one that builds.<\/strong> My texture budget analysis used a simple shelf packer and reported that repacking the atlas would make things <em>worse<\/em>. The build uses a proper rectangle packer. With the real one it\u2019s a 1.78x gain, and I nearly closed the question on the strength of a tool measuring itself.<\/p><p><strong>I shipped a rig change whose effect my own probes couldn\u2019t see.<\/strong> It produced \u201chalf his neck disappears at the front\u201d in game, and offline it was, and remains, undetectable. Sections unchanged, seams unchanged, renders fine, every number clean. It was removed entirely. A change whose effect your probes cannot see isn\u2019t verified, it\u2019s unverifiable, and it doesn\u2019t ship.<\/p><p><strong>And a guard that never fires looks exactly like a guard.<\/strong> Several times over: a comparison seeded at a value every real candidate fell below, so nothing ever won; a clamped check that dutifully reported zero error on every mesh in the game. Every threshold in the build has since been deliberately tripped once, just to watch it actually break the build.<\/p><\/div>\n<\/details>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">Unofficial fan project, not affiliated with Ubisoft. Splinter Cell, Chaos Theory and Double Agent are trademarks of their respective owners.<\/p>\n\n\n<figure class=\"dmk-galerie dmk-galerie-reihen alignwide\" data-anzahl=\"6\"><div class=\"dmk-galerie-flaeche\"><figure class=\"dmk-galerie-bild\" style=\"--r:1.778\"><a href=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen.png\" class=\"dmk-zoom\" data-gruppe=\"ga02df1fe\" data-i=\"0\" data-w=\"1920\" data-h=\"1080\" data-titel=\"01-waffen\" data-text=\"\"><img width=\"760\" height=\"428\" src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" decoding=\"async\" sizes=\"auto, (min-width: 1100px) 520px, 50vw\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen-1024x576.png 1024w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen-768x432.png 768w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen-300x169.png 300w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen-1536x864.png 1536w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/01-waffen.png 1920w\" \/><\/a><\/figure><figure class=\"dmk-galerie-bild\" style=\"--r:1.778\"><a href=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten.png\" class=\"dmk-zoom\" data-gruppe=\"ga02df1fe\" data-i=\"1\" data-w=\"1920\" data-h=\"1080\" data-titel=\"02-gewehr-varianten\" data-text=\"\"><img width=\"760\" height=\"428\" src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" decoding=\"async\" sizes=\"auto, (min-width: 1100px) 520px, 50vw\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten-1024x576.png 1024w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten-300x169.png 300w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten-768x432.png 768w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten-1536x864.png 1536w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/02-gewehr-varianten.png 1920w\" \/><\/a><\/figure><figure class=\"dmk-galerie-bild\" style=\"--r:1.778\"><a href=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert.png\" class=\"dmk-zoom\" data-gruppe=\"ga02df1fe\" data-i=\"2\" data-w=\"1920\" data-h=\"1080\" data-titel=\"03-sam-modernisiert\" data-text=\"\"><img width=\"760\" height=\"428\" src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" decoding=\"async\" sizes=\"auto, (min-width: 1100px) 520px, 50vw\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert-1024x576.png 1024w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert-300x169.png 300w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert-768x432.png 768w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert-1536x864.png 1536w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/03-sam-modernisiert.png 1920w\" \/><\/a><\/figure><figure class=\"dmk-galerie-bild\" style=\"--r:1.778\"><a href=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits.png\" class=\"dmk-zoom\" data-gruppe=\"ga02df1fe\" data-i=\"3\" data-w=\"1920\" data-h=\"1080\" data-titel=\"04-outfits\" data-text=\"\"><img width=\"760\" height=\"428\" src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" decoding=\"async\" sizes=\"auto, (min-width: 1100px) 520px, 50vw\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits-1024x576.png 1024w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits-300x169.png 300w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits-768x432.png 768w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits-1536x864.png 1536w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/04-outfits.png 1920w\" \/><\/a><\/figure><figure class=\"dmk-galerie-bild\" style=\"--r:1.778\"><a href=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah.png\" class=\"dmk-zoom\" data-gruppe=\"ga02df1fe\" data-i=\"4\" data-w=\"1920\" data-h=\"1080\" data-titel=\"05-outfits-nah\" data-text=\"\"><img width=\"760\" height=\"428\" src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" decoding=\"async\" sizes=\"auto, (min-width: 1100px) 520px, 50vw\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah-1024x576.png 1024w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah-300x169.png 300w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah-768x432.png 768w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah-1536x864.png 1536w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/05-outfits-nah.png 1920w\" \/><\/a><\/figure><figure class=\"dmk-galerie-bild\" style=\"--r:1.778\"><a href=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen.png\" class=\"dmk-zoom\" data-gruppe=\"ga02df1fe\" data-i=\"5\" data-w=\"1920\" data-h=\"1080\" data-titel=\"06-texturen\" data-text=\"\"><img width=\"760\" height=\"428\" src=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" decoding=\"async\" sizes=\"auto, (min-width: 1100px) 520px, 50vw\" srcset=\"https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen-1024x576.png 1024w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen-300x169.png 300w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen-768x432.png 768w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen-1536x864.png 1536w, https:\/\/diemilchgebendekuh.de\/wp-content\/uploads\/2026\/09\/06-texturen.png 1920w\" \/><\/a><\/figure><\/div><\/figure>\n\n\n<ul class=\"wp-block-social-links has-visual-label is-style-dmk-kanaele is-layout-flex wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-mail wp-block-social-link\"><a href=\"mailto:diemilchgebendekuh@outlook.com\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19,5H5c-1.1,0-2,.9-2,2v10c0,1.1.9,2,2,2h14c1.1,0,2-.9,2-2V7c0-1.1-.9-2-2-2zm.5,12c0,.3-.2.5-.5.5H5c-.3,0-.5-.2-.5-.5V9.8l7.5,5.6,7.5-5.6V17zm0-9.1L12,13.6,4.5,7.9V7c0-.3.2-.5.5-.5h14c.3,0,.5.2.5.5v.9z\"><\/path><\/svg><span class=\"wp-block-social-link-label\">Mail<\/span><\/a><\/li><li class=\"wp-social-link wp-social-link-twitch wp-block-social-link\"><a href=\"https:\/\/www.twitch.tv\/diemilchgebendekuh\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M16.499,8.089h-1.636v4.91h1.636V8.089z M12,8.089h-1.637v4.91H12V8.089z M4.228,3.178L3,6.451v13.092h4.499V22h2.456 l2.454-2.456h3.681L21,14.636V3.178H4.228z M19.364,13.816l-2.864,2.865H12l-2.453,2.453V16.68H5.863V4.814h13.501V13.816z\"><\/path><\/svg><span class=\"wp-block-social-link-label\">Twitch<\/span><\/a><\/li><li class=\"wp-social-link wp-social-link-youtube wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/@wesker005\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label\">YouTube<\/span><\/a><\/li><li class=\"wp-social-link wp-social-link-discord wp-block-social-link\"><a href=\"https:\/\/discord.gg\/MrPFRdzCcU\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" version=\"1.1\" viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.317 4.369A19.88 19.88 0 0 0 15.894 3a14.145 14.145 0 0 0-.719 1.518 19.205 19.205 0 0 0-5.351 0A14.183 14.183 0 0 0 9.104 3 19.896 19.896 0 0 0 4.682 4.369a18.921 18.921 0 0 0-3.012 12.52 19.929 19.929 0 0 0 6.081 3.097c.487-.65.922-1.339 1.3-2.061a12.445 12.445 0 0 1-1.958-.896c.165-.12.326-.246.483-.374a12.445 12.445 0 0 0 8.946 0c.157.128.318.253.483.374-.627.371-1.281.683-1.958.896.379.722.813 1.41 1.3 2.061a19.94 19.94 0 0 0 6.081-3.097 18.921 18.921 0 0 0-3.012-12.52ZM8.12 15.233c-1.202 0-2.184-1.09-2.184-2.431 0-1.34.97-2.431 2.184-2.431 1.213 0 2.202 1.09 2.184 2.431 0 1.341-.97 2.431-2.184 2.431Zm7.757 0c-1.202 0-2.184-1.09-2.184-2.431 0-1.34.97-2.431 2.184-2.431 1.213 0 2.202 1.09 2.184 2.431 0 1.341-.97 2.431-2.184 2.431Z\"\/><\/svg><span class=\"wp-block-social-link-label\">Discord<\/span><\/a><\/li><li class=\"wp-social-link wp-social-link-x wp-block-social-link\"><a href=\"https:\/\/x.com\/DiMiKuh\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z\" \/><\/svg><span class=\"wp-block-social-link-label\">X<\/span><\/a><\/li><li class=\"wp-social-link wp-social-link-patreon wp-block-social-link\"><a href=\"https:\/\/www.patreon.com\/DieMilchgebendeKuh\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 8.40755C19.9969 6.10922 18.2543 4.22555 16.2097 3.54588C13.6708 2.70188 10.3222 2.82421 7.89775 3.99921C4.95932 5.42355 4.03626 8.54355 4.00186 11.6552C3.97363 14.2136 4.2222 20.9517 7.92225 20.9997C10.6715 21.0356 11.0809 17.3967 12.3529 15.6442C13.258 14.3974 14.4233 14.0452 15.8578 13.6806C18.3233 13.0537 20.0036 11.0551 20 8.40755Z\" \/><\/svg><span class=\"wp-block-social-link-label\">Patreon<\/span><\/a><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<!-- DMK Spendenblock. data-lang: \"auto\" (Deutsch, Englisch bei nicht-deutschem Browser), \"de\" oder \"en\" -->\n<style>\n.dmk-spende, .dmk-spende * { box-sizing: border-box; }\n.dmk-spende {\n    --bronze: #8a6420; --gold: #cba34d; --weiss: #fffefc; --sand: #f6ebd2;\n    --espresso: #3a291c; --braun: #3d352a; --leinen: #ddd0b6; --grau: #766653;\n    container-type: inline-size;\n    position: relative;\n    display: block;\n    width: 100%;\n    max-width: none;\n    margin: 28px auto;\n    background: var(--sand);\n    border: 1px solid var(--leinen);\n    border-top: 3px solid var(--gold);\n    border-radius: 4px;\n    font-family: Roboto, -apple-system, 'Segoe UI', sans-serif;\n    color: var(--braun);\n    text-align: left;\n}\n.dmk-spende:not([data-lang=\"en\"]) [lang=\"en\"],\n.dmk-spende[data-lang=\"en\"] [lang=\"de\"] { display: none; }\n.dmk-spende__in {\n    display: grid;\n    grid-template-columns: 52px minmax(0, 1fr);\n    gap: 14px 14px;\n    align-items: center;\n    padding: 16px;\n}\n.dmk-spende__img {\n    width: 52px; height: 52px;\n    margin: 0; padding: 0;\n    object-fit: cover;\n    border-radius: 50%;\n    border: 1px solid var(--leinen);\n    background: var(--weiss);\n    display: block;\n}\n.dmk-spende__titel {\n    margin: 0; padding: 0 34px 0 0;\n    font-family: 'PT Serif', Georgia, serif;\n    font-size: 19px; font-weight: 700; line-height: 1.25;\n    color: var(--espresso);\n}\n.dmk-spende__text {\n    margin: 4px 0 0; padding: 0;\n    font-size: 14.5px; line-height: 1.5;\n    color: var(--braun);\n}\n.dmk-spende__cta { grid-column: 1 \/ -1; text-align: center; }\n.dmk-spende a.dmk-spende__knopf {\n    display: block;\n    padding: 13px 20px;\n    background: var(--bronze);\n    color: var(--weiss) !important;\n    font-size: 15.5px; font-weight: 500; line-height: 1.2;\n    text-decoration: none !important;\n    border-radius: 4px;\n    box-shadow: none;\n    transition: background-color .15s ease, color .15s ease;\n}\n.dmk-spende a.dmk-spende__knopf:hover,\n.dmk-spende a.dmk-spende__knopf:focus-visible {\n    background: var(--gold);\n    color: var(--espresso) !important;\n}\n.dmk-spende a:focus-visible,\n.dmk-spende__lang:focus-visible { outline: 2px solid var(--espresso); outline-offset: 2px; }\n.dmk-spende__alt {\n    margin: 9px 0 0; padding: 0;\n    font-size: 13px; line-height: 1.5;\n    color: var(--grau);\n}\n.dmk-spende__alt a {\n    color: var(--bronze) !important;\n    text-decoration: underline !important;\n    text-underline-offset: 2px;\n    white-space: nowrap;\n}\n.dmk-spende__alt a:hover { color: var(--espresso) !important; }\n.dmk-spende__lang {\n    position: absolute; top: 6px; right: 6px;\n    min-width: 34px; min-height: 30px;\n    margin: 0; padding: 4px 6px;\n    background: none; border: 0; box-shadow: none;\n    font: 500 12px\/1 Roboto, sans-serif;\n    color: var(--grau);\n    cursor: pointer;\n}\n.dmk-spende__lang:hover { color: var(--espresso); background: none; }\n.dmk-spende__lang[hidden] { display: none; }\n@container (min-width: 600px) {\n    .dmk-spende__in {\n        grid-template-columns: 64px minmax(0, 1fr) auto;\n        gap: 20px;\n        padding: 18px 22px;\n    }\n    .dmk-spende__img { width: 64px; height: 64px; }\n    .dmk-spende__titel { padding-right: 0; }\n    .dmk-spende__cta { grid-column: auto; padding-right: 22px; }\n    .dmk-spende a.dmk-spende__knopf { white-space: nowrap; }\n}\n@media (prefers-reduced-motion: reduce) {\n    .dmk-spende a.dmk-spende__knopf { transition: none; }\n}\n<\/style>\n<aside class=\"dmk-spende\" data-lang=\"auto\" aria-label=\"Unterst\u00fctzen \/ Support\">\n<div class=\"dmk-spende__in\">\n<img decoding=\"async\" class=\"dmk-spende__img\" src=\"\/wp-content\/uploads\/2024\/03\/kaffeetasse_mod.png\" alt=\"\" width=\"64\" height=\"64\" loading=\"lazy\">\n<div>\n<div class=\"dmk-spende__titel\"><span lang=\"de\">Hat\u2019s dir gefallen?<\/span><span lang=\"en\">Enjoyed it?<\/span><\/div>\n<div class=\"dmk-spende__text\"><span lang=\"de\">Dann spendier mir gern einen Kaffee. Kein Muss \u2013 aber er h\u00e4lt mich wach f\u00fcr das n\u00e4chste Video.<\/span><span lang=\"en\">Then feel free to buy me a coffee. No pressure \u2013 it just keeps me awake for the next video.<\/span><\/div>\n<\/div>\n<div class=\"dmk-spende__cta\">\n<a class=\"dmk-spende__knopf\" href=\"https:\/\/www.paypal.com\/donate\/?hosted_button_id=LB9DLG5KXEGW2\" target=\"_blank\" rel=\"noopener noreferrer\"><span lang=\"de\">Kaffee per PayPal<\/span><span lang=\"en\">Coffee via PayPal<\/span><\/a>\n<div class=\"dmk-spende__alt\"><span lang=\"de\">oder \u00fcber<\/span><span lang=\"en\">or use<\/span> <a href=\"https:\/\/buymeacoffee.com\/DieMilchgebendeKuh\" target=\"_blank\" rel=\"noopener noreferrer\">Buy Me a Coffee<\/a> \/ <a href=\"https:\/\/www.patreon.com\/DieMilchgebendeKuh\" target=\"_blank\" rel=\"noopener noreferrer\">Patreon<\/a><\/div>\n<\/div>\n<\/div>\n<button type=\"button\" class=\"dmk-spende__lang\" hidden><\/button>\n<\/aside>\n<script>\n(function () {\n    var blocks = document.querySelectorAll('.dmk-spende');\n    var saved = null;\n    try { saved = localStorage.getItem('dmkLang'); } catch (e) {}\n    var browser = (navigator.language || 'de').toLowerCase().indexOf('de') === 0 ? 'de' : 'en';\n    function apply(block, lang) {\n        block.setAttribute('data-lang', lang);\n        var btn = block.querySelector('.dmk-spende__lang');\n        if (!btn) return;\n        btn.hidden = false;\n        btn.textContent = lang === 'de' ? 'EN' : 'DE';\n        btn.setAttribute('aria-label', lang === 'de' ? 'EN \u2013 Switch to English' : 'DE \u2013 Auf Deutsch wechseln');\n    }\n    blocks.forEach(function (block) {\n        if (block.dmkReady) return;\n        block.dmkReady = true;\n        var set = block.getAttribute('data-lang');\n        apply(block, saved || (set === 'en' || set === 'de' ? set : browser));\n        block.querySelector('.dmk-spende__lang').addEventListener('click', function () {\n            var next = block.getAttribute('data-lang') === 'de' ? 'en' : 'de';\n            try { localStorage.setItem('dmkLang', next); } catch (e) {}\n            document.querySelectorAll('.dmk-spende').forEach(function (b) { apply(b, next); });\n        });\n    });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>A tool that rebuilds the models, textures and HUD of Splinter Cell: Chaos Theory. Free build and early access, restorable byte for byte.<\/p>\n","protected":false},"author":94,"featured_media":3263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_dmk_stempel_ecke":"","_dmk_zugang":0,"_dmk_auftritt":"","_dmk_anreisser":"","_dmk_frei_ab":"","_dmk_kennzeichen":"auto","_dmk_pixel":"","_dmk_titel_ersatz":"","_dmk_rampenlicht":false,"_dmk_rampenlicht_bis":"","_dmk_nl_vorschlag":false,"_dmk_gx":0,"_dmk_stand":"","_dmk_aufnahme":"","_dmk_einzel":"","_dmk_aufgenommen_von":"","_dmk_aufgenommen_bis":"","_dmk_gx_aus":false,"_dmk_marken":"","_dmk_breit":false,"_dmk_zensur_staerke":"mittel","_dmk_zensur":"","footnotes":""},"categories":[187,186],"tags":[54],"dmk_art":[],"dmk_reihe":[],"dmk_format":[],"class_list":["post-3262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projekte","category-tools","tag-splinter-cell"],"_links":{"self":[{"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/posts\/3262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/users\/94"}],"replies":[{"embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/comments?post=3262"}],"version-history":[{"count":16,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/posts\/3262\/revisions"}],"predecessor-version":[{"id":3944,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/posts\/3262\/revisions\/3944"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/media\/3263"}],"wp:attachment":[{"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/media?parent=3262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/categories?post=3262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/tags?post=3262"},{"taxonomy":"dmk_art","embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/dmk_art?post=3262"},{"taxonomy":"dmk_reihe","embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/dmk_reihe?post=3262"},{"taxonomy":"dmk_format","embeddable":true,"href":"https:\/\/diemilchgebendekuh.de\/en\/wp-json\/wp\/v2\/dmk_format?post=3262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}