<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Артем Карпец</title>
    <description>The latest articles on DEV Community by Артем Карпец (@haunt_link).</description>
    <link>https://dev.to/haunt_link</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2026405%2F7e0409f9-c153-41ce-b520-3bcf80f932fc.jpg</url>
      <title>DEV Community: Артем Карпец</title>
      <link>https://dev.to/haunt_link</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/haunt_link"/>
    <language>en</language>
    <item>
      <title>Devlog 2: from grey clay to nightmare. How the monsters of my Gogol AR horror game are made</title>
      <dc:creator>Артем Карпец</dc:creator>
      <pubDate>Sat, 31 Oct 2026 08:52:54 +0000</pubDate>
      <link>https://dev.to/haunt_link/devlog-2-from-grey-clay-to-nightmare-how-the-monsters-of-my-gogol-ar-horror-game-are-made-5646</link>
      <guid>https://dev.to/haunt_link/devlog-2-from-grey-clay-to-nightmare-how-the-monsters-of-my-gogol-ar-horror-game-are-made-5646</guid>
      <description>&lt;p&gt;I'm making Home Haunt, an AR horror game prototype for iPhone based on Gogol's "Viy" (1835). The story plays out in your own room: your wallpaper bleeds, a dead witch climbs out of a coffin on your floor. My first post was about lessons from testing in real apartments. This one is about the monsters: what they are, how they were made, and what is honestly not done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1yll08fv7fck8iakw5o8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1yll08fv7fck8iakw5o8.jpg" alt="Seven Home Haunt monsters in a row, textured" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video (87 s, staged in Blender, last seconds are iPhone screen recordings): &lt;a href="https://paledoorgames.artuplabs.com/devlog/monsters/" rel="noopener noreferrer"&gt;https://paledoorgames.artuplabs.com/devlog/monsters/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part first
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;All 12 monster models are AI-generated in Tripo AI: text-to-model for eleven of them, image-to-model for the old woman (from a T-pose concept).&lt;/li&gt;
&lt;li&gt;The rig is Tripo's auto-rig (23 bones). I did not use Mixamo.&lt;/li&gt;
&lt;li&gt;The animations are not mine. They come from the free CC0 Quaternius Universal Animation Library 1 and 2. I retargeted them onto the Tripo skeleton myself.&lt;/li&gt;
&lt;li&gt;The scenes in the video are staged in Blender for the devlog. They are not in the game.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Grey clay to texture
&lt;/h2&gt;

&lt;p&gt;Every model starts as a raw Tripo mesh. I show it as grey "clay" first because the mesh itself is the part people never see. Pannochka (the witch) came out at 23,528 triangles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvi2fotzhl7aioju6nt94.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvi2fotzhl7aioju6nt94.jpg" alt="Pannochka: raw mesh and textured model" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same idea for Viy, Upyr and Chort:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8b0hms3bvqhmig2fzb6i.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8b0hms3bvqhmig2fzb6i.jpg" alt="Viy: raw mesh and textured model" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpxsavfk29pvkafno4cw1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpxsavfk29pvkafno4cw1.jpg" alt="Upyr: raw mesh and textured model" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz9wubdjtu2b382z2g8r9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz9wubdjtu2b382z2g8r9.jpg" alt="Chort: raw mesh and textured model" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Making them fit a phone
&lt;/h2&gt;

&lt;p&gt;Raw Tripo output is too heavy for AR on a phone running ARKit plus a whole room. I thin each mesh in Blender with a decimate script and shrink textures from 4096 to 1024:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Tripo&lt;/th&gt;
&lt;th&gt;In game&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pannochka (witch)&lt;/td&gt;
&lt;td&gt;23,528&lt;/td&gt;
&lt;td&gt;14,774&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Viy&lt;/td&gt;
&lt;td&gt;38,566&lt;/td&gt;
&lt;td&gt;15,759&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chort&lt;/td&gt;
&lt;td&gt;38,444&lt;/td&gt;
&lt;td&gt;7,880&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The old woman&lt;/td&gt;
&lt;td&gt;28,101&lt;/td&gt;
&lt;td&gt;13,789&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Upyr&lt;/td&gt;
&lt;td&gt;23,872&lt;/td&gt;
&lt;td&gt;11,819&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kikimora&lt;/td&gt;
&lt;td&gt;24,111&lt;/td&gt;
&lt;td&gt;11,818&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Winged&lt;/td&gt;
&lt;td&gt;9,498&lt;/td&gt;
&lt;td&gt;5,910&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rooster&lt;/td&gt;
&lt;td&gt;4,781&lt;/td&gt;
&lt;td&gt;4,781 (not reduced)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Chort took the biggest cut: from 38,444 to 7,880, the lightest of the rigged characters.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Rig and movement
&lt;/h2&gt;

&lt;p&gt;Tripo's auto-rig gives a 23-bone biped skeleton with Mixamo-style bone names. I then put Quaternius clips on it: LayToIdle (Pannochka getting up from the coffin), ZombieScratch (her groping hands), WalkFormal for Viy and Chort, ZombieWalk for Upyr and the old woman, CrouchWalk for Kikimora. In the game these play through Unity's Humanoid retargeting. For the video I wrote a Blender script that applies the same clips to the Tripo rig (rotation deltas from the T-pose, limbs aligned). The poses can differ from Unity by a fraction of a second, so treat the video as "the same motion", not a frame-perfect capture.&lt;/p&gt;

&lt;p&gt;I slowed some clips so the movement reads on camera: Viy at 0.5x, Chort at 0.7x with a jerky stutter, Pannochka rising at 0.55x.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftsmz6r1jfafuo4mbapbn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftsmz6r1jfafuo4mbapbn.jpg" alt="Viy" width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Winged and the Rooster have no bones at all. The Winged flies by code (wing squeeze 0.8 +/- 0.2 at 2 Hz, sway and roll), and the Rooster moves by script as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5a11ux8t683qtnqqusvo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5a11ux8t683qtnqqusvo.jpg" alt="The Winged in flight" width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. How they live in AR
&lt;/h2&gt;

&lt;p&gt;In the game the phone scans your room with ARKit (Unity 6, AR Foundation 6), then the monsters are placed in the real space: Pannochka in a coffin on your floor, spirits coming out of your walls. This is why the triangle budget matters: the model competes with the camera feed and the room mesh for the same phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is not done
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No facial animation. Viy's eyelids are procedural in the game, they are not part of the model.&lt;/li&gt;
&lt;li&gt;Pannochka's glowing eyes are a separate effect in the game and are not in the Blender render.&lt;/li&gt;
&lt;li&gt;One of the models shows dark dots on its belt in the clay turntable. I did not find the cause yet. It is invisible at speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Co-op is in testing: two phones, two homes, one night. The game is in closed testing on TestFlight. If you have an iPhone and want to try it, write to &lt;a href="mailto:hello@artuplabs.com"&gt;hello@artuplabs.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Site and the full video: &lt;a href="https://paledoorgames.artuplabs.com/devlog/monsters/" rel="noopener noreferrer"&gt;https://paledoorgames.artuplabs.com/devlog/monsters/&lt;/a&gt;&lt;br&gt;
Video posts: &lt;a class="mentioned-user" href="https://dev.to/haunt_link"&gt;@haunt_link&lt;/a&gt; on YouTube, TikTok and Instagram.&lt;/p&gt;

&lt;p&gt;Happy to answer questions about Tripo, the retargeting script or the triangle budget in the comments.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>ar</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>Lessons from building an AR horror game in real apartments</title>
      <dc:creator>Артем Карпец</dc:creator>
      <pubDate>Thu, 22 Oct 2026 11:37:24 +0000</pubDate>
      <link>https://dev.to/haunt_link/lessons-from-building-an-ar-horror-game-in-real-apartments-34m7</link>
      <guid>https://dev.to/haunt_link/lessons-from-building-an-ar-horror-game-in-real-apartments-34m7</guid>
      <description>&lt;p&gt;&lt;em&gt;Home Haunt, Gogol's "Viy" and why your sofa is the hardest level&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm building Home Haunt, an AR horror game for iPhone. You play Khoma Brut from Gogol's "Viy" and the haunting happens in your own room. This is a short, honest list of what worked and what didnt.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/vEP4qbPNXoI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The scan is part of the game, not a loading screen.
&lt;/h2&gt;

&lt;p&gt;The scan used to be just a progress bar. Now Khoma talks while you turn ("first see where the door is, then pray") and the scan feels like looking around a strange place. Same 10 seconds, different feeling.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Real walls are the best horror asset we have.
&lt;/h2&gt;

&lt;p&gt;We spend a lot of time on models, but nothing works like blood running down the player's own wallpaper. People know their walls. When their walls change, it lands.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Make people walk.
&lt;/h2&gt;

&lt;p&gt;Tap-to-collect makes AR feel like a menu. We switched to carrying: hold an item for a quarter of a second, it floats in front of the camera with a bit of weight, you walk it to the table and put it down. You start to move, look behind you, and get scared by your own hallway.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Silence and story before scares.
&lt;/h2&gt;

&lt;p&gt;The first scene, the Archivist's house, has no scares at all. You read a letter, look at the window, Khoma jokes. It makes the first blood ten times worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Your own voice is fine.
&lt;/h2&gt;

&lt;p&gt;The laugh you hear when you find a page is me, recorded myself. Not everything has to be "professional".&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Co-op must be parallel.
&lt;/h2&gt;

&lt;p&gt;Our first co-op version was turn based: one player does something, the other waits. In our playtest each of us waited for the other way too long. We are rebuilding it so both players always have something to do and every mistake of one makes it harder for the other.&lt;/p&gt;

&lt;p&gt;Tech, short: Unity 6 + AR Foundation (ARKit), co-op through a small relay on Cloudflare Workers, all voice and story in English and Russian.&lt;/p&gt;

&lt;p&gt;The game is in closed testing on iPhone. Trailer and devlogs: &lt;a class="mentioned-user" href="https://dev.to/haunt_link"&gt;@haunt_link&lt;/a&gt;. Playtest: &lt;a href="mailto:hello@artuplabs.com"&gt;hello@artuplabs.com&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://paledoorgames.artuplabs.com" rel="noopener noreferrer"&gt;https://paledoorgames.artuplabs.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@haunt_link" rel="noopener noreferrer"&gt;https://www.youtube.com/@haunt_link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://www.tiktok.com/@haunt_link" rel="noopener noreferrer"&gt;https://www.tiktok.com/@haunt_link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/haunt_link" rel="noopener noreferrer"&gt;https://www.instagram.com/haunt_link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X: &lt;a href="https://x.com/haunt_link" rel="noopener noreferrer"&gt;https://x.com/haunt_link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@kapecart91/lessons-from-building-an-ar-horror-game-in-real-apartments-aae45356af0e" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>ar</category>
      <category>indiedev</category>
    </item>
  </channel>
</rss>
