Binsk
Member
Howdy! Take a gander!
NOTE: This system is currently in alpha and will be on sale until the beta! Because of this there will be bugs and missing features. Please report any issues / suggestions to [email protected] or post them in this forum topic, thanks!
GameMaker Marketplace
Itch.io
About
This is a Local Windowing Interface system that aims to give GameMaker: Studio 2.3 easy-to-use but feature rich interface features!
The system is designed to auto-scale and adjust for multiple screen sizes, render only when updates occur, and handle all input events through a passive signaling system. You need only spawn your element and set some properties to be well on your way. The combined anchoring / margin system handles positioning all elements in their proper places.
Not all elements are yet implemented or implemented fully. The currently implemented elements / features are as follows:
The entire system is based on a tree structure. You can attach elements together and each element will base its position and scale according to the parent. All children are aware of changes to the parent so features like disabling an element, toggling visibility, changing theme, etc. is auto-managed for the children as well.
The system knows when elements update as well thus only calculating position updates and re-rendering pieces that are necessary.
Input events are handled through 'signals'. Each element contains a signaler that you can attach a method to. So, for example, you can attach a popup's 'set_visible' function to a button's 'pressed' signal so that the popup becomes visible whenever the button is pressed.
Lastly is the grouping system. You can create an LWIGroup structure and attach it to any element. Certain elements will behave differently depending on if they are in a group. For example, checkboxes will convert to radio buttons. Button-based drop-menus will know to auto-open when hovered over if one in the group is open, etc.
Future Features
There are plans to greatly expand included elements, albeit it is quite simple to create your own custom elements by inheriting any one of the included structs. Some further planned elements / features are as follows:
Platform Support
This has currently been officially tested on Windows and Linux. HTML5 and, hopefully, Android will be supported down the road.
I generally include external documentation for my extensions but my doc generator requires an update for GameMaker: Studio 2.3. Until I can rewrite it there will be no online documentation. However, I have included extensive function / struct headers, a few notes to introduce you to the system, and a heavily-commented example setup.
Feature Requests
This project is currently in alpha because I want to get feedback! If you use the system and are really itching for a feature or think something could be designed a bit better, please let me know! I will be actively monitoring requests.
NOTE: This system is currently in alpha and will be on sale until the beta! Because of this there will be bugs and missing features. Please report any issues / suggestions to [email protected] or post them in this forum topic, thanks!
GameMaker Marketplace
Itch.io
About
This is a Local Windowing Interface system that aims to give GameMaker: Studio 2.3 easy-to-use but feature rich interface features!
The system is designed to auto-scale and adjust for multiple screen sizes, render only when updates occur, and handle all input events through a passive signaling system. You need only spawn your element and set some properties to be well on your way. The combined anchoring / margin system handles positioning all elements in their proper places.
Not all elements are yet implemented or implemented fully. The currently implemented elements / features are as follows:
- Theming and element styling system w/ per-element theme override support
- Panels / Buttons (icon, and text-based)
- Checkboxes / Radio buttons / Sprite-based switches
- Scroll bars / Sliders
- Text labels
- Line edit w/ cursor, highlight, popup, and limited shortcut support (further shortucts planned)
- Drop-down menus w/ multi-column, sprite, sprite column, and divider support
- Draggable containers
- Scroll containers
- Horizontal / Vertical alignment containers
- Surface containers (to include gameplay elements inside the interface)
- Tab containers
- Confirmation / Text input dialogs (more on the way)
- Signal system
- Element grouping system
The entire system is based on a tree structure. You can attach elements together and each element will base its position and scale according to the parent. All children are aware of changes to the parent so features like disabling an element, toggling visibility, changing theme, etc. is auto-managed for the children as well.
The system knows when elements update as well thus only calculating position updates and re-rendering pieces that are necessary.
Input events are handled through 'signals'. Each element contains a signaler that you can attach a method to. So, for example, you can attach a popup's 'set_visible' function to a button's 'pressed' signal so that the popup becomes visible whenever the button is pressed.
Lastly is the grouping system. You can create an LWIGroup structure and attach it to any element. Certain elements will behave differently depending on if they are in a group. For example, checkboxes will convert to radio buttons. Button-based drop-menus will know to auto-open when hovered over if one in the group is open, etc.
Future Features
There are plans to greatly expand included elements, albeit it is quite simple to create your own custom elements by inheriting any one of the included structs. Some further planned elements / features are as follows:
- Progress bars
- Scrollable drop-down selection menus
- Multi-line editor
- Rich text label (w/ BBCode support)
- Tree system for collapsible menus, etc.
- More dialogs (file open/save, color selector, and more)
- Smart element repositioning (so elements physically move w/ screen changes, not just change size)
Platform Support
This has currently been officially tested on Windows and Linux. HTML5 and, hopefully, Android will be supported down the road.
I generally include external documentation for my extensions but my doc generator requires an update for GameMaker: Studio 2.3. Until I can rewrite it there will be no online documentation. However, I have included extensive function / struct headers, a few notes to introduce you to the system, and a heavily-commented example setup.
Feature Requests
This project is currently in alpha because I want to get feedback! If you use the system and are really itching for a feature or think something could be designed a bit better, please let me know! I will be actively monitoring requests.
Last edited: