我在我的Diorama和毛毡蒸汽游戏中犯的六个错误,以及一个我没有犯的错误
Six mistakes I made in my dioramas-and-felt Steam game and one I didn't

原始链接: https://novalis.org/blog/2025-03-13-six-mistakes-i-made-and-one-i-avoided.html

这篇博文总结了开发指向点击解谜游戏《高山寺》(High Mountain Abbey)过程中遇到的错误和经验教训,该游戏采用微缩景观建模。作者希望分享这些挑战,避免给人一种开发过程轻松简单的错觉。主要问题包括: 1. **壁毯:** 机器织造壁毯的分辨率和色域限制了游戏效果,作者后悔没有更早地计划使用抖动技术(dithering)。 2. **Git代码托管:** Gitlab的高昂存储费用导致作者不得不搭建一个更便宜的个人VPS服务器。 3. **动画:** AI补间动画(tweening)在处理实体对象,特别是旋转时效果出奇地差,迫使作者采用低帧率的变通方案。 4. **狭窄空间:** 狭小的空间需要在微缩景观的墙壁上凿洞以方便摄像机拍摄,之后再用装饰物掩盖这些孔洞。 5. **Steam推广:** 作者意识到在分享博文之前,提前建立愿望清单(wishlist)来提升游戏可见度非常重要。行动号召:请将游戏加入愿望清单! 6. **木皮:** 胡桃木瘤皮在粘合过程中由于其纹理不规则而发生变形,这说明需要更强的夹紧或使用合适的胶水。 尽管Rust语言很吸引人,但坚持使用Godot游戏引擎是正确的选择。《高山寺》计划于2026年发布。

独立游戏开发者Dave Turner 使用真实的微缩场景和毛毡定格动画制作了一款点击式冒险游戏,完全避免了CGI技术。他在一篇博文中详细描述了制作过程中犯的六个错误,强调自己并非经验丰富的工匠,旨在展现游戏开发的真实面貌,而不是像网上的那些精心制作的工艺教程那样。他还重点提到一个成功的决策:避免使用Rust构建游戏中的“高山寺院”,从而避开了自定义引擎的陷阱。一位评论者称赞Turner分享了他的经验,鼓励其他独立游戏开发者更公开地分享他们的项目,并指出如果创作者不积极推广,许多有趣的项目可能会被错过。

原文

I'm still working on my point-and-click puzzle game made from dioramas.

Often when you watch videos of people doing crafts on the internet, they're people who have been doing it for years. They don't make mistakes, or if they do, they don't really show them to you. I haven't been doing any of these crafts for years. So I've made lots of mistakes, and I want to show them to you, so you don't get the impression that this is easy.

Before you read further: Please wishlist High Mountain Abbey on Steam.

1. Tapestries

Machine-woven tapestries (which I'm using for rugs) are very low-res -- 14ppi (which is, at my scale, 14 pixels per foot, which is not very realistic, but it's probably forgivable). The way they work is really neat (but requires some pre-planning): they have six colors of yarn: red, green, yellow, blue, white, and black. Depending on the color of each pixel of your image, a different color ends up on top. I wish I had known about this in advance, so that I could have designed my images to do my own dithering, but this doesn't seem to be a supported mode of operation for the services I found. I guess palletized pixel work is a dying art.

Hallway

2. Git hosting

I quickly learned that git hosting was going to be an expense. I started with Gitlab's free tier, but that has a limit of 10GB. I would have liked to give them money, but their pricing for additional storage is $0.50/GB/mo, which is outrageous -- S3 charges $0.023/GB/mo, which is less than a twentieth of the price. I assume that Gitlab charges such high prices to account for the data transfer costs, but my data is basically write-only, so it's a bad deal for me.

With seven rooms photographed so far, my repo right now is 53 GB, since I'm storing all of the photos that go into each focus-stack, as well as the raw (xcf) versions of each shot so that I can edit and color-correct without repeated JPEG compression. I ended up just running my own Gitlab on a cheap Hetzner VPS, which was trivial to set up, and not very expensive. It probably has less reliability than Gitlab's service, but I have Hetzner's backups and also my own desktop's backups, so I am not too worried.

3. Animation

Yossi warned me about this, but I didn't listen: AI isn't actually good at tweening. It worked really well when I just had wool roving moving around:

But then I tried to use it to tween a solid object rotating 60 degrees:

This is surprisingly bad. But I thought: maybe it's just that rotation is bad? So I tried with a door sliding down. Actually I tried it with a door sliding up, but I didn't save the result, and then when I went to re-create it for this blog post, the images ended up in reverse order, so I guess it's sliding down now. I'm not counting this as one of my six mistakes -- you get that one for free.

Admittedly, the motion on the door is a bit shaky (that's the joy of stop-motion), but I would have expected better. I guess the wool only worked because it was already, well, wooly. So I will have to live with a low framerate on most of my animations.

I can sometimes use some trickery to improve the framerate. For the animation of something rotating, what I actually do is have Godot rotate each frame while fading in the next frame. I still have a bit of the stop-motion look, since the object moves unevenly (and it's made out of felt, so it wiggles too). And I still have decent shading, since the keyframes are photographed in situ with the correct light.

4. Shooting in confined spaces

I had thought that I could do all of the photography by placing the camera inside the dioramas. But for narrow hallways, this doesn't work -- the camera ends up too close to the wall to get a wide enough shot.

So I ended up doing something a little weird: I cut holes in the walls, and shot the side views from the outside, through the holes. Then, to make the insides look right, I put paintings or lamps or other decorations over the holes.

Hole in the wall

That hole fits a camera lens -- I'm still suffering from my camera's narrow field of view, but at least you can see the door. And when I'm shooting from the inside of the diorama, I pop a lamp into the hole and you would never know it's there.

5. Steam marketing

I put up my previous blog post, which got some traction on Hacker News. Great, I thought, everyone will want to buy my game! But I forgot a step: first, people have to learn about the game, and not the seventeen people who follow my blog. It turns out that the way to do this is to get lots of people to wishlist the game on Steam.

So what I should have done is: first, create the Steam page for the game, then post the first blog post. Well, better late than never: please wishlist the game. The more folks wishlist it, the more Steam will feature it at launch, and the more folks will buy it.

6. Veneer

So then I started working on the Steam page. Steam requires nine graphics, each with a different aspect ratio. Normal people make these graphics in Photoshop or Illustrator. But High Mountain Abbey is not a normal game; it's made of physical objects. So, of course, the Steam graphics must also be made of physical objects. I started with a piece of walnut burl veneer. Veneer is supposed to be flat, but burl wood has wild grain, so when I tried to glue the piece down, it warped like crazy. Probably I should have clamped it hard, instead of just tossing a board on top of it and hoping. Or used a non-water-based glue.

Steam assets

Oh well, it adds character, I tell myself.

One mistake I didn't make

I love the idea of Rust: big abstractions, safety, performance. I feel unease with non-memory-safe languages in 2025 even though I actually really enjoy programming in C. But it would have been a mistake to build High Mountain Abbey in Rust. There's always the temptation to make a custom engine for any game. But for this game, Godot is just fine, and I think I regret even the slight amount of weird custom stuff that I built to avoid dealing with Godot's resource format.

Conclusion

High Mountain Abbey will be released in 2026. I can't wait for you to play it.

联系我们 contact @ memedata.com