A downloadable asset pack for Windows

Buy Now$14.99 USD or more

A GameMaker:Studio source file with all the essentials of a Slendy-style horror game in place: 

  • Collect 8 collectibles to win while a monster randomly chases you down! The entire game is functional on a basic level, so you can get your own project started in no time!
  • Easily modifiable 3D terrain generated from a mix of random noise (the ground) with human-placed houses and other decorations. Put as much or as little effort as you want into your levels! An extensible texture atlas system lets you use up to 64 different textures for the terrain.
  • Plug-and-play first person controls
  • Dynamic lighting
  • 3D audio using GM's new audio system
  • Collectibles that make scary sounds when you're nearby
  • An enemy that gets more and more aggressive the more collectibles you collect, creating a scary white noise effect that gets more intense the closer you get
  • Jumpscares when you get caught
  • A win screen when you succeed
  • Comes packed with dozens of textures and sprites you can freely use in your projects!
  • Compatible both with GameMaker:Studio 1.x and GameMaker:Studio 2.x! Includes source files for both versions.

Easy to use, since it's basically a complete game already! Just plug in your own scary monster(s) and you're good to go! The game dynamically adjusts the clear condition based on how many collectibles you put into the world, and you can have more than one level! Go nuts and make something super spoopy for your favorite Youtuber / Twitch streamer in a matter of minutes!


  • The resources can be used in free and commercial games, videos, and other forms of media.
  • You may freely edit the resources for your own purposes, including using modified versions in games, videos, etc.
  • Credit is optional but appreciated and recommended.
  • You may NOT redistribute the resources themselves, or derivatives thereof - neither for free, paid or otherwise.
  • You may NOT transfer this license, or issue sub-licenses for the usage of the resources (or derivatives thereof) by third parties.
  • I am not responsible for damage caused by using the resources. The resource pack has no warranty, including the implied warranties of merchantability and fitness for a particular purpose. Use at your own risk.


Buy Now$14.99 USD or more

In order to download this asset pack you must purchase it at or above the minimum price of $14.99 USD. You will get access to the following files:

Source code (GMS1) 6 MB
Source code (GMS2) 8 MB

Download demo

Demo (compressed application ZIP) 8 MB
License Agreement 22 kB


Log in with itch.io to leave a comment.

I'm trying to add mobile controls like for example a joystick, but how do I draw that on the screen?

There's an official GameMaker tutorial for this you might be interested in:


(Sorry for not explaining everything myself, but... Matharoo is a better teacher than me, anyway)

Most of it should just work as-is since it uses the GUI layer, which works like normal in 3D mode. The one thing you might want to change here is to create the joystick instance yourself via code instead of placing them in the room editor (e.g. in obj_gamecontrol's room start / create event) to make sure it's aligned properly in every room, and run setup_gui_fog() before drawing the joystick and setup_game_fog() afterwards to turn off and on the lighting effects so they won't affect the GUI elements. 

How would I change the collectable from a 3d model to a 2d sprite?

Draw it with draw_mode7sprite (one of the engine's scripts). The obj_antagonist draws itself that way, so you could just copy its drawing code:

(Keep in mind that it assumes the sprite's origin is in the bottom center when aligning it to the 3D world)

Thanks yal, Your kit is amazing! I'd love a Horror Engine: Escape. basically granny except simplified.

Hello are all your games made by the gaming engine?

All of them are made in GameMaker:Studio, if that's what you're asking. (Some of the old ones like Gun Princess use GameMaker 6 / GameMaker 8.1 instead, Studio is their direct successor)


Very nice game engine I have a similar game engine from the same people

Hello Yal! Very interesting! Does it support 3d models and ability to add some pathfinding for AI? Thanks!

It's a Game Maker:Studio project file, so it has about as much support for those things as GMS has innately (there's no code for either of those at the moment - the level is a 3D model generated randomly, the enemy just teleports around randomly).

I dug up a bunch of learning resources that could be useful:

(1 edit) (+1)

Ok!) Thank you!

Dear Yal! Its all nice working but im facing some issue with terraincontrol object, when i click Play button my game freezing for 10 sec :(( I'll try compile with YYC but it didnt help. In the debug screen i saw just
"Pause event has been registered for this frame"
and "Pause event has been unregistered" after that
Please, how can i fix this? Thanks!

gms2 (ide, runtime

For some reason d3d_model generation is a lot slower in GMS2 than it is in GMS1. The easiest workaround would be to just add a loading screen and display that for the first step as the model is being built, a harder one would be do change the generation code to use vertex buffers instead.


I looked into how the vertex buffer system works (I try to avoid everything that has a scary name :P) and it seems to not be super difficult to convert the game to use it. Sorry about the delay with the code fixes, it took some time to research it. Based on the example code on the GMS2 manual page on building primitives...

1) Define a vertex format (you'll need position data, texture data, and normal data - you should add them in the same order they're provided as arguments in the d3d_model_vertex/.../ functions)

2) Find the compatibility scripts for the various d3d_model scripts. If you've done any changes to the project, make a backup now, because we'll hack the compatibility scripts.

3) Change d3d_model_create() so it will create a vertex buffer and start a primitive using your custom format:

v_buff = vertex_create_buffer();
vertex_begin(v_buff, global.my_format);
return v_buff;

4) Change d3d_model_vertex_normal_texture() so that it will add vertex data. It's important you add this data in the same order you defined the different data in the vertex format.

vertex_position_3d(v_buff, xx, yy, zz);
vertex_texcoord(v_buff, tx, ty);

5) Change d3d_model_draw() so it will submit the vertex buffer to the pipeline (using a texture):

var tex = background_get_texture(selected_background);
vertex_submit(v_buff, pr_trianglelist, tex);
6) d3d_model_primitive_begin() now would have no effect, so delete all code in that script.

7) d3d_model_primitive_end() could be emptied, or just use vertex_freeze() to make the vertex buffer read-only (which speeds up drawing it)

Hope this helps! Let me know if there's any problems.