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
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.
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
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!
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.
[Please log in to post a comment]