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.
Video (87 s, staged in Blender, last seconds are iPhone screen recordings): https://paledoorgames.artuplabs.com/devlog/monsters/
The honest part first
- 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).
- The rig is Tripo's auto-rig (23 bones). I did not use Mixamo.
- 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.
- The scenes in the video are staged in Blender for the devlog. They are not in the game.
1. Grey clay to texture
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.
Same idea for Viy, Upyr and Chort:
2. Making them fit a phone
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:
| Model | Tripo | In game |
|---|---|---|
| Pannochka (witch) | 23,528 | 14,774 |
| Viy | 38,566 | 15,759 |
| Chort | 38,444 | 7,880 |
| The old woman | 28,101 | 13,789 |
| Upyr | 23,872 | 11,819 |
| Kikimora | 24,111 | 11,818 |
| The Winged | 9,498 | 5,910 |
| Rooster | 4,781 | 4,781 (not reduced) |
Chort took the biggest cut: from 38,444 to 7,880, the lightest of the rigged characters.
3. Rig and movement
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.
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.
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.
4. How they live in AR
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.
What is not done
- No facial animation. Viy's eyelids are procedural in the game, they are not part of the model.
- Pannochka's glowing eyes are a separate effect in the game and are not in the Blender render.
- 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.
What's next
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 hello@artuplabs.com.
Site and the full video: https://paledoorgames.artuplabs.com/devlog/monsters/
Video posts: @haunt_link on YouTube, TikTok and Instagram.
Happy to answer questions about Tripo, the retargeting script or the triangle budget in the comments.







Top comments (0)