Log In  

Cart #featherstoneruins-0 | 2021-08-30 | Code ▽ | Embed ▽ | No License

Featherstone Ruins is a survival-horror game with gameplay similar to 'Slender', which I slowly built up out of some very basic raycaster code. I mainly made this as a learning exercise, and there's a thousand ways to make it more efficient and effective, but I'm happy to call it done and put what I've learned into practice on the next project!


Many years ago, a servant at the Featherstone Manor was unjustly tried as a murderer, and executed. His body was cut up, and hung around the surrounding farmland as a grim warning to others.

Since that wrongful execution, no-one at the manor has known peace. Rumours spread that the Featherstone Farm was haunted. The site was abandoned, and soon fell into disrepair. None of the curious souls who have ventured there have returned.

With oil-lamp in hand, you set out to bring peace to the Featherstone Ruins. If you can collect all four body parts hanging throughout the ruins, and consecrate them, the ghost will haunt this place no longer.


Z - Collect body part/Consecrate body (when you have four body parts, do this at the shrine near where you start to win the game)
X - Hold to Strafe
Arrow Keys - Move Forwards, Backwards, and Turn Left/Right

Tips (spoilers):

The body parts spawn in several random locations each playthrough, but there is always one located in the forest (NW), storage sheds (SE), in the manor (N), and either the wooden barn (SW) or rocky grove (NE).

The shrine is always located near where you start, and marked with a big arrow.

The ghost speeds up as you collect more body parts, and will teleport to a location near you if you manage to escape him for long enough.


P#96673 2021-08-30 11:42


I did it! 7:47.3
I´m proud and i had fun :) The heartbeat thing carried a lot of the atmosphere. Then i played it again just to see what happens when you get caught. Nice game, nice ideas!

P#96726 2021-08-31 16:11

Thanks for the kind words, and thank you for checking it out! As far as I know, you're the first person besides me to report completing it, taxicomics :)

P#96730 2021-08-31 16:48

this game is like wandering around in a nightmare. nice!

P#96883 2021-09-05 00:51

This is actually scary, but it’s AMAZING

P#96957 2021-09-06 14:47

Nice game, I was following your twitter devlog and it was a wonderful journey! Not sure why but your textures at close range have a somewhat big fish-eye distortion... while at a distance heights seem correct when you close to a wall maths seem a bit off. Great job on the ambience and oppresive atmosphere! Looking forward to your next project

P#96964 2021-09-06 18:15

Thank you for the kind words slainte! If you're curious why the maths are so off close up (forgive my amateurish coding, I'm going to hide behind this being a learning experience) it's because it's not actually doing the standard raycaster grid-intersection checks. Each ray is extended a certain distance, then a check is performed to see if that distance is inside a wall. If not, the ray is extended by another unit, and checked again, and so on. It's astonishingly inefficient, and one of the other artifacts it causes is low variance in distances when close to walls. These checks are happening directly in the map memory, and each ray is extending 1 pixel worth of distance per check. It's not a method that I'd recommend; the only thing it has going for it is that the raycasting code is a tiny bit simpler, since it doesn't need to be modified per quadrant. I'll definitely be writing it differently in the next raycaster I make!

P#96966 2021-09-06 18:37

Hey @Soundole, nothing to apology for! The game looks and plays great, so nothing to be worried about the distortion. Probably moving to intersection checks is a small enough change for you to consider (or to revisit after your next raycasting project) but definitely it is not a big issue and maybe just a personality quirk of your engine itself.

P#96993 2021-09-07 12:35

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2022-01-23 16:17:05 | 0.033s | Q:27