A downloadable tool for Windows

Buy Now$7.99 USD or more

This extension adds a menu and input system to GameMaker version 2.3.3+

Main features

  • Create a title and pause menu in no time. 
  • Organize multiple inputs of any type into actions, like vk_rightord("D"), and gp_padr into a single category/action right
  • And combine these two to create a controls menu based on an input system in one line of code where the player can edit the inputs.
Try it out for your self in the free demo (below at the downloads section).

You can buy this extension on the GameMaker Marketplace as well if you prefer that, but I appreciate it if you buy it here (itch.io has a better payment system).

Documentation

Menu system

You can create menu pages where you can put different elements like:

  • sliders
  • toggles
  • credits
  • shifts (multi-option select)
  • controls as previously mentioned

And then access their values from anywhere.

Additional features of the menu:

  • Automatic sizing - the menu adjusts the size of its elements to your window size
  • Pause system - pause any game with one function
  • Presets - change or even remove buttons in different situations easily
  • Saving and loading - saves the settings and even the controls automatically
  • Easily customizable look

Input System

The input system makes dealing with any type of inputs very easy. Basically, you can organize a bunch of inputs (keyboard, mouse, gamepad) into categories like right or jump. And then check them all in one line.

But it can do much more than that. Here is a list of other things it can do:

  • Checking any type of input with the inputCheck() function
  • Getting the last gamepad input pressed similar to keyboard_key
  • Getting the last input pressed from any type
  • Getting the type of any input
  • Turning an input into a string (good for drawing and debugging)
  • Drawing inputs with nice-looking icons
  • Replacing ord("X")  with "x"
  • Replacing gamepad_axis_value() with new constants like gp_axislr
  • Checking gamepad axis inputs as pressed
  • Saving and loading Input Systems in one line
  • More vk_ constants


And I have to mention FriendlyCosmonaut because the basic idea of the menu was from her Menus tutorial series. To be clear the code is completely rewritten to use the functionality of gms2.3 for instance, it uses structs instead of ds grids as the base of storing the menu, and also it has a ton of new features. The arrangement of buttons though is inspired by her system.


Games made with the systems:

Ragnar by 2 Bit Determine

Ultimate Battle Animals by me

Feel free to submit yours!

You can make commercial products with systems, such as games, but not other tools that build on the systems.

Contact

If you have any questions or want to request a feature dm me on Twitter: @MilanVarady

Or email me: milan@aerolite.dev

Purchase

Buy Now$7.99 USD or more

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

menu-and-input-system.zip 1.3 MB
Version 20

Download demo

Download
Menu System Demo.zip 2.5 MB

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

hey, I just got it and Looking forward to use it! One thing someone else mentioned but supporting other input systems as well as yours would be great, people would use yours if they wanted something more simple and jujus if they wanted something more complex. The controller features for the menu are great since I need the game to be gamepad ready as well so thanks 

(1 edit)

Hiya just wanted to leave a little review. I like this menu system a lot. It has every feature I could want and it looks fantastic. The menu array is pretty simple to work with. I also love that the settings can be auto-saved! My only complaint would be how non-modular oMenu is from the input and pausing system. My project has been using jujuadam's input and a custom pause system. Because of that, I had to go behind the scenes and change some things to my liking which luckily wasn't too difficult but a little disappointing. Even with that, this asset is still more than worth the purchase. Menu systems are a pain, and this alleviates all of that. Thanks!

Thank you for the kind words! I’m starting to see more and more people use jujuadam’s input, and I’ve been thinking for a while if I should add official support for it, or because technically it does everything my input system does, and a lot more I should just swap out mine for it. Do you think this would make the menu system significantly better?

Input supports a vast amount of controllers and has a ton of amazing features. Competing with it would be very hard to do. I don't think including juju's input in this project would be the best idea since you don't know what "verbs" the player will be using. However, I think that supporting other input systems would greatly add to the value of this asset. The menu system itself is where this asset really shines. I was hoping that there would be some configuration where I could provide my own functions to control the menu such as:

    controls = {
        up: function() {
            return input_check_pressed("up");
        },
        left: function() ...
(1 edit)

Using latest version of GM (IDE v2022.6.0.23 / RUNTIME v2022.6.0.23) and using the YYC compiler. I get the following error:

___________________________________________ ############################################################################################ ERROR in action number 1 of  Step Event0 for object oMenu:  Variable Get 3 (100154, -2147483648)############################################################################################ gml_Script_anon_Controls_gml_GlobalScript_Controls_347119_Controls_gml_GlobalScript_Controls (line 147) gml_Object_oMenu_Step_0 (line 127)

EDIT: This was using the default demo project downloaded from here.

(1 edit)

I did some testing and it works for me, same version same compiler. I found some posts online that suggest using the VM compiler, which might fix it for you. Or maybe you could try updating your Visual Studio version, I tested it with the 2022 Community Edition.

(5 edits)

I forgot to mention, but this was when clicking on settings and then controls. That was working for you? Thanks for the reply I will look to see what VS I have.

EDIT:  I did need to update VS (now ver 17.2.6), but still same error. I'm now going to just try VS 2019 Community.

EDIT 2: Yeah, not sure what is going on. Neither VS 2019 or 2022 solved it. Still got same error for both. I've ensured I cleaned before each build. I don't know. I guess I'll try a full reinstall of everything. I did a full reinstall of everything and that changed nothing.

I finally found the bug, it should be working now.

I don’t even know why it worked with the VM compiler in the first place, the code was trying to access a variable which didn’t exist in that scope. Anyway, GameMaker is weird sometimes. Please tell me if it works now.

Yeah, that fixed it. Thanks for the quick response.

I'm going to implement the fix into my game. Was the fix just changing the one line from:

page[i] = [name, new oMenu.Input(in_sys, name)]

to:

page[i] = [name, new Input(in_sys, name)]

or was there more to the fix?

Thanks again!

Yes, just remove the oMenu. and it’ll work.

(+1)

Hello  Milian, 

We are using the menu in our internal project and it has been very productive to use.

But we have run into a problem in the pause menu, the options, set to undefined, although invisible, are still selectable.


Can you help me with how to solve this? 

This bug was theoretically fixed in the last version, so try downloading it again. If it still happens, let me know.

I downloaded it only a few days ago, so I will be checking again if the version I am using is more current or not.

I would like to purchase this framework, however. does the Mouse navigation update posted last month cover mobile exports?

Hello, I unfortunately do not have the mobile export license, so I cannot test it out, but I looked into it and mouse functions should translate to touch when run on mobile, so theoretically it should work. If you purchase it and encounter any issues, I can help fix them. It would be good to know if it works on mobile anyway. If we can’t get it to work, there is an option for refund.

(+1)

Hello! I used your code asset in this project! Thank you so much for your work and excellent instructions!

Link: https://2-bit-determine.itch.io/ragnor

Thanks for sharing. I’ll definitely check it out!

Apparently, I had a bug lol 

I found it and fixed it! I'm not sure if you were able to play, but please try again. 

I tried it, pretty good game, I wrote you some suggestions on the game page. By the way, can I put your game into a “games made with the system” section? You would be first.

yup!

Hi, is there any chance you upload an example? I bought the pack but it's hard to start with zero examples.

(4 edits)

Hi, here is an example for the menu layout in the docs. I’ll also upload the demo I used in the promo video soon.

(Edit) The example project is now available.

Thank you. Can i ask you where are you from ? I have  a couple of siblings that have the name Milan.

I’m from Hungary.

Nice. One more question is there a release checking method? I saw there is pressed and down but some of my scripts use release buttons would it be possible to add this?

It does not have it currently but I can add it to it if its important to you.

Hello milan, how are you? I bought the asset here and it is very complete.

I had two difficulties.

First that for some reason every time I start the menu with the control on it jumps to the second menu item.

Second, I would like to make the menu work with the mous as well.

I am also having trouble getting the menu aligned to the bottom left, as an example.

(1 edit)

Hello, I’m glad you’re happy with the asset.

So I couldn’t figure out why is the first issue happening to you but try setting oMenu.menu_option to 0. For instance, in another object’s create event which gets created later. It’s not an elegant solution but I think it’ll work.

So the menu doesn’t work with mouse control, and it would be hard to implement it but if you really need it I can add it in the next update.

And the bottom left thing is a bug so I released a patch for it, so download it and adjust the menu_pos x and y in the look struct in oMenu.

I hope it helpes.

Hello, firstly your assets helped me to save a lot of time thanks.

On the question of control jumping to the second item can be a problem in my control too, I will test on other controls. But you are bound by the solution.

The question of the mouse is not necessary, and that for some types of games this may be interrelated.

About x-axis alignment thanks!

I would have some suggestions if you don't mind, these are things that I can implement here in the company. But perhaps for someone with less experience you may have a little difficulty.

They would be:

- Be able to pass a parameter to the main menu to load only as text without having the rectangle around it.

- On the button, you have the option of passing a sprite to use as a 9slice, instead just draw the rectangle of the button.

- On the slider you can use a sprite on the balls that you modify.

- In the input controls, we have the check and the pressed, in some cases we may want to use the released.

Remembering are suggestions.

Okay, I’ll consider them.