Asset - Project Free Asset - Monastery Framework

Kezarus

Member
Monastery Framework

OBJECTIVE
Create a framework project on GM2 that have some useful functions, GUI elements (buttons, panels, containers), basic Options menu, start Ini files that houses preferences, the basic setup for music, sound and particles.

DESCRIPTION
Ok, I will have to do something like that for me, so I plan to make a humble pack with what I deem basic functions and put it on the marketplace. I do not plan to profit on that, but help people with basic things that I find frustrating that GM don't have.

If you want to help, I would like to kindly ask you to:
  • Ask for features (yes! what do you think is important and basic?);
  • Help me keep functions and nomenclature inline with what is to be expected;
  • How I could well document it;
  • Give proper credit if need be;
  • General advice;
I didn't find a basic framework like that, just bits and pieces scattered that I have to sew together. If I am wrong, please point it out. =]

CONTENTS
This list is a work in progress. It could be improved, some features could pop in or out.

Live Backlog and Dev Diary.

Functions
  • chance( percentage ): returns true or false depending on a random chance
  • wave( from, to, duration, offset ): returns a value back and forth in a duration based on time
  • jump_to(distance, direction): teleports an instance to a x, y
  • alert( str, real ): a quick and short debug message
  • split(string, delimiter): return an array of string based on a delimiter
  • nine_slices( sprite, x, y, width, height): creates a tiled image, good for buttons and panels
  • screen_shake: a basic screen shake that moves the camera by x, y and angle for a time
  • draw_text_outline: draw a text with a border
  • draw_set_font_ext( font, colour, halign, valign, alpha ): a short version of a paragraph that I use to write everytime I have to draw some text
GUI
  • Panel
  • Button
  • Slider
  • Checkbox
  • Textbox
  • Content panel: that scrolls for objects and texts
  • Modals: a box that pops out that freezes the game, show a text and ask a question
  • Basic options menu
    • Sound
    • Music
  • Profile
    • Preferences (save ini)
Basic:
  • Sound system setup

Some of these features I already made myself and use them quite often, but in GM1.4. Share your thoughts! =]


Cheers!
Kezarus
 
Last edited:

Samuel Venable

Time Killer
TL;DR are you just looking for assets to put in a convenience bundle?

In the case of modals, feel free to bundle my Dialog Module extension as a part of this.
https://www.dropbox.com/sh/h1z7qmn2r7semj7/AABEdXp58KL_4YqN_M2v1JVea?dl=0

That free dropbox link gets updated just as frequently as paid marketplace asset, and I have it on dropbox for people who don't want to or can't pay for it for whatever reason, (which is more or less a very loose secret now).

Screenshots and more details here:
https://marketplace.yoyogames.com/assets/6621/dialog-module
 

Kezarus

Member
In the case of modals, feel free to bundle my Dialog Module extension as a part of this.
https://www.dropbox.com/sh/h1z7qmn2r7semj7/AABEdXp58KL_4YqN_M2v1JVea?dl=0
Wow, really Samuel? I am flattered! Thank you. =]

Answering your question, in fact, I am planning to make most of things and put it in a bundle for people to use. I am really tending towards a free package with all these features. I will need that myself, so, why not share?

I just wish I could deliver a good thing for people to use. =]
 

Samuel Venable

Time Killer
Wow, really Samuel? I am flattered! Thank you. =]

Answering your question, in fact, I am planning to make most of things and put it in a bundle for people to use. I am really tending towards a free package with all these features. I will need that myself, so, why not share?

I just wish I could deliver a good thing for people to use. =]
Yep. As long as you credit me, the asset can be free or paid, in whatever way you want to do that, and if you ever happen to sell it, you don't need to share any profits with me. The C++ and Objective-C source code is included with the extension package inside the zip's. (Also available on Github). Normally I don't require crediting, but that's only when people use it in their games or software. When including it in a bundle or in the case of just redistributing my work by itself as well, I prefer to be mentioned. When the asset package of yours is complete, by all means let me know in a PM and I can link to your project from my asset's page to make it all the more accessible.
 

Kezarus

Member
Well, did some work and refactoring for easy of use. All panels and buttons use a randomly generated 9-slices function that gets a pools of options and draw the GUI. I am thinking about make a function for animated 9-slices but I am not sure about the exact need for this, so I am open to sugestions about this. =]

Apparently I can't draw a button to save my life (I tried)... so I'm using Kenney's for now. Also I am very undecided about the font. But, all could be customized on the framework user's side anyway. ¯\_(ツ)_/¯

I am keeping a live Backlog and Dev Diary if anyone is interested. And a private git that I plan to make public when things are done. =]

Here is a little example.

upload_2019-11-21_20-52-29.png
 

Kezarus

Member
I made this "slide's bonanzza" abomination just to show that sliders are ready and fully customizeable. All drawn with 9-slices.

upload_2019-11-24_11-5-39.png

All you need to do is create the instance, throw the parameters at it and voilà.
upload_2019-11-24_11-8-41.png
 

Kezarus

Member
Just made and Easy GUI update. You draw the components in the room editor, the components understand and translate that to what they need.

Seems complicated but it's was really simple to make. And it will be easier to the user that prefer the room editor (not my case =O]).

upload_2019-11-24_17-39-56.png

upload_2019-11-24_17-42-35.png
 

Kezarus

Member
Did a lot today and I plan to keep trucking and finish this before the end of the year. =]
  • Pause Object: call it and the game is paused, destroy it and the game is unpaused
  • Modals: call a function to pause the game, ask a question, obtain an answer, unpause and callback an event
  • Initial room: to load what is needed
  • Monastery Logo
    sprMonasteryIcon.png
  • Sound: for buttons and typewritter effect. Also the basic setup and load function
There is more to come. If you want to see what was done and what will be, check out my docs Backlog and Dev Diary.


See ya! =]
 

Kezarus

Member
I am almost finishing the framework. Just need to document it and it's done!

Take a peek: link

I also would like to get the code reviewed by any of you guys. If you want to help just let me know and I send the link with code to you. =]

Cheers!
 

Kezarus

Member
Hey people! Monastery Framework is done (for GM v1.4 at least). It have full documentation. Any insight is welcome.

The GM v2 will be coming next. I plan to spread it through the marketplace, itch.io and Git.

Use this as you please, free of charge. Just credit me in your game, nothing more.

Documentation

Git GM v1.4


p.s.: @Samuel Venable, I will use your modals on the GM v2 and credit you. I didn't forget it, and I am very thankful for your offer. =]
 

Kezarus

Member
Ok, converted and tested. Anyone that would like this can clone the project and use it! =]

Git GM v2.0

Will post it to the marketplace as soon as I can. (it's down for me =/)
 

Kezarus

Member
So, I though that I finished the Framework, but I was having some conversation with some forum members and my brother on what else I can put in it. Those are the ideas:
  • Particle System Setup and Playground (where you can test some effects and get the GM code out of it)
  • Multi-Language support (with japanese, chinese and cyrillic)
  • Rebindable Keys on Options menu (basic "wasd" and "fire", control support too)
What do you guys think about it? Is it too much? Should I put more basic things?

I plan to do these only on the GM2 version. If anyone ask, I can port it to GM1.4 too.


Danke! =]
Kezarus
 

Samuel Venable

Time Killer
There's important bug fixes for multiple monitor setups and macOS Catalina support added to Dialog Module and File Manager which may be downloaded here: https://www.dropbox.com/s/lfgcoqpn19qwkon/DialogModule.yyp.zip?dl=0

I couldn't update my asset to the marketplace due to a problem with the site currently. You can simply grab the "extensions" sub-folder from that zip and replace the one you currently have with it in your uploads.
 
Last edited:

Kezarus

Member
There's important bug fixes for multiple monitor setups and macOS Catalina support added to Dialog Module and File Manager which may be downloaded here: https://www.dropbox.com/s/hkd83ko1rpxz2pb/DialogModule.yyp.zip?dl=0

I couldn't update my asset to the marketplace due to a problem with the site currently. You can simply grab the "extensions" sub-folder from that zip and replace the one you currently have with it in your uploads.
Thanks Sam! Will do. That modals of yours are amazing and saved me a LOT of time and trouble, specially with the color picker. =]
 

Samuel Venable

Time Killer
Thanks Sam! Will do. That modals of yours are amazing and saved me a LOT of time and trouble, specially with the color picker. =]
You're welcome! I'm glad I could help!

Edit:

I haven't checked the documentation, but it needs to be mentioned somewhere after a dialog box function has been called, in order for the game window to regain focus, you need to clear keyboard and mouse state:
Code:
keyboard_clear(keyboard_lastkey);
mouse_clear(mouse_lastbutton);
io_clear();
Also the devs need to know the dylib on mac is not codesigned, they will need to do this on their end for the two extensions to be useable on Mac.

Other than that, you're good to go!
 
Last edited:

Samuel Venable

Time Killer
I added support for async dialogs of every function, and support for GMS 1.4 if you wanted to add these changes to your asset:


I will be updating this asset more as time goes on, if you don't want to include certain updates I publish for whatever reason just let me know and I'll stop pinging you every time I publish an update.
 

Kezarus

Member
Hey Sam! Keep me posted if you can. I will update the GM 2 version whenever you send an update.

Those files above, should I subistitute them on the project?

Thanks a ton! =]
 

Samuel Venable

Time Killer
Yes, the files I just sent are the update. You can just drag and drop into the dialog module extension folder all the files from the newer version and overwrite the current ones. The modal dialogs haven't aged well and recent versions of GMS2 haven't played nice with it, which is why I created the async versions which dont have the same issues. I haven't been able to update it on the marketplace yet because the uploader hasn't been working for me.
 

Kezarus

Member
Hello good people of GM Forum!


I have just updated Monastery Framework to GM 2.3. I hope you like it.

Additionally, I would like to know your opinion about it. Is it good? Is it easy? Is the code intuitive? How could I improve it?

I am planning to add cameras with zoom and panning too. I use it in a lot of other projects. What do you think?


Cheers!
Kezarus
 

Kezarus

Member
Hi all!

I am thinking about in adding more thing to the Framework and would like some opinions.
  1. Camera with zoom and pan
  2. Json Importer: a way to import variables into global maps (useful for mods)
  3. Sprite Importer: a way to import sprites into global maps (useful for mods)
  4. Display manager: remove the struggle of initial letterboxing
Thoughts?
 

Kezarus

Member
Hmmm, should I update my Framework 9-Slices to GM nine slices?

Mine have random parts that can compose an image. That's the only thing lacking. Hmmm.

What do you people think?
 

Cliff3D

Member
Yes, yes you should update to use GM native 9-Slices IMO.

I've only just found this thread having thrown my hands in the air trying to find a suitable cross-platform GUI solution in the marketplace. It seemed littered with partial and/or OS-specific solutions, where all I wanted was a few controls that will respond suitably to various inputs (keyboard, mouse, touch screen). Far too much effort downloading package after package to see, basically, if they work!

I fear even Monastery may not be compatible with Android :(

How did I find this thread? I've been working on enhancing and extending a "Buttons 2.3" tutorial by SamSpade to produce a package to my own requirements. So of COURSE someone is already doing a fuller set! LOL

Specifically I'm having a problem with keyboard_string in Android - my text box works fine in Windows (for a given value of fine) But in Android I can never get the input to less than the first character typed. My own bug, I'm sure, but it's puzzling me.
 

Kezarus

Member
Ow, I'm postponing this update for months now. It's in my Backlog though. My fear is that I will lose some functionality (random borders for my 9-slices). But the standard should be the GM 9-slices.

Thanks @Cliff3D, maybe this is the push that I needed. =]

About Android, hmmm, I'm sorry, I have zero experience with it. Maybe the asset of @Tthecreator is cross-platform enabled. I think the name is ZUi if I'm not wrong. Have you tried it?

Cheers! =]
 

Tthecreator

Your Creator!
My Asset should work on mobile, it has important features where you can size an object based on real life size (dp) or based on proportions (fc).
It doesn't have any of the new mobile-friendly features introduced in GMS2 unfortunately, and I will try to work on that sometime this summer.
I'd say give uiZ a shot: https://github.com/Tthecreator/uiZ
 

Cliff3D

Member
My Asset should work on mobile, it has important features where you can size an object based on real life size (dp) or based on proportions (fc).
It doesn't have any of the new mobile-friendly features introduced in GMS2 unfortunately, and I will try to work on that sometime this summer.
I'd say give uiZ a shot: https://github.com/Tthecreator/uiZ
Thanks Tthecreator - I've watched the first few tutorials and have to say that the combination of "just running to show something" when first loaded, plus the readme, an very much plus the video tutorials are outstanding. This is however, I suspect, far more serious than any game I'd be requiring a GUI for.

I just wanna be able to draw a few buttons, check boxes, text input boxes and labels, specify how to get from one to another (except the labels) using the keyboard, mouse, and touchscreen. Simple menu stuff.

Nineslices has helped improve my admittedly basic initial button look.

What you've done looks... way impressive!
 

Cliff3D

Member
Just updated my Framework to use GM native nineslices. Have fun! =]
Thanks, I think native Nineslices should help. I really appreciate it being set up as a "package" to be imported into a project - that makes life a bit easier than it could be. But I must admit that I'm puzzled as to where and how to start. The 5-line "Note" file is empty, and I've failed to work out what I need to add to a room to begin (I tried a couple of likely looking candidates but they just errored out on running.

What I'm doing ought IMO to be real easy. Based on a tutorial by Samspace I can draw stuff on a room's surface, set a few variables, and run it.

I'm just working out how to work around an apparent bug in the keyboard_string usage under Android, but here's an example the version I send to my wife and son to test on their phones - draw and size on the room, set a few pre-defined variables, see on the screen when run. It'd be lovely to be able to see the contents of the objects while in the IDE though!

I'll own up that it's very limited and unfinished - but if I'd had it in advance then the simple menu for BlockedHR would have been easier. It's just that menu that sent me down the "How do I do this better?" path. Because it was far too much effort for a simple one-off game.

Cheers,

Cliff
 

Attachments

Kezarus

Member
@Cliff3D , yeah, GUI could be a huge pain in the ass and you usually waste a lot of time and effort to achieve the bare minimum. That's why I created my Framework. It helps me to not waste too much time. And also, why not distribute it for free? Here are a wiki that made for it too: https://github.com/Kezarus-tech/Monastery-Framework_GM2/wiki

Now, about your textbox issue with mobile. I really advise you to open a thread only for this, as I have zero experience with mobile and this thread is only show casing this framework that is not mobile-enabled.

I'm really sorry that I cannot help you with your issue. Good luck! =]
 

Cliff3D

Member
@Cliff3D , yeah, GUI could be a huge pain in the ass and you usually waste a lot of time and effort to achieve the bare minimum. That's why I created my Framework. It helps me to not waste too much time. And also, why not distribute it for free? Here are a wiki that made for it too: https://github.com/Kezarus-tech/Monastery-Framework_GM2/wiki

Now, about your textbox issue with mobile. I really advise you to open a thread only for this, as I have zero experience with mobile and this thread is only show casing this framework that is not mobile-enabled.

I'm really sorry that I cannot help you with your issue. Good luck! =]
Ooh thanks, I'd failed to notice the Wiki - that should be a great help, I'll hopefully check on it (looks at watch) after lunch.

I have indeed opened a thread specific to the string input issue on mobile, and am about to post my workaround to it in case anyone else has the issue.
 

Cliff3D

Member
My apologies - I got waylaid, but I am looking at the Wiki now.

Hmmm... I don't see how I could edit the Wiki, so be prepared for a bunch of nit-picky posts.

For example, at:

Monastery Framework · Kezarus-tech/Monastery-Framework_GM2 Wiki · GitHub

could you consider changing:

"As long as you can use the sprites and objects as they are"
to
" Although you can use the sprites and objects as they are"


OK. The Wiki has a menu in this order:



It seems to me as if "Monastery Framework" sould come before "Functions" as it comes across as a "Welcome" first page. Indeed, on the "Home" page these pages are listed that way:


See, I told you I was going to pick nits.

IMO "Functions" is an unwelcoming reference-style page - it would be nicer to have a gentle "This is what to do first" page right after the "Monastery Framework" page.

If I skip ahead, because things don't seem to be in order, to the "Objects" page very quickly I get the idea I can put an "objGUILabel" object on my page. So I do, then I run it and get the following error:

############################################################################################
ERROR in
action number 1
of Create Event
for object objGUILabel:

global variable name 'language_font' index (100063) not set before reading it.
at gml_Object_objGUILabel_Create_0 (line 5) - fontType = global.language_font;
############################################################################################
gml_Object_objGUILabel_Create_0 (line 5)

OK, I think. With the minimal (pathetic, small) GUI that I put together using Samspade's old tutorials I know I need to put a "manager" or "controller" object on the room first (and a second, different one if I want to add keyboard control). So I theorise that I sould look around more for the "welcome - let's get started" page.

Is it "Language Support"? This looks like it has some early steps to gently lead me, so I'm going to theorise.

Steps:

1. I imported your whole package, so all of your language files are "included files", including "English.txt"

2. OK, I searched for pnlLanguage and checked the Create event - again, it includes :
arrLanguages[0] = "English";
Do I need to create an instance of this object? I'll leave it for now as I'm not told to.

3. At the begining of the archive put the font-family that it should use. Like so: |LATIN
I'm sorry, I don't understand that. What's "the archive"?

"beginning" should be "beginning"

I'll do a search. I THINK step 3 should be worded something like:

3. At the start of the lang_load script (in Framework->Essentials->Language) specify the font-family that should be used. For example:

global.language_font_family = "LATIN";

This (^) I have, and it's my best guess so on to step 4.

4. There are some fonts there, I'm going to assume they're OK as a starting point.

5. This font family is setup by lang_font_load. So be sure that they are correct

OK, yes - I can see where that happens but... I can't see how the German or Portugese languages are selected.

6. The language archive is a key/value pair separeted by "|"(pipe). So if you want a text in portuguese to apear saying "Goodbye", you shoud use: Goodbye|Até mais. This makes easier for you when coding some text instead of adding a cryptic key like: 556|Até mais. It works but will drive you crazy in the long run. So put a key text that makes sense!

I would suggest:

The language archive is a key/value pair separated by "|"(pipe). So if you want some text in portuguese to apear saying "Goodbye", you shoud use: Goodbye|Até mais. This makes it easier for you when coding some text instead of adding a cryptic key like: 556|Até mais. It works but will drive you crazy in the long run. So put a key text that makes sense!

I think I can ignore that for just putting a label in a room (my current first test).

7. Whenever you want a text to show it many translations setup by the Language Support just use the lang() function. And give it the key that you want. your code should be like this at the end: var text = lang("Goodbye");

OK, not something I need to do now...

We now go on to other paragraphs.

"These variables shoud NEVER be changed outside of the Framework. Don't do it."

OK - please change to:

" These variables should NEVER be changed outside of the Framework. Don't do it."

Otherwise, warning noted.

"You can (and should!!!) modify this screen for your game. The only important things is that you need to call lang_load() passing the archive name without the extension."

AH!

Maybe I need to call lang_load to initialize the language in order for my label to work? Let's try it in the room creation.

Except - what does "archive" mean here?
Let me look at the lang_load function...

OK, it's looking for the name of the language file without the extension - so in my case "English".

In the room Creation Code I put:

lang_load("English");

It would be nice if argument0 for the function were documented.

Save it, run it, I get this error again:


___________________________________________
############################################################################################
ERROR in
action number 1
of Create Event
for object objGUILabel:

global variable name 'language_font' index (100063) not set before reading it.
at gml_Object_objGUILabel_Create_0 (line 5) - fontType = global.language_font;
############################################################################################
gml_Object_objGUILabel_Create_0 (line 5)


There are various things I could try more-or-less at random, but honestly... I'm lost :(

I've removed the code I put in the room's Creation Code because that obviously didn't help.

What next boss?
 
Last edited:

Cliff3D

Member
OK - let's throw a button on the room instead and see what happens. Obviously if I run it then it will not work, because there is some init step that I am missing, but the button design initially is a much nicer default than the "plain white" I have been working with. but it doesn't look good resized.

Applying native 9-slice makes it much better.
 

Attachments

Cliff3D

Member
Ah - sudden thought. "archive" might be "dictionary"? Basically "language file"? I'll try to take a look inside a couple of the included language files (hopefully tomorrow) and see the format.
 
Last edited:

Kezarus

Member
@Cliff3D, hi mate. I fully admit that I have issues understanding your exact problem. I'm sorry. 😅

But I think that you are having problem with an initial setup. Is that it?

If so, please put the roomInitializer as the first one and voilà. All things will be loaded. Then on objInitializer put the room that you want to be the first on your game. Now it's like so: room_goto(roomMainFramework); Change to a room of your game.

Hope that helps.


Cheers
 

Cliff3D

Member
That's it - I need to make it GO! (do something. Anything). Starting with a new project that has nothing in it but Room1 and adding Monastery.

OK - set roomInitializer to the top/first/startup room.

It already has an objInitializer on it, so let's look at the Create code of the object. OK, last line is:

room_goto(roomMainFramework);

That room exists, so that should do. Run the project and I get:

############################################################################################
ERROR in
action number 1
of Create Event
for object objInitializer:

Variable objInitializer.AlwaysOn(100960, -2147483648) not set before reading it.
at gml_Object_objInitializer_Create_0 (line 4) - audio_group_load(AlwaysOn);
############################################################################################
gml_Object_objInitializer_Create_0 (line 4)


"AlwaysOn" seems to be an undeclared variable?

So if I edit the top two lines to read:

/// @description CREATE YOUR GLOBALS AND ENUMS HERE
AlwaysOn = true;

and run it I get some rather pleasant Monastery-type vocals and:

___________________________________________
############################################################################################
ERROR in
action number 1
of Draw Event
for object objGUIPanel:

This function can't be used to draw sprites that have nine-slice drawing enabled
at gml_Script_draw_nineslice_tiled (line 47) - draw_sprite_part_ext(sprite, choose(0, 0, irandom(wSprNumber)), slice_width, slice_height, min(slice_width, x2-xx-slice_width), min(slice_height, y2-yy-slice_height), xx, yy, 1, 1, color, alpha); //Middle
############################################################################################
gml_Script_draw_nineslice_tiled (line 47)
gml_Object_objGUIPanel_Draw_64 (line 2) - draw_nineslice_tiled( sprite_index, buttonLeft, buttonTop, buttonRight, buttonBottom, image_blend, image_alpha, mySeed );
gml_Object_objGUIButton_Draw_64 (line 1)



so... I'm thinking there's a bunch of variables that are not setup by default, that I need to discover and declare? And I should not have enabled 9-slice on the button sprites in GM lol :(

OK, up and running now - AlwaysOn was today's stumbling block, it seems to be working nicely now ta :)
 
Last edited:

Cliff3D

Member
OK - so I run.

Click the "Donate" button in the lower left - and I get the attached error.

OK, back to the Monastery and click Options.

Drag music slider left and right, fine.

Drag Sound left and - oops:


___________________________________________
############################################################################################
ERROR in
action number 1
of Other Event: User Defined 2
for object sldSound:

Variable sldSound.AlwaysOn(100960, -2147483648) not set before reading it.
at gml_Object_sldSound_Other_12 (line 3) - audio_group_set_gain(AlwaysOn, valueFinal/100, 1);
############################################################################################
gml_Object_sldSound_Other_12 (line 3)
gml_Object_objGUISlider_Step_0 (line 20)
 

Attachments

Kezarus

Member
I don't know if I get happy or sad that no one else reported these issues before. 😅

Well, AlwaysOn is an Audio group. Go to Tools >> Audio Groups and create AwaysOn if that's not there. It's veeery strange that's not there. O_O

Just clicked the donate button and it send me to this URL. Can you confirm that it's the same one, please?

Maaaaybe your Monastery version is not up to date or I messed up something when I updated it last time (it was too easy to be true... lol)

Thanks for the help, mate!


Cheers,
Kezarus
 

Cliff3D

Member
The thing about me is that I haven't been following as you developed Monastery - so I have no projects already set up to use it, nothing that might "accidentally" make it work despite changes made after I started following you.

I'm also a complete idiot. I do stupid things like... ooh, I wonder what will happen if I push this big red button labelled "DO NOT TOUCH"?

Perfect for testing stuff - but also very irritating because I break everything :D

Right - deleted my

GML:
AlwaysOn = true;
hack line, and created a new audiogroup in GameMaker2's "Tools" menu. The only audio group there was "audiogroup_default".

The URL you provide in your post:

https://www.paypal.com/donate/?hosted_button_id=FLUN9247H623L&source=url

works for me - but the Monastery link within the framework itself does not. It points to:

https://www.paypal.com/donate/?cmd=_s-xclick&hosted_button_id=AKXWGHSAS2UUL&source=url

You can see this in the address bar in the screenshot that I posted, if you look closely.

That might account for why so few people have been throwing money at you (sorry, I don't intend to throw money, I was just seeing what happens if I click the big church-shaped button).

PS I don't mean I'm following you. I'm not some creepy stalker, I just have some interest in being able to throw some GUI bricks in a room and hope they become navigable automatically.
 
Last edited:

Cliff3D

Member
OK - well I'm starting up the main menu just fine and have some thoughts.

First off - in "GUI Elements" you have what I would call a "Text Box" where text can be entered. While I find it irritating to have to delete the phrase "Type Text Here" I LOVE the moving cursor. If I take "my" GUI any further than I have I will have to think about how I might achieve that (mobile does not respond to most keypress events so one has to use "keyboard_string" - and I don't think I would be able to replicate string editing using just that feature). (in my version "Type Text Here" would only appear when keyboard_string is empty - it vanishes when the user types anything and re-appears if the user deletes all they have typed).

That you could write an editable TextBox in GML had not even occurred to me! Doh! I blame the fact I'm writing with an eye to mobile.

OK - back to the main menu and go into "Modals". Press "Pause". Ah! The room has gone black! How do I unpause?

Stop the GameMaker2.3 project. Run again, go in to Modals again.

If I click "Modal OK" or "Modal OK/Cancel" or "Modal Many" I get:


___________________________________________
############################################################################################
ERROR in
action number 1
of Alarm Event for alarm 0
for object objModal:

Variable objModal.fontType(100568, -2147483648) not set before reading it.
at gml_Object_objModal_Alarm_0 (line 3) - draw_set_font(fontType);
############################################################################################
gml_Object_objModal_Alarm_0 (line 3)
 

Cliff3D

Member
Wait - I saw this before but forgot to check. In the Monastery main menu page you credit Kevin MacLeod for the music. Which is bizzarre. Because.

I love a little game called "Blocked" which was written for a little handheld gaming device years ago. These things age they tend to die over time, but I couldn't play the game on anything else because (as far as I know) it hasn't been ported to anything else. The gameplay is catchy IMO - especially with my preferred graphic set, and the music is also catchy.

I did actually have a look around to see if I could find the original developers of "Blocked", but I failed.

"My" first fullish GameMaker game is my interpretation of that game, but aimed mostly at mobile (but also works on Windows with a keyboard and mouse). I quite like my version, and relish being able to play the game on my phone without having to carry around another device just for playing Blocked.

However, I dislike my menu. It LOOKS OK, works with touch, keyboard, mouse - but the actual code is messy. The game code itself I am happy with, but my GUI code - eugh :(

I couldn't understand why there are no simple "buttons" on a window to draw on the room, and the GUI was thrown together in a rush at the end. Because it's boring. So once I had it working "well enough" I set about trying to find either a "Package" to do the GUI for me (either "next time" or to slot in instead of my current scheme) or a tutorial to help me type up my own. Which has led me to SamSpade's tutorials and, eventually, to here.

The music to Blocked is also very catchy. It's one of the reasons I got hooked on the game. For a long time my wife and I called the game "Rink dinky-dinky dink" because that was more memorable than the game's name. The music is by Kevin MaLeod. So now I have Kevin's URL! Brilliant!

Cheers,

Cliff
 

Attachments

Last edited:
Top