I migrating from #godot to custom C++ #vulkan engine.
Because of:
- multimesh instance culling
- started to fight with engine
Now:
1. mesh rendering pipeline (GPU culling)
2. super basic lighting
3. day-night cycle
4. procedural weather
5. bunch more
#indiedev#gamedev
@steverockan@noio_games@dkharms_@ArtOfPilgrim This was assuming an un-batched system. Using batching a couple of shader swaps between objects isn't noticeable, it's still considered best practice to reduce shader swaps as much as possible though.
@noio_games@dkharms_@ArtOfPilgrim As someone who has made game engines and worked heavily on rendering, shader swapping causes a lot of lag. A few objects and it's negligable, but doing it more than that starts tanking framerates. Each time you swap shaders you're ripping down and rebuilding the render pipeline.
For my game, I need 2D art for the in-game journal. I am not good at 2D art...but I am good at technical art.
So I wrote a system that lets me render out objects using a custom shader I wrote that attempts to make more "illustrated" versions of the content.
Work in progress:
Game Update, a longer write-up for those interested. 🔥
As you probably know, I've been building a retro-style D3D12 game engine from scratch for several months now, and this week I finished a system I'm genuinely happy with: the in-game survey map.
The game is first-person and you play a surveyor, so the map isn't a floating mini-map. It's his field plate, a parchment-and-ink plan that gets drawn as he explores. The fun part is that none of it is hand-painted. The engine renders the actual 3D world from an orthographic camera pointing straight down, and a post-process shader turns that render into cartography. Because the camera is straight down, the depth buffer is effectively a heightmap, so I pull elevation contour lines directly out of depth, add diagonal hatching where the terrain is steep, ink the edges, and wash in muted watercolor tones. Labels for the map are passed through entities in the scene. It runs once when you open the map rather than every frame, and like everything else in the game it composites before the CRT pass, so it picks up the scanlines, phosphor mask, and any palette clamping on the way out.
The part that taught me the most was the fog of war. The map is earned, not given freely. Ground you've walked is drawn; ground you haven't fades to blank paper. Simple idea, but the revealed boundary kept subtly crawling every time you zoomed or panned, and it took me a long time to understand why.
The root cause was that I was rebuilding the coverage mask relative to whatever the map happened to be showing at that moment. So the same patch of ground got a slightly different position, and a slightly different hand-drawn edge, every time the view changed. The fix was to stop treating the fog as part of the camera and start treating it as part of the world: I rasterize walked ground into a mask over a fixed world rectangle, and the shader samples that mask by absolute world coordinate. A fixed rectangle means a fixed pixel grid, which means a byte-for-byte identical drawing at every zoom level. Zooming just magnifies it, like paper under a lens. The boundary went completely still.
There are tradeoffs I still want to revisit. That mask is a fixed 512x512, and the "sharpen as you zoom in" behavior works by re-rendering the world top-down each time the view settles, so there's a real resolution-versus-throughput budget hiding in there that I've only roughly tuned. Kicking future exploration here down the road for now.
Take a look at where it's at!
#gamedev #indiegame
@BeanJuiceStudio We don’t. I work on my game about an hour during my lunch break and then for 1-2 hours in the evening (not every day though) after the kids fell asleep 🤷🏻♂️🔥
okay so even though im working 10 hours a day and 6 days a week in a factory, i have got to start making something or im going to go crazy
meet my new project!!! its still a little unfinished
Mina the Hollower is our biggest game yet! 🐭🕯️
20-30 hours. Over 1,200 handcrafted screens. 17 areas. 28 bosses. 60 Trinkets. 5 weapons. 14 Sidearms. So many bones!
We’re breaking down the numbers behind Tenebrous Isle! 🎮
After 6 incredibly long years, my Paper Mario meets Hollow Knight Metroidvania called Dewdrop Dynasty is finally coming out on July 21st, 2026.
If that sounds like your cup of tea, please give it a wishlist or a share. (Wishlist link in the comments)
#pixelart#gamedev #indiegame #metroidvania #ドット絵 #gametrailer
@gdechichi@BeanJuiceStudio Same, full engine control means full rendering pipeline control. It's also going to be lighter weight than a commercial engine.
Just improved the outlines on my 3D models and finally finished the entire render pipeline! The game is starting to feel much more solid and stylized. Next posts will be all about the new areas I’m working on.