Skip to content

Features

Hyomoto edited this page Oct 16, 2020 · 12 revisions

Core

The basic module for all FAST functionality is Core. It serves to extend GML with functions to fill in notable function omissions (such as string_explode), a text parser and string formatter, a slew of wrappers for native data structures, garbage-collected data structure replacements, a simple event framework, and file and logging routines. All other modules rely on Core, and thus it is the only module required to use FAST.

Database

Working with external files to get data into GameMaker can be cumbersome and require a lot of code. Database provides a JSON-like language for writing external files with the addition of many convenience features. There is support for static values, inheritance and templates, and the ability to specify custom data types easily, thus expanding it to meet your own needs. The data loads into a DsTree, which allows retrieval via string paths, i.e. database.get( "enemies.goblin.health" ). The module is perfect for large data sets, such as RPGs or strategy games, where tweaking values can be cumbersome. Database can be re-loaded during runtime, allowing you to make persistent changes and see them reflected immediately without recompiling. Looking values up by string also makes a database a perfect fit for localization and allows users to write their own easily. Lastly, if you wish to allow modding in your game, databases allow this with no extra effort on your part: simply making them available allows a user to edit them.

Input Handling

One of the most common problems a developer faces is how to consolidate inputs from different sources, ie: touchscreens, the mouse, keyboard and gamepads, into a simple interface. The second problem they often face is how to make rebinding simple. FAST Input Handling seeks to solve both of these problems together by providing an easy-to-define, easy-to-bind and easy-to-use InputDevice. Most importantly, FAST only polls controls that are "in-use", meaning no matter how many controls you define overhead is always kept to what is actually in use.

Pointer

Pointer is still under development. It's purpose is to do for pointer interfaces what Input Handling does from controller interfaces, make them easy to write and powerful to work with.

Publisher

FAST Publisher is a simple pub/sub framework for message distribution that can be used for your own purposes, but also provides an out-of-the-box global channel framework if you want it.

Render

Resolution scaling is one of the most annoying things to get right in GMS. Supporting multiple resolutions, especially with pixel perfect games, can be tedious and annoying. FAST Render provides a simple interface to work with and tries to provide just the right results. The render itself is also easily extensible, allowing you to inject your own features into FAST's pipeline if needed.

Scripting

There are many external scripting solutions, but many of them suffer from a portability issue: sure, they work on Windows, but will they work on other platforms? FAST Scripting is entirely GML-based and thus portable to whatever systems GMS is. It uses a Lua-like syntax, but also incorporates some basic Yarn-like features to make it broadly accessible for many tasks.

Clone this wiki locally