GreyHole Christmas hat

Menu Options – DevBlog #6

GreyHole - #DevBlog - Menu Options – DevBlog #6

Hello internets,
the last week has been busy and I implemented a few more options the menu. It was -again- quite some work, and the end results are not too flashy to show off in a dev blog. But I will cover them briefly while you may adore or hate Gilbert’s new Christmas themed hat(as seen in the featured image).
I struggled with the menu for quite a few DevBlog entries now (DevBlog#3, DevBlog#4 and DevBlog#5). It may be a never ending topic…

The first menu option that works quite well now is the one to change your key bindings. I had a few issues with it that ate quite a lot of time. The first version of the rebinding feature had the player use one of the use-keys to enable the input, then then use the use key again to validate the input. That came with a few problems: it made rebinding use-keys impossible and it provided a not too intuitive behavior, often resulting in giving wrong inputs and having to redo it over and over. I changed it, so the player enables the key-input with the use-button, then recognizes the keyboard_lastkey directly after that and directly rebinds the function to that key. This way it’s set directly and there’s no more hassle of activating and deactivating the input. To round it up, the rebinding is now functional as well and not only visual.

Menu Options - Rebinding Keys
Menu Option: Rebinding Keys

I have redone the way On and Off switches in the menu behave. They now trigger directly on input. As I followed @FCosmonaut‘s tutorial quite closely I had it working similar to the shift option before. Again here you had to activate the input, then use the left and right inputs to change the value and deactivate the input again. For my liking that was a bit too much button pressing for a simple On/Off switch. I also changed the visuals a bit:

Menu Options - On Off Switch
Menu Option: On/Off Switch

The last element that still needed some minor tweaks was the sliders. These I use for volume control. Not much to report, I just changed the way it saves the variables to have effect on the sounds. It looks like this now(and works ingame):

Menu Options - slider
Menu Option: Slider

With all the modules now working I went on and implemented the actual scripts for the underlying functions for the corresponding menu options. Now I have almost all general options working I planned:

  • Key Bindings
  • Anti Aliasing
  • VSync
  • Master Volume
  • Soundeffects Volume
  • Music Volume
  • Music Mute
  • FPS settings (30 and 60 fps)
  • Fullscreen zoomed

All these menu options do not sound like much and are basic functions any modern game has to provide but it presented me with quite some challenge. The last aspect on that list for example. Being able to play the game in full screen mode is a must. But how to handle that? Keeping the aspect ratio of the game? Stretching it to the screen? Do I stretch at all or do I just zoom in/out? There is no easy perfect solution. If you zoom into half pixel steps it gets blurry, if you don’t stretch you get black borders that are ugly. The best solution would be to have several sprite sizes for different resolutions and load them accordingly…
It seemed too much work to redo all the assets so I opted for the zooming method. Now if you go full screen you see way more of the playing field (depending on the screen resolution). The next thing in this department will be adding some kind of fog of war or a view restriction that makes playing on a huge screen not too much of a reduction in difficulty.

Grey Hole Title Art Placeholder
GreyHole Title Art Placeholder

Besides working on the menu options I recently remembered that I had a Wacom Graphics Tablet somewhere in one of my desks. Years ago I got it for quite cheap but had to get it off my desktop to make room for other things. But not it comes in super handy. It is a bit weird to use in combination with Inkscape but it creates quite a unique style for me when I try. Just yesterday I doodled together that horrid title art placeholder thing. (Please don’t judge me on that one.)
My time got eaten away by setting and cleaning up my desktop and then installing drivers and configuring a three display workspace with the tablet screen connected. I am quite satisfied with how it turned out but I had not too much time left to actually produce some valuable art (besides the Christmas Hat).

GreyHole Christmas hat
GreyHohohole – Gilbert’s new hat

That’s it for now. Maybe the next time I am posting I will be able to show some progress on Highscores or the naming system I have planned. First few trial and errors resulted mostly in errors so nothing on that in this BlogPost for now.

Thanks a lot for reading this wall of text about nothing substantial again. Urgh menu options.
Kind regards


If you like this entry, you can also read up the follow up “Highscores and Saving” or the previous blog post “Finite State Machines in GML”. You can also sign up the newsletter, so I can inform you about new blog posts.

GreyHole - #DevBlog - Menu Options – DevBlog #6
Please follow and like:

Leave a Reply

Your email address will not be published. Required fields are marked *