FrayTools

FrayTools is a cross-platform game development tool published by McLeodGaming as a companion product to the game Fraymakers, which the tool is named after. It allows users to create and manage multimedia assets and is designed to streamline the process of asset management for game development. It is primarily designed for the development of Fraymakers custom content, and it features a plugin system to expand its capabilities beyond this purpose.
The application first released on August 31, 2022 alongside the Tester Build of Fraymakers, releasing under the version number v0.1.2.production.99cc975. An official website for the software launched on January 18, 2023.
== Function ==
FrayTools provides a 2D-oriented environment that allows for the development of game assets. The layout of an opened project is separated into three sections. The Workspace Area displays the contents of opened files and allows the user to create and edit their respective assets and timelines. The Library Panel displays the project directory tree and allows the user to open files and create or import new files. The Log Panel outputs information such as progress and error messages while the program is running.
Objects are represented using "sprite entity" files consisting of sprite animations, which are organized through a keyframe-based timeline arranged similarly to a flip book and divided into layers and frames. Layers separate its different components such as its sprites, collision boxes, and scripts, whereas frames separate the length of time for an animation. Sprites can be imported to the asset's library as images, which can also be automatically arranged into an animation. Collision boxes can be manually or automatically drawn over these images to represent interactive areas. Scripts are used to trigger events on any given frame of an animation, and they can be written through a custom scripting interface using hscript as the default programming language. The user is able to also drag and drop these components directly into a timeline.
In addition to sprite entity files, FrayTools also supports palette files, which allow users to create color palette collections for the project's sprites, allowing for the creation of simple alternate costumes. Each palette consists of a palette map, which is used to point to color values in any given sprite and assign them new colors. A preview image can also be used to display each palette in action, and the user can detect a specific color or import all colors from this preview image to add to the map.
== Plugins ==
Despite its integration with Fraymakers, FrayTools is designed to be multi-purpose through its robust plugin system. Plugins are JavaScript-based modules allowing additional features to be embedded into the software. They can be used upon being added to a plugins folder and enabled within the Plugin Manager menu.
FrayTools currently supports three types of plugins, as well as a currently experimental fourth type, with three official plugins being developed for use with Fraymakers.
=== Publish plugins ===
Publish plugins allow for FrayTools to export game assets to custom file formats for use with different engines and platforms. By default, FrayTools assets are developed in a JSON-based format that can then be converted when publishing them, with the publish plugin providing the desired publish logic.
Fraymakers content is published using the Fraymakers Content Exporter Plugin, which requests the project's assets and compiles them into a single .fra file for use with the game. An additional file is also created to provide metadata for the Custom menu and Steam Workshop page.
=== Metadata definition plugins ===
Metadata definition plugins are used to add custom fields to the Properties Panel when editing objects. This allows for custom properties to be saved to an asset's metadata, which other plugins can take advantage of. It can also support "effects", in which the value of one field can be used to assign the value of another.
The Fraymakers Metadata Definitions Plugin provides various fields specific to Fraymakers. For instance, an entity can have an "Object Type" field to specify what it represents, such as a character, stage, projectile, or collision area, among others. This field can then be used to provide type-specific code auto-completion when developing scripts. The "Spritesheet Group" field can be used to specify which spritesheet the entity should have its animations written to when published. Types can also be specified for collision boxes, points, line segments, and containers.
=== Type definition plugins ===
Type definition plugins are used to add code intelligence to the text editor through TypeScript declaration files. This allows for inline documentation and auto-completion to be used when writing scripts. Currently, the text editor is limited to JavaScript-like syntax validation, which may prevent other languages from having full auto-completion.
The Fraymakers API Types Plugin provides inline documentation and auto-completion based on the Fraymakers API. As previously stated, auto-completion can be focused on a specific object type when specified using the Fraymakers Metadata Definitions Plugin.
=== Script asset plugins ===
Script asset plugins are used to provide custom settings for editing scripts. This feature is currently experimental.
== Trivia ==
*The interface of the software is inspired by that of , which many of the developers had used previously to create Adobe Flash games, particularly Super Smash Flash 2.
**Due to being more adaptable for these developers, FrayTools was used to create much of Fraymakers itself.
== External links ==
*FrayTools website
*FrayTools "Deep Dive" guide
*FrayTools "Software Overview" guide
*Fraymakers API documentation
Category:Fraymakers