A downloadable asset pack for Windows

Buy Now$5.00 USD or more

It's Time To Survive!

Ever wanted to jump on the Reverse Bullet Hell bandwagon and compete with the other five million people that made a game about mowing down thousands of enemies with your rapidly growing supply of upgrades?

With Yal's Survivors Engine, you've got everything you need to quickly and easily set up your very own power fantasy in GameMaker:Studio! The only limits are your imagination, and your CPU power!

Data Driven Design

Easily set up stages by defining enemy waves, boss encounters, and trickle spawners using just a timestamp and an enemy object type.

Weapons and passive abilities for the player to unlock are just as easy, all you need is editing some stats!

Check out the example levels, weapons and passives for some quick examples of what you can do.

Auxiliary Features

  • Infinite room wrapping that automatically copies a tile layer and moves things around when you reach the edge to create a seamless illusion of walking around on an infinite plane! Even the particle effects are part of the illusion!
  • Basic system for menus that can be controlled using both keyboard and mouse.
  • Softbody collisions that gently pushes enemies out of each other based on how much they collide.
  • Weapons use a system with multiple alternate upgrades, that each can increase one or more stats. More power or firing two bullets at once? Perfect for build variety!
  • Bosses and treasure chests to zest the game up a bit.


Buy Now$5.00 USD or more

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

Source code (GameMaker Studio 2 .YYZ) (version 2) 13 MB

Download demo

Demo 20 MB
EULA 22 kB

Development log


Log in with itch.io to leave a comment.

probably something I am overlooking but I added a new player and then added a new button instance in the player select room but when I go into the room I get this error 


action number 1

of Other Event: User Defined 0

for object obj_keyboardmenucontroller:

Variable obj_playerselectbutton.menugridpos_x(100297, -2147483648) not set before reading it.

 at gml_Object_obj_keyboardmenucontroller_Other_10 (line 3) -        if(menugridpos_x == other.menugridpos_x && menugridpos_y == other.menugridpos_y){


gml_Object_obj_keyboardmenucontroller_Other_10 (line 3)

gml_Object_obj_keyboardmenucontroller_Create_0 (line 18)

still kinda new to GM

(1 edit)

It's probably the order the Create Events run. The new button gets added at the end of the list, so it's not finished setting up when the keyboard menu controller's Create Event runs (it finds the currently hovered menu button by checking their "menu grid position" variables - but they don't exist until after the button objects have been properly created). You need to open the room's "Instance Creation Order" (there's a button in the inspector) and reorder things so the controller is created after all the buttons:

(There's a comment about having to do this in the create event of that object, but I maybe should've put it somewhere more visible...)


Actually, I just realized there's an even better way to solve it - moving the "event_user(0)" from the Create event to the Room Start event (which runs after all create events have finished), that removes the creation order dependency entirely! Just cut and paste it into the indicated location:

I'll update the base download with this change as well so more people can avoid suffering.


Ah your a lifesaver thanks

Do you think this would run on mobile okay?

(1 edit) (+1)

Even on my PC it gets slowdowns if you can survive long enough, but the main performance bottleneck is enemy-to-enemy collisions (where enemies are moved outside each other so you don't end up with a single 'conga line' blob) so you could get around that by focusing more on fewer stronger enemies instead of tons of weak enemies, or maybe change things around so each individual enemy object only collides with that one object, rather than the parent_enemy colliding with parent_enemy, so individual hordes keep their shape but they just phase through other groups.

So I bought the engine, but have a weird issue: I cannot get the source code to work...at all. I get prompted to create the folder, and it appears to do so, but I just get taken back to the start screen of GMS2. Trying to open  the created project file says that it failed the load the project. I'm using the GMS2-LTS, so I don't understand why I'm having issues with this project but no others. Anything come to mind?

(3 edits) (+1)

My guess is that it's created in a version newer than the LTS and something in the format has changed (I'm always on the latest version to find and fix issues with new features breaking my engines ASAP).

I know the new project loader was introduced recently-ish (version 2023.6, if memory serves) so potentially that's the issue, though the new format was made to be backwards-compatible so you'd think LTS could handle it... but it's almost a year old now so it might be lagging behind a bit...?

I asked around a bit and it sounds like you can have an LTS version and a regular version installed at the same time (as long as they're installed in different locations) so that could be a solution - having bleeding-edge for this engine and LTS for your other projects. (And having a beta and a regular version installed at the same time 100% definitely works)

Oh, that is interesting, and a bit unfortunate. I mostly stuck LTS since I thought it would be future proof as they described and I wouldn't have to deal with future version updates for the engine. Is there any chance there is some manner of converter for the project format? If I'm screwed I can probably just download a more recent version of GMS, I'm just hoping to avoid it if possible. I definitely understand it's not your fault though, unfortunate that LTS was broken as a 'stable' version so quickly though.

(1 edit) (+1)

As I said, you can have both LTS and a regular version installed at the same time without issues, they show up as different programs entirely. So no need to abandon LTS entirely.

LTS was released in late october 2022 (version number of the current LTS download is 2022.0.1.31 so it still appears to use the same version!) so it's about 10 months old at this point - it's lagging behind on features quite a bit and the timing of the new project format was quite unfortunate. I couldn't see anything about a new LTS release on the roadmap so presumably the next LTS release won't happen until the 2 years of support has passed? (in ~14 months from now) Scratch that, an upcoming update to LTS for the end of this month was announced today. No info what features from the bleeding edge will be ported over to LTS yet though...

In the worst case I suppose I could send you all the code as text files or something so you can paste it into a fresh project, but it'll be a pain to reassemble all the events and object relationships so I wouldn't really recommend this approach...

For up-to-date information on this stuff (LTS stability / project format queries) it's probably easiest to check in on the official forums, there's a shortcut to open the GMC in your browser from within Game Maker (Help --> Game Maker Community). I used to be a moderator but I've never been involved with actual GM software development so I have very little knowledge about how it works under the hood.


Interesting that they happened to announce that today, what odd timing. So I downloaded the current beta for GMS2 and was able to open the project, edit files, ect.  I exported everything in the project into a local package- but trying to import it into an LTS project makes the program hang infinitely. The reason this is unfortunate is because I was hoping to make use of this engine as a Mini-Game within my main project which uses LTS.  I hope the update at the end of the month will make some magic happen somehow, until then I'll tinker around with it in the GMS2 BETA and just hope! I'm getting a feel for it and I really like how easy everything is to edit, as always, well done!


Glad you figured out SOME way of opening it at last, at least... in the worst case, it's always possible to manually copy code from the GM Beta and recreate objects in the main project (should be a lot easier with two instances of GM so you can actually compare stuff properly, vs doing it by hand from the .gml / .yy files)

(The one thing that's not super obvious is that I use the GUI "Variables" interface for all the enemy stats, they're not set up by code in the Create event)

Hey, bought it and it is amazing, i am getting a lot of feather message errors, not to familiar with them but they won't cause anything to act up or break will they?


It should be fine, Feather is more of a style guide and it complains about so many petty things it's almost unusable IMO.


Exactly what I was looking for. Thanks. Now to learn how to make games.

I knew I'd forgotten something, the end-user license agreement - uploaded now. No surprises here, it's the same one I use for all other assets (don't resell the asset, but you can do whatever you want with a finished product made using it)


You evil mastermind you. First off, I hate the game that I'm assuming inspired this as its art styles (there's multiple), fonts, and mechanics are extremely inconsistent. For some reason though, everyone enjoying the game just overlooks this. It kinda hurt's my eyes. But...., the fact that our favorite developer has made an engine that essentially gives ppl a chance to made their own (better) version of said game give me hope in the gaming space that we currently subside in.

10/10 will probably buy twice.
- LadiiPixel

It's pretty much become a genre at this point, hasn't it? I used to believe innovation stopped being a thing recently, we'd already threaded all the possible ground on gaming, so it's pretty cool seeing history happen before our own eyes.

I wasn't really planning on making this engine originally (conceptually it's not very challenging stuff going on behind the scenes) but I experimented a bit with making my own game for a jam and figured "heck, I've got some cool code here, might as well clean it up a bit and turn it into an asset". The biggest challenge really is GM's performance, the number of enemy-to-enemy collisions increase exponentially as the game goes on and it makes things go from smooth to unplayable very quickly once you hit the sweetspot.