
Tech Artist • Indie Dev • Building custom game engine 🎮 #indiedev #retrogaming Discord: https://xitter.cf/t.co/z82Zt2rqIw
Joined April 2024
- Tweets7K
- Following581
- Followers5.9K
- Likes16.9K
Pinned Tweet
Everything far away in a game engine can feel small, flat, and washed out. That is correct perspective, but it can make for some poor scenery sometimes.
Two features I've added to my engine try to fight against that:
Spatial Recession magnifies the distance. After a vertex is projected I push its screen position outward from center. Near geometry is untouched. It only moves x and y, never depth, so nothing sorts differently and nothing z-fights. The result is a long lens bolted onto the far half of a wide one: the tower and the ridgeline loom instead of receding, while I keep the wide field of view I actually play in (FOV is identical in both of these examples).
Dimensional Falloff is four distance ramps on the surface itself. Lighting contrast flattens so distant hills stop having a hard lit side and a hard dark side, which is what haze does in real life. Color then desaturates toward its own brightness to fake more distance. Then that desaturated color is pushed, and that is the one doing most of the visible work here. Last is texture detail, with a custom MIP value based on distances.
All of it keys off real radial distance from the camera rather than depth This is so it stays put when you turn your head.
Performance cost is next to nothing. The recession is two lines in the vertex shader. The falloff is a few lerps at the end of the pixel shader, which was already computing that distance for the mip bias anyway.
Quite happy with the results, what do you think?
#gamedev
Decayed ruins. An abandoned fire. I try to warm myself, if only for a moment, but my bones are drenched to their core and a bitter wind nips at my neck. There is no solace found here.
Nevertheless, I must continue onward, for the path home is long. Adventure calls. I answer.
Im so excited. Final cut of the teaser is done. Steam page is all ready. YouTube is scheduled. Getting the press kit sorted....
I'll be announcing the game THIS TUESDAY!
Still a long road ahead, but this milestone is exciting! All the skeletons have gathered to celebrate 🥳
Woke up this morning feeling good about the steam trailer. Will work on some small tweaks today, but its largely done!
Also some work in progress on a new environment I'm exploring. Lots of exciting things in the works! 🔥
#gamedev
Just finished recording the teaser for steam! 🔥
Less than one year ago I decided to sit down & try to build my own game engine. Now I'm about to share the steam page in the next few days!
Never thought I'd make it this far. Can't wait to share the teaser soon!
#gamedev
Steam page was approved....AND I just got the first track from my composer for the teaser! Gonna be cooking on the teaser trailer tonight, steam page going live soon!
Just want to thank everyone for the support, feedback, and conversations over the last year. Been a wild ride!
I won't lie, I'm struggling at the moment.
Every time I sit down to record a teaser I just find things lacking and go back and try to work on more.
Just struggling to balance between a good 'first impression' and also not waiting until the entire game is made.
Decided a walk in the snow would help me relax. 😅
How the weather system in my custom game engine looks.
I love how the mood of each is distinctly different in how the scene feels.
Which do you prefer: Rain or Snow?
Here is a bit more on how the snow works. Builds up (and melts) over time, so accumulation isn't instantaneous. Lights in the scene can be flagged to impact snow around them, letting you create a ring without snow near the heat. Just enjoying zooming around in the editor 😅
Not gonna lie, I am in love with this snow system I've setup in my custom game engine.
Sticks to surfaces based on direction its falling. Ground with objects above occlude the snow there. Foliage gets a procedural snow covering. Really like how it looks.
What do you think?
I've been thinking about how much of a game's atmosphere comes from the world itself, & how much comes from the conditions in which we experience it.
The same path can feel like an invitation on a sunny day, and a lonely journey in the rain.
I love that nothing about the destination has to change for the feeling of getting there to be completely different.
Retro Game Engine Update: Rain 🌧️
Recently I tackled how to handle weather, starting with rain, inside my custom game engine without adding some weather library or rain shader. Instead, its about 100 sprites that get re-rolled around the camera. Here is how it works.
The rain is a pool of of small sprite entities. Every few ticks, each one is re-placed at a random spot in the camera's view cone, between a near and far distance stet. Re-rolling the positions is what makes it read as falling.
I had some early failures trying to use a textured cube around the player, and with billboards which distorted and streaked odd depending on my camera angle. I discarded those and moved on to having streaks point along the worlds fall direction (with an additive slant value I an control on top of it).
The splashes are...more sprites. Rings on the ground, generated by probing straight down to find the surface, then lays the ring flat to the surface normal, so it sits right on slopes. Spots are picked in a uniform manner by the ground area inside the camera's footprint, so you never get a pile-up in front of your feet.
Shelter also blocks the rain, using the same downward probe done to align the splash rings properly, I also check "is this spot exposed to the sky?". If not, no rain drops or splashes get in there, which is nice.
The cost of this system has to be relatively cheap. My engine/game should run on a potato at all times. The real measured cost of this effect is the probe cost. so the more coverage I want the particles to have, the higher it gets. That being said, I was able to add a surface cache that dropped the average impact of rain down to only 0.01ms. Heavier rain sits at around 0.07ms. Either way, FPS still sits around 400 in this scene so I'm happy.
Its entirely data driven too. I can make weather entries in the editor as seen here, entirely driven by data. I can adjust values, see a live preview in the editor, and lock in the final look much faster.
This was really fun to work on, but also, its truly amazing to me how much the weather can impact the mood of the scene. What do you think? I'm excited to try snow in the future!

