<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://tigerabrodi.blog</loc>
    <lastmod>2026-08-12T13:56:27.915Z</lastmod>
    <changefreq>always</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/become-a-cracked-product-engineer-today</loc>
    <lastmod>2026-06-01T19:34:52.008Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/bipedal-humanoid-and-the-words-for-creature-shapes-in-games</loc>
    <lastmod>2026-05-18T00:50:16.872Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/lerp-and-smoothstep-what-they-actually-do</loc>
    <lastmod>2026-05-18T00:23:32.732Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/ik-and-fk-what-they-actually-are</loc>
    <lastmod>2026-05-10T21:22:34.797Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-to-make-your-textures-fast-on-the-gpu</loc>
    <lastmod>2026-05-10T18:28:46.102Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/convex-hulls-and-why-they-matter-for-collision</loc>
    <lastmod>2026-05-08T17:34:13.194Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/juice-is-the-difference-between-a-game-that-feels-alive-and-one-that-doesn-t</loc>
    <lastmod>2026-05-08T01:38:48.449Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/just-write-your-own-libraries</loc>
    <lastmod>2026-05-05T17:56:53.726Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/your-game-runs-fine-on-desktop-why-does-it-crash-on-mobile</loc>
    <lastmod>2026-05-04T16:35:35.313Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/redis-is-great</loc>
    <lastmod>2026-05-03T20:07:13.796Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/decals-in-games-are-not-talked-about-enough</loc>
    <lastmod>2026-05-03T17:48:10.344Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/2d-rendering-concepts-a-reference</loc>
    <lastmod>2026-05-03T17:36:33.843Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/2d-asset-primitives-a-reference</loc>
    <lastmod>2026-05-03T17:36:16.745Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/skinning-and-why-smooth-weights-matter</loc>
    <lastmod>2026-05-03T17:23:18.122Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-spatial-audio-works-in-games</loc>
    <lastmod>2026-04-29T17:56:40.807Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/a-visual-guide-to-voxels</loc>
    <lastmod>2026-04-26T20:05:57.797Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/does-my-ktx2-texture-need-to-be-square</loc>
    <lastmod>2026-04-26T17:46:27.599Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/indirect-draws-in-webgpu-and-why-they-re-so-powerful</loc>
    <lastmod>2026-04-26T16:41:12.449Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/trigonometry-for-game-devs-starting-from-zero</loc>
    <lastmod>2026-04-24T15:38:44.723Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/signed-distance-functions-sdfs-and-why-they-are-cool</loc>
    <lastmod>2026-04-23T14:27:12.951Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-computers-draw-3d-worlds</loc>
    <lastmod>2026-04-19T22:00:01.606Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-online-games-actually-work</loc>
    <lastmod>2026-04-18T12:50:22.417Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/what-is-webgpu-and-why-it-s-huge</loc>
    <lastmod>2026-04-17T23:51:06.827Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/cpu-friendly-javascript-a-visual-guide</loc>
    <lastmod>2026-04-17T21:35:37.903Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/particle-systems-in-games-with-threejs-and-tricks-to-make-them-look-good</loc>
    <lastmod>2026-04-17T12:16:38.359Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/what-we-can-learn-from-grass-in-ghost-of-tsushima-renders</loc>
    <lastmod>2026-04-16T18:55:46.386Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/what-actually-happens-when-you-run-javascript</loc>
    <lastmod>2026-04-16T16:38:03.768Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/a-friendly-introduction-to-linear-algebra-for-game-devs</loc>
    <lastmod>2026-04-16T13:02:17.533Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/water-in-games-is-not-real</loc>
    <lastmod>2026-04-16T03:14:30.670Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/ray-marching-from-the-ground-up</loc>
    <lastmod>2026-04-15T20:04:12.859Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/why-the-l-system-trees-looked-wrong</loc>
    <lastmod>2026-04-15T18:56:45.845Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/nanite-explained-how-modern-game-engines-render-billions-of-triangles-without-exploding</loc>
    <lastmod>2026-04-15T13:26:11.638Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/next-js-use-cache-remote-a-distributed-cache-in-one-line</loc>
    <lastmod>2026-04-15T00:23:37.857Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-to-implement-a-level-and-xp-system-with-convex</loc>
    <lastmod>2026-04-15T00:19:15.138Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-i-fixed-slow-convex-storage-assets-with-convex</loc>
    <lastmod>2026-04-15T00:17:16.919Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-to-implement-a-daily-streak-system-with-convex</loc>
    <lastmod>2026-04-15T00:15:52.356Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/why-exr-is-the-real-deal-for-skyboxes</loc>
    <lastmod>2026-04-14T21:06:45.217Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/building-a-procedural-planet-from-scratch-the-full-pipeline</loc>
    <lastmod>2026-04-14T05:08:49.585Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/pbr-what-it-actually-is-and-how-each-map-works</loc>
    <lastmod>2026-04-13T15:36:24.100Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/dirty-flag-skip-work-that-does-not-matter-yet</loc>
    <lastmod>2026-04-12T14:21:17.734Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/spatial-partition-stop-checking-everything-against-everything</loc>
    <lastmod>2026-04-12T14:18:57.724Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/object-pool-stop-allocating-start-reusing</loc>
    <lastmod>2026-04-12T13:39:25.398Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/data-locality-why-your-data-layout-decides-your-game-s-speed</loc>
    <lastmod>2026-04-12T13:23:30.158Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-to-build-a-character-controller-with-finite-state-machines-in-three-js</loc>
    <lastmod>2026-04-12T12:50:18.199Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/why-sharedarraybuffer-is-so-powerful-in-game-dev</loc>
    <lastmod>2026-04-12T12:04:40.243Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/building-a-particle-system-in-three-js-from-scratch</loc>
    <lastmod>2026-04-12T10:41:52.605Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/i-animated-250-particles-in-react-and-it-froze-canvas-fixed-it-in-100-lines</loc>
    <lastmod>2026-04-12T01:27:59.640Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/aac-audio-lod-for-game-streaming</loc>
    <lastmod>2026-04-11T21:04:49.545Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/how-to-build-good-apis-with-next-js-and-typescript</loc>
    <lastmod>2026-04-10T18:27:19.453Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/framer-motion-useanimate-returns-empty-animations-array-fix-for-motion-v12-and-prefers-reduced-motion</loc>
    <lastmod>2026-04-10T18:25:24.234Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/archive</loc>
    <lastmod>2026-08-12T13:56:27.915Z</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://tigerabrodi.blog/recommendations</loc>
    <lastmod>2026-08-12T13:56:27.915Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.4</priority>
  </url>
</urlset>