Log in with to leave a comment.

is this cross-platform? is it compactable with PS/Mac/android and IOS?


Are you still developing this?

(5 edits)

Looks great! I would love to see the roadmap list ready to work! I'm looking forward to updates!

support chinese?

Would you (or anyone already well versed in this) mind making a tutorial video on how to implement and use this in GMS2? I know the documentation helps, however, a video would be much better. Thanks.

This is amazing!! How many copies do I need to buy to fund the roadmap :P

A request: A boolean secret_value attribute for textareas which would allow you to display the text value as all asterisks. Would be very useful for login systems where the password needs to be hidden. Also useful for any game where you need to enter secret information, like submitting a prompt or wager.

Are you still developing this? This looks so promising but I was waiting for iOS support before I tried it. 


Shampoo’s still in development, albeit passively. I’m sitting on a half-complete update that adds a bunch of optimizations (like significantly faster text parsing) and extended non-desktop device support. I don’t have an ETA but questions like this motivate me to continue working on it :)

Great to hear. I am looking forward to seeing more of it.

Hi there! This looks fantastic, can't wait to play with it.

When I try to run the demo project (or a new project with a local asset imported, it's the same), I get this error:

[SHAMPOO ERROR!] Could not initialize the Shampoo framework! Reason: could not locate BASEDIR, C:\Users\Your\Directory\Here\datafiles\shampoo

Any ideas? I tried checking and unchecking the file sandbox setting the error mentions. I'm not sure what exact directory is being referred to here.

I'm on Windows 10 and my gm IDE version is and my runtime is


Hey! This should be an easy fix. It looks like you need to set the project directory in the create event of object obj_shampoo. Check out the Setup section of the documentation:

(2 edits)

If you get an error when running Shampoo in GMS v2.3.2.556, this one-liner should solve the problem until I push an official update.

First, go to function sh_tags_define in script ShampooAttrs.

Next, find the line (should be line 624) reading

var accepts_map = ds_map_create();

Underneath, add the following:

if (!is_array(accepts)) accepts = [];

Here’s a picture of what it should look like.

Having a lot of fun with this framework!  Do you have any tips on how I might make something that's not in a canvas visually?  For example if I have a screen already made and just need to add a few checkboxes to it, is there a way?  If I need to have a canvas, is there a way to adjust its transparency so it's invisible?  Thanks so much for your help.

Currently, the only way to make a canvas background transparent is this hacky workaround of assigning an invisible sprite to it. Hah :x Hopefully that’ll be okay for the time being

Oh that's perfect, I'll use that method.  Thanks for the quick reply!

(4 edits)

I can't seem to get hovering or clicking of buttons to work. Hovering doesn't change the colour, tool tips don't show, and clicking on buttons doesn't perform the function or open attributes. This happen with release mode on or off.

Any help is appreciated, here's my canvas for reference:

EDIT: So adding an open/close attribute to the buttons enables hover support, however, the scr attribute does not enable hover or click support. The script also won't run if the open/close attributes exist as well. Any ideas as to why this is?

EDIT2: Turns out the scr attribute can not run built-in Game Maker functions. I had to make a quit_game() function that just runs game_end() and it works fine. (I realized my initial pastebin has end_game as a typo, I tried game_end afterwards to no avail)

I can work around this. If it's not something you can implement then no worries, it's definitely not something terribly urgent :)


Hey Carson, I’ll add built-in GM function support to callbacks to my TODO list! I’m glad you were able to figure it out. I’ll also convey more clearly in the docs that a valid callback function is necessary for buttons/links in order for them to be ‘hoverable’ (it’s a failsafe to prevent crashes during live-coding by calling a non-existing function).

First, I love this framework, I've spent the last few days playing around with it. I'm really looking forward to scrollviews!

A couple of other things I'd love to see are the ability to change the mouse cursor on hover and some more control over sliders. In particular, the ability to manipulate the slider label a bit more and the ability to pad the end of the sliders so you can put a bit of a buffer between the knob and the edge. Also, I've noticed that if you click the bar when you don't have a knob then the value will jump to your click but with the knob you have to slide it. I like the visual appeal of the knob but not having to actually drag it would be great.

Finally, is the choice to have so many inputs block-style a design choice or a practicality choice? Because I would love to be able to create a checkbox field instead of having to put them in list form.

(1 edit) (+1)

Hey, I’m glad you’re enjoying the framework! I don’t have an ETA for the scrollviews update at the moment, but I’m also excited for them.

I had mouse-cursor manipulation mostly implemented prior to the framework’s release, but I scrapped it because I was getting inconsistent results on Windows and Mac. Maybe now I can look again with a fresh pair of eyes.

The knob-slider precision thing was intentional, but I’m not opposed to either reverting the decision or adding an optional attribute (like, precise) to enable/disable precision.

And block-style input started as a way to lessen the number of edge cases the framework would need to account for (element alignment, input handling, overflow to the next row, etc.). But I think enough code has been refactored from v0.9.0 to v0.9.2+ that would make non-block-style inputs practical. I’ll add investigating this to my TODO :)

(1 edit)

It appears that Sliders don't accept a `value` attribute? All values just set to 50 no matter what - even in your demo project. I'm guessing it's something to do with ShampooInput.gml:1387 where it detects that value is undefined no matter what, but I'm not sure.

I ran the debugger and it's not that function, it doesn't seem like it reads "value" from the document at all but I didn't have time to dig deeper. You could probably pin point it 10x faster than I could though.

I’ll have this fixed midday Friday EST most likely! Thanks for uncovering this, I should have caught this prior to release…

Fixed in v0.9.21, thanks for your patience!

The slider now accepts value=real, value={$var}, etc.

If you’re curious. The issue was that the slider tag accepted value-real instead of the value attribute. The value-real variant is an under-the-hood naming convention to prevent look up table conflicts. Now, value is auto-changed to value-real when detected in a slider tag.

That's cool, thanks for fixing that. I'm loving this system so far!

I've installed Shampoo into my working game and when I run it with the shampoo_obj in the first room, I get that window with the message "Hi there!" and a bunch of the tags, all in black text.  I don't see the pretty colours and things that I see in the demo project.  Do I need some third-party library or something?  Thanks!

(1 edit)

Hi, sorry to hear about the problems – haven’t heard of this issue before. A couple questions and hopefully we can get this fixed! First, can you verify the Shampoo demo works as intended on its own (outside of your existing project)?

Second, what OS and GM Runtime version are you using?


Thanks for the quick reply!  The demo project works great (after changing those things in the shampoo init function to point to the working directory, etc).  After importing the current version of Shampoo into my existing project and dragging the shampoo_obj instance into the first room, it shows all that welcome text but in black and with the tags. 

I've attached a picture so you can see it in action. 

The GM Runtime is the current one,, and I'm running off the current Mac OS 11.1

Thanks again for looking into this!  I love what you've done with this asset by the way!

Thanks for the info, that’s real odd… I’ll get to the bottom of this ASAP (I’m with some family for the holidays). I appreciate your patience

No problem, take your time! Since the demo project works, it’s probably a configuration setting in my game that’s causing this. One thing I can try would just be creating a new project and reimporting everything again to see if that works. I hope you had a great Christmas!

Hey sodabeam! Thanks again for your patience. Just now, I’ve successfully imported Shampoo into several existing projects of mine (one even converted from GMS 1.4 -> 2.3; different game settings; different directories, etc.) but can’t seem to recreate the issue. I’ll be investigating further. But until then, if you’d like a refund for your purchase, I have no problems with that :)

This  looks great! On GitHub, 'Scrollviews' is on the roadmap, by that do we mean essentially a dialogue/area with scrollbars vertically or horizontally? Me being a noob, that's plagued my GM experience :-) I'll likely buy before that's in but that will sell it.

Thanks! Yeah, that’s basically what I have in mind with scrollbars: horizontal, vertical, and panning with cursor/finger. In other words, scrollviews will (ideally) be rectangles with content inside that you can move around

Zack this looks fantastic.. A nice blend of html, markdown and bbcode :D

Is it possible to list a demo project to download and play with (just to see the popups, inputs, etc)?  Also I know you mentioned you do not have the android export, have you tried it (or own) the HTML5 export?


Hey Mickey! Getting Shampoo working smoothly with HTML5 is a big priority for me. Here’s an HTML5 demo of where it stands at the moment. The text isn’t sharp and the performance is pretty lousy when new menus are being generated

That's amazing!

Do you have plans to support Android?

While I don’t have the Android export module or an Android device, I do have plans on mobile support. Specifically, things like bringing up the keyboard when a text field is in focus.

Hi, yes i'll probably add Android support in the future.


My team is considering using this for an upcoming project, i'll update here with our experience if we do.