Park of Horror takes place in Freddy's Funland, a theme park build on returning evil.
You play as Brendon, the son of Jim. And together with Jim and Mark you visit Freddy's Funland, but somehow you get trapped inside, unable to get back to your father.
In order to escape, you have to enter the castle, but it is locked, by exploring rides Brendon should be able to open the Castle, but danger is lurking around every corner.
Release Date: January 29th, 2021
Versions: - v0.1 (YT)
- v1.0 (YT)
- v1.1 (YT)
- v1.2 (latest)
Park of Horror, the biggest game in the trilogy from the classic FNaF Games, and one of my proudest achievements to date.
Park of Horror was an idea I had for a long time, ever since the start of 2020, and at first it was gonna be way larger. During development I decided to downscale the project and focus more on FNaF than on or my dream game, to give me the possibility to create that later on with more skills and possibilities to bring my dream to life.
However, Park of Horror does lack in code quality, the game doesn't have that many bugs, but the performance is horrible, even on modern hardware, on this page I mostly want to look at some pieces of code that do work, but cause loads of lag, including a lot of level design I have done for this game, as this game is mostly Level Design and Worldbuilding.
The loading is already a nightmare as it uses the same Loading System as Killer in Purple v2.0.4 which also had this massive load block which was completely unecessary and bloated. Park of Horror however did not get a Remaster Update like Killer in Purple, so this code remains in the game to this day, where it might be even worse then Killer in Purple.
An improvement to this would be using a struct to store the save data in, so the load and save function don't have to be updated every time a new variable is added to the save. Also the use of a Game Instance like in Killer in Purple 2 would help a lot instead of loading the save file every single time I need to read data.
The Generator makes use of a Gate with a Sequence, something I used quite often in games
pre-2022, however, this can be optimized and made cleaner by using a Do Once node or a Branch with a boolean.
(The Do Once node is litterately exactly the functionality of a Sequence + Gate)
Highlighting in Park of Horror is stitched together with Ducttape, but why and how? Well when I first coded a highlighting system (Park of Horror was my first game to implement such a system), I decided to use a highlight Interface Event, normally this is amazing, and I still use the same system today, altho there is 1 difference. When the player does not highlight it anymore, it will send a last message to the previously highlighted Actor to un-highlight it.
Back in 2021 I did not know how to do this yet, and I decided to stitch it together with an Event Tick, which would also sort of receive this last message, but just all the time, which costs a lot of CPU power.
In future games this has been updated to only run when needed, and it has improved my code a lot.
Within the game there is a clock, and this clock takes your real PC time, and converts it to rotation. However this is a great example of not yet knowing everything about Game-Dev, as this Clock was one of the first code blocks made, all the way back in 2020.
The clock currently just has loads of booleans (which in theory could be replaced with a Switch) that rotates the clock to the given minute and hour.
However, lets take a closer look. As you can see below here. Minute 0 is rotation 0, Minute 1 is Rotation 6, Minute 2 is Rotation 12 and Minute 3 is Rotation 18.
You might see where I am going with this, the rotation = Minute * 6
With that equation, I have made a slight improvement, just to showcase the way I would code it now 6 years later, to optimize this code:
The optimisation is insane, but it does the exact same as the big spaghet, allas, I wanted to show this, not to show how bas I was at coding, but when I started coding, I can make the most complex systems that can be made super simple, and also to show my improvements over the course of
6 years.
The Reactor was never actually used in-game, as it was part of the canceled ride "Lost in Time", but I still wanted to showcase the code, as this is code that I would still code similairly nowadays.
The only slight difference I would make is to set the timelines to loop, instead of plugging it back into itself. Overall, quite some good code.
Targets are part of one of my favorite rides of the game, Freddy's in Space. In the ride you have to hit targets with your gun, in order to gain points. If you hit all of them, you obtain the key.
Targets are coded quite well, although I would code it slightly differently today with the score and the material of the target being exposed variables, instead of selecting a boolean to determine which target it is.
It then of course adds the points to the current score, to make a total, which is then the result of the ride.
Then onto the levels, in total there are 4 levels (excluding the ending level):
- Pirate Adventure
- Baby's Pizza World
- Freddy's in Space
- Fazbear Manor
These 4 levels have keys within them that eventually unlock the Castle, which is the last level, and all of these levels are connected trough the Theme Park, which gets crowded by more and more animatronics.
There are also 2 scrapped levels which are:
- Golden Freddy Cinema Archives
- Lost in Time
Before showing each ride, I want to show some other inspirations in the park itself
This Pirate ship is ridable in-game, and is inspired by "De Halve Maan" (The Half Moon) in The Efteling.
The Pizza Wheel is a Ferris Wheel, it wasn't really inspired by much, besides that I used to tease with pictures of a ferris wheel in the park, so I kinda felt like I had to add it, besides, it filled up the park a lot more!
For those who have not seen The Living Nightmare, this is the house The Living Nightmare takes place in, and is of course inspired by Phantom Manor. The house was placed here during development to have a full map layour with Back in the 80's, The Living Nightmare and Park of Horror all taking place relatively close to each other, and it being kind of symbolic for the park being the centerpoint, and thus the end of the series.
Mainstreet is, like most of the park, inspired by Disneyland Paris Mainstreet (Mainstreet USA).
Almost all the buildings here can be seen in real life, below more references.
Pirate Adventure is the first ride the player has to visit, with a total of 2 keys hidden within the ride. The ride consists of an intro section to set the mood, and a small bit of gameplay aboard The Flying Foxman (inspired by The Flying Dutchman in The Efteling in The Netherlands).
This room was a lot of fun to do, as it has a beautifull painting of Willem van der Decken, the ghost captain of The Flying Dutchman. With some rendering inside of Source Filmmaker, I was able to make a pretty good lookalike painting in the style of FNaF.
As you can see below, the painting is very much inspired by the ride. Willem was a fierce captain, and who else to choose then our beloved Pirate Fox, Foxy.
For the library I made a slight change in scenery, as I personally thought it would make more sense to have a smuggling tunnel behind a bookcase, than behind a giant broken painting. Also the mirror with Willem van der Decken's face is normally in this room, but it was not added in my game, as I didn't think it would fit too well.
Next, the player walks into the Smuggling Tunnel, a place to leave the house unseen. The tunnel in my game is a lot smaller, due to the many rock placements I had to do for this scene, but I did really love the smoke effects and lighting in the entrance.
The scene is a lot more different from the original, as I wanted to make it feel more like a natural carved cave, instead of being just a hallway, as the entrance to the ride is more like a cave system.
This scene also makes for a good transition from very hot colors to a lot darker colors for the next scenes.
When the player smuggles themselves out of this Tunnel, they find themselves in the harbour, with a boat waiting for them to be taken on their journey. This was of course inspired by the ride entry for guests in The Flying Dutchman, although I do feel like I could have done more for this scene, as is it quite flat and bare compared to the original ride.
The player enters their boat, and they leave the harbour passing some boats and some houses, where a gate gets opened for them to leave. This scene was mostly made by myself, without much inspiration, although it was slightly inspired by the originl rides exit of the harbour, where you go in between 2 giant ships.
eventually the player finds themselves on open sea, with shipwrecks all around, and The Flying Foxman appears right in front of them.
Now, Yes, this is very much inspired by the actual ride, as the ghost ship used to appear by projection on a waterfall in the distance, similar to mine.
The shipwrecks can also be seen in the screenshots below, but, Park of Horror was made in 2020, these shipwrecks in the actual ride were added in 2024. Sometimes weird things just happen.
The projection of the ship in the distance (as seen on the gif) has been removed since 2024, but a mix of both in my game is pretty cool!
The player lastly has to collect 2 keys on The Flying Foxman, and escape with the little boat, after which they will have completed the ride.
Baby's Pizza World is a lot smaller compared to Pirated Adventure, with not a lot of inspiration. The main room of the ride is about the exact same map as Killer in Purple's Sister Location, but much darker.
Freddy's in Space is a ride that is a blend between 3 rides, that being Vogelrok (Efteling), Buzz Lightyear Laser Blast (Disneyland Paris) and Space Mountain (Disneyland Paris).
Originally the ride was gonna be only inspired on Vogelrok, and you would go on an adventure inside of a rollercoaster.
However with a rollercoaster you can not add enough Gameplay, so I mixed it with a shooting ride.
This ride is my personal favorite cause the ride is so fun to re-play multiple times, and the music choice for the ride is one of my favorites.
The shooting part of the ride is of course mostly inspired by Buzz Lightyear Laser Blast, where you have to hit different colored / shaped targets for different amount of points.
Fazbear Manor is the last ride the player will visit, and is inspired by my favorite ride in Disneyland Paris, Phantom Manor, the same ride I made a game about 2 years before this game dropped.
But I didn't want to make the same game, so instead I decided to change it up a little, more on that below. Let's start at the beginning of the ride
The Foyer was fun to re-make, as the one from Phantom Manor The Game was quite flat, and had the wrong wallpaper.
The Stretching room was also a challenge to remake, as I had re-done it over 4 times for Phantom Manor The Game.
The room would be coded a lot better and cleaner then the old design, with new lighting that would fit the theme better.
Another challenge I had was that the door would need to lead into the new hallway, but I didn't have the space to do what I wanted on the side the player entered from. So the moment the player enters the room, the entire room is rotated 180 degrees in the course of a couple seconds, you can notice this as your Jump feature will be disabled to sell the illusion you are staying in the same rotation.
After rotating the room, the cutscene will start.
Once the player has finished the Stretching Room, they enter The Maze, which is filled with Animatronics, and 2 keys.
Once the keys have been found, the player is able to exit trough the exit door, which completes Fazbear Manor.
The castle is the final section of the game, where the player has to traferse trough the hallways, to try and escape.
The hallway uses an optical illusion to make the hallway look much longer then it actually is.
The player then has to go trough another giant hallway with a big Golden Freddy Statue chasing them to the ending
The Final Cutscenes and Battle all take place in the ending room, where Vanny is ready to bring back Glitchtrap from his endless living Nightmare.