A downloadable engine for Windows

Buy Now$3.49 USD or more

A simple first-person shooter engine (Game Maker Studio 1.4 source file) that can be used to quickly get a FPS game project up and running.

  • Moving around with different footstep sounds depending on what you step on.
  • Slopes in all directions.
  • Two example weapons.
  • Fire bullets in any direction in three dimensions.
  • Example enemy.
  • Shield and health systems, dying when falling off the map or running out of health.
  • Pickups for ammunition, health, and armor.
  • Doors that open when you get near them and close again when you get far away.
  • Levels can be designed in layers, giving simple 3D functionality to Game Maker's default room editor.
  • Seamless transition between different rooms letting you build levels made up from several small rooms.

More information

Published 1 year ago
Tags3D Platformer, engine, First-Person, FPS


Buy Now$3.49 USD or more

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

yarufps.gmz 5 MB

Download demo

YaruFPS Demo.exe (24 MB)
YaruFPS Demo.zip (25 MB)


Log in with your itch.io account to leave a comment.

What is the easiest way to add a smooth crouching feature into this engine?

Nice and smooth engine btw ;)

I'd probably go about it this way, editing obj_player a bit:

  • Add a new variable iscrouching which defaults to false, is set to true in the step event whenever the crouching key is held (you'll need to edit the get_keys script to add in checks for the new crouch key) and false otherwise.
  • Add in a new code block in the Begin Step event:  when the crouching variable is true, lower zheightmovespeedmax and jumpspeed to something lower than their defaults, when it's false set them back to their default values. zheight in particular influences both the player's collision checking and where the 3D camera is located.
  • If you want the camera position to smoothly move up and down, you could use the lerp function rather than setting the zheight variable directly to the values for crouching/standing.
  • In order to avoid collision issues where the player crouches, gets under something low, and then un-crouches, you'll probably want to only allow switching from crouching to standing when there's enough free space over you that you can stand there with your original zheight. Depending on how you design your levels, though, this might not be a problem (e.g. if the player never crawls under anything and all ceilings are so high you can't bop your head into them, they can't get into a situation where this collision thing becomes an issue)

Let me know if something's unclear, and good luck :)

Would this work on GMS2?

It should work in theory (since there's compatibility scripts converting the old 3D functionality into new), but I've had some issues converting other 3D engines to GMS2 so I can't say with certainty it will. (For instance, there's a bug with drawing transformed models with <1 scaling factors that causes massive slowdowns). Still a bit torn whether it'd be better to make a GMS2 version from scratch of all my engines or convert them and try to deal with version differences.


Your call :P I bought your other engine to learn GML. There's not a lot of great source material out there. So, I'm trying to learn it all (last GM i used was 8)

At least it shouldn't be too hard to relearn Studio, it's basically GM8 with some stuff removed (execute_string() being the most important loss, a lot of people used that, and also sleep() and screen_redraw())... and some stuff added, like room/image editors where you can scroll and pan with the mouse wheel. Also, you can resize instances in the room editor now, which is wonderful for a lot of cases.

...oh, wait, you were talking about Studio 2. Derp. How do I forget things like this so easily x3

Studio 2 definitely is a bigger step up since it's based on the new stuff in Studio 1 more than it's based on its GM8 roots, but it's still mostly the same core loop. All the changes done from GM8--->GMS1 still apply, but on top of that:

  • Layers is a pretty major feature, and can be used in various ways... there's functions to only check a particular layer for instances/tiles, so you can have layers for each floor of a building etc.
  • Views has been generalized to cameras, which basically is the d3d_set_perspective() function except it now can view 2D planes as well. You can have more cameras than you have views and switch what cameras are displayed in which view on the fly, letting you make dramatic camera movements and stuff more easily.
  • Tiles has been revamped to allow autotiles and animated tiles, but this is mostly an editor thing.
  • Backgrounds and sprites have been merged into one resource.
  • Sprite editor supports layers for each subimage and you can draw while a sprite is animated, which lets you do some animations much easier.

I'm pretty new to GMS2 myself, but hopefully this helped you in some way :P

Yea, I've been trying to learn GMS2. It's a bit different than GMS 1.4 (I have both anyways so it doesn't really matter) Converting some of my projects has worked "successfully" but things dont function as they should. So just trying to figure things out xD

So am I free to use all these assets? Anyway, nice engine. I actually recently got my own FPS engine working with slopes so it's neat to see how you did it :)

Yup. They're so placeholder-y that I don't see why you would want to use them, but they're included in the price :)

are the codes commented?